Merge pull request #2324 from akoeplinger/caching-locking
authorAlexander Köplinger <alex.koeplinger@outlook.com>
Wed, 16 Dec 2015 17:05:45 +0000 (18:05 +0100)
committerAlexander Köplinger <alex.koeplinger@outlook.com>
Wed, 16 Dec 2015 17:05:45 +0000 (18:05 +0100)
[System.Runtime.Caching] Add missing locking when accessing cache entries

217 files changed:
acceptance-tests/SUBMODULES.json
configure.ac
external/referencesource
man/mono.1
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Expression.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/MemberInvocationReference.cs
mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/ProjectTest.cs
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/AssignProjectConfiguration.cs
mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/CodeTaskFactoryTest.cs
mcs/class/System.ServiceModel/System.ServiceModel/NetTcpBinding.cs
mcs/class/System.ServiceModel/Test/System.ServiceModel.Dispatcher/Bug32886Test.cs
mcs/class/System.ServiceModel/Test/System.ServiceModel.Dispatcher/Bug652331Test.cs
mcs/class/System.ServiceModel/Test/System.ServiceModel.Dispatcher/Bug652331_2Test.cs
mcs/class/System.ServiceModel/Test/System.ServiceModel/NetTcpBindingTest.cs
mcs/class/System.Web/System.Web.Util/UrlUtils.cs
mcs/class/System.Windows.Forms/System.Windows.Forms/XEventQueue.cs
mcs/class/System.XML/System.Xml.Xsl/XslCompiledTransform_Mobile.cs
mcs/class/System.XML/Test/System.Xml.Xsl/XslCompiledTransformTests.cs
mcs/class/System/Documentation/en/System.Net/WebRequest.xml
mcs/class/System/System.IO/DefaultWatcher.cs
mcs/class/System/System.Net/HttpConnection.cs
mcs/class/System/System.Net/WebRequest.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/OSX509Certificates.cs
mcs/class/System/Test/System.Net.Sockets/SocketTest.cs
mcs/class/System/Test/System.Net/HttpListenerTest.cs
mcs/class/corlib/System.Security.Cryptography.X509Certificates/X509Certificate.cs
mcs/class/corlib/System.Security.Cryptography.X509Certificates/X509Certificate20.cs
mcs/class/corlib/System.Security.Cryptography.X509Certificates/X509CertificateImpl.cs [new file with mode: 0644]
mcs/class/corlib/System.Security.Cryptography.X509Certificates/X509CertificateImplMono.cs [new file with mode: 0644]
mcs/class/corlib/System.Security.Cryptography.X509Certificates/X509Helper.cs [new file with mode: 0644]
mcs/class/corlib/Test/System.Reflection/MethodInfoTest.cs
mcs/class/corlib/Test/System.Threading/ThreadPoolTest.cs
mcs/class/corlib/Test/System/StringComparerTest.cs
mcs/class/corlib/Test/System/StringTest.cs
mcs/class/corlib/corlib.dll.sources
mcs/mcs/expression.cs
mcs/tests/test-643.cs
mcs/tests/ver-il-net_4_x.xml
mcs/tools/mkbundle/mkbundle.cs
mcs/tools/xbuild/data/12.0/Microsoft.Common.targets
mcs/tools/xbuild/data/14.0/Microsoft.Common.targets
mcs/tools/xbuild/data/2.0/Microsoft.Common.targets
mcs/tools/xbuild/data/3.5/Microsoft.Common.targets
mcs/tools/xbuild/data/4.0/Microsoft.Common.targets
mono/dis/dis-cil.c
mono/dis/dump.c
mono/dis/get.c
mono/dis/main.c
mono/io-layer/Makefile.am
mono/io-layer/collection.c [deleted file]
mono/io-layer/collection.h [deleted file]
mono/io-layer/events.c
mono/io-layer/handles-private.h
mono/io-layer/handles.c
mono/io-layer/io.c
mono/io-layer/io.h
mono/io-layer/messages.c
mono/io-layer/mutexes.c
mono/io-layer/processes.c
mono/io-layer/processes.h
mono/io-layer/semaphores.c
mono/io-layer/shared.c
mono/io-layer/shared.h
mono/io-layer/sockets.c
mono/io-layer/sockets.h
mono/io-layer/versioninfo.c
mono/io-layer/wapi-private.h
mono/io-layer/wapi_glob.c
mono/metadata/appdomain.c
mono/metadata/assembly.c
mono/metadata/attach.c
mono/metadata/boehm-gc.c
mono/metadata/class.c
mono/metadata/cominterop.c
mono/metadata/console-unix.c
mono/metadata/debug-helpers.c
mono/metadata/debug-mono-ppdb.c
mono/metadata/debug-mono-symfile.c
mono/metadata/domain.c
mono/metadata/exception.c
mono/metadata/file-io.c
mono/metadata/file-mmap-posix.c
mono/metadata/gc.c
mono/metadata/icall.c
mono/metadata/image.c
mono/metadata/jit-info.c
mono/metadata/loader.c
mono/metadata/locales.c
mono/metadata/marshal.c
mono/metadata/mempool.c
mono/metadata/metadata-verify.c
mono/metadata/metadata.c
mono/metadata/method-builder.c
mono/metadata/monitor.c
mono/metadata/mono-basic-block.c
mono/metadata/mono-config.c
mono/metadata/mono-debug.c
mono/metadata/mono-hash.c
mono/metadata/mono-perfcounters.c
mono/metadata/mono-ptr-array.h
mono/metadata/mono-security.c
mono/metadata/object.c
mono/metadata/opcodes.c
mono/metadata/pedump.c
mono/metadata/process.c
mono/metadata/profiler.c
mono/metadata/reflection.c
mono/metadata/remoting.c
mono/metadata/security-core-clr.c
mono/metadata/seq-points-data.c
mono/metadata/seq-points-data.h
mono/metadata/sgen-bridge.c
mono/metadata/sgen-client-mono.h
mono/metadata/sgen-mono.c
mono/metadata/sgen-new-bridge.c
mono/metadata/sgen-old-bridge.c
mono/metadata/sgen-os-posix.c
mono/metadata/sgen-stw.c
mono/metadata/sgen-tarjan-bridge.c
mono/metadata/sgen-toggleref.c
mono/metadata/socket-io.c
mono/metadata/threadpool-ms-io-poll.c
mono/metadata/threadpool-ms-io.c
mono/metadata/threadpool-ms.c
mono/metadata/threads.c
mono/metadata/verify.c
mono/mini/abcremoval.c
mono/mini/alias-analysis.c
mono/mini/aot-compiler.c
mono/mini/aot-runtime.c
mono/mini/branch-opts.c
mono/mini/debug-mini.c
mono/mini/debugger-agent.c
mono/mini/decompose.c
mono/mini/dominators.c
mono/mini/driver.c
mono/mini/dwarfwriter.c
mono/mini/exceptions-amd64.c
mono/mini/genmdesc.c
mono/mini/graph.c
mono/mini/image-writer.c
mono/mini/ir-emit.h
mono/mini/jit-icalls.c
mono/mini/jit-icalls.h
mono/mini/linear-scan.c
mono/mini/liveness.c
mono/mini/local-propagation.c
mono/mini/method-to-ir.c
mono/mini/mini-amd64.c
mono/mini/mini-codegen.c
mono/mini/mini-exceptions.c
mono/mini/mini-generic-sharing.c
mono/mini/mini-posix.c
mono/mini/mini-ppc.c
mono/mini/mini-runtime.c
mono/mini/mini-trampolines.c
mono/mini/mini-x86.c
mono/mini/mini.c
mono/mini/mini.h
mono/mini/seq-points.c
mono/mini/simd-intrinsics.c
mono/mini/ssa.c
mono/mini/tasklets.c
mono/mini/trace.c
mono/mini/tramp-amd64.c
mono/mini/tramp-x86.c
mono/mini/unwind.c
mono/profiler/decode.c
mono/profiler/mono-profiler-aot.c
mono/profiler/mono-profiler-iomap.c
mono/profiler/proflog.c
mono/sgen/gc-internal-agnostic.h
mono/sgen/sgen-alloc.c
mono/sgen/sgen-cardtable.c
mono/sgen/sgen-copy-object.h
mono/sgen/sgen-debug.c
mono/sgen/sgen-descriptor.c
mono/sgen/sgen-fin-weak-hash.c
mono/sgen/sgen-gc.c
mono/sgen/sgen-gc.h
mono/sgen/sgen-gchandles.c
mono/sgen/sgen-gray.c
mono/sgen/sgen-hash-table.c
mono/sgen/sgen-hash-table.h
mono/sgen/sgen-internal.c
mono/sgen/sgen-los.c
mono/sgen/sgen-marksweep-drain-gray-stack.h
mono/sgen/sgen-marksweep-scan-object-concurrent.h
mono/sgen/sgen-marksweep.c
mono/sgen/sgen-nursery-allocator.c
mono/sgen/sgen-pinning-stats.c
mono/sgen/sgen-pinning.c
mono/sgen/sgen-pointer-queue.c
mono/sgen/sgen-protocol-def.h
mono/sgen/sgen-protocol.c
mono/sgen/sgen-split-nursery.c
mono/sgen/sgen-thread-pool.c
mono/sgen/sgen-workers.c
mono/tests/Makefile.am
mono/tests/bug-36848-a.cs [new file with mode: 0644]
mono/tests/bug-36848.cs [new file with mode: 0644]
mono/tests/libtest.c
mono/unit-tests/test-memfuncs.c
mono/unit-tests/test-mono-linked-list-set.c
mono/unit-tests/test-sgen-qsort.c
mono/utils/bsearch.c
mono/utils/memfuncs.c
mono/utils/mono-conc-hashtable.c
mono/utils/mono-linked-list-set.h
mono/utils/mono-proclib.c
mono/utils/mono-threads-coop.c
mono/utils/mono-threads-posix-signals.c
mono/utils/mono-threads.c
mono/utils/mono-threads.h
mono/utils/networking-posix.c
scripts/xbuild.in
winconfig.h

index 8624aa789e2e55c3e83dce7f674ff77ab59a7091..e0335f40f7de3e375f209b4dae3846a63965e71b 100644 (file)
@@ -10,7 +10,7 @@
   {
     "name": "coreclr", 
     "url": "git://github.com/mono/coreclr.git", 
-    "rev": "ffe6263398591cfbd8100070ac8a191ff2080fbb", 
+    "rev": "96cf61f96b42cf9d013e641609cb7787f6e3a71f", 
     "remote-branch": "origin/mono", 
     "branch": "mono", 
     "directory": "coreclr"
@@ -18,7 +18,7 @@
   {
     "name": "ms-test-suite", 
     "url": "git@github.com:xamarin/ms-test-suite.git", 
-    "rev": "19f2a7dd44a2bfcf6006fd38033222383e8b81bf", 
+    "rev": "8eb26bd72a38e2c78675db45b13e89237dbdf4f2", 
     "remote-branch": "origin/master", 
     "branch": "master", 
     "directory": "ms-test-suite"
index 79b6ddaaaac95e31428cec1c0ecf42d99da72832..7714b10f2546986a5f4c25d2579cf601285582da 100644 (file)
@@ -1,7 +1,7 @@
 # Process this file with autoconf to produce a configure script.
 #AC_PREREQ([2.62])
 
-AC_INIT(mono, [4.3.0],
+AC_INIT(mono, [4.3.2],
         [http://bugzilla.xamarin.com/enter_bug.cgi?classification=Mono])
 
 AC_CONFIG_SRCDIR([README.md])
@@ -417,7 +417,7 @@ AC_PROG_LD_GNU
 AM_ICONV()
 
 AC_CHECK_HEADERS(sys/filio.h sys/sockio.h netdb.h utime.h sys/utime.h semaphore.h sys/un.h linux/rtc.h sys/syscall.h sys/mkdev.h sys/uio.h sys/param.h sys/sysctl.h libproc.h sys/prctl.h)
-AC_CHECK_HEADERS(sys/param.h sys/socket.h sys/ipc.h sys/sem.h sys/utsname.h alloca.h ucontext.h pwd.h sys/select.h netinet/tcp.h netinet/in.h unistd.h sys/types.h link.h asm/sigcontext.h sys/inotify.h arpa/inet.h complex.h unwind.h)
+AC_CHECK_HEADERS(sys/param.h sys/socket.h sys/ipc.h sys/utsname.h alloca.h ucontext.h pwd.h sys/select.h netinet/tcp.h netinet/in.h unistd.h sys/types.h link.h asm/sigcontext.h sys/inotify.h arpa/inet.h complex.h unwind.h)
 AC_CHECK_HEADERS([linux/netlink.h linux/rtnetlink.h],
                   [], [], [#include <stddef.h>
                  #include <sys/socket.h>
@@ -731,7 +731,7 @@ DISABLED_FEATURES=none
 AC_ARG_ENABLE(minimal, [  --enable-minimal=LIST      drop support for LIST subsystems.
      LIST is a comma-separated list from: aot, profiler, decimal, pinvoke, debug, appdomains, verifier, 
      reflection_emit, reflection_emit_save, large_code, logging, com, ssa, generics, attach, jit, simd, soft_debug, perfcounters, normalization, assembly_remapping, shared_perfcounters, remoting,
-        security, sgen_remset, sgen_marksweep_par, sgen_marksweep_fixed, sgen_marksweep_fixed_par, sgen_copying, shared_handles.],
+        security, sgen_remset, sgen_marksweep_par, sgen_marksweep_fixed, sgen_marksweep_fixed_par, sgen_copying.],
 [
        for feature in `echo "$enable_minimal" | sed -e "s/,/ /g"`; do
                eval "mono_feature_disable_$feature='yes'"
@@ -906,11 +906,6 @@ if test "x$mono_feature_disable_sgen_copying" = "xyes"; then
        AC_MSG_NOTICE([Disabled major=copying support in SGEN.])
 fi
 
-if test "x$mono_feature_disable_shared_handles" = "xyes"; then
-       AC_DEFINE(DISABLE_SHARED_HANDLES, 1, [Disable inter-process shared handles])
-       AC_SUBST(DISABLE_SHARED_HANDLES)
-fi
-
 AC_ARG_ENABLE(executables, [  --disable-executables disable the build of the runtime executables], enable_executables=$enableval, enable_executables=yes)
 AM_CONDITIONAL(DISABLE_EXECUTABLES, test x$enable_executables = xno)
 
@@ -2443,15 +2438,6 @@ if test "x$ac_cv_have_dev_random" = "xno" \
 *** variable MONO_EGD_SOCKET to point to the daemon's socket to use that.
 ***]])
 fi
-AC_MSG_CHECKING([if inter-process shared handles are requested])
-# Same as --enable-minimal=shared_handles
-AC_ARG_ENABLE(shared-handles, [  --disable-shared-handles disable inter-process shared handles], try_shared_handles=$enableval, try_shared_handles=no)
-AC_MSG_RESULT($try_shared_handles)
-if test "x$try_shared_handles" != "xyes"; then
-       AC_DEFINE(DISABLE_SHARED_HANDLES, 1, [Disable inter-process shared handles])
-       AC_SUBST(DISABLE_SHARED_HANDLES)
-fi
 
 AC_ARG_ENABLE(bcl-opt, [  --disable-bcl-opt    BCL is compiled with no optimizations (allows accurate BCL debugging)], test_bcl_opt=$enableval, test_bcl_opt=yes)
 
index 86709337fe1181cfdef33b01fa71fce9819bb672..8382c4605d622d56354e7340bf872caaf36b972a 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 86709337fe1181cfdef33b01fa71fce9819bb672
+Subproject commit 8382c4605d622d56354e7340bf872caaf36b972a
index fb6e7fc2d91fd00747681c6e6eee29bd908e602d..164ec31fcc37ec1bc84784ebeec4af2b28e70f7c 100644 (file)
@@ -931,7 +931,12 @@ by setting the option
 Turns off the garbage collection in Mono.  This should be only used
 for debugging purposes
 .TP
-\fBLVM_COUNT\fR
+\fBHTTP_PROXY\fR
+(Also \fBhttp_proxy\fR) If set, web requests using the Mono
+Class Library will be automatically proxied through the given URL.
+Not supported on Windows, Mac OS, iOS or Android. See also \fBNO_PROXY\fR.
+.TP
+\fBLLVM_COUNT\fR
 When Mono is compiled with LLVM support, this instructs the runtime to
 stop using LLVM after the specified number of methods are JITed.
 This is a tool used in diagnostics to help isolate problems in the
@@ -1538,6 +1543,13 @@ ftps, smtps...).  The default is 'nocheck', which performs no revocation check
 at all. The other possible values are 'offline', which performs CRL check (not
 implemented yet) and 'online' which uses OCSP and CRL to verify the revocation
 status (not implemented yet).
+.TP
+\fBNO_PROXY\fR
+(Also \fBno_proxy\fR) If both \fBHTTP_PROXY\fR and \fBNO_PROXY\fR are
+set, \fBNO_PROXY\fR will be treated as a comma-separated list of "bypass" domains
+which will not be sent through the proxy. Domains in \fBNO_PROXY\fR may contain
+wildcards, as in "*.mono-project.com" or "build????.local". Not supported on
+Windows, Mac OS, iOS or Android.
 .SH ENVIRONMENT VARIABLES FOR DEBUGGING
 .TP
 \fBMONO_ASPNET_NODELETE\fR
index ccfc0fa3a0ea8a46c1a5018af0732e84820892b4..ea302826b87e8d016b234b12937fcfeca96693e1 100644 (file)
@@ -464,6 +464,7 @@ namespace Microsoft.Build.BuildEngine {
                        List<string> args = new List<string> ();
                        int parens = 0;
                        bool backticks = false;
+                       bool inquotes = false;
                        int start = pos;
                        for (; pos < text.Length; ++pos) {
                                var ch = text [pos];
@@ -476,6 +477,11 @@ namespace Microsoft.Build.BuildEngine {
                                if (backticks)
                                        continue;
 
+                               if (ch == '\"') {
+                                       inquotes = !inquotes;
+                                       continue;
+                               }
+
                                if (ch == '(') {
                                        ++parens;
                                        continue;
@@ -498,7 +504,7 @@ namespace Microsoft.Build.BuildEngine {
                                if (parens != 0)
                                        continue;
 
-                               if (ch == ',') {
+                               if (ch == ',' && !inquotes) {
                                        args.Add (text.Substring (start, pos - start));
                                        start = pos + 1;
                                        continue;
index c2383e5025397d6e7c4487d992f2eff3d94351f5..3cb27d959fbd97a1fc4fa10a0bb04703a4851e21 100644 (file)
@@ -32,6 +32,7 @@ using System.Collections.Generic;
 using System.Reflection;
 using System.Globalization;
 using Microsoft.Build.Framework;
+using Microsoft.Build.Utilities;
 using System.Text;
 
 namespace Microsoft.Build.BuildEngine
@@ -280,7 +281,10 @@ namespace Microsoft.Build.BuildEngine
 
                public ITaskItem[] ConvertToITaskItemArray (Project project, ExpressionOptions options)
                {
-                       throw new NotImplementedException ();
+                       var items = new ITaskItem[1];
+                       items[0] = new TaskItem (ConvertToString (project, options));
+
+                       return items;
                }
        }
 }
\ No newline at end of file
index 48aba112fb9912a680cd586375c3d53ed7d0aa2d..594c0858777c80db3bceec5a5fb434aaef8ddb78 100644 (file)
@@ -67,7 +67,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                void Message (object sender, BuildMessageEventArgs args)
                {
                }
-               
+
                void Warning (object sender, BuildWarningEventArgs args)
                {
                }
@@ -97,7 +97,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                        Project project;
                        string documentString =
                                "<Project></Project>";
-                       
+
                        engine = new Engine (Consts.BinPath);
 
                        DateTime time = DateTime.Now;
@@ -127,7 +127,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                        Project project;
                        string documentString =
                                "<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"></Project>";
-                       
+
                        engine = new Engine (Consts.BinPath);
                        DateTime time = DateTime.Now;
                        project = engine.CreateNewProject ();
@@ -310,7 +310,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
 
                        string documentString = @"
                                <Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
-                                       <Target 
+                                       <Target
                                                Name='Main'
                                                Inputs='a;b;c'
                                                Outputs='d;e;f'
@@ -345,7 +345,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                        Engine engine;
                        Project project;
                        IDictionary hashtable = new Hashtable ();
-                       
+
                        string documentString = @"
                                <Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
                                        <Target Name='Main'>
@@ -353,7 +353,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                                        </Target>
                                </Project>
                        ";
-                       
+
                        engine = new Engine (Consts.BinPath);
                        project = engine.CreateNewProject ();
                        project.LoadXml (documentString);
@@ -769,12 +769,12 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                {
                        Engine engine;
                        Project project;
-                       
+
                        string documentString = @"
                                <Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
                                </Project>
                        ";
-                       
+
                        engine = new Engine (Consts.BinPath);
                        project = engine.CreateNewProject ();
                        project.LoadXml (documentString);
@@ -787,15 +787,15 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                {
                        Engine engine;
                        Project project;
-                       
+
                        string documentString = @"
                                <Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
                                </Project>
                        ";
-                       
+
                        engine = new Engine (Consts.BinPath);
                        engine.GlobalProperties.SetProperty ("Property", "Value");
-                       
+
                        project = engine.CreateNewProject ();
                        project.LoadXml (documentString);
 
@@ -815,12 +815,12 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                {
                        Engine engine;
                        Project project;
-                       
+
                        string documentString = @"
                                <Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
                                </Project>
                        ";
-                       
+
                        engine = new Engine (Consts.BinPath);
                        project = engine.CreateNewProject ();
                        project.LoadXml (documentString);
@@ -834,7 +834,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                {
                        Engine engine;
                        Project project;
-                       
+
                        string documentString = @"
                                <Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
                                        <PropertyGroup>
@@ -842,7 +842,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                                        </PropertyGroup>
                                </Project>
                        ";
-                       
+
                        engine = new Engine (Consts.BinPath);
                        project = engine.CreateNewProject ();
                        project.LoadXml (documentString);
@@ -861,7 +861,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                {
                        Engine engine;
                        Project project;
-                       
+
                        string documentString = @"
                                <Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
                                        <PropertyGroup>
@@ -869,7 +869,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                                        </PropertyGroup>
                                </Project>
                        ";
-                       
+
                        engine = new Engine (Consts.BinPath);
                        project = engine.CreateNewProject ();
                        project.LoadXml (documentString);
@@ -914,7 +914,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                {
                        Engine engine;
                        Project project;
-                       
+
                        engine = new Engine (Consts.BinPath);
                        project = engine.CreateNewProject ();
 
@@ -1076,18 +1076,18 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                        Assert.AreEqual (3, tl.TargetStartedEvents, "A1");
                        Assert.AreEqual (3, tl.TargetFinishedEvents, "A1");
                }
-               
+
                [Test]
                public void TestSchemaFile ()
                {
                        Engine engine;
                        Project project;
-                       
+
                        string documentString = @"
                                <Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
                                </Project>
                        ";
-                       
+
                        engine = new Engine (Consts.BinPath);
                        project = engine.CreateNewProject ();
                        project.LoadXml (documentString);
@@ -2092,7 +2092,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                         <MeTAdata1>md3</MeTAdata1>
                         <Metadata2>md4</Metadata2>
                 </Abc>
-        </ItemGroup> 
+        </ItemGroup>
         <PropertyGroup><ProP1>ValueProp</ProP1></PropertyGroup>
        <Target Name=""Main"">
                <MesSAGE Text=""Full item: @(ABC)""/>
@@ -2159,7 +2159,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                                        Path.Combine ("fr-FR", "Lib2.resources.dll"),
                                        "Lib4.dll", "Lib4" + debug_extn
                                },
-                               
+
                                // lib1
                                new string [] {
                                        // lib1 files
@@ -2216,7 +2216,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
 
                        Project project = engine.CreateNewProject ();
                        project.Load (Path.Combine (basepath, "Project01.sln.proj"));
-                       
+
                        bool result = project.Build ();
                        if (!result) {
                                logger.DumpMessages ();
@@ -2373,5 +2373,24 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
 
                        return project;
                }
+
+               [Test]
+               public void CheckCommaInQuotes ()
+               {
+                       string testString = "Test.string.with.Commas";
+                       string documentString = string.Format (@"
+                       <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
+                               <PropertyGroup>
+                                       <TestString>{0}</TestString>
+                                       <TestString2>$(TestString.Replace(&quot;.&quot;,&quot;,&quot;))</TestString2>
+                               </PropertyGroup>
+                       </Project>", testString);
+
+                       Project project = new Project ();
+      project.LoadXml (documentString);
+
+                       string result = project.EvaluatedProperties ["TestString2"].FinalValue;
+      Assert.AreEqual (testString.Replace (".", ","), result, "A1");
+               }
        }
 }
index 789af4762ae9dcc420eb0a44637bee260a9f96e3..6fd7954ab42c949f141c90ef3aeeec886a16c22d 100644 (file)
@@ -87,14 +87,15 @@ namespace Microsoft.Build.Tasks {
                                string config;
 
                                string guid_str = item.GetMetadata ("Project");
-                               Guid guid;
-                               if (!TryParseGuid (guid_str, out guid)) {
+
+                               Guid guid = Guid.Empty;
+                               if (!string.IsNullOrEmpty(guid_str) && !TryParseGuid (guid_str, out guid)) {
                                        Log.LogError ("Project reference '{0}' has invalid or missing guid for metadata 'Project'.",
                                                        item.ItemSpec);
                                        return false;
                                }
 
-                               if (guidToConfigPlatform.TryGetValue (guid, out config)) {
+                               if (guid != Guid.Empty && guidToConfigPlatform.TryGetValue (guid, out config)) {
                                        string [] parts = config.Split (new char [] {'|'}, 2);
 
                                        ITaskItem new_item = new TaskItem (item);
index e665a41cebfd6fa4869e4fbba2cdc3927fed736d..2b83e4dc5559141b393d4cba4aa4caac5d86fd79 100644 (file)
@@ -115,10 +115,10 @@ Log.LogWarning(""Message: "" + Message);
     AssemblyFile='$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll' >
     <ParameterGroup />
     <Task>
-      <Reference Include='System.Drawing' />
+      <Reference Include='System.Runtime.Serialization' />
       <Code Type='Fragment' Language='cs'>
 <![CDATA[
-Log.LogWarning(""Color: "" + System.Drawing.Color.CornflowerBlue);
+Log.LogWarning(""A GUID generated by System.Xml: "" + new System.Xml.UniqueId());
 ]]>      </Code>
     </Task>
   </UsingTask>
index 4e1d5c4dfd0196da7d44cf5fe40327b198840c4d..794445155d8eefa93a107137ba23439db5470f6f 100644 (file)
@@ -43,7 +43,8 @@ namespace System.ServiceModel
                int max_conn;
                OptionalReliableSession reliable_session;
                NetTcpSecurity security;
-               XmlDictionaryReaderQuotas reader_quotas;
+               XmlDictionaryReaderQuotas reader_quotas
+                       = new XmlDictionaryReaderQuotas ();
                bool transaction_flow;
                TransactionProtocol transaction_protocol;
                TcpTransportBindingElement transport;
index 17712fec0241599be0ba3a2ec631bf438330acc8..71c1f554c3b43f4b8ea90438cbffd19afb646001 100644 (file)
@@ -63,16 +63,24 @@ namespace MonoTests.System.ServiceModel.Dispatcher
                                var client = new TempConvertSoapClient (binding, remoteAddress);
 
                                var wait = new ManualResetEvent (false);
+
+                               Exception error = null;
+                               string result = null;
+
                                client.CelsiusToFahrenheitCompleted += delegate (object o, CelsiusToFahrenheitCompletedEventArgs e) {
-                                       if (e.Error != null)
-                                               throw e.Error;
-                                       Assert.AreEqual ("76.1", e.Result, "#1");
-                                       wait.Set ();
+                                       try {
+                                               error = e.Error;
+                                               result = e.Error == null ? e.Result : null;
+                                       } finally {
+                                               wait.Set ();
+                                       }
                                };
 
                                client.CelsiusToFahrenheitAsync ("24.5");
-                               if (!wait.WaitOne (TimeSpan.FromSeconds (20)))
-                                       Assert.Fail ("timeout");
+
+                               Assert.IsTrue (wait.WaitOne (TimeSpan.FromSeconds (20)), "timeout");
+                               Assert.IsNull (error, "#1, inner exception: {0}", error);
+                               Assert.AreEqual ("76.1", result, "#2");
                        } finally {
                                serviceHost.Close ();
                        }
index cdc68486779adc619e335eccabbb06dc4a72265c..141d8bf3f6bb728ebb46da545a8f85ea23d5a8fd 100644 (file)
@@ -66,16 +66,24 @@ namespace MonoTests.System.ServiceModel.Dispatcher
                                var client = new Service1Client (binding, remoteAddress);
 
                                var wait = new ManualResetEvent (false);
+
+                               Exception error = null;
+                               object result = null;
+
                                client.GetDataCompleted += delegate (object o, GetDataCompletedEventArgs e) {
-                                       if (e.Error != null)
-                                               throw e.Error;
-                                       Assert.AreEqual ("A", ((DataType1) e.Result).Id, "#1");
-                                       wait.Set ();
+                                       try {
+                                               error = e.Error;
+                                               result = e.Error == null ? e.Result : null;
+                                       } finally {
+                                               wait.Set ();
+                                       }
                                };
 
                                client.GetDataAsync ();
-                               if (!wait.WaitOne (TimeSpan.FromSeconds (20)))
-                                       Assert.Fail ("timeout");
+
+                               Assert.IsTrue (wait.WaitOne (TimeSpan.FromSeconds (20)), "timeout");
+                               Assert.IsNull (error, "#1, inner exception: {0}", error);
+                               Assert.AreEqual ("A", ((DataType1) result).Id, "#2");
                        } finally {
                                serviceHost.Close ();
                        }
index 4d6fca943e6f88529a257468d0776026019f33f0..21559c528a2cd28a61189174d292da9c4e91b709 100644 (file)
@@ -76,58 +76,85 @@ namespace MonoTests.System.ServiceModel.Dispatcher
                        var nestedClient      = new Service1Client (binding, remoteAddress);
                        var dbClient          = new Service1Client (binding, remoteAddress);
 
-                       var waits = new ManualResetEvent [4];
-                       for (int i = 0; i < waits.Length; i++)
-                               waits [i] = new ManualResetEvent (false);
-
-                       int passed = 0;
-
-                       normalClient.GetDataCompleted += delegate (object o, GetDataCompletedEventArgs e) {
-                               if (e.Error != null) {
-                                       Assert.Fail ("Normal failed; error: {0}", e.Error);
-                                       throw e.Error;
-                               }
-                               Assert.AreEqual ("A", ((DataType1) e.Result).Id, "Normal");
-                               Interlocked.Increment (ref passed);
-                               waits [0].Set ();
-                       };
-                       normalClient.GetDataAsync ();
-
-                       collectionClient.GetCollectionDataCompleted += delegate (object sender, GetCollectionDataCompletedEventArgs e) {
-                               if (e.Error != null) {
-                                       Assert.Fail ("Collection failed; error: {0}", e.Error);
-                                       throw e.Error;
-                               }
-                               Assert.AreEqual ("B,C", ItemsToString (e.Result.Cast<DataType1> ()), "Collection");
-                               Interlocked.Increment (ref passed);
-                               waits [1].Set ();
-                       };
-                       collectionClient.GetCollectionDataAsync ();
-
-                       nestedClient.GetNestedDataCompleted += delegate (object sender, GetNestedDataCompletedEventArgs e) {
-                               if (e.Error != null) {
-                                       Assert.Fail ("Nested failed; error: {0}", e.Error);
-                                       throw e.Error;
-                               }
-                               Assert.AreEqual ("D,E", ItemsToString (e.Result.Items.Cast<DataType1> ()), "Nested");
-                               Interlocked.Increment (ref passed);
-                               waits [2].Set ();
-                       };
-                       nestedClient.GetNestedDataAsync ();
-
-                       dbClient.JSMGetDatabasesCompleted += delegate (object sender, JSMGetDatabasesCompletedEventArgs e) {
-                               waits [3].Set ();
-                               if (e.Error != null) {
-                                       throw e.Error;
-                               }
-                               Assert.AreEqual ("databases", e.Result, "Databases");
-                               Interlocked.Increment (ref passed);
-                       };
-                       dbClient.JSMGetDatabasesAsync();
-
-                       WaitHandle.WaitAll (waits, TimeSpan.FromMinutes (1));
-                       if (passed != waits.Length)
-                               Assert.Fail ("Not all tests passed!");
+                       {
+                               ManualResetEvent wait = new ManualResetEvent (false);
+                               Exception error = null;
+                               object result = null;
+
+                               normalClient.GetDataCompleted += delegate (object o, GetDataCompletedEventArgs e) {
+                                       try {
+                                               error = e.Error;
+                                               result = e.Error == null ? e.Result : null;
+                                       } finally {
+                                               wait.Set ();
+                                       }
+                               };
+                               normalClient.GetDataAsync ();
+
+                               Assert.IsTrue (wait.WaitOne (TimeSpan.FromSeconds (20)), "#1 timeout");
+                               Assert.IsNull (error, "#1.1, inner exception: {0}", error);
+                               Assert.AreEqual ("A", ((DataType1) result).Id, "#1.2");
+                       }
+
+                       {
+                               ManualResetEvent wait = new ManualResetEvent (false);
+                               Exception error = null;
+                               ObservableCollection<object> result = null;
+
+                               collectionClient.GetCollectionDataCompleted += delegate (object sender, GetCollectionDataCompletedEventArgs e) {
+                                       try {
+                                               error = e.Error;
+                                               result = e.Error == null ? e.Result : null;
+                                       } finally {
+                                               wait.Set ();
+                                       }
+                               };
+                               collectionClient.GetCollectionDataAsync ();
+
+                               Assert.IsTrue (wait.WaitOne (TimeSpan.FromSeconds (20)), "#2 timeout");
+                               Assert.IsNull (error, "#2.1, inner exception: {0}", error);
+                               Assert.AreEqual ("B,C", ItemsToString (result.Cast<DataType1> ()), "#2.2");
+                       }
+
+                       {
+                               ManualResetEvent wait = new ManualResetEvent (false);
+                               Exception error = null;
+                               WebServiceMoonlightTest.ServiceReference2.DataType2 result = null;
+
+                               nestedClient.GetNestedDataCompleted += delegate (object sender, GetNestedDataCompletedEventArgs e) {
+                                       try {
+                                               error = e.Error;
+                                               result = e.Error == null ? e.Result : null;
+                                       } finally {
+                                               wait.Set ();
+                                       }
+                               };
+                               nestedClient.GetNestedDataAsync ();
+
+                               Assert.IsTrue (wait.WaitOne (TimeSpan.FromSeconds (20)), "#3 timeout");
+                               Assert.IsNull (error, "#3.1, inner exception: {0}", error);
+                               Assert.AreEqual ("D,E", ItemsToString (result.Items.Cast<DataType1> ()), "#3.2");
+                       }
+
+                       {
+                               ManualResetEvent wait = new ManualResetEvent (false);
+                               Exception error = null;
+                               string result = null;
+
+                               dbClient.JSMGetDatabasesCompleted += delegate (object sender, JSMGetDatabasesCompletedEventArgs e) {
+                                       try {
+                                               error = e.Error;
+                                               result = e.Error == null ? e.Result : null;
+                                       } finally {
+                                               wait.Set ();
+                                       }
+                               };
+                               dbClient.JSMGetDatabasesAsync();
+
+                               Assert.IsTrue (wait.WaitOne (TimeSpan.FromSeconds (20)), "#4 timeout");
+                               Assert.IsNull (error, "#4.1, inner exception: {0}", error);
+                               Assert.AreEqual ("databases", result, "#4.2");
+                       }
                }
 
                string ItemsToString (IEnumerable<DataType1> items)
index 633b776aeac48c10c96f3b29d32d12e21dcad79e..cb78fe2be1e8ff98996257b561aefc74a1f6f482 100644 (file)
@@ -213,6 +213,13 @@ namespace MonoTests.System.ServiceModel
                        Assert.IsTrue (Foo.JoinCalled, "#2");
                }
 
+               [Test]
+               public void ReaderQuotasDefault_Bug15153 ()
+               {
+                       NetTcpBinding binding = new NetTcpBinding(SecurityMode.None);
+                       binding.ReaderQuotas.MaxStringContentLength = 8192;
+               }
+
                [ServiceContract]
                public interface IFoo
                {
index 4f07e83f1345769d5dfa62d699c17d526a0eda12..e229a913f8f984008c46e2fbb770d21e29bd1188 100644 (file)
@@ -54,7 +54,7 @@ namespace System.Web.Util {
                        if (path.StartsWith (appvpath))
                                path = path.Substring (appvpath.Length);
 
-                       if (path [0] == '/')
+                       if (path.StartsWith("/"))
                                path = path.Length > 1 ? path.Substring (1) : "";
 
                        return Canonic (appvpath + "(" + id + ")/" + path);
index 11391af1a7279093caeaea71e177f8d3447a5adb..11b7ad542c20fd335632fb3d19695672758c4b00 100644 (file)
@@ -118,7 +118,7 @@ namespace System.Windows.Forms {
                                        return lqueue.Peek ();
                                }
                        }                               
-                       return xqueue.Peek();
+                       return xqueue.Peek ();
                }
 
                public bool DispatchIdle {
@@ -136,22 +136,30 @@ namespace System.Windows.Forms {
                        private XEvent          xevent;
                        
                        public PaintQueue (int size) {
-                               hwnds = new ArrayList(size);
-                               xevent = new XEvent();
+                               hwnds = new ArrayList (size);
+                               xevent = new XEvent ();
                                xevent.AnyEvent.type = XEventName.Expose;
                        }
 
                        public int Count {
-                               get { return hwnds.Count; }
+                               get {
+                                       lock (hwnds) {
+                                               return hwnds.Count;
+                                       }
+                               }
                        }
 
                        public void Enqueue (Hwnd hwnd) {
-                               hwnds.Add(hwnd);
+                               lock (hwnds) {
+                                       hwnds.Add (hwnd);
+                               }
                        }
 
                        public void Remove(Hwnd hwnd) {
                                if (!hwnd.expose_pending && !hwnd.nc_expose_pending) {
-                                       hwnds.Remove(hwnd);
+                                       lock (hwnds) {
+                                               hwnds.Remove (hwnd);
+                                       }
                                }
                        }
 
@@ -159,36 +167,38 @@ namespace System.Windows.Forms {
                                Hwnd            hwnd;
                                IEnumerator     next;
 
-                               if (hwnds.Count == 0) {
-                                       xevent.ExposeEvent.window = IntPtr.Zero;
-                                       return xevent;
-                               }
-
-                               next = hwnds.GetEnumerator();
-                               next.MoveNext();
-                               hwnd = (Hwnd)next.Current;
-
-                               // We only remove the event from the queue if we have one expose left since
-                               // a single 'entry in our queue may be for both NC and Client exposed
-                               if ( !(hwnd.nc_expose_pending && hwnd.expose_pending)) {
-                                       hwnds.Remove(hwnd);
-                               }
-                               if (hwnd.expose_pending) {
-                                       xevent.ExposeEvent.window = hwnd.client_window;
+                               lock (hwnds) {
+                                       if (hwnds.Count == 0) {
+                                               xevent.ExposeEvent.window = IntPtr.Zero;
+                                               return xevent;
+                                       }
+
+                                       next = hwnds.GetEnumerator ();
+                                       next.MoveNext ();
+                                       hwnd = (Hwnd)next.Current;
+
+                                       // We only remove the event from the queue if we have one expose left since
+                                       // a single 'entry in our queue may be for both NC and Client exposed
+                                       if (!(hwnd.nc_expose_pending && hwnd.expose_pending)) {
+                                               hwnds.Remove (hwnd);
+                                       }
+                                       if (hwnd.expose_pending) {
+                                               xevent.ExposeEvent.window = hwnd.client_window;
 #if not
-                                       xevent.ExposeEvent.x = hwnd.invalid.X;
-                                       xevent.ExposeEvent.y = hwnd.invalid.Y;
-                                       xevent.ExposeEvent.width = hwnd.invalid.Width;
-                                       xevent.ExposeEvent.height = hwnd.invalid.Height;
+                                               xevent.ExposeEvent.x = hwnd.invalid.X;
+                                               xevent.ExposeEvent.y = hwnd.invalid.Y;
+                                               xevent.ExposeEvent.width = hwnd.invalid.Width;
+                                               xevent.ExposeEvent.height = hwnd.invalid.Height;
 #endif
-                                       return xevent;
-                               } else {
-                                       xevent.ExposeEvent.window = hwnd.whole_window;
-                                       xevent.ExposeEvent.x = hwnd.nc_invalid.X;
-                                       xevent.ExposeEvent.y = hwnd.nc_invalid.Y;
-                                       xevent.ExposeEvent.width = hwnd.nc_invalid.Width;
-                                       xevent.ExposeEvent.height = hwnd.nc_invalid.Height;
-                                       return xevent;
+                                               return xevent;
+                                       } else {
+                                               xevent.ExposeEvent.window = hwnd.whole_window;
+                                               xevent.ExposeEvent.x = hwnd.nc_invalid.X;
+                                               xevent.ExposeEvent.y = hwnd.nc_invalid.Y;
+                                               xevent.ExposeEvent.width = hwnd.nc_invalid.Width;
+                                               xevent.ExposeEvent.height = hwnd.nc_invalid.Height;
+                                               return xevent;
+                                       }
                                }
                        }
                }
index 808fa1ace2823ced7f8d6f457b77a147170f417f..94dcc0285baf146428ccc8cb596d6777d8f015de 100644 (file)
@@ -121,7 +121,9 @@ namespace System.Xml.Xsl
 
                public void Transform (IXPathNavigable input, XsltArgumentList arguments, Stream results)
                {
-                       Transform (input.CreateNavigator (), arguments, results);
+                       using (var sw = new StreamWriter (results)) {
+                               Transform (input.CreateNavigator (), arguments, sw);
+                       }
                }
 
                public void Transform (IXPathNavigable input, XmlWriter results)
index aa333328d962b5cf0d7640c6500f03d266c21e83..3ed7fc3a0667034bde88251c40626829e935f05a 100644 (file)
@@ -168,5 +168,31 @@ xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:msxsl='urn:schemas-micros
                        // Returns true on .NET and False on mono 2.10.2
                        Assert.IsTrue (xslCompiledTransform.OutputSettings.Indent, "#1");
                }
+
+               [Test] // Bug 36436
+               public void TransformWithXmlDocument ()
+               {
+                       XmlDocument doc = new XmlDocument ();
+                       doc.LoadXml (@"<ROOT/>");
+                       XmlDocument st = new XmlDocument ();
+                       st.LoadXml (@"<?xml version=""1.0"" encoding=""utf-8""?>
+<xsl:stylesheet version=""1.0"" xmlns:vy=""Vineyard.Elements""
+    xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" xmlns:xlink=""http://www.w3.org/1999/xlink"" xmlns:user=""http://www.mydomain.com/mynamespace"">
+  <xsl:output method=""xml""/>
+
+  <xsl:param name=""os"" select=""ios""/>
+
+  <xsl:template match=""/ROOT"" >
+    <xsl:copy/>
+</xsl:template>
+</xsl:stylesheet>");
+                       XslCompiledTransform xsl = new XslCompiledTransform ();
+                       xsl.Load (st);
+
+                       XsltArgumentList args = new XsltArgumentList ();
+
+                       MemoryStream mstr = new MemoryStream ();
+                       xsl.Transform (doc, args, mstr);
+               }
        }
 }
index fd2611422255732b4805de94c92d1bae492192e3..9ab8e3c068f57165d7f7b075bf501a692085eee7 100644 (file)
@@ -1036,9 +1036,10 @@ public class CreateDefaultExample
       <Parameters />
       <Docs>
         <remarks>
-          <attribution license="cc4" from="Microsoft" modified="false" />
-          <para>
-            <see cref="M:System.Net.WebRequest.GetSystemWebProxy" /> method reads the current user's Internet Explorer (IE) proxy settings. This process includes the IE options to automatically detect proxy settings, use an automatic configuration script, manual proxy server settings, and advanced manual proxy server settings.</para>
+          <attribution license="cc4" from="Microsoft" modified="true" />
+          <para><see cref="M:System.Net.WebRequest.GetSystemWebProxy" /> creates an appropriate proxy object for the current user.</para>
+          <para>On Windows, the method reads the current user's Internet Explorer (IE) proxy settings. The settings supported on Mono are proxy enabled, proxy URL, and proxy excluded domains.</para>
+          <para>On UNIX-like systems (but not including Mac OS, iOS, or Android), the method reads the environment variables "MONO_PROXY" (or "mono_proxy") and "NO_PROXY" (or "no_proxy"). See the mono man page for more information.</para>
           <para>If your application is impersonating several users, you can use the <see cref="M:System.Net.WebRequest.GetSystemWebProxy" /> method to retrieve a proxy for each impersonated user.</para>
         </remarks>
         <summary>
index d2d8b28d86cef4ebbeeff516308503d14cf10fe2..d08e60984161333f17f2b4ebab9bb5dc8b75c5c6 100644 (file)
@@ -43,6 +43,8 @@ namespace System.IO {
                public bool Enabled;
                public bool NoWildcards;
                public DateTime DisabledTime;
+
+               public object FilesLock = new object ();
                public Hashtable Files;
        }
 
@@ -211,6 +213,13 @@ namespace System.IO {
                                        files = NoStringsArray;
                        }
 
+                       lock (data.FilesLock) {
+                               IterateAndModifyFilesData (data, directory, dispatch, files);
+                       }
+               }
+
+               void IterateAndModifyFilesData (DefaultWatcherData data, string directory, bool dispatch, string[] files)
+               {
                        /* Set all as untested */
                        foreach (string filename in data.Files.Keys) {
                                FileData fd = (FileData) data.Files [filename];
index 7adfdf8d95660c51e673d3304118705a55d19d0a..2be693f5b16c4fa3fee90b2e3daa2096746d714f 100644 (file)
@@ -209,8 +209,11 @@ namespace System.Net {
                        // TODO: can we get this stream before reading the input?
                        if (o_stream == null) {
                                HttpListener listener = context.Listener;
-                               bool ign = (listener == null) ? true : listener.IgnoreWriteExceptions;
-                               o_stream = new ResponseStream (stream, context.Response, ign);
+                               
+                               if(listener == null)
+                                       return new ResponseStream (stream, context.Response, true);
+
+                               o_stream = new ResponseStream (stream, context.Response, listener.IgnoreWriteExceptions);
                        }
                        return o_stream;
                }
index efb06fe9aa82385b6a9df86d0c63fb8c121111b2..ae1159958aa3ef0738f811e29f27e2cd640cc61b 100644 (file)
@@ -40,6 +40,7 @@ using System.Net.Security;
 using System.Net.Cache;
 using System.Security.Principal;
 using System.Threading.Tasks;
+using System.Text.RegularExpressions;
 
 #if NET_2_1
 using ConfigurationException = System.ArgumentException;
@@ -332,6 +333,19 @@ namespace System.Net
                        throw GetMustImplement ();
                }
                
+               // Takes an ArrayList of fileglob-formatted strings and returns an array of Regex-formatted strings
+               private static string[] CreateBypassList (ArrayList al)
+               {
+                       string[] result = al.ToArray (typeof (string)) as string[];
+                       for (int c = 0; c < result.Length; c++)
+                       {
+                               result [c] = "^" +
+                                       Regex.Escape (result [c]).Replace (@"\*", ".*").Replace (@"\?", ".") +
+                                       "$";
+                       }
+                       return result;
+               }
+
                [MonoTODO("Look in other places for proxy config info")]
                public static IWebProxy GetSystemWebProxy ()
                {
@@ -375,7 +389,7 @@ namespace System.Net
                                                }
                                        }
                                        
-                                       return new WebProxy (strHttpProxy, bBypassOnLocal, al.ToArray (typeof(string)) as string[]);
+                                       return new WebProxy (strHttpProxy, bBypassOnLocal, CreateBypassList (al));
                                }
                        } else {
 #endif
@@ -425,7 +439,7 @@ namespace System.Net
                                                        }
                                                }
                                                
-                                               return new WebProxy (uri, bBypassOnLocal, al.ToArray (typeof(string)) as string[]);
+                                               return new WebProxy (uri, bBypassOnLocal, CreateBypassList (al));
                                        } catch (UriFormatException) {
                                        }
                                }
index e4f47a5d363dc9a8f593bb3602ad8a577d5caab5..184e586471dd30c167be16eca420d930c5c12bfb 100644 (file)
@@ -61,6 +61,9 @@ namespace System.Security.Cryptography.X509Certificates {
                [DllImport (CoreFoundationLibrary)]
                unsafe extern static IntPtr CFDataCreate (IntPtr allocator, byte *bytes, /* CFIndex */ IntPtr length);
 
+               [DllImport (CoreFoundationLibrary)]
+               extern static void CFRetain (IntPtr handle);
+
                [DllImport (CoreFoundationLibrary)]
                extern static void CFRelease (IntPtr handle);
 
@@ -97,6 +100,18 @@ namespace System.Security.Cryptography.X509Certificates {
                                        IntPtr.Zero);
                        }
                }
+
+               static IntPtr GetCertificate (X509Certificate certificate, out IntPtr dataPtr)
+               {
+                       var handle = certificate.Handle;
+                       if (handle != IntPtr.Zero) {
+                               dataPtr = IntPtr.Zero;
+                               CFRetain (handle);
+                               return handle;
+                       }
+                       dataPtr = MakeCFData (certificate.GetRawCertData ());
+                       return SecCertificateCreateWithData (IntPtr.Zero, dataPtr);
+               }
                
                public static SecTrustResult TrustEvaluateSsl (XX509CertificateCollection certificates, XX509CertificateCollection anchors, string host)
                {
@@ -126,19 +141,14 @@ namespace System.Security.Cryptography.X509Certificates {
                        SecTrustResult result = SecTrustResult.Deny;
 
                        try {
-                               for (int i = 0; i < certCount; i++)
-                                       cfDataPtrs [i] = MakeCFData (certificates [i].GetRawCertData ());
-                               for (int i = 0; i < anchorCount; i++)
-                                       cfDataAnchorPtrs [i] = MakeCFData (anchors [i].GetRawCertData ());
-                               
-                               for (int i = 0; i < certCount; i++){
-                                       secCerts [i] = SecCertificateCreateWithData (IntPtr.Zero, cfDataPtrs [i]);
+                               for (int i = 0; i < certCount; i++) {
+                                       secCerts [i] = GetCertificate (certificates [i], out cfDataPtrs [i]);
                                        if (secCerts [i] == IntPtr.Zero)
                                                return SecTrustResult.Deny;
                                }
 
                                for (int i = 0; i < anchorCount; i++) {
-                                       secCertAnchors [i] = SecCertificateCreateWithData (IntPtr.Zero, cfDataAnchorPtrs [i]);
+                                       secCertAnchors [i] = GetCertificate (anchors [i], out cfDataAnchorPtrs [i]);
                                        if (secCertAnchors [i] == IntPtr.Zero)
                                                return SecTrustResult.Deny;
                                }
index c38da6685212ff32b305aeaaf5efa670e7060f91..9ee0c544769a747cdba099b137fa760cae072113 100755 (executable)
@@ -4327,6 +4327,19 @@ namespace MonoTests.System.Net.Sockets
                        client.Receive (bytes, bytes.Length, 0);
                        client.Close ();
                }
+
+               [Test]
+               public void UdpMulticasTimeToLive ()
+               {
+                       /* see https://bugzilla.xamarin.com/show_bug.cgi?id=36941 */
+
+                       using (Socket socket = new Socket (AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)) {
+                               IPEndPoint end_point = new IPEndPoint (IPAddress.Any, 11000);
+                               socket.SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);
+                               socket.Bind (end_point);
+                               socket.SetSocketOption (SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 19);
+                       }
+               }
        }
 }
 
index 5e9103a1038a1a5155d6e92294fc6539bb02008b..589ec80e924146c2654a16df2109de8a2dfc3695 100644 (file)
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 using System;
+using System.IO;
 using System.Net;
 using System.Net.Sockets;
 using System.Threading;
+using System.Threading.Tasks;
 using NUnit.Framework;
 using MonoTests.Helpers;
 
@@ -531,6 +533,53 @@ namespace MonoTests.System.Net {
 
                        return clientEndPoint;
                }
+               
+               [Test]
+               public void HttpClientIsDisconnectedCheckForWriteException()
+               {
+                       string uri = "http://localhost:" + NetworkHelpers.FindFreePort () + "/";
+
+                       AutoResetEvent exceptionOccuredEvent = new AutoResetEvent (false);
+                       HttpListener listener = new HttpListener {
+                               IgnoreWriteExceptions = false
+                       };
+                       listener.Prefixes.Add (uri);
+                       listener.Start ();
+                       listener.BeginGetContext (result =>
+                       {
+                               HttpListenerContext context = listener.EndGetContext (result);
+                               context.Response.SendChunked = true;
+                               context.Request.InputStream.Close ();
+                               
+                               var bytes = new byte [1024];
+                               using(Stream outputStream = context.Response.OutputStream) {
+                                       try {
+                                               while (true) 
+                                                       outputStream.Write (bytes, 0, bytes.Length);
+                                       } catch {
+                                               exceptionOccuredEvent.Set ();
+                                       }
+                               }
+                       }, null);
+
+                       Task.Factory.StartNew (() =>
+                       {
+                               var webRequest = (HttpWebRequest)WebRequest.Create (uri);
+                               webRequest.Method = "POST";
+                               webRequest.KeepAlive = false;
+                               Stream requestStream = webRequest.GetRequestStream ();
+                               requestStream.WriteByte (1);
+                               requestStream.Close ();
+                               using (WebResponse response = webRequest.GetResponse ())
+                               using (Stream stream = response.GetResponseStream ()) {
+                                       byte[] clientBytes = new byte [1024];
+                                       Assert.IsNotNull (stream, "#01");
+                                       stream.Read (clientBytes, 0, clientBytes.Length);
+                               }
+                       });
+
+                       Assert.IsTrue (exceptionOccuredEvent.WaitOne (15 * 1000), "#02");
+               }
        }
 }
 
index f1c27f3309d8a36cc4d0f156f187e58e701890f9..144997e573b63c0cb211a47596cdbb0e676228ac 100644 (file)
@@ -53,42 +53,9 @@ namespace System.Security.Cryptography.X509Certificates {
 #else
        public partial class X509Certificate : IDeserializationCallback, ISerializable {
 #endif
-               // typedef struct _CERT_CONTEXT {
-                //     DWORD                   dwCertEncodingType;
-                //     BYTE                    *pbCertEncoded;
-               //      DWORD                   cbCertEncoded;
-               //      PCERT_INFO              pCertInfo;
-               //      HCERTSTORE              hCertStore;
-               // } CERT_CONTEXT, *PCERT_CONTEXT;
-               // typedef const CERT_CONTEXT *PCCERT_CONTEXT;
-               [StructLayout (LayoutKind.Sequential)]
-               internal struct CertificateContext {
-                       public UInt32 dwCertEncodingType;
-                       public IntPtr pbCertEncoded;
-                       public UInt32 cbCertEncoded;
-                       public IntPtr pCertInfo;
-                       public IntPtr hCertStore;
-               }
-               // NOTE: We only define the CryptoAPI structure (from WINCRYPT.H)
-               // so we don't create any dependencies on Windows DLL in corlib
+               X509CertificateImpl impl;
 
-               private Mono.Security.X509.X509Certificate x509;
                private bool hideDates;
-               private byte[] cachedCertificateHash;
-       
-               // almost every byte[] returning function has a string equivalent
-               // sadly the BitConverter insert dash between bytes :-(
-               private string tostr (byte[] data) 
-               {
-                       if (data != null) {
-                               StringBuilder sb = new StringBuilder ();
-                               for (int i = 0; i < data.Length; i++)
-                                       sb.Append (data[i].ToString ("X2"));
-                               return sb.ToString ();
-                       }
-                       else
-                               return null;
-               }
        
                // static methods
        
@@ -133,44 +100,24 @@ namespace System.Security.Cryptography.X509Certificates {
                public X509Certificate (byte[] data) : this (data, true)
                {
                }
-       
+
                public X509Certificate (IntPtr handle) 
                {
                        if (handle == IntPtr.Zero)
                                throw new ArgumentException ("Invalid handle.");
-#if NET_2_1
-                       // this works on Windows-only so it's of no use for Moonlight
-                       // even more since this ctor is [SecurityCritical]
-                       throw new NotSupportedException ();
-#else
-                       InitFromHandle (handle);
-#endif
-               }
 
-               [SecurityPermission (SecurityAction.Demand, UnmanagedCode = true)]
-               private void InitFromHandle (IntPtr handle)
-               {
-                       if (handle != IntPtr.Zero) {
-                               // both Marshal.PtrToStructure and Marshal.Copy use LinkDemand (so they will always success from here)
-                               CertificateContext cc = (CertificateContext) Marshal.PtrToStructure (handle, typeof (CertificateContext));
-                               byte[] data = new byte [cc.cbCertEncoded];
-                               Marshal.Copy (cc.pbCertEncoded, data, 0, (int)cc.cbCertEncoded);
-                               x509 = new Mono.Security.X509.X509Certificate (data);
-                       }
-                       // for 1.x IntPtr.Zero results in an "empty" certificate instance
+                       impl = X509Helper.InitFromHandle (handle);
                }
-       
+
                public X509Certificate (System.Security.Cryptography.X509Certificates.X509Certificate cert) 
                {
                        if (cert == null)
                                throw new ArgumentNullException ("cert");
 
-                       if (cert != null) {
-                               byte[] data = cert.GetRawCertData ();
-                               if (data != null)
-                                       x509 = new Mono.Security.X509.X509Certificate (data);
-                               hideDates = false;
-                       }
+                       X509Helper.ThrowIfContextInvalid (cert.impl);
+
+                       impl = X509Helper.InitFromCertificate (cert.impl);
+                       hideDates = false;
                }
 
 
@@ -181,53 +128,30 @@ namespace System.Security.Cryptography.X509Certificates {
                        if (other == null) {
                                return false;
                        } else {
-                               if (other.x509 == null) {
-                                       if (x509 == null)
+                               if (!X509Helper.IsValid (other.impl)) {
+                                       if (!X509Helper.IsValid (impl))
                                                return true;
                                        throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
                                }
 
-                               byte[] raw = other.x509.RawData;
-                               if (raw != null) {
-                                       if (x509 == null)
-                                               return false;
-                                       if (x509.RawData == null)
-                                               return false;
-                                       if (raw.Length == x509.RawData.Length) {
-                                               for (int i = 0; i < raw.Length; i++) {
-                                                       if (raw[i] != x509.RawData [i])
-                                                               return false;
-                                               }
-                                               // well no choice must be equals!
-                                               return true;
-                                       }
-                                       else
-                                               return false;
-                               }
+                               return X509CertificateImpl.Equals (impl, other.impl);
                        }
-                       return ((x509 == null) || (x509.RawData == null));
                }
-       
+
                // LAMESPEC: This is the equivalent of the "thumbprint" that can be seen
                // in the certificate viewer of Windows. This is ALWAYS the SHA1 hash of
                // the certificate (i.e. it has nothing to do with the actual hash 
                // algorithm used to sign the certificate).
                public virtual byte[] GetCertHash () 
                {
-                       if (x509 == null)
-                               throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
-                       // we'll hash the cert only once and only if required
-                       if ((cachedCertificateHash == null) && (x509 != null)) {
-                               SHA1 sha = SHA1.Create ();
-                               cachedCertificateHash = sha.ComputeHash (x509.RawData);
-                       }
-                       return cachedCertificateHash;
+                       X509Helper.ThrowIfContextInvalid (impl);
+                       return impl.GetCertHash ();
                }
        
                public virtual string GetCertHashString () 
                {
                        // must call GetCertHash (not variable) or optimization wont work
-                       return tostr (GetCertHash ());
+                       return X509Helper.ToHexString (GetCertHash ());
                }
        
                // strangly there are no DateTime returning function
@@ -235,10 +159,9 @@ namespace System.Security.Cryptography.X509Certificates {
                {
                        if (hideDates)
                                return null;
-                       if (x509 == null)
-                               throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
+                       X509Helper.ThrowIfContextInvalid (impl);
 
-                       return x509.ValidFrom.ToLocalTime ().ToString ();
+                       return impl.GetEffectiveDateString ().ToString ();
                }
        
                // strangly there are no DateTime returning function
@@ -246,10 +169,9 @@ namespace System.Security.Cryptography.X509Certificates {
                {
                        if (hideDates)
                                return null;
-                       if (x509 == null)
-                               throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
+                       X509Helper.ThrowIfContextInvalid (impl);
 
-                       return x509.ValidUntil.ToLocalTime ().ToString ();
+                       return impl.GetExpirationDateString ().ToString ();
                }
        
                // well maybe someday there'll be support for PGP or SPKI ?
@@ -260,41 +182,29 @@ namespace System.Security.Cryptography.X509Certificates {
        
                public override int GetHashCode ()
                {
-                       if (x509 == null)
-                               return 0;
-                       // the cert hash may not be (yet) calculated
-                       if (cachedCertificateHash == null)
-                               GetCertHash();
-               
-                       // return the integer of the first 4 bytes of the cert hash
-                       if ((cachedCertificateHash != null) && (cachedCertificateHash.Length >= 4))
-                               return ((cachedCertificateHash[0] << 24) |(cachedCertificateHash[1] << 16) |
-                                       (cachedCertificateHash[2] << 8) | cachedCertificateHash[3]);
-                       else
+                       if (!X509Helper.IsValid (impl))
                                return 0;
+                       return impl.GetHashCode ();
                }
 
                [Obsolete ("Use the Issuer property.")]
                public virtual string GetIssuerName () 
                {
-                       if (x509 == null)
-                               throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
-                       return x509.IssuerName;
+                       X509Helper.ThrowIfContextInvalid (impl);
+                       return impl.GetIssuerName (true);
                }
        
                public virtual string GetKeyAlgorithm () 
                {
-                       if (x509 == null)
-                               throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
-                       return x509.KeyAlgorithm;
+                       X509Helper.ThrowIfContextInvalid (impl);
+                       return impl.GetKeyAlgorithm ();
                }
        
                public virtual byte[] GetKeyAlgorithmParameters () 
                {
-                       if (x509 == null)
-                               throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
+                       X509Helper.ThrowIfContextInvalid (impl);
 
-                       byte[] kap = x509.KeyAlgorithmParameters;
+                       byte[] kap = impl.GetKeyAlgorithmParameters ();
                        if (kap == null)
                                throw new CryptographicException (Locale.GetText ("Parameters not part of the certificate"));
 
@@ -303,55 +213,50 @@ namespace System.Security.Cryptography.X509Certificates {
        
                public virtual string GetKeyAlgorithmParametersString () 
                {
-                       return tostr (GetKeyAlgorithmParameters ());
+                       return X509Helper.ToHexString (GetKeyAlgorithmParameters ());
                }
        
                [Obsolete ("Use the Subject property.")]
                public virtual string GetName ()
                {
-                       if (x509 == null)
-                               throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
-                       return x509.SubjectName;
+                       X509Helper.ThrowIfContextInvalid (impl);
+                       return impl.GetSubjectName (true);
                }
        
                public virtual byte[] GetPublicKey () 
                {
-                       if (x509 == null)
-                               throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
-                       return x509.PublicKey;
+                       X509Helper.ThrowIfContextInvalid (impl);
+                       return impl.GetPublicKey ();
                }
        
                public virtual string GetPublicKeyString () 
                {
-                       return tostr (GetPublicKey ());
+                       return X509Helper.ToHexString (GetPublicKey ());
                }
        
                public virtual byte[] GetRawCertData () 
                {
-                       if (x509 == null)
-                               throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
-                       return x509.RawData;
+                       X509Helper.ThrowIfContextInvalid (impl);
+                       return impl.GetRawCertData ();
                }
        
                public virtual string GetRawCertDataString () 
                {
-                       if (x509 == null)
-                               throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
-                       return tostr (x509.RawData);
+                       X509Helper.ThrowIfContextInvalid (impl);
+                       return X509Helper.ToHexString (impl.GetRawCertData ());
                }
        
                public virtual byte[] GetSerialNumber () 
                {
-                       if (x509 == null)
-                               throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
-                       return x509.SerialNumber;
+                       X509Helper.ThrowIfContextInvalid (impl);
+                       return impl.GetSerialNumber ();
                }
        
                public virtual string GetSerialNumberString () 
                {
                        byte[] sn = GetSerialNumber ();
                        Array.Reverse (sn);
-                       return tostr (sn);
+                       return X509Helper.ToHexString (sn);
                }
        
                // to please corcompare ;-)
@@ -362,18 +267,10 @@ namespace System.Security.Cryptography.X509Certificates {
        
                public virtual string ToString (bool fVerbose) 
                {
-                       if (!fVerbose || (x509 == null))
+                       if (!fVerbose || !X509Helper.IsValid (impl))
                                return base.ToString ();
 
-                       string nl = Environment.NewLine;
-                       StringBuilder sb = new StringBuilder ();
-                       sb.AppendFormat ("[Subject]{0}  {1}{0}{0}", nl, Subject);
-                       sb.AppendFormat ("[Issuer]{0}  {1}{0}{0}", nl, Issuer);
-                       sb.AppendFormat ("[Not Before]{0}  {1}{0}{0}", nl, GetEffectiveDateString ());
-                       sb.AppendFormat ("[Not After]{0}  {1}{0}{0}", nl, GetExpirationDateString ());
-                       sb.AppendFormat ("[Thumbprint]{0}  {1}{0}", nl, GetCertHashString ());
-                       sb.Append (nl);
-                       return sb.ToString ();
+                       return impl.ToString (true);
                }
 
                protected static string FormatDate (DateTime date)
index 7d5273ee1105497fcd9aeb89d1f716bc71ab4e49..78a71adbd566033509abeaf17d98c4e6c6fa9acb 100644 (file)
@@ -42,7 +42,7 @@ namespace System.Security.Cryptography.X509Certificates {
 
        [ComVisible (true)]
        [MonoTODO ("X509ContentType.SerializedCert isn't supported (anywhere in the class)")]
-       public partial class X509Certificate : IDeserializationCallback, ISerializable {
+       public partial class X509Certificate : IDeserializationCallback, ISerializable, IDisposable {
                private string issuer_name;
                private string subject_name;
 
@@ -110,29 +110,31 @@ namespace System.Security.Cryptography.X509Certificates {
 
                public string Issuer {
                        get {
-                               if (x509 == null)
-                                       throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
+                               X509Helper.ThrowIfContextInvalid (impl);
 
                                if (issuer_name == null)
-                                       issuer_name = X501.ToString (x509.GetIssuerName (), true, ", ", true);
+                                       issuer_name = impl.GetIssuerName (false);
                                return issuer_name;
                        }
                }
 
                public string Subject {
                        get {
-                               if (x509 == null)
-                                       throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
+                               X509Helper.ThrowIfContextInvalid (impl);
 
                                if (subject_name == null)
-                                       subject_name = X501.ToString (x509.GetSubjectName (), true, ", ", true);
+                                       subject_name = impl.GetSubjectName (false);
                                return subject_name;
                        }
                }
 
                [ComVisible (false)]
                public IntPtr Handle {
-                       get { return IntPtr.Zero; }
+                       get {
+                               if (X509Helper.IsValid (impl))
+                                       return impl.Handle;
+                               return IntPtr.Zero;
+                       }
                }
 
 
@@ -169,25 +171,10 @@ namespace System.Security.Cryptography.X509Certificates {
 
                internal byte[] Export (X509ContentType contentType, byte[] password)
                {
-                       if (x509 == null)
-                               throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
-
                        try {
-                               switch (contentType) {
-                               case X509ContentType.Cert:
-                                       return x509.RawData;
-                               case X509ContentType.Pfx: // this includes Pkcs12
-                                       // TODO
-                                       throw new NotSupportedException ();
-                               case X509ContentType.SerializedCert:
-                                       // TODO
-                                       throw new NotSupportedException ();
-                               default:
-                                       string msg = Locale.GetText ("This certificate format '{0}' cannot be exported.", contentType);
-                                       throw new CryptographicException (msg);
-                               }
-                       }
-                       finally {
+                               X509Helper.ThrowIfContextInvalid (impl);
+                               return impl.Export (contentType, password);
+                       } finally {
                                // protect password
                                if (password != null)
                                        Array.Clear (password, 0, password.Length);
@@ -200,59 +187,12 @@ namespace System.Security.Cryptography.X509Certificates {
                        Import (rawData, (string)null, X509KeyStorageFlags.DefaultKeySet);
                }
 
-               private Mono.Security.X509.X509Certificate ImportPkcs12 (byte[] rawData, string password)
-               {
-                       var pfx = (password == null) ? new Mono.Security.X509.PKCS12 (rawData) : new Mono.Security.X509.PKCS12 (rawData, password);
-                       if (pfx.Certificates.Count == 0) {
-                               // no certificate was found
-                               return null;
-                       } else if (pfx.Keys.Count == 0) {
-                               // no key were found - pick the first certificate
-                               return pfx.Certificates [0];
-                       } else {
-                               // find the certificate that match the first key
-                               var keypair = (pfx.Keys [0] as AsymmetricAlgorithm);
-                               string pubkey = keypair.ToXmlString (false);
-                               foreach (var c in pfx.Certificates) {
-                                       if ((c.RSA != null) && (pubkey == c.RSA.ToXmlString (false)))
-                                               return c;
-                                       if ((c.DSA != null) && (pubkey == c.DSA.ToXmlString (false)))
-                                               return c;
-                               }
-                               return pfx.Certificates [0]; // no match, pick first certificate without keys
-                       }
-               }
-
                [MonoTODO ("missing KeyStorageFlags support")]
                [ComVisible (false)]
                public virtual void Import (byte[] rawData, string password, X509KeyStorageFlags keyStorageFlags)
                {
                        Reset ();
-                       if (password == null) {
-                               try {
-                                       x509 = new Mono.Security.X509.X509Certificate (rawData);
-                               }
-                               catch (Exception e) {
-                                       try {
-                                               x509 = ImportPkcs12 (rawData, null);
-                                       }
-                                       catch {
-                                               string msg = Locale.GetText ("Unable to decode certificate.");
-                                               // inner exception is the original (not second) exception
-                                               throw new CryptographicException (msg, e);
-                                       }
-                               }
-                       } else {
-                               // try PKCS#12
-                               try {
-                                       x509 = ImportPkcs12 (rawData, password);
-                               }
-                               catch {
-                                       // it's possible to supply a (unrequired/unusued) password
-                                       // fix bug #79028
-                                       x509 = new Mono.Security.X509.X509Certificate (rawData);
-                               }
-                       }
+                       impl = X509Helper.Import (rawData, password, keyStorageFlags);
                }
 
                [MonoTODO ("SecureString support is incomplete")]
@@ -289,18 +229,34 @@ namespace System.Security.Cryptography.X509Certificates {
 
                void ISerializable.GetObjectData (SerializationInfo info, StreamingContext context)
                {
+                       if (!X509Helper.IsValid (impl))
+                               throw new NullReferenceException ();
                        // will throw a NRE if info is null (just like MS implementation)
-                       info.AddValue ("RawData", x509.RawData);
+                       info.AddValue ("RawData", impl.GetRawCertData ());
+               }
+
+               public void Dispose ()
+               {
+                       Dispose (true);
+               }
+
+               protected virtual void Dispose (bool disposing)
+               {
+                       if (disposing)
+                               Reset ();
                }
 
                [ComVisible (false)]
                public virtual void Reset ()
                {
-                       x509 = null;
+                       if (impl != null) {
+                               impl.Dispose ();
+                               impl = null;
+                       }
+
                        issuer_name = null;
                        subject_name = null;
                        hideDates = false;
-                       cachedCertificateHash = null;
                }
        }
 }
diff --git a/mcs/class/corlib/System.Security.Cryptography.X509Certificates/X509CertificateImpl.cs b/mcs/class/corlib/System.Security.Cryptography.X509Certificates/X509CertificateImpl.cs
new file mode 100644 (file)
index 0000000..e3dc5b3
--- /dev/null
@@ -0,0 +1,148 @@
+//
+// X509Helpers.cs: X.509 helper and utility functions.
+//
+// Authors:
+//     Martin Baulig  <martin.baulig@xamarin.com>
+//
+// Copyright (C) 2015 Xamarin, Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+namespace System.Security.Cryptography.X509Certificates
+{
+       internal abstract class X509CertificateImpl : IDisposable
+       {
+               public abstract bool IsValid {
+                       get;
+               }
+
+               public abstract IntPtr Handle {
+                       get;
+               }
+
+               protected void ThrowIfContextInvalid ()
+               {
+                       if (!IsValid)
+                               throw X509Helper.GetInvalidContextException ();
+               }
+
+               public abstract X509CertificateImpl Clone ();
+
+               public abstract string GetSubjectSummary ();
+
+               public abstract string GetIssuerName (bool legacyV1Mode);
+
+               public abstract string GetSubjectName (bool legacyV1Mode);
+
+               public abstract byte[] GetRawCertData ();
+
+               public abstract DateTime GetEffectiveDateString ();
+
+               public abstract DateTime GetExpirationDateString ();
+
+               byte[] cachedCertificateHash;
+
+               public byte[] GetCertHash ()
+               {
+                       ThrowIfContextInvalid ();
+                       if (cachedCertificateHash == null)
+                               cachedCertificateHash = GetCertHash (false);
+                       return cachedCertificateHash;
+               }
+
+               protected abstract byte[] GetCertHash (bool lazy);
+
+               public override int GetHashCode ()
+               {
+                       if (!IsValid)
+                               return 0;
+                       if (cachedCertificateHash == null)
+                               cachedCertificateHash = GetCertHash (true);
+                       // return the integer of the first 4 bytes of the cert hash
+                       if ((cachedCertificateHash != null) && (cachedCertificateHash.Length >= 4))
+                               return ((cachedCertificateHash [0] << 24) | (cachedCertificateHash [1] << 16) |
+                                       (cachedCertificateHash [2] << 8) | cachedCertificateHash [3]);
+                       else
+                               return 0;
+               }
+
+               public abstract bool Equals (X509CertificateImpl other, out bool result);
+
+               public abstract string GetKeyAlgorithm ();
+
+               public abstract byte[] GetKeyAlgorithmParameters ();
+
+               public abstract byte[] GetPublicKey ();
+
+               public abstract byte[] GetSerialNumber ();
+
+               public abstract byte[] Export (X509ContentType contentType, byte[] password);
+
+               public abstract string ToString (bool full);
+
+               public override bool Equals (object obj)
+               {
+                       var other = obj as X509CertificateImpl;
+                       if (other == null)
+                               return false;
+
+                       if (!IsValid || !other.IsValid)
+                               return false;
+
+                       bool result;
+                       if (Equals (other, out result))
+                               return result;
+
+                       var ourRaw = GetRawCertData ();
+                       var theirRaw = other.GetRawCertData ();
+
+                       if (ourRaw == null)
+                               return theirRaw == null;
+                       else if (theirRaw == null)
+                               return false;
+
+                       if (ourRaw.Length != theirRaw.Length)
+                               return false;
+
+                       for (int i = 0; i < ourRaw.Length; i++) {
+                               if (ourRaw [i] != theirRaw [i])
+                                       return false;
+                       }
+
+                       return true;
+               }
+
+               public void Dispose ()
+               {
+                       Dispose (true);
+                       GC.SuppressFinalize (this);
+               }
+
+               protected virtual void Dispose (bool disposing)
+               {
+                       cachedCertificateHash = null;
+               }
+
+               ~X509CertificateImpl ()
+               {
+                       Dispose (false);
+               }
+       }
+}
diff --git a/mcs/class/corlib/System.Security.Cryptography.X509Certificates/X509CertificateImplMono.cs b/mcs/class/corlib/System.Security.Cryptography.X509Certificates/X509CertificateImplMono.cs
new file mode 100644 (file)
index 0000000..85985c5
--- /dev/null
@@ -0,0 +1,179 @@
+//
+// X509CertificateImplMono.cs: X.509 implementation using Mono.Security.X509.
+//
+// Authors:
+//     Sebastien Pouliot  <sebastien@ximian.com>
+//     Martin Baulig  <martin.baulig@xamarin.com>
+//
+// (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
+// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2015 Xamarin, Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Text;
+using MX = Mono.Security.X509;
+
+namespace System.Security.Cryptography.X509Certificates
+{
+       class X509CertificateImplMono : X509CertificateImpl
+       {
+               MX.X509Certificate x509;
+
+               public X509CertificateImplMono (MX.X509Certificate x509)
+               {
+                       this.x509 = x509;
+               }
+
+               public override bool IsValid {
+                       get { return x509 != null; }
+               }
+
+               public override IntPtr Handle {
+                       get { return IntPtr.Zero; }
+               }
+
+               public override X509CertificateImpl Clone ()
+               {
+                       ThrowIfContextInvalid ();
+                       return new X509CertificateImplMono (x509);
+               }
+
+               public override string GetIssuerName (bool legacyV1Mode)
+               {
+                       ThrowIfContextInvalid ();
+                       if (legacyV1Mode)
+                               return x509.IssuerName;
+                       else
+                               return MX.X501.ToString (x509.GetIssuerName (), true, ", ", true);
+               }
+
+               public override string GetSubjectSummary ()
+               {
+                       ThrowIfContextInvalid ();
+                       return x509.SubjectName;
+               }
+
+               public override string GetSubjectName (bool legacyV1Mode)
+               {
+                       ThrowIfContextInvalid ();
+                       if (legacyV1Mode)
+                               return x509.SubjectName;
+                       else
+                               return MX.X501.ToString (x509.GetSubjectName (), true, ", ", true);
+               }
+
+               public override byte[] GetRawCertData ()
+               {
+                       ThrowIfContextInvalid ();
+                       return x509.RawData;
+               }
+
+               protected override byte[] GetCertHash (bool lazy)
+               {
+                       ThrowIfContextInvalid ();
+                       SHA1 sha = SHA1.Create ();
+                       return sha.ComputeHash (x509.RawData);
+               }
+
+               public override DateTime GetEffectiveDateString ()
+               {
+                       ThrowIfContextInvalid ();
+                       return x509.ValidFrom.ToLocalTime ();
+               }
+
+               public override DateTime GetExpirationDateString ()
+               {
+                       ThrowIfContextInvalid ();
+                       return x509.ValidUntil.ToLocalTime ();
+               }
+
+               public override bool Equals (X509CertificateImpl other, out bool result)
+               {
+                       // Use default implementation
+                       result = false;
+                       return false;
+               }
+
+               public override string GetKeyAlgorithm () 
+               {
+                       ThrowIfContextInvalid ();
+                       return x509.KeyAlgorithm;
+               }
+
+               public override byte[] GetKeyAlgorithmParameters () 
+               {
+                       ThrowIfContextInvalid ();
+                       return x509.KeyAlgorithmParameters;
+               }
+
+               public override byte[] GetPublicKey ()
+               {
+                       ThrowIfContextInvalid ();
+                       return x509.PublicKey;
+               }
+
+               public override byte[] GetSerialNumber ()
+               {
+                       ThrowIfContextInvalid ();
+                       return x509.SerialNumber;
+               }
+
+               public override byte[] Export (X509ContentType contentType, byte[] password)
+               {
+                       ThrowIfContextInvalid ();
+
+                       switch (contentType) {
+                       case X509ContentType.Cert:
+                               return GetRawCertData ();
+                       case X509ContentType.Pfx: // this includes Pkcs12
+                               // TODO
+                               throw new NotSupportedException ();
+                       case X509ContentType.SerializedCert:
+                               // TODO
+                               throw new NotSupportedException ();
+                       default:
+                               string msg = Locale.GetText ("This certificate format '{0}' cannot be exported.", contentType);
+                               throw new CryptographicException (msg);
+                       }
+               }
+
+               public override string ToString (bool full)
+               {
+                       ThrowIfContextInvalid ();
+
+                       string nl = Environment.NewLine;
+                       StringBuilder sb = new StringBuilder ();
+                       sb.AppendFormat ("[Subject]{0}  {1}{0}{0}", nl, GetSubjectName (false));
+                       sb.AppendFormat ("[Issuer]{0}  {1}{0}{0}", nl, GetIssuerName (false));
+                       sb.AppendFormat ("[Not Before]{0}  {1}{0}{0}", nl, GetEffectiveDateString ());
+                       sb.AppendFormat ("[Not After]{0}  {1}{0}{0}", nl, GetExpirationDateString ());
+                       sb.AppendFormat ("[Thumbprint]{0}  {1}{0}", nl, X509Helper.ToHexString (GetCertHash ()));
+                       sb.Append (nl);
+                       return sb.ToString ();
+               }
+
+               protected override void Dispose (bool disposing)
+               {
+                       x509 = null;
+               }
+       }
+}
diff --git a/mcs/class/corlib/System.Security.Cryptography.X509Certificates/X509Helper.cs b/mcs/class/corlib/System.Security.Cryptography.X509Certificates/X509Helper.cs
new file mode 100644 (file)
index 0000000..dc73f5a
--- /dev/null
@@ -0,0 +1,214 @@
+//
+// X509Helpers.cs: X.509 helper and utility functions.
+//
+// Authors:
+//     Sebastien Pouliot  <sebastien@ximian.com>
+//     Martin Baulig  <martin.baulig@xamarin.com>
+//
+// (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
+// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2015 Xamarin, Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Text;
+using System.Runtime.InteropServices;
+#if !NET_2_1
+using System.Security.Permissions;
+#endif
+using MX = Mono.Security.X509;
+
+namespace System.Security.Cryptography.X509Certificates
+{
+       static partial class X509Helper
+       {
+#if !NET_2_1
+               // typedef struct _CERT_CONTEXT {
+               //      DWORD                   dwCertEncodingType;
+               //      BYTE                    *pbCertEncoded;
+               //      DWORD                   cbCertEncoded;
+               //      PCERT_INFO              pCertInfo;
+               //      HCERTSTORE              hCertStore;
+               // } CERT_CONTEXT, *PCERT_CONTEXT;
+               // typedef const CERT_CONTEXT *PCCERT_CONTEXT;
+               [StructLayout (LayoutKind.Sequential)]
+               internal struct CertificateContext {
+                       public UInt32 dwCertEncodingType;
+                       public IntPtr pbCertEncoded;
+                       public UInt32 cbCertEncoded;
+                       public IntPtr pCertInfo;
+                       public IntPtr hCertStore;
+               }
+               // NOTE: We only define the CryptoAPI structure (from WINCRYPT.H)
+               // so we don't create any dependencies on Windows DLL in corlib
+
+               [SecurityPermission (SecurityAction.Demand, UnmanagedCode = true)]
+               public static X509CertificateImpl InitFromHandle (IntPtr handle)
+               {
+                       // both Marshal.PtrToStructure and Marshal.Copy use LinkDemand (so they will always success from here)
+                       CertificateContext cc = (CertificateContext) Marshal.PtrToStructure (handle, typeof (CertificateContext));
+                       byte[] data = new byte [cc.cbCertEncoded];
+                       Marshal.Copy (cc.pbCertEncoded, data, 0, (int)cc.cbCertEncoded);
+                       var x509 = new MX.X509Certificate (data);
+                       return new X509CertificateImplMono (x509);
+               }
+#elif !MONOTOUCH && !XAMMAC
+               public static X509CertificateImpl InitFromHandle (IntPtr handle)
+               {
+                       throw new NotSupportedException ();
+               }
+#endif
+
+               public static X509CertificateImpl InitFromCertificate (X509CertificateImpl impl)
+               {
+                       ThrowIfContextInvalid (impl);
+                       var copy = impl.Clone ();
+                       if (copy != null)
+                               return copy;
+
+                       var data = impl.GetRawCertData ();
+                       if (data == null)
+                               return null;
+
+                       var x509 = new MX.X509Certificate (data);
+                       return new X509CertificateImplMono (x509);
+               }
+
+               public static bool IsValid (X509CertificateImpl impl)
+               {
+                       return impl != null && impl.IsValid;
+               }
+
+               internal static void ThrowIfContextInvalid (X509CertificateImpl impl)
+               {
+                       if (!IsValid (impl))
+                               throw GetInvalidContextException ();
+               }
+
+               internal static Exception GetInvalidContextException ()
+               {
+                       return new CryptographicException (Locale.GetText ("Certificate instance is empty."));
+               }
+
+               internal static MX.X509Certificate ImportPkcs12 (byte[] rawData, string password)
+               {
+                       var pfx = (password == null) ? new MX.PKCS12 (rawData) : new MX.PKCS12 (rawData, password);
+                       if (pfx.Certificates.Count == 0) {
+                               // no certificate was found
+                               return null;
+                       } else if (pfx.Keys.Count == 0) {
+                               // no key were found - pick the first certificate
+                               return pfx.Certificates [0];
+                       } else {
+                               // find the certificate that match the first key
+                               var keypair = (pfx.Keys [0] as AsymmetricAlgorithm);
+                               string pubkey = keypair.ToXmlString (false);
+                               foreach (var c in pfx.Certificates) {
+                                       if ((c.RSA != null) && (pubkey == c.RSA.ToXmlString (false)))
+                                               return c;
+                                       if ((c.DSA != null) && (pubkey == c.DSA.ToXmlString (false)))
+                                               return c;
+                               }
+                               return pfx.Certificates [0]; // no match, pick first certificate without keys
+                       }
+               }
+
+#if !MONOTOUCH && !XAMMAC
+               public static X509CertificateImpl Import (byte[] rawData, string password, X509KeyStorageFlags keyStorageFlags)
+               {
+                       MX.X509Certificate x509;
+                       if (password == null) {
+                               try {
+                                       x509 = new MX.X509Certificate (rawData);
+                               } catch (Exception e) {
+                                       try {
+                                               x509 = ImportPkcs12 (rawData, null);
+                                       } catch {
+                                               string msg = Locale.GetText ("Unable to decode certificate.");
+                                               // inner exception is the original (not second) exception
+                                               throw new CryptographicException (msg, e);
+                                       }
+                               }
+                       } else {
+                               // try PKCS#12
+                               try {
+                                       x509 = ImportPkcs12 (rawData, password);
+                               }
+                               catch {
+                                       // it's possible to supply a (unrequired/unusued) password
+                                       // fix bug #79028
+                                       x509 = new MX.X509Certificate (rawData);
+                               }
+                       }
+
+                       return new X509CertificateImplMono (x509);
+               }
+#endif
+
+               public static byte[] Export (X509CertificateImpl impl, X509ContentType contentType, byte[] password)
+               {
+                       ThrowIfContextInvalid (impl);
+                       return impl.Export (contentType, password);
+               }
+
+               public static bool Equals (X509CertificateImpl first, X509CertificateImpl second)
+               {
+                       if (!IsValid (first) || !IsValid (second))
+                               return false;
+
+                       bool result;
+                       if (first.Equals (second, out result))
+                               return result;
+
+                       var firstRaw = first.GetRawCertData ();
+                       var secondRaw = second.GetRawCertData ();
+
+                       if (firstRaw == null)
+                               return secondRaw == null;
+                       else if (secondRaw == null)
+                               return false;
+
+                       if (firstRaw.Length != secondRaw.Length)
+                               return false;
+
+                       for (int i = 0; i < firstRaw.Length; i++) {
+                               if (firstRaw [i] != secondRaw [i])
+                                       return false;
+                       }
+
+                       return true;
+               }
+
+               // almost every byte[] returning function has a string equivalent
+               // sadly the BitConverter insert dash between bytes :-(
+               public static string ToHexString (byte[] data)
+               {
+                       if (data != null) {
+                               StringBuilder sb = new StringBuilder ();
+                               for (int i = 0; i < data.Length; i++)
+                                       sb.Append (data[i].ToString ("X2"));
+                               return sb.ToString ();
+                       }
+                       else
+                               return null;
+               }
+       }
+}
index 57e2fa6364e557041f8fd5e816e6fb80957620cc..71119b1673a7308b2bc7bf692771aad259bfdca3 100644 (file)
@@ -3,9 +3,11 @@
 //
 // Authors:
 //  Zoltan Varga (vargaz@gmail.com)
+//  Aleksey Kliger (aleksey@xamarin.com)
 //
 // (c) 2003 Ximian, Inc. (http://www.ximian.com)
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2015 Xamarin, Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -293,6 +295,35 @@ namespace MonoTests.System.Reflection
                        Assert.AreEqual (typeof (GBD_D), typeof (GBD_E).GetMethod ("f").GetBaseDefinition ().DeclaringType);
                }
 
+               class GenericBase<T,H> {
+                       public virtual void f2 () { }
+               }
+
+               class GenericMid<T, U> : GenericBase<T, Action<U>> {
+                       public virtual T f1 () { return default (T); }
+               }
+
+               class GenericChild<T> : GenericMid<T, int> {
+                       public override T f1 () { return default (T); }
+                       public override void f2 () { }
+               }
+
+               [Test]
+               public void GetBaseDefinition_OpenConstructedBaseType () // 36305
+               {
+                       var t = typeof (GenericChild<string>);
+
+                       var mi1 = t.GetMethod ("f1");
+                       var mi1_base = mi1.GetBaseDefinition ();
+
+                       Assert.AreEqual (typeof (GenericMid<string, int>), mi1_base.DeclaringType, "#1");
+
+                       var mi2 = t.GetMethod ("f2");
+                       var mi2_base = mi2.GetBaseDefinition ();
+
+                       Assert.AreEqual (typeof (GenericBase<string, Action<int>>), mi2_base.DeclaringType, "#2");
+               }
+
                class TestInheritedMethodA {
                        private void TestMethod ()
                        {
index 888b90c9b411eaf19fe7acd0492c09553940fbed..98c939312eadb5c37dea947046bf681ae0ae4459 100644 (file)
@@ -35,6 +35,25 @@ namespace MonoTests.System.Threading
        [TestFixture]
        public class ThreadPoolTests
        {
+               int minWorkerThreads;
+               int minCompletionPortThreads;
+               int maxWorkerThreads;
+               int maxCompletionPortThreads;
+
+               [SetUp]
+               public void SetUp ()
+               {
+                       ThreadPool.GetMinThreads (out minWorkerThreads, out minCompletionPortThreads);
+                       ThreadPool.GetMaxThreads (out maxWorkerThreads, out maxCompletionPortThreads);
+               }
+
+               [TearDown]
+               public void TearDown ()
+               {
+                       ThreadPool.SetMinThreads (minWorkerThreads, minCompletionPortThreads);
+                       ThreadPool.SetMaxThreads (maxWorkerThreads, maxCompletionPortThreads);
+               }
+
                [Test]
                public void RegisterWaitForSingleObject_InvalidArguments ()
                {
@@ -97,5 +116,87 @@ namespace MonoTests.System.Threading
                        ThreadPool.UnsafeQueueUserWorkItem (e, null);
                        Assert.IsTrue (ev.Wait (3000));
                }
+
+               [Test]
+               public void SetAndGetMinThreads ()
+               {
+                       int workerThreads, completionPortThreads;
+                       int workerThreads_new, completionPortThreads_new;
+
+                       ThreadPool.GetMinThreads (out workerThreads, out completionPortThreads);
+                       Assert.IsTrue (workerThreads > 0, "#1");
+                       Assert.IsTrue (completionPortThreads > 0, "#2");
+
+                       workerThreads_new = workerThreads == 1 ? 2 : 1;
+                       completionPortThreads_new = completionPortThreads == 1 ? 2 : 1;
+                       ThreadPool.SetMinThreads (workerThreads_new, completionPortThreads_new);
+
+                       ThreadPool.GetMinThreads (out workerThreads, out completionPortThreads);
+                       Assert.IsTrue (workerThreads == workerThreads_new, "#3");
+                       Assert.IsTrue (completionPortThreads == completionPortThreads_new, "#4");
+               }
+
+               [Test]
+               public void SetAndGetMaxThreads ()
+               {
+                       int cpuCount = Environment.ProcessorCount;
+                       int workerThreads, completionPortThreads;
+                       int workerThreads_new, completionPortThreads_new;
+
+                       ThreadPool.GetMaxThreads (out workerThreads, out completionPortThreads);
+                       Assert.IsTrue (workerThreads > 0, "#1");
+                       Assert.IsTrue (completionPortThreads > 0, "#2");
+
+                       workerThreads_new = workerThreads == cpuCount ? cpuCount + 1 : cpuCount;
+                       completionPortThreads_new = completionPortThreads == cpuCount ? cpuCount + 1 : cpuCount;
+                       ThreadPool.SetMaxThreads (workerThreads_new, completionPortThreads_new);
+
+                       ThreadPool.GetMaxThreads (out workerThreads, out completionPortThreads);
+                       Assert.IsTrue (workerThreads == workerThreads_new, "#3");
+                       Assert.IsTrue (completionPortThreads == completionPortThreads_new, "#4");
+               }
+
+               [Test]
+               public void GetAvailableThreads ()
+               {
+                       ManualResetEvent mre = new ManualResetEvent (false);
+                       DateTime start = DateTime.Now;
+                       int i, workerThreads, completionPortThreads;
+
+                       try {
+                               Assert.IsTrue (ThreadPool.SetMaxThreads (Environment.ProcessorCount, Environment.ProcessorCount));
+
+                               while (true) {
+                                       ThreadPool.GetAvailableThreads (out workerThreads, out completionPortThreads);
+                                       if (workerThreads == 0)
+                                               break;
+
+                                       Console.WriteLine ("workerThreads = {0}, completionPortThreads = {1}", workerThreads, completionPortThreads);
+
+                                       if ((DateTime.Now - start).TotalSeconds >= 10)
+                                               Assert.Fail ("did not reach 0 available threads");
+
+                                       ThreadPool.QueueUserWorkItem (GetAvailableThreads_Callback, mre);
+                                       Thread.Sleep (1);
+                               }
+                       } finally {
+                               mre.Set ();
+                       }
+               }
+
+               void GetAvailableThreads_Callback (object state)
+               {
+                       ManualResetEvent mre = (ManualResetEvent) state;
+
+                       if (mre.WaitOne (0))
+                               return;
+
+                       ThreadPool.QueueUserWorkItem (GetAvailableThreads_Callback, mre);
+                       ThreadPool.QueueUserWorkItem (GetAvailableThreads_Callback, mre);
+                       ThreadPool.QueueUserWorkItem (GetAvailableThreads_Callback, mre);
+                       ThreadPool.QueueUserWorkItem (GetAvailableThreads_Callback, mre);
+
+                       mre.WaitOne ();
+               }
        }
 }
\ No newline at end of file
index ce028bc12afdb847d8f9f77484c0144e5076c176..97c8153bfd57fa5e94fd32117d344a6b0e418411 100644 (file)
@@ -215,6 +215,20 @@ namespace MonoTests.System
                        StringComparer.Ordinal.GetHashCode (null);
                }
 
+               [Test]
+               [SetCulture("en-us")]
+               public void OrdinarCultureSwitch ()
+               {
+                       var cmp1 = StringComparer.OrdinalIgnoreCase;
+                       var h1 = cmp1.GetHashCode ("w");
+
+                       global::System.Threading.Thread.CurrentThread.CurrentCulture = new global::System.Globalization.CultureInfo ("fi");
+
+                       var cmp2 = StringComparer.OrdinalIgnoreCase;
+                       var h2 = cmp2.GetHashCode ("w");
+                       Assert.AreEqual (h1, h2);
+               }
+
                private static readonly byte [] _serializedCurrentCulture = new byte [] {
                        0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00,
                        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00,
index 293479eb851d41f9a6c6a9e89f083f3743b88257..7119236c8aab2bb638ec9916a2191e761088ed7c 100644 (file)
@@ -92,6 +92,21 @@ public class StringTest
                }
        }
 
+       [Test] // ctor (Char, Int32)
+       public void Constructor4_LargeString ()
+       {
+               try {
+                       var x = new String ('A', int.MaxValue);
+                       if (Environment.Is64BitProcess) {
+                               Assert.AreEqual ('A', x[0]);
+                               Assert.AreEqual ('A', x[int.MaxValue - 1]);
+                       }
+                       else
+                               Assert.Fail ("Expected OutOfMemoryException.");
+               } catch (OutOfMemoryException) {
+               }
+       }
+
        [Test] // ctor (Char [], Int32, Int32)
        public void Constructor6 ()
        {
@@ -2993,10 +3008,16 @@ public class StringTest
        }
 
        [Test]
-       public void PadLeft_Overflow ()
+       public void PadLeft_LargeString ()
        {
                try {
-                       "x".PadLeft (int.MaxValue, '-');
+                       var x = "x".PadLeft (int.MaxValue, '-');
+                       if (Environment.Is64BitProcess) {
+                               Assert.AreEqual ('-', x[0]);
+                               Assert.AreEqual ('x', x[int.MaxValue - 1]);
+                       }
+                       else
+                               Assert.Fail ("Expected OutOfMemoryException.");
                } catch (OutOfMemoryException) {
                }
        }
@@ -3043,10 +3064,16 @@ public class StringTest
        }
 
        [Test]
-       public void PadRight_Overflow ()
+       public void PadRight_LargeString ()
        {
                try {
-                       "x".PadRight (int.MaxValue, '-');
+                       var x = "x".PadRight (int.MaxValue, '-');
+                       if (Environment.Is64BitProcess) {
+                               Assert.AreEqual ('x', x[0]);
+                               Assert.AreEqual ('-', x[int.MaxValue - 1]);
+                       }
+                       else
+                               Assert.Fail ("Expected OutOfMemoryException.");
                } catch (OutOfMemoryException) {
                }
        }
index 136fc0b6312a38d51dc6507f69a4c27c72e73f88..89f9fc965b4ce7dc4a3f816c73b011b25b513cc2 100644 (file)
@@ -732,6 +732,9 @@ System.Security.Cryptography/SHA1CryptoServiceProvider.cs
 System.Security.Cryptography/TripleDESCryptoServiceProvider.cs
 System.Security.Cryptography.X509Certificates/X509Certificate.cs
 System.Security.Cryptography.X509Certificates/X509Certificate20.cs
+System.Security.Cryptography.X509Certificates/X509CertificateImpl.cs
+System.Security.Cryptography.X509Certificates/X509CertificateImplMono.cs
+System.Security.Cryptography.X509Certificates/X509Helper.cs
 System.Security.Cryptography.X509Certificates/X509ContentType.cs
 System.Security.Cryptography.X509Certificates/X509KeyStorageFlags.cs
 System.Security.Permissions/CodeAccessSecurityAttribute.cs
index 48a682c6901ebf8cbfaea51211d34189ec3d393a..5192cc102a3fb290bae7cafc60269ae20e9f72c0 100644 (file)
@@ -6013,16 +6013,19 @@ namespace Mono.CSharp
                                }
 
                                right.Emit (ec);
-                               switch (rtype.BuiltinType) {
-                               case BuiltinTypeSpec.Type.SByte:
-                               case BuiltinTypeSpec.Type.Byte:
-                               case BuiltinTypeSpec.Type.Short:
-                               case BuiltinTypeSpec.Type.UShort:
-                                       ec.Emit (OpCodes.Conv_I);
-                                       break;
-                               case BuiltinTypeSpec.Type.UInt:
-                                       ec.Emit (OpCodes.Conv_U);
-                                       break;
+                               if (right_const == null) {
+                                       switch (rtype.BuiltinType) {
+                                       case BuiltinTypeSpec.Type.SByte:
+                                       case BuiltinTypeSpec.Type.Byte:
+                                       case BuiltinTypeSpec.Type.Short:
+                                       case BuiltinTypeSpec.Type.UShort:
+                                       case BuiltinTypeSpec.Type.Int:
+                                               ec.Emit (OpCodes.Conv_I);
+                                               break;
+                                       case BuiltinTypeSpec.Type.UInt:
+                                               ec.Emit (OpCodes.Conv_U);
+                                               break;
+                                       }
                                }
 
                                if (right_const == null && size != 1){
index f7204392ff0f28660a209d17185bcab900ead40d..c88ac8885e5c075d882071ae3aa485b599ff5091 100644 (file)
@@ -11,7 +11,10 @@ class PointerArithmeticTest
                } catch (System.OverflowException) {}
                
                try {
-                       return CheckSub((short*)(-1), int.MaxValue);
+                       if (IntPtr.Size <= 4)
+                               return CheckSub((short*)(-1), int.MaxValue);
+                       else
+                               return CheckSub((short*)(-1), long.MaxValue);
                } catch (System.OverflowException) {}
                
                CheckSub2((short*)(-1), int.MaxValue);
@@ -44,6 +47,14 @@ class PointerArithmeticTest
                return 102;
        }
 
+       unsafe static int CheckSub(short* ptr, long offset)
+       {
+               if (checked(ptr - offset < ptr))
+                       return 2;
+
+               return 102;
+       }
+
        unsafe static int CheckSub2(short* ptr, int offset)
        {
                short* b = ptr + offset;
index 9aed044015c1eb79949deb9738275610a3f4e3b2..d543f197bd739480536eee24d8b2eb034351d025 100644 (file)
   <test name="gtest-fixedbuffer-05.cs">
     <type name="S2">
       <method name="Void Test()" attrs="134">
-        <size>42</size>
+        <size>43</size>
       </method>
       <method name="Void Main()" attrs="150">
         <size>17</size>
   <test name="test-401.cs">
     <type name="X">
       <method name="Int32 Main()" attrs="150">
-        <size>206</size>
+        <size>209</size>
       </method>
       <method name="Void .ctor()" attrs="6278">
         <size>7</size>
   <test name="test-408.cs">
     <type name="T">
       <method name="Int32 Main()" attrs="150">
-        <size>59</size>
+        <size>60</size>
       </method>
       <method name="Void .ctor()" attrs="6278">
         <size>7</size>
   <test name="test-643.cs">
     <type name="PointerArithmeticTest">
       <method name="Int32 Main()" attrs="150">
-        <size>137</size>
+        <size>170</size>
       </method>
       <method name="Int32* Conversions(Int64)" attrs="145">
         <size>11</size>
       </method>
       <method name="Int32 CheckAdd(Byte*, Int32)" attrs="145">
-        <size>27</size>
+        <size>28</size>
       </method>
       <method name="Int32 CheckSub(Int16*, Int32)" attrs="145">
-        <size>29</size>
+        <size>30</size>
       </method>
       <method name="Int32 CheckSub2(Int16*, Int32)" attrs="145">
-        <size>36</size>
+        <size>37</size>
       </method>
       <method name="Void .ctor()" attrs="6278">
         <size>7</size>
       </method>
+      <method name="Int32 CheckSub(Int16*, Int64)" attrs="145">
+        <size>31</size>
+      </method>
     </type>
   </test>
   <test name="test-644.cs">
         <size>33</size>
       </method>
       <method name="Void Test2(SByte, Int16, Int32, Int64, UInt64)" attrs="145">
-        <size>40</size>
+        <size>43</size>
       </method>
       <method name="Int32 Main()" attrs="150">
         <size>54</size>
   <test name="test-670.cs">
     <type name="C">
       <method name="Void Main()" attrs="150">
-        <size>15</size>
+        <size>17</size>
       </method>
       <method name="Void .ctor()" attrs="6278">
         <size>7</size>
         <size>7</size>
       </method>
       <method name="Void CopyTo(Int32, Char[], Int32, Int32)" attrs="145">
-        <size>71</size>
+        <size>73</size>
       </method>
     </type>
   </test>
index 4611bf698423f9fbcbee43e1d4e881336f755735..3b3774c5725b08b9f6a15f4b0fb66fa01ac9ab64 100755 (executable)
@@ -751,6 +751,7 @@ void          mono_register_config_for_assembly (const char* assembly_name, cons
                        {
                                Error(String.Format("[Fail] {0}", ret));
                        }
+                       return;
                }
 
                // on Windows, we have to pipe the output of a
index 3c27732bf4f26f682aeedbbe4394285df23edb76..d6f012b3b9f1a4f3feb44a3122a4325120037353 100644 (file)
                Condition="'$(TargetFrameworkIdentifier)' == '' or '$(TargetFrameworkIdentifier)' == '.NETFramework'"
                DependsOnTargets="$(GetFrameworkPathsDependsOn)">
                <GetFrameworkPath>
-                       <Output Condition="'$(TargetFrameworkVersion)' == 'v4.5' and '$(TargetFrameworkVersion)' == 'v4.5.1'"
+                       <Output Condition="'$(TargetFrameworkVersion)' == 'v4.5' or '$(TargetFrameworkVersion)' == 'v4.5.1' or '$(TargetFrameworkVersion)' == 'v4.5.2'"
                                TaskParameter="FrameworkVersion45Path"
                                ItemName="_CombinedTargetFrameworkDirectoriesItem"/>
                        <Output Condition="'$(TargetFrameworkVersion)' == 'v4.0'"
                </CreateProperty>
 
                <Warning Text="TargetFrameworkVersion '$(TargetFrameworkVersion)' not supported by this toolset (ToolsVersion: $(MSBuildToolsVersion))."
-                       Condition="'$(TargetFrameworkVersion)' != 'v4.5.1' and '$(TargetFrameworkVersion)' != 'v4.5' and '$(TargetFrameworkVersion)' != 'v4.0' and '$(TargetFrameworkVersion)' != 'v3.5' and '$(TargetFrameworkVersion)' != 'v3.0' and '$(TargetFrameworkVersion)' != 'v2.0'"/>
+                       Condition="'$(TargetFrameworkVersion)' != 'v4.5.2' and '$(TargetFrameworkVersion)' != 'v4.5.1' and '$(TargetFrameworkVersion)' != 'v4.5' and '$(TargetFrameworkVersion)' != 'v4.0' and '$(TargetFrameworkVersion)' != 'v3.5' and '$(TargetFrameworkVersion)' != 'v3.0' and '$(TargetFrameworkVersion)' != 'v2.0'"/>
        </Target>
 
        <PropertyGroup>
                <AssignProjectConfiguration
                        ProjectReferences = "@(ProjectReference)"
                        SolutionConfigurationContents = "$(CurrentSolutionConfigurationContents)"
-                       Condition="'$(BuildingSolutionFile)' == 'true' or '$(BuildingInsideVisualStudio)' == 'true'">
+                       Condition="$(CurrentSolutionConfigurationContents) != '' and ('$(BuildingSolutionFile)' == 'true' or '$(BuildingInsideVisualStudio)' == 'true')">
 
                        <Output TaskParameter = "AssignedProjects" ItemName = "ProjectReferenceWithConfiguration"/>
                </AssignProjectConfiguration>
 
                <!-- Else, just -->
-               <CreateItem Include="@(ProjectReference)" Condition="'$(BuildingSolutionFile)' != 'true' and '$(BuildingInsideVisualStudio)' != 'true'">
+               <CreateItem Include="@(ProjectReference)" Condition="$(CurrentSolutionConfigurationContents) == '' or ('$(BuildingSolutionFile)' != 'true' and '$(BuildingInsideVisualStudio)' != 'true')">
                        <Output TaskParameter="Include" ItemName="ProjectReferenceWithConfiguration"/>
                </CreateItem>
 
index 094a1383bb7b51ec99373e2640d5cfffe5b25bc0..5e90fd09ce0ddc851d04db618f1f59bf71958e95 100644 (file)
                Condition="'$(TargetFrameworkIdentifier)' == '' or '$(TargetFrameworkIdentifier)' == '.NETFramework'"
                DependsOnTargets="$(GetFrameworkPathsDependsOn)">
                <GetFrameworkPath>
-                       <Output Condition="'$(TargetFrameworkVersion)' == 'v4.5' and '$(TargetFrameworkVersion)' == 'v4.5.1'"
+                       <Output Condition="'$(TargetFrameworkVersion)' == 'v4.5' or '$(TargetFrameworkVersion)' == 'v4.5.1' or '$(TargetFrameworkVersion)' == 'v4.5.2' or '$(TargetFrameworkVersion)' == 'v4.6' or '$(TargetFrameworkVersion)' == 'v4.6.1'"
                                TaskParameter="FrameworkVersion45Path"
                                ItemName="_CombinedTargetFrameworkDirectoriesItem"/>
                        <Output Condition="'$(TargetFrameworkVersion)' == 'v4.0'"
                </CreateProperty>
 
                <Warning Text="TargetFrameworkVersion '$(TargetFrameworkVersion)' not supported by this toolset (ToolsVersion: $(MSBuildToolsVersion))."
-                       Condition="'$(TargetFrameworkVersion)' != 'v4.5.1' and '$(TargetFrameworkVersion)' != 'v4.5' and '$(TargetFrameworkVersion)' != 'v4.0' and '$(TargetFrameworkVersion)' != 'v3.5' and '$(TargetFrameworkVersion)' != 'v3.0' and '$(TargetFrameworkVersion)' != 'v2.0'"/>
+                       Condition="'$(TargetFrameworkVersion)' != 'v4.6.1' and '$(TargetFrameworkVersion)' != 'v4.6' and '$(TargetFrameworkVersion)' != 'v4.5.2' and '$(TargetFrameworkVersion)' != 'v4.5.1' and '$(TargetFrameworkVersion)' != 'v4.5' and '$(TargetFrameworkVersion)' != 'v4.0' and '$(TargetFrameworkVersion)' != 'v3.5' and '$(TargetFrameworkVersion)' != 'v3.0' and '$(TargetFrameworkVersion)' != 'v2.0'"/>
        </Target>
 
        <PropertyGroup>
                <AssignProjectConfiguration
                        ProjectReferences = "@(ProjectReference)"
                        SolutionConfigurationContents = "$(CurrentSolutionConfigurationContents)"
-                       Condition="'$(BuildingSolutionFile)' == 'true' or '$(BuildingInsideVisualStudio)' == 'true'">
+                       Condition="$(CurrentSolutionConfigurationContents) != '' and ('$(BuildingSolutionFile)' == 'true' or '$(BuildingInsideVisualStudio)' == 'true')">
 
                        <Output TaskParameter = "AssignedProjects" ItemName = "ProjectReferenceWithConfiguration"/>
                </AssignProjectConfiguration>
 
                <!-- Else, just -->
-               <CreateItem Include="@(ProjectReference)" Condition="'$(BuildingSolutionFile)' != 'true' and '$(BuildingInsideVisualStudio)' != 'true'">
+               <CreateItem Include="@(ProjectReference)" Condition="$(CurrentSolutionConfigurationContents) == '' or ('$(BuildingSolutionFile)' != 'true' and '$(BuildingInsideVisualStudio)' != 'true')">
                        <Output TaskParameter="Include" ItemName="ProjectReferenceWithConfiguration"/>
                </CreateItem>
 
index 079b8e092a2e4154871b7bfec7e714eb7dce598d..74c1a9d6d709125245e0af0f0f662761cd4eb4d1 100644 (file)
                <AssignProjectConfiguration
                        ProjectReferences = "@(ProjectReference)"
                        SolutionConfigurationContents = "$(CurrentSolutionConfigurationContents)"
-                       Condition="'$(BuildingSolutionFile)' == 'true' or '$(BuildingInsideVisualStudio)' == 'true'">
+                       Condition="$(CurrentSolutionConfigurationContents) != '' and ('$(BuildingSolutionFile)' == 'true' or '$(BuildingInsideVisualStudio)' == 'true')">
 
                        <Output TaskParameter = "AssignedProjects" ItemName = "ProjectReferenceWithConfiguration"/>
                </AssignProjectConfiguration>
 
                <!-- Else, just -->
-               <CreateItem Include="@(ProjectReference)" Condition="'$(BuildingSolutionFile)' != 'true' and '$(BuildingInsideVisualStudio)' != 'true'">
+               <CreateItem Include="@(ProjectReference)" Condition="$(CurrentSolutionConfigurationContents) == '' or ('$(BuildingSolutionFile)' != 'true' and '$(BuildingInsideVisualStudio)' != 'true')">
                        <Output TaskParameter="Include" ItemName="ProjectReferenceWithConfiguration"/>
                </CreateItem>
 
index c3f560a5f0e6191049df0eddd3bcdab4e1dcd6af..9ffa41d923366bd582b9556d491268df854f11c0 100644 (file)
                <AssignProjectConfiguration
                        ProjectReferences = "@(ProjectReference)"
                        SolutionConfigurationContents = "$(CurrentSolutionConfigurationContents)"
-                       Condition="'$(BuildingSolutionFile)' == 'true' or '$(BuildingInsideVisualStudio)' == 'true'">
+                       Condition="$(CurrentSolutionConfigurationContents) != '' and ('$(BuildingSolutionFile)' == 'true' or '$(BuildingInsideVisualStudio)' == 'true')">
 
                        <Output TaskParameter = "AssignedProjects" ItemName = "ProjectReferenceWithConfiguration"/>
                </AssignProjectConfiguration>
 
                <!-- Else, just -->
-               <CreateItem Include="@(ProjectReference)" Condition="'$(BuildingSolutionFile)' != 'true' and '$(BuildingInsideVisualStudio)' != 'true'">
+               <CreateItem Include="@(ProjectReference)" Condition="$(CurrentSolutionConfigurationContents) == '' or ('$(BuildingSolutionFile)' != 'true' and '$(BuildingInsideVisualStudio)' != 'true')">
                        <Output TaskParameter="Include" ItemName="ProjectReferenceWithConfiguration"/>
                </CreateItem>
 
index 47b6b7f36e068e0631f374b4545c9853de7d9e93..39bc73e41d068e35e01358360c93d391d7806da4 100644 (file)
                <AssignProjectConfiguration
                        ProjectReferences = "@(ProjectReference)"
                        SolutionConfigurationContents = "$(CurrentSolutionConfigurationContents)"
-                       Condition="'$(BuildingSolutionFile)' == 'true' or '$(BuildingInsideVisualStudio)' == 'true'">
+                       Condition="$(CurrentSolutionConfigurationContents) != '' and ('$(BuildingSolutionFile)' == 'true' or '$(BuildingInsideVisualStudio)' == 'true')">
 
                        <Output TaskParameter = "AssignedProjects" ItemName = "ProjectReferenceWithConfiguration"/>
                </AssignProjectConfiguration>
 
                <!-- Else, just -->
-               <CreateItem Include="@(ProjectReference)" Condition="'$(BuildingSolutionFile)' != 'true' and '$(BuildingInsideVisualStudio)' != 'true'">
+               <CreateItem Include="@(ProjectReference)" Condition="$(CurrentSolutionConfigurationContents) == '' or ('$(BuildingSolutionFile)' != 'true' and '$(BuildingInsideVisualStudio)' != 'true')">
                        <Output TaskParameter="Include" ItemName="ProjectReferenceWithConfiguration"/>
                </CreateItem>
 
index 79f68fb8b24db80ffa61417741c6cabc999e1efb..bc40414ba48f77883ff9131dc48957191e247403 100755 (executable)
@@ -56,7 +56,7 @@ disassemble_cil (MonoImage *m, MonoMethodHeader *mh, MonoGenericContainer *conta
 #endif
 
        if (mh->num_clauses) {
-              trys = g_malloc0 (sizeof (gboolean) * mh->num_clauses);
+              trys = (gboolean *)g_malloc0 (sizeof (gboolean) * mh->num_clauses);
               trys [0] = 1;
               for (i=1; i < mh->num_clauses; ++i) {
 #define jcl mh->clauses [j]    
index db55cef8ef1675381648ccd0f651d3ae726d89c4..d54e382434c290a15b940fc81cb63f38f30c16c8 100755 (executable)
@@ -661,14 +661,14 @@ dump_table_methodimpl (MonoImage *m)
 
        for (i = 1; i <= t->rows; i++){
                guint32 cols [MONO_METHODIMPL_SIZE];
-               char *class, *impl, *decl;
+               char *klass, *impl, *decl;
 
                mono_metadata_decode_row (t, i - 1, cols, MONO_METHODIMPL_SIZE);
-               class = get_typedef (m, cols [MONO_METHODIMPL_CLASS]);
+               klass = get_typedef (m, cols [MONO_METHODIMPL_CLASS]);
                impl = get_method (m, method_dor_to_token (cols [MONO_METHODIMPL_BODY]), NULL);
                decl = get_method (m, method_dor_to_token (cols [MONO_METHODIMPL_DECLARATION]), NULL);
-               fprintf (output, "%d: %s\n\tdecl: %s\n\timpl: %s\n", i, class, decl, impl);
-               g_free (class);
+               fprintf (output, "%d: %s\n\tdecl: %s\n\timpl: %s\n", i, klass, decl, impl);
+               g_free (klass);
                g_free (impl);
                g_free (decl);
        }
index c034e8fc71bd09996e397f8bce965ffeeecf054d..de99c35081dcc99cba3815b5d8562b57ec664c28 100755 (executable)
@@ -2222,7 +2222,7 @@ get_encoded_user_string_or_bytearray (const unsigned char *ptr, int len)
        char *res, *eres, *result;
        int i;
 
-       res = g_malloc ((len >> 1) + 1);
+       res = (char *)g_malloc ((len >> 1) + 1);
 
        /*
         * I should really use some kind of libunicode here
@@ -3137,7 +3137,7 @@ check_ambiguous_genparams (MonoGenericContainer *container)
        for (i = 0; i < container->type_argc; i++) {
                MonoGenericParam *param = mono_generic_container_get_param (container, i);
 
-               if ((p = g_hash_table_lookup (table, mono_generic_param_info (param)->name)))
+               if ((p = (gpointer *)g_hash_table_lookup (table, mono_generic_param_info (param)->name)))
                        dup_list = g_slist_prepend (g_slist_prepend (dup_list, GUINT_TO_POINTER (i + 1)), p);
                else
                        g_hash_table_insert (table, (char*)mono_generic_param_info (param)->name, GUINT_TO_POINTER (i + 1));
index 4d4a51cd8e77fedf3e286e921b33e2cb2adb4e17..6a96e4329e1c85db0164f0e0263b2c15791aeb06 100644 (file)
@@ -301,7 +301,7 @@ dis_directive_moduleref (MonoImage *m)
 static void
 dis_nt_header (MonoImage *m)
 {
-       MonoCLIImageInfo *image_info = m->image_info;
+       MonoCLIImageInfo *image_info = (MonoCLIImageInfo *)m->image_info;
        if (image_info && image_info->cli_header.nt.pe_stack_reserve != 0x100000)
                fprintf (output, ".stackreserve 0x%x\n", image_info->cli_header.nt.pe_stack_reserve);
 }
@@ -493,7 +493,7 @@ dis_field_list (MonoImage *m, guint32 start, guint32 end, MonoGenericContainer *
                        
                        if ((crow = mono_metadata_get_constant_index (m, MONO_TOKEN_FIELD_DEF | (i+1), 0))) {
                                mono_metadata_decode_row (&m->tables [MONO_TABLE_CONSTANT], crow-1, const_cols, MONO_CONSTANT_SIZE);
-                               lit = get_constant (m, const_cols [MONO_CONSTANT_TYPE], const_cols [MONO_CONSTANT_VALUE]);
+                               lit = get_constant (m, (MonoTypeEnum)const_cols [MONO_CONSTANT_TYPE], const_cols [MONO_CONSTANT_VALUE]);
                        } else {
                                lit = g_strdup ("not found");
                        }
@@ -800,7 +800,7 @@ dump_cattrs_for_method_params (MonoImage *m, guint32 midx, MonoMethodSignature *
                        if ((crow = mono_metadata_get_constant_index(m, MONO_TOKEN_PARAM_DEF | i, 0))) {
                                guint32 const_cols [MONO_CONSTANT_SIZE];
                                mono_metadata_decode_row( &m->tables[MONO_TABLE_CONSTANT], crow-1, const_cols, MONO_CONSTANT_SIZE);
-                               lit = get_constant(m, const_cols [MONO_CONSTANT_TYPE], const_cols [MONO_CONSTANT_VALUE]);
+                               lit = get_constant (m, (MonoTypeEnum)const_cols [MONO_CONSTANT_TYPE], const_cols [MONO_CONSTANT_VALUE]);
                        }
                        else {
                                lit = g_strdup ("not found");
@@ -1664,7 +1664,7 @@ setup_filter (MonoImage *image)
        const char *name = mono_image_get_name (image);
 
        for (item = filter_list; item; item = item->next) {
-               ifilter = item->data;
+               ifilter = (ImageFilter *)item->data;
                if (strcmp (ifilter->name, name) == 0) {
                        cur_filter = ifilter;
                        return;
@@ -1676,8 +1676,8 @@ setup_filter (MonoImage *image)
 static int
 int_cmp (const void *e1, const void *e2)
 {
-       const int *i1 = e1;
-       const int *i2 = e2;
+       const int *i1 = (const int *)e1;
+       const int *i2 = (const int *)e2;
        return *i1 - *i2;
 }
 
@@ -1720,7 +1720,7 @@ add_filter (const char *name)
        GList *item;
 
        for (item = filter_list; item; item = item->next) {
-               ifilter = item->data;
+               ifilter = (ImageFilter *)item->data;
                if (strcmp (ifilter->name, name) == 0)
                        return ifilter;
        }
@@ -1736,10 +1736,10 @@ add_item (TableFilter *tf, int val)
        if (tf->count >= tf->size) {
                if (!tf->size) {
                        tf->size = 8;
-                       tf->elems = g_malloc (sizeof (int) * tf->size);
+                       tf->elems = (int *)g_malloc (sizeof (int) * tf->size);
                } else {
                        tf->size *= 2;
-                       tf->elems = g_realloc (tf->elems, sizeof (int) * tf->size);
+                       tf->elems = (int *)g_realloc (tf->elems, sizeof (int) * tf->size);
                }
        }
        tf->elems [tf->count++] = val;
@@ -1752,7 +1752,7 @@ sort_filter_elems (void)
        GList *item;
 
        for (item = filter_list; item; item = item->next) {
-               ifilter = item->data;
+               ifilter = (ImageFilter *)item->data;
                qsort (ifilter->types.elems, ifilter->types.count, sizeof (int), int_cmp);
                qsort (ifilter->fields.elems, ifilter->fields.count, sizeof (int), int_cmp);
                qsort (ifilter->methods.elems, ifilter->methods.count, sizeof (int), int_cmp);
@@ -1913,7 +1913,7 @@ monodis_assembly_search_hook (MonoAssemblyName *aname, gpointer user_data)
         GList *tmp;
 
        for (tmp = loaded_assemblies; tmp; tmp = tmp->next) {
-               MonoAssembly *ass = tmp->data;
+               MonoAssembly *ass = (MonoAssembly *)tmp->data;
                if (mono_assembly_names_equal (aname, &ass->aname))
                       return ass;
        }
@@ -2000,7 +2000,7 @@ main (int argc, char *argv [])
         * If we just have one file, use the corlib version it requires.
         */
        if (!input_files->next) {
-               char *filename = input_files->data;
+               char *filename = (char *)input_files->data;
 
                mono_init_from_assembly (argv [0], filename);
 
@@ -2011,7 +2011,7 @@ main (int argc, char *argv [])
                mono_init (argv [0]);
 
                for (l = input_files; l; l = l->next)
-                       disassemble_file (l->data);
+                       disassemble_file ((const char *)l->data);
        }
 
        return 0;
index 1f2c5e14acdc67ea007c49b6aa2079ed3afa54d7..b963eb6a053a15d5d108e3b3af96fe011c93fa32 100644 (file)
@@ -12,7 +12,6 @@ libwapiincludedir = $(includedir)/mono-$(API_VER)/mono/io-layer
 
 OTHER_H = \
        access.h        \
-       collection.h    \
        context.h       \
        error.h         \
        events.h        \
@@ -39,8 +38,6 @@ OTHER_H = \
 
 OTHER_SRC = \
        access.h                \
-       collection.c            \
-       collection.h            \
        context.c               \
        context.h               \
        error.c                 \
diff --git a/mono/io-layer/collection.c b/mono/io-layer/collection.c
deleted file mode 100644 (file)
index e731590..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * collection.c:  Garbage collection for handles
- *
- * Author:
- *     Dick Porter (dick@ximian.com)
- *
- * (C) 2004-2006 Novell, Inc.
- */
-
-#include <config.h>
-#include <glib.h>
-#include <pthread.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-#include <mono/io-layer/wapi.h>
-#include <mono/io-layer/collection.h>
-#include <mono/io-layer/handles-private.h>
-#include <mono/utils/atomic.h>
-
-#if 0
-// #define DEBUG(...) g_message(__VA_ARGS__)
-#else
-#define DEBUG(...)
-#endif
-
-static pthread_t collection_thread_id;
-
-static gpointer collection_thread (gpointer unused G_GNUC_UNUSED)
-{
-       struct timespec sleepytime;
-
-       sleepytime.tv_sec = _WAPI_HANDLE_COLLECTION_UPDATE_INTERVAL;
-       sleepytime.tv_nsec = 0;
-
-       while (_wapi_has_shut_down == FALSE) {
-               nanosleep (&sleepytime, NULL);
-
-               //_wapi_handle_dump ();
-               _wapi_handle_update_refs ();
-       }
-
-       pthread_exit (NULL);
-
-       return(NULL);
-}
-
-void _wapi_collection_init (void)
-{
-       pthread_attr_t attr;
-       int ret;
-        int set_stacksize = 0;
-
- retry:
-        ret = pthread_attr_init (&attr);
-        g_assert (ret == 0);
-
-#if defined(HAVE_PTHREAD_ATTR_SETSTACKSIZE)
-        if (set_stacksize == 0) {
-                       ret = pthread_attr_setstacksize (&attr, MAX (65536, PTHREAD_STACK_MIN));
-                       g_assert (ret == 0);
-        } else if (set_stacksize == 1) {
-                       ret = pthread_attr_setstacksize (&attr, 131072);
-                       g_assert (ret == 0);
-        }
-#endif
-
-        ret = pthread_create (&collection_thread_id, &attr, collection_thread,
-                              NULL);
-        if (ret != 0 && set_stacksize < 2) {
-                set_stacksize++;
-                goto retry;
-        }
-       if (ret != 0) {
-               g_error ("%s: Couldn't create handle collection thread: %s",
-                        __func__, g_strerror (ret));
-       }
-}
-
-void _wapi_handle_collect (void)
-{
-       guint32 count = _wapi_shared_layout->collection_count;
-       int i, thr_ret;
-
-       if (!_wapi_shm_enabled ())
-               return;
-       
-       DEBUG ("%s: (%d) Starting a collection", __func__, _wapi_getpid ());
-
-       /* Become the collection master */
-       thr_ret = _wapi_handle_lock_shared_handles ();
-       g_assert (thr_ret == 0);
-       
-       thr_ret = _wapi_shm_sem_lock (_WAPI_SHARED_SEM_FILESHARE);
-       g_assert (thr_ret == 0);
-       
-       DEBUG ("%s: (%d) Master set", __func__, _wapi_getpid ());
-       
-       /* If count has changed, someone else jumped in as master */
-       if (count == _wapi_shared_layout->collection_count) {
-               guint32 too_old = (guint32)(time(NULL) & 0xFFFFFFFF) - _WAPI_HANDLE_COLLECTION_EXPIRED_INTERVAL;
-
-               for (i = 0; i < _WAPI_HANDLE_INITIAL_COUNT; i++) {
-                       struct _WapiHandleShared *data;
-                       
-                       data = &_wapi_shared_layout->handles[i];
-                       if (data->timestamp < too_old) {
-                               DEBUG ("%s: (%d) Deleting handle 0x%x", __func__, _wapi_getpid (), i);
-                               memset (&_wapi_shared_layout->handles[i], '\0', sizeof(struct _WapiHandleShared));
-                       }
-               }
-
-               for (i = 0; i < _wapi_fileshare_layout->hwm; i++) {
-                       struct _WapiFileShare *file_share = &_wapi_fileshare_layout->share_info[i];
-                       
-                       if (file_share->timestamp < too_old) {
-                               memset (file_share, '\0',
-                                       sizeof(struct _WapiFileShare));
-                       }
-               }
-
-               InterlockedIncrement ((gint32 *)&_wapi_shared_layout->collection_count);
-       }
-       
-       thr_ret = _wapi_shm_sem_unlock (_WAPI_SHARED_SEM_FILESHARE);
-       g_assert (thr_ret == 0);
-        
-       _wapi_handle_unlock_shared_handles ();
-
-       DEBUG ("%s: (%d) Collection done", __func__, _wapi_getpid ());
-}
diff --git a/mono/io-layer/collection.h b/mono/io-layer/collection.h
deleted file mode 100644 (file)
index 95831d3..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * collection.h:  Garbage collection for handles
- *
- * Author:
- *     Dick Porter (dick@ximian.com)
- *
- * (C) 2004 Novell, Inc.
- */
-
-#ifndef _WAPI_COLLECTION_H_
-#define _WAPI_COLLECTION_H_
-
-#include <glib.h>
-
-G_BEGIN_DECLS
-
-#define _WAPI_HANDLE_COLLECTION_UPDATE_INTERVAL                10
-#define _WAPI_HANDLE_COLLECTION_EXPIRED_INTERVAL       60
-
-#include <mono/io-layer/shared.h>
-
-extern void _wapi_collection_init (void);
-extern void _wapi_handle_collect (void);
-
-G_END_DECLS
-
-#endif /* _WAPI_COLLECTION_H_ */
index 2d10fd52ba0edc0c277a074412ac2ef02b7d1b5e..3ad606bcebc95ebdf277e88344cc714b93237138 100644 (file)
@@ -88,11 +88,9 @@ static mono_once_t event_ops_once=MONO_ONCE_INIT;
 static void event_ops_init (void)
 {
        _wapi_handle_register_capabilities (WAPI_HANDLE_EVENT,
-                                           WAPI_HANDLE_CAP_WAIT |
-                                           WAPI_HANDLE_CAP_SIGNAL);
+               (WapiHandleCapability)(WAPI_HANDLE_CAP_WAIT | WAPI_HANDLE_CAP_SIGNAL));
        _wapi_handle_register_capabilities (WAPI_HANDLE_NAMEDEVENT,
-                                           WAPI_HANDLE_CAP_WAIT |
-                                           WAPI_HANDLE_CAP_SIGNAL);
+               (WapiHandleCapability)(WAPI_HANDLE_CAP_WAIT | WAPI_HANDLE_CAP_SIGNAL));
 }
 
 static void event_signal(gpointer handle)
index 6200f073700ebf2b04153391e2f204498c77c1a6..4f20de02d411248bec7f67f5b4dc256d084696f1 100644 (file)
@@ -17,7 +17,6 @@
 #include <sys/types.h>
 
 #include <mono/io-layer/wapi-private.h>
-#include <mono/io-layer/collection.h>
 #include <mono/io-layer/shared.h>
 #include <mono/utils/atomic.h>
 
@@ -31,7 +30,6 @@
 
 extern struct _WapiHandleUnshared *_wapi_private_handles [];
 extern struct _WapiHandleSharedLayout *_wapi_shared_layout;
-extern struct _WapiFileShareLayout *_wapi_fileshare_layout;
 
 extern guint32 _wapi_fd_reserve;
 extern mono_mutex_t *_wapi_global_signal_mutex;
@@ -89,7 +87,6 @@ extern gboolean _wapi_handle_get_or_set_share (guint64 device, guint64 inode,
 extern void _wapi_handle_check_share (struct _WapiFileShare *share_info,
                                      int fd);
 extern void _wapi_handle_dump (void);
-extern void _wapi_handle_update_refs (void);
 extern void _wapi_handle_foreach (WapiHandleType type,
                                        gboolean (*on_each)(gpointer test, gpointer user),
                                        gpointer user_data);
index 12e383504e8cf277cf83e70c430df1087f898891..f92b6566d8c4886f5e88bd1f40facfc4e44c8bf9 100644 (file)
@@ -39,7 +39,6 @@
 #include <mono/io-layer/wapi-private.h>
 #include <mono/io-layer/handles-private.h>
 #include <mono/io-layer/shared.h>
-#include <mono/io-layer/collection.h>
 #include <mono/io-layer/process-private.h>
 
 #include <mono/utils/mono-os-mutex.h>
@@ -56,7 +55,7 @@
 
 static void (*_wapi_handle_ops_get_close_func (WapiHandleType type))(gpointer, gpointer);
 
-static WapiHandleCapability handle_caps[WAPI_HANDLE_COUNT]={0};
+static WapiHandleCapability handle_caps[WAPI_HANDLE_COUNT] = { (WapiHandleCapability)0 };
 static struct _WapiHandleOps *handle_ops[WAPI_HANDLE_COUNT]={
        NULL,
        &_wapi_file_ops,
@@ -126,11 +125,6 @@ static guint32 _wapi_private_handle_slot_count = 0;
 
 struct _WapiHandleSharedLayout *_wapi_shared_layout = NULL;
 
-/*
- * If SHM is enabled, this will point to shared memory, otherwise it will be NULL.
- */
-struct _WapiFileShareLayout *_wapi_fileshare_layout = NULL;
-
 /*
  * If SHM is disabled, this will point to a hash of _WapiFileShare structures, otherwise
  * it will be NULL. We use this instead of _wapi_fileshare_layout to avoid allocating a
@@ -208,8 +202,7 @@ static void handle_cleanup (void)
        
        _wapi_shm_semaphores_remove ();
 
-       _wapi_shm_detach (WAPI_SHM_DATA);
-       _wapi_shm_detach (WAPI_SHM_FILESHARE);
+       g_free (_wapi_shared_layout);
 
        if (file_share_hash) {
                g_hash_table_destroy (file_share_hash);
@@ -257,20 +250,10 @@ wapi_init (void)
        } while(_wapi_fd_reserve > _wapi_private_handle_count);
 
        _wapi_shm_semaphores_init ();
-       
-       _wapi_shared_layout = _wapi_shm_attach (WAPI_SHM_DATA);
+
+       _wapi_shared_layout = (_WapiHandleSharedLayout *)g_malloc0 (sizeof (_WapiHandleSharedLayout));
        g_assert (_wapi_shared_layout != NULL);
-       
-       if (_wapi_shm_enabled ()) {
-               /* This allocates a 4mb array, so do it only if SHM is enabled */
-               _wapi_fileshare_layout = _wapi_shm_attach (WAPI_SHM_FILESHARE);
-               g_assert (_wapi_fileshare_layout != NULL);
-       }
-       
-#if !defined (DISABLE_SHARED_HANDLES)
-       if (_wapi_shm_enabled ())
-               _wapi_collection_init ();
-#endif
+
        _wapi_io_init ();
        mono_os_mutex_init (&scan_mutex);
 
@@ -544,7 +527,6 @@ _wapi_handle_new (WapiHandleType type, gpointer handle_specific)
                
                ref = _wapi_handle_new_shared (type, handle_specific);
                if (ref == 0) {
-                       _wapi_handle_collect ();
                        ref = _wapi_handle_new_shared (type, handle_specific);
                        if (ref == 0) {
                                /* FIXME: grow the arrays */
@@ -959,11 +941,6 @@ gint32 _wapi_search_handle_namespace (WapiHandleType type,
        DEBUG ("%s: Lookup for handle named [%s] type %s", __func__,
                   utf8_name, _wapi_handle_typename[type]);
 
-       /* Do a handle collection before starting to look, so that any
-        * stale cruft gets removed
-        */
-       _wapi_handle_collect ();
-       
        thr_ret = _wapi_handle_lock_shared_handles ();
        g_assert (thr_ret == 0);
        
@@ -1623,21 +1600,17 @@ _wapi_handle_timedwait_signal_handle (gpointer handle, guint32 timeout, gboolean
 void
 _wapi_free_share_info (_WapiFileShare *share_info)
 {
-       if (!_wapi_shm_enabled ()) {
-               file_share_hash_lock ();
-               g_hash_table_remove (file_share_hash, share_info);
-               file_share_hash_unlock ();
-               /* The hashtable dtor frees share_info */
-       } else {
-               memset (share_info, '\0', sizeof(struct _WapiFileShare));
-       }
+       file_share_hash_lock ();
+       g_hash_table_remove (file_share_hash, share_info);
+       file_share_hash_unlock ();
+       /* The hashtable dtor frees share_info */
 }
 
 static gint
 wapi_share_info_equal (gconstpointer ka, gconstpointer kb)
 {
-       const _WapiFileShare *s1 = ka;
-       const _WapiFileShare *s2 = kb;
+       const _WapiFileShare *s1 = (const _WapiFileShare *)ka;
+       const _WapiFileShare *s2 = (const _WapiFileShare *)kb;
 
        return (s1->device == s2->device && s1->inode == s2->inode) ? 1 : 0;
 }
@@ -1645,7 +1618,7 @@ wapi_share_info_equal (gconstpointer ka, gconstpointer kb)
 static guint
 wapi_share_info_hash (gconstpointer data)
 {
-       const _WapiFileShare *s = data;
+       const _WapiFileShare *s = (const _WapiFileShare *)data;
 
        return s->inode;
 }
@@ -1658,8 +1631,7 @@ gboolean _wapi_handle_get_or_set_share (guint64 device, guint64 inode,
                                        struct _WapiFileShare **share_info)
 {
        struct _WapiFileShare *file_share;
-       guint32 now = (guint32)(time(NULL) & 0xFFFFFFFF);
-       int thr_ret, i, first_unused = -1;
+       int thr_ret;
        gboolean exists = FALSE;
 
        /* Prevents entries from expiring under us as we search
@@ -1671,110 +1643,46 @@ gboolean _wapi_handle_get_or_set_share (guint64 device, guint64 inode,
        thr_ret = _wapi_shm_sem_lock (_WAPI_SHARED_SEM_FILESHARE);
        g_assert (thr_ret == 0);
 
-       if (!_wapi_shm_enabled ()) {
-               _WapiFileShare tmp;
-
-               /*
-                * Instead of allocating a 4MB array, we use a hash table to keep track of this
-                * info. This is needed even if SHM is disabled, to track sharing inside
-                * the current process.
-                */
-               if (!file_share_hash) {
-                       file_share_hash = g_hash_table_new_full (wapi_share_info_hash, wapi_share_info_equal, NULL, g_free);
-                       mono_os_mutex_init_recursive (&file_share_hash_mutex);
-               }
-                       
-               tmp.device = device;
-               tmp.inode = inode;
+       _WapiFileShare tmp;
 
-               file_share_hash_lock ();
+       /*
+        * Instead of allocating a 4MB array, we use a hash table to keep track of this
+        * info. This is needed even if SHM is disabled, to track sharing inside
+        * the current process.
+        */
+       if (!file_share_hash) {
+               file_share_hash = g_hash_table_new_full (wapi_share_info_hash, wapi_share_info_equal, NULL, g_free);
+               mono_os_mutex_init_recursive (&file_share_hash_mutex);
+       }
 
-               file_share = g_hash_table_lookup (file_share_hash, &tmp);
-               if (file_share) {
-                       *old_sharemode = file_share->sharemode;
-                       *old_access = file_share->access;
-                       *share_info = file_share;
-                       
-                       InterlockedIncrement ((gint32 *)&file_share->handle_refs);
-                       exists = TRUE;
-               } else {
-                       file_share = g_new0 (_WapiFileShare, 1);
+       tmp.device = device;
+       tmp.inode = inode;
 
-                       file_share->device = device;
-                       file_share->inode = inode;
-                       file_share->opened_by_pid = _wapi_getpid ();
-                       file_share->sharemode = new_sharemode;
-                       file_share->access = new_access;
-                       file_share->handle_refs = 1;
-                       *share_info = file_share;
+       file_share_hash_lock ();
 
-                       g_hash_table_insert (file_share_hash, file_share, file_share);
-               }
+       file_share = (_WapiFileShare *)g_hash_table_lookup (file_share_hash, &tmp);
+       if (file_share) {
+               *old_sharemode = file_share->sharemode;
+               *old_access = file_share->access;
+               *share_info = file_share;
 
-               file_share_hash_unlock ();
+               InterlockedIncrement ((gint32 *)&file_share->handle_refs);
+               exists = TRUE;
        } else {
-               /* If a linear scan gets too slow we'll have to fit a hash
-                * table onto the shared mem backing store
-                */
-               *share_info = NULL;
-               for (i = 0; i <= _wapi_fileshare_layout->hwm; i++) {
-                       file_share = &_wapi_fileshare_layout->share_info[i];
+               file_share = g_new0 (_WapiFileShare, 1);
 
-                       /* Make a note of an unused slot, in case we need to
-                        * store share info
-                        */
-                       if (first_unused == -1 && file_share->handle_refs == 0) {
-                               first_unused = i;
-                               continue;
-                       }
-               
-                       if (file_share->handle_refs == 0) {
-                               continue;
-                       }
-               
-                       if (file_share->device == device &&
-                               file_share->inode == inode) {
-                               *old_sharemode = file_share->sharemode;
-                               *old_access = file_share->access;
-                               *share_info = file_share;
-                       
-                               /* Increment the reference count while we
-                                * still have sole access to the shared area.
-                                * This makes the increment atomic wrt
-                                * collections
-                                */
-                               InterlockedIncrement ((gint32 *)&file_share->handle_refs);
-                       
-                               exists = TRUE;
-                               break;
-                       }
-               }
-       
-               if (!exists) {
-                       if (i == _WAPI_FILESHARE_SIZE && first_unused == -1) {
-                               /* No more space */
-                       } else {
-                               if (first_unused == -1) {
-                                       file_share = &_wapi_fileshare_layout->share_info[++i];
-                                       _wapi_fileshare_layout->hwm = i;
-                               } else {
-                                       file_share = &_wapi_fileshare_layout->share_info[first_unused];
-                               }
-                       
-                               file_share->device = device;
-                               file_share->inode = inode;
-                               file_share->opened_by_pid = _wapi_getpid ();
-                               file_share->sharemode = new_sharemode;
-                               file_share->access = new_access;
-                               file_share->handle_refs = 1;
-                               *share_info = file_share;
-                       }
-               }
+               file_share->device = device;
+               file_share->inode = inode;
+               file_share->opened_by_pid = _wapi_getpid ();
+               file_share->sharemode = new_sharemode;
+               file_share->access = new_access;
+               file_share->handle_refs = 1;
+               *share_info = file_share;
 
-               if (*share_info != NULL) {
-                       InterlockedExchange ((gint32 *)&(*share_info)->timestamp, now);
-               }
+               g_hash_table_insert (file_share_hash, file_share, file_share);
        }
+
+       file_share_hash_unlock ();
        
        thr_ret = _wapi_shm_sem_unlock (_WAPI_SHARED_SEM_FILESHARE);
 
@@ -1935,57 +1843,3 @@ static void _wapi_shared_details (gpointer handle_info)
        
        g_print ("offset: 0x%x", shared->offset);
 }
-
-void _wapi_handle_update_refs (void)
-{
-       guint32 i, k;
-       int thr_ret;
-       guint32 now = (guint32)(time (NULL) & 0xFFFFFFFF);
-       
-       thr_ret = _wapi_handle_lock_shared_handles ();
-       g_assert (thr_ret == 0);
-
-       /* Prevent file share entries racing with us */
-       thr_ret = _wapi_shm_sem_lock (_WAPI_SHARED_SEM_FILESHARE);
-       g_assert(thr_ret == 0);
-
-       thr_ret = mono_os_mutex_lock (&scan_mutex);
-       
-       for(i = SLOT_INDEX (0); i < _wapi_private_handle_slot_count; i++) {
-               if (_wapi_private_handles [i]) {
-                       for (k = SLOT_OFFSET (0); k < _WAPI_HANDLE_INITIAL_COUNT; k++) {
-                               struct _WapiHandleUnshared *handle = &_wapi_private_handles [i][k];
-
-                               if (_WAPI_SHARED_HANDLE(handle->type)) {
-                                       struct _WapiHandleShared *shared_data;
-                               
-                                       DEBUG ("%s: (%d) handle 0x%x is SHARED (%s)", __func__, _wapi_getpid (), i * _WAPI_HANDLE_INITIAL_COUNT + k, _wapi_handle_typename[handle->type]);
-
-                                       shared_data = &_wapi_shared_layout->handles[handle->u.shared.offset];
-
-                                       DEBUG ("%s: (%d) Updating timestamp of handle 0x%x", __func__, _wapi_getpid (), handle->u.shared.offset);
-
-                                       InterlockedExchange ((gint32 *)&shared_data->timestamp, now);
-                               } else if (handle->type == WAPI_HANDLE_FILE) {
-                                       struct _WapiHandle_file *file_handle = &handle->u.file;
-                               
-                                       DEBUG ("%s: (%d) handle 0x%x is FILE", __func__, _wapi_getpid (), i * _WAPI_HANDLE_INITIAL_COUNT + k);
-                               
-                                       g_assert (file_handle->share_info != NULL);
-
-                                       DEBUG ("%s: (%d) Inc refs on fileshare 0x%x", __func__, _wapi_getpid (), (file_handle->share_info - &_wapi_fileshare_layout->share_info[0]) / sizeof(struct _WapiFileShare));
-
-                                       InterlockedExchange ((gint32 *)&file_handle->share_info->timestamp, now);
-                               }
-                       }
-               }
-       }
-
-       thr_ret = mono_os_mutex_unlock (&scan_mutex);
-       g_assert (thr_ret == 0);
-       
-       thr_ret = _wapi_shm_sem_unlock (_WAPI_SHARED_SEM_FILESHARE);
-
-       _wapi_handle_unlock_shared_handles ();
-}
-
index 3272cc623b32b4829303b9cc62bf1b1fbef3e38b..e06a61aa9d514437d02dae2e7f62b8199b8dca63 100644 (file)
@@ -1454,14 +1454,6 @@ static gboolean share_check (struct stat *statbuf, guint32 sharemode,
                               share_info) == TRUE) {
                return (TRUE);
        }
-       
-       /* Still violating.  It's possible that a process crashed
-        * while still holding a file handle, and that a non-mono
-        * process has the file open.  (For example, C-c mcs while
-        * editing a source file.)  As a last resort, run a handle
-        * collection, which will remove stale share entries.
-        */
-       _wapi_handle_collect ();
 
        return(share_allows_open (statbuf, sharemode, fileaccess, share_info));
 }
@@ -1494,7 +1486,7 @@ static gboolean share_check (struct stat *statbuf, guint32 sharemode,
 gpointer CreateFile(const gunichar2 *name, guint32 fileaccess,
                    guint32 sharemode, WapiSecurityAttributes *security,
                    guint32 createmode, guint32 attrs,
-                   gpointer template G_GNUC_UNUSED)
+                   gpointer template_ G_GNUC_UNUSED)
 {
        struct _WapiHandle_file file_handle = {0};
        gpointer handle;
@@ -1508,7 +1500,7 @@ gpointer CreateFile(const gunichar2 *name, guint32 fileaccess,
        mode_t perms=0666;
        gchar *filename;
        int fd, ret;
-       int handle_type;
+       WapiHandleType handle_type;
        struct stat statbuf;
        
        mono_once (&io_ops_once, io_ops_init);
@@ -3706,7 +3698,7 @@ append_to_mountpoint (LinuxMountInfoParseState *state)
        if (state->mountpoint_allocated) {
                if (state->mountpoint_index >= state->allocated_size) {
                        guint32 newsize = (state->allocated_size << 1) + 1;
-                       gchar *newbuf = g_malloc0 (newsize * sizeof (gchar));
+                       gchar *newbuf = (gchar *)g_malloc0 (newsize * sizeof (gchar));
 
                        memcpy (newbuf, state->mountpoint_allocated, state->mountpoint_index);
                        g_free (state->mountpoint_allocated);
@@ -3717,7 +3709,7 @@ append_to_mountpoint (LinuxMountInfoParseState *state)
        } else {
                if (state->mountpoint_index >= GET_LOGICAL_DRIVE_STRINGS_MOUNTPOINT_BUFFER) {
                        state->allocated_size = (state->mountpoint_index << 1) + 1;
-                       state->mountpoint_allocated = g_malloc0 (state->allocated_size * sizeof (gchar));
+                       state->mountpoint_allocated = (gchar *)g_malloc0 (state->allocated_size * sizeof (gchar));
                        memcpy (state->mountpoint_allocated, state->mountpoint, state->mountpoint_index);
                        state->mountpoint_allocated [state->mountpoint_index++] = ch;
                } else
index 12a1310d96784cf7bb40bb5a1c8c6789ebc6b145..4c5a492b95b004db8c46322334e0bea5310ebe01 100644 (file)
@@ -177,7 +177,7 @@ extern gboolean WriteFile(gpointer handle, gconstpointer buffer,
 extern gboolean FlushFileBuffers(gpointer handle);
 extern gboolean SetEndOfFile(gpointer handle);
 extern guint32 SetFilePointer(gpointer handle, gint32 movedistance,
-                             gint32 *highmovedistance, WapiSeekMethod method);
+                             gint32 *highmovedistance, guint32 method);
 extern WapiFileType GetFileType(gpointer handle);
 extern guint32 GetFileSize(gpointer handle, guint32 *highsize);
 extern gboolean GetFileTime(gpointer handle, WapiFileTime *create_time,
index 80a5209f4588367cf9aeb2a48a862137af36c63e..9c5bd31e06a5307d2e910290ea58cdf3a8f5f296 100644 (file)
@@ -1830,7 +1830,7 @@ find_msg (guint32 id, ErrorDesc *base, int n)
        ErrorDesc d, *result;
        d.id = id;
        
-       result = mono_binary_search (&d, base, n, sizeof (ErrorDesc), msg_compare);
+       result = (ErrorDesc *)mono_binary_search (&d, base, n, sizeof (ErrorDesc), msg_compare);
        if (result == NULL)
                return NULL;
        return result->txt;
index 8852a4b36d1b3e0489a6bac2bcca93333d8501b1..e1a4539a0b193ee513c6cc553bb9855df6a736ff 100644 (file)
@@ -91,13 +91,9 @@ static mono_once_t mutex_ops_once=MONO_ONCE_INIT;
 static void mutex_ops_init (void)
 {
        _wapi_handle_register_capabilities (WAPI_HANDLE_MUTEX,
-                                           WAPI_HANDLE_CAP_WAIT |
-                                           WAPI_HANDLE_CAP_SIGNAL |
-                                           WAPI_HANDLE_CAP_OWN);
+               (WapiHandleCapability)(WAPI_HANDLE_CAP_WAIT | WAPI_HANDLE_CAP_SIGNAL | WAPI_HANDLE_CAP_OWN));
        _wapi_handle_register_capabilities (WAPI_HANDLE_NAMEDMUTEX,
-                                           WAPI_HANDLE_CAP_WAIT |
-                                           WAPI_HANDLE_CAP_SIGNAL |
-                                           WAPI_HANDLE_CAP_OWN);
+               (WapiHandleCapability)(WAPI_HANDLE_CAP_WAIT | WAPI_HANDLE_CAP_SIGNAL | WAPI_HANDLE_CAP_OWN));
 }
 
 static void mutex_signal(gpointer handle)
index df8d7143d57ffa72c6cc47e4f5fd300cb08cb7cb..851ffaffb6eb1b6f2712a38daca9cec9d7c59cea 100644 (file)
@@ -1137,8 +1137,7 @@ wapi_processes_init (void)
        WapiHandle_process process_handle = {0};
 
        _wapi_handle_register_capabilities (WAPI_HANDLE_PROCESS,
-                                           WAPI_HANDLE_CAP_WAIT |
-                                           WAPI_HANDLE_CAP_SPECIAL_WAIT);
+               (WapiHandleCapability)(WAPI_HANDLE_CAP_WAIT | WAPI_HANDLE_CAP_SPECIAL_WAIT));
        
        process_handle.id = pid;
 
@@ -1831,7 +1830,7 @@ gboolean EnumProcessModules (gpointer process, gpointer *modules,
        }
                
        for (i = 0; i < count; i++) {
-               free_procmodule (g_slist_nth_data (mods, i));
+               free_procmodule ((WapiProcModule *)g_slist_nth_data (mods, i));
        }
        g_slist_free (mods);
        g_free (proc_name);
@@ -2633,7 +2632,7 @@ mono_processes_cleanup (void)
                 * they have the 'finished' flag set, which means the sigchld handler is done
                 * accessing them.
                 */
-               mp = l->data;
+               mp = (MonoProcess *)l->data;
                mono_os_sem_destroy (&mp->exit_sem);
                g_free (mp);
        }
index c2b78d44387dbc11d3b0bd6105170b2bc74a07ec..a5ff917f4dfb392ce2941f152b600cce216163f8 100644 (file)
@@ -107,13 +107,13 @@ typedef struct _WapiShellExecuteInfo WapiShellExecuteInfo;
 struct _WapiShellExecuteInfo
 {
        guint32 cbSize;
-       WapiShellExecuteInfoFlags fMask;
+       gulong fMask;
        gpointer hwnd;
        const gunichar2 *lpVerb;
        const gunichar2 *lpFile;
        const gunichar2 *lpParameters;
        const gunichar2 *lpDirectory;
-       WapiShellExecuteShowFlags nShow;
+       gulong nShow;
        gpointer hInstApp;
        gpointer lpIDList;
        const gunichar2 *lpClass;
index 460541cc5cf6a104cb7d99be4ba3f4e587eee450..01179f4d18244f0e3469aeecc5d6a1a0a90de149 100644 (file)
@@ -87,11 +87,9 @@ static mono_once_t sem_ops_once=MONO_ONCE_INIT;
 static void sem_ops_init (void)
 {
        _wapi_handle_register_capabilities (WAPI_HANDLE_SEM,
-                                           WAPI_HANDLE_CAP_WAIT |
-                                           WAPI_HANDLE_CAP_SIGNAL);
+               (WapiHandleCapability)(WAPI_HANDLE_CAP_WAIT | WAPI_HANDLE_CAP_SIGNAL));
        _wapi_handle_register_capabilities (WAPI_HANDLE_NAMEDSEM,
-                                           WAPI_HANDLE_CAP_WAIT |
-                                           WAPI_HANDLE_CAP_SIGNAL);
+               (WapiHandleCapability)(WAPI_HANDLE_CAP_WAIT | WAPI_HANDLE_CAP_SIGNAL));
 }
 
 static void sema_signal(gpointer handle)
index a5878d46d096704b9b066749c4318c116168a098..64a8b330d4400934a3c8bb5667fa2fc3cc6d5fdb 100644 (file)
@@ -7,97 +7,26 @@
  * (C) 2002-2006 Novell, Inc.
  */
 
-
 #include <config.h>
 #include <glib.h>
-#include <stdio.h>
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <errno.h>
-#include <string.h>
-#include <unistd.h>
-
-#if defined(HAVE_SYS_SEM_H) && !(defined(__native_client__) && defined(__GLIBC__))
-#  include <sys/sem.h>
-#else
-#  define DISABLE_SHARED_HANDLES
-#endif
-
-#ifndef DISABLE_SHARED_HANDLES
-#  include <sys/mman.h>
-#  include <sys/ipc.h>
-#  ifdef HAVE_SYS_UTSNAME_H
-#    include <sys/utsname.h>
-#  endif
-#endif
 
-#include <mono/io-layer/wapi.h>
 #include <mono/io-layer/wapi-private.h>
 #include <mono/io-layer/shared.h>
-#include <mono/io-layer/handles-private.h>
+#include <mono/utils/mono-os-mutex.h>
 
 #define DEBUGLOG(...)
 //#define DEBUGLOG(...) g_message(__VA_ARGS__);
 
-// Semaphores used when no-shared-memory use is in use
-
 static mono_mutex_t noshm_sems[_WAPI_SHARED_SEM_COUNT];
 
-static gpointer wapi_storage [16];
-
-static void
-noshm_semaphores_init (void)
+void
+_wapi_shm_semaphores_init (void)
 {
        int i;
-
        for (i = 0; i < _WAPI_SHARED_SEM_COUNT; i++) 
                mono_os_mutex_init (&noshm_sems [i]);
 }
 
-static int
-noshm_sem_lock (int sem)
-{
-       int ret;
-       
-       DEBUGLOG ("%s: locking nosem %d", __func__, sem);
-       
-       ret = mono_os_mutex_lock (&noshm_sems[sem]);
-       
-       return ret;
-}
-
-static int
-noshm_sem_trylock (int sem)
-{
-       int ret;
-       
-       DEBUGLOG ("%s: trying to lock nosem %d", __func__, sem);
-       
-       ret = mono_os_mutex_trylock (&noshm_sems[sem]);
-       
-       return ret;
-}
-
-static int
-noshm_sem_unlock (int sem)
-{
-       int ret;
-       
-       DEBUGLOG ("%s: unlocking nosem %d", __func__, sem);
-       
-       ret = mono_os_mutex_unlock (&noshm_sems[sem]);
-       
-       return ret;
-}
-
-#ifdef DISABLE_SHARED_HANDLES
-void
-_wapi_shm_semaphores_init (void)
-{
-       noshm_semaphores_init ();
-}
-
 void
 _wapi_shm_semaphores_remove (void)
 {
@@ -107,779 +36,20 @@ _wapi_shm_semaphores_remove (void)
 int
 _wapi_shm_sem_lock (int sem)
 {
-       return noshm_sem_lock (sem);
-}
-
-int
-_wapi_shm_sem_trylock (int sem)
-{
-       return noshm_sem_trylock (sem);
-}
-
-int
-_wapi_shm_sem_unlock (int sem)
-{
-       return noshm_sem_unlock (sem);
-}
-
-gpointer
-_wapi_shm_attach (_wapi_shm_t type)
-{
-       gpointer res;
-
-       switch(type) {
-       case WAPI_SHM_DATA:
-               res = g_malloc0 (sizeof(struct _WapiHandleSharedLayout));
-               break;
-       case WAPI_SHM_FILESHARE:
-               res = g_malloc0 (sizeof(struct _WapiFileShareLayout));
-               break;
-       default:
-               g_error ("Invalid type in _wapi_shm_attach ()");
-               return NULL;
-       }
-
-       wapi_storage [type] = res;
-       return res;
-}
-
-void
-_wapi_shm_detach (_wapi_shm_t type)
-{
-       g_free (wapi_storage [type]);
-}
-
-gboolean
-_wapi_shm_enabled_internal (void)
-{
-       return FALSE;
-}
-
-#else /* DISABLE_SHARED_HANDLES */
-
-/*
- * Use POSIX shared memory if possible, it is simpler, and it has the advantage that 
- * writes to the shared area does not need to be written to disk, avoiding spinning up 
- * the disk every x secs on laptops.
- */
-#ifdef HAVE_SHM_OPEN
-#define USE_SHM 1
-#endif
-
-static gboolean _wapi_shm_disabled = TRUE;
-
-static gchar *
-_wapi_shm_base_name (_wapi_shm_t type)
-{
-       gchar *name = NULL;
-       gchar machine_name[256];
-       const gchar *fake_name;
-       struct utsname ubuf;
-       int ret;
-       int len;
-       
-       ret = uname (&ubuf);
-       if (ret == -1) {
-               ubuf.machine[0] = '\0';
-               ubuf.sysname[0] = '\0';
-       } else {
-               g_strdelimit (ubuf.sysname, "/", '_');
-               g_strdelimit (ubuf.machine, "/", '_');
-       }
-
-       fake_name = g_getenv ("MONO_SHARED_HOSTNAME");
-       if (fake_name == NULL) {
-               if (gethostname(machine_name, sizeof(machine_name)) != 0)
-                       machine_name[0] = '\0';
-       } else {
-               len = MIN (strlen (fake_name), sizeof (machine_name) - 1);
-               strncpy (machine_name, fake_name, len);
-               machine_name [len] = '\0';
-       }
-       
-       switch (type) {
-       case WAPI_SHM_DATA:
-               name = g_strdup_printf ("shared_data-%s-%s-%s-%d-%d-%d",
-                                       machine_name, ubuf.sysname,
-                                       ubuf.machine,
-                                       (int) sizeof(struct _WapiHandleShared),
-                                       _WAPI_HANDLE_VERSION, 0);
-               break;
-               
-       case WAPI_SHM_FILESHARE:
-               name = g_strdup_printf ("shared_fileshare-%s-%s-%s-%d-%d-%d",
-                                       machine_name, ubuf.sysname,
-                                       ubuf.machine,
-                                       (int) sizeof(struct _WapiFileShare),
-                                       _WAPI_HANDLE_VERSION, 0);
-               break;
-       }
-
-       return name;
-}
-
-#ifdef USE_SHM
-
-static gchar *_wapi_shm_shm_name (_wapi_shm_t type)
-{
-       char *base_name = _wapi_shm_base_name (type);
-
-       /* Also add the uid to avoid permission problems */
-       char *res = g_strdup_printf ("/mono-shared-%d-%s", getuid (), base_name);
-
-       g_free (base_name);
-
-       return res;
-}
-
-static int
-_wapi_shm_open (const char *filename, int size)
-{
-       int fd;
-
-       fd = shm_open (filename, O_CREAT|O_RDWR, S_IRUSR|S_IWUSR|S_IRGRP);
-       if (fd == -1)
-               /* Maybe /dev/shm is not mounted */
-               return -1;
-       if (ftruncate (fd, size) != 0) {
-               perror ("_wapi_shm_open (): ftruncate ()");
-               g_assert_not_reached ();
-       }
-
-       return fd;
-}
-
-#endif
-
-static gchar *
-_wapi_shm_file (_wapi_shm_t type)
-{
-       static gchar file[_POSIX_PATH_MAX];
-       gchar *name = NULL, *filename;
-       const gchar *wapi_dir;
-
-       name = _wapi_shm_base_name (type);
-
-       /* I don't know how nfs affects mmap.  If mmap() of files on
-        * nfs mounts breaks, then there should be an option to set
-        * the directory.
-        */
-       wapi_dir = g_getenv ("MONO_SHARED_DIR");
-       if (wapi_dir == NULL) {
-               filename = g_build_filename (g_get_home_dir (), ".wapi", name,
-                                            NULL);
-       } else {
-               filename = g_build_filename (wapi_dir, ".wapi", name, NULL);
-       }
-       g_free (name);
-
-       g_snprintf (file, _POSIX_PATH_MAX, "%s", filename);
-       g_free (filename);
-       
-       return file;
-}
-
-static int
-_wapi_shm_file_open (const gchar *filename, guint32 wanted_size)
-{
-       int fd;
-       struct stat statbuf;
-       int ret, tries = 0;
-       gboolean created = FALSE;
-       mode_t oldmask;
-       gchar *dir;
-               
-       /* No need to check if the dir already exists or check
-        * mkdir() errors, because on any error the open() call will
-        * report the problem.
-        */
-       dir = g_path_get_dirname (filename);
-       mkdir (dir, 0755);
-       g_free (dir);
-
-try_again:
-       if (tries++ > 10) {
-               /* Just give up */
-               return (-1);
-       } else if (tries > 5) {
-               /* Break out of a loop */
-               unlink (filename);
-       }
-       
-       /* Make sure future processes can open the shared data files */
-       oldmask = umask (066);
-
-       /* No O_CREAT yet, because we need to initialise the file if
-        * we have to create it.
-        */
-       fd = open (filename, O_RDWR, 0600);
-       umask (oldmask);
-       
-       if (fd == -1 && errno == ENOENT) {
-               /* OK, its up to us to create it.  O_EXCL to avoid a
-                * race condition where two processes can
-                * simultaneously try and create the file
-                */
-               oldmask = umask (066);
-               fd = open (filename, O_CREAT|O_EXCL|O_RDWR, 0600);
-               umask (oldmask);
-               
-               if (fd == -1 && errno == EEXIST) {
-                       /* It's possible that the file was created in
-                        * between finding it didn't exist, and trying
-                        * to create it.  Just try opening it again
-                        */
-                       goto try_again;
-               } else if (fd == -1) {
-                       g_critical ("%s: shared file [%s] open error: %s",
-                                   __func__, filename, g_strerror (errno));
-                       return -1;
-               } else {
-                       /* We created the file, so we need to expand
-                        * the file.
-                        *
-                        * (wanted_size-1, because we're about to
-                        * write the other byte to actually expand the
-                        * file.)
-                        */
-                       if (lseek (fd, wanted_size-1, SEEK_SET) == -1) {
-                               g_critical ("%s: shared file [%s] lseek error: %s", __func__, filename, g_strerror (errno));
-                               close (fd);
-                               unlink (filename);
-                               return -1;
-                       }
-                       
-                       do {
-                               ret = write (fd, "", 1);
-                       } while (ret == -1 && errno == EINTR);
-                               
-                       if (ret == -1) {
-                               g_critical ("%s: shared file [%s] write error: %s", __func__, filename, g_strerror (errno));
-                               close (fd);
-                               unlink (filename);
-                               return -1;
-                       }
-                       
-                       created = TRUE;
-
-                       /* The contents of the file is set to all
-                        * zero, because it is opened up with lseek,
-                        * so we don't need to do any more
-                        * initialisation here
-                        */
-               }
-       } else if (fd == -1) {
-               g_critical ("%s: shared file [%s] open error: %s", __func__,
-                           filename, g_strerror (errno));
-               return -1;
-       }
-       
-       /* Use stat to find the file size (instead of hard coding it)
-        * because we can expand the file later if needed (for more
-        * handles or scratch space.)
-        */
-       if (fstat (fd, &statbuf) == -1) {
-               g_critical ("%s: fstat error: %s", __func__,
-                           g_strerror (errno));
-               if (created == TRUE) {
-                       unlink (filename);
-               }
-               close (fd);
-               return -1;
-       }
-
-       if (statbuf.st_size < wanted_size) {
-               close (fd);
-               if (created == TRUE) {
-                       g_critical ("%s: shared file [%s] is not big enough! (found %ld, need %d bytes)", __func__, filename, (long)statbuf.st_size, wanted_size);
-                       unlink (filename);
-                       return -1;
-               } else {
-                       /* We didn't create it, so just try opening it again */
-                       _wapi_handle_spin (100);
-                       goto try_again;
-               }
-       }
-       
-       return fd;
-}
-
-gboolean
-_wapi_shm_enabled_internal (void)
-{
-       static gboolean env_checked;
-
-       if (!env_checked) {
-               if (g_getenv ("MONO_ENABLE_SHM"))
-                       _wapi_shm_disabled = FALSE;
-               env_checked = TRUE;
-       }
-
-       return !_wapi_shm_disabled;
-}
-
-/*
- * _wapi_shm_attach:
- * @success: Was it a success
- *
- * Attach to the shared memory file or create it if it did not exist.
- * Returns the memory area the file was mmapped to.
- */
-gpointer
-_wapi_shm_attach (_wapi_shm_t type)
-{
-       gpointer shm_seg;
-       int fd;
-       struct stat statbuf;
-       gchar *filename = _wapi_shm_file (type), *shm_name;
-       guint32 size;
-       
-       switch(type) {
-       case WAPI_SHM_DATA:
-               size = sizeof(struct _WapiHandleSharedLayout);
-               break;
-               
-       case WAPI_SHM_FILESHARE:
-               size = sizeof(struct _WapiFileShareLayout);
-               break;
-       default:
-               g_error ("Invalid type in _wapi_shm_attach ()");
-               return NULL;
-       }
-
-       if (!_wapi_shm_enabled ()) {
-               wapi_storage [type] = g_malloc0 (size);
-               return wapi_storage [type];
-       }
-
-#ifdef USE_SHM
-       shm_name = _wapi_shm_shm_name (type);
-       fd = _wapi_shm_open (shm_name, size);
-       g_free (shm_name);
-#else
-       fd = -1;
-#endif
-
-       /* Fall back to files if POSIX shm fails (for example, because /dev/shm is not mounted */
-       if (fd == -1)
-               fd = _wapi_shm_file_open (filename, size);
-       if (fd == -1) {
-               g_critical ("%s: shared file [%s] open error", __func__,
-                           filename);
-               return NULL;
-       }
-
-       if (fstat (fd, &statbuf)==-1) {
-               g_critical ("%s: fstat error: %s", __func__,
-                           g_strerror (errno));
-               close (fd);
-               return NULL;
-       }
-       
-       shm_seg = mmap (NULL, statbuf.st_size, PROT_READ|PROT_WRITE,
-                       MAP_SHARED, fd, 0);
-       if (shm_seg == MAP_FAILED) {
-               shm_seg = mmap (NULL, statbuf.st_size, PROT_READ|PROT_WRITE,
-                       MAP_PRIVATE, fd, 0);
-               if (shm_seg == MAP_FAILED) {
-                       g_critical ("%s: mmap error: %s", __func__, g_strerror (errno));
-                       close (fd);
-                       return NULL;
-               }
-       }
-               
-       close (fd);
-       return shm_seg;
-}
-
-void
-_wapi_shm_detach (_wapi_shm_t type)
-{
-       if (!_wapi_shm_enabled ())
-               g_free (wapi_storage [type]);
-}
-
-static void
-shm_semaphores_init (void)
-{
-       key_t key;
-       key_t oldkey;
-       int thr_ret;
-       struct _WapiHandleSharedLayout *tmp_shared;
-       gchar *ftmp;
-       gchar *filename;
-       
-       /*
-        * Yet more barmy API - this union is a well-defined parameter
-        * in a syscall, yet I still have to define it here as it
-        * doesn't appear in a header
-        */
-       union semun {
-               int val;
-               struct semid_ds *buf;
-               ushort *array;
-       } defs;
-       ushort def_vals[_WAPI_SHARED_SEM_COUNT];
-       int i;
-       int retries = 0;
-       
-       for (i = 0; i < _WAPI_SHARED_SEM_COUNT; i++) {
-               def_vals[i] = 1;
-       }
-
-       /*
-        * Process count must start at '0' - the 1 for all the others
-        * sets the semaphore to "unlocked"
-        */
-       def_vals[_WAPI_SHARED_SEM_PROCESS_COUNT] = 0;
-       
-       defs.array = def_vals;
-       
-       /*
-        *Temporarily attach the shared data so we can read the
-        * semaphore key.  We release this mapping and attach again
-        * after getting the semaphores to avoid a race condition
-        * where a terminating process can delete the shared files
-        * between a new process attaching the file and getting access
-        * to the semaphores (which increments the process count,
-        * preventing destruction of the shared data...)
-        */
-       tmp_shared = _wapi_shm_attach (WAPI_SHM_DATA);
-       g_assert (tmp_shared != NULL);
-       
-#ifdef USE_SHM
-       ftmp=_wapi_shm_shm_name (WAPI_SHM_DATA);
-       filename = g_build_filename ("/dev/shm", ftmp, NULL);
-       g_assert (filename!=NULL);
-       key = ftok (filename, 'M');
-       g_free (ftmp);
-       g_free (filename);
-#else
-       key = ftok ( _wapi_shm_file (WAPI_SHM_DATA), 'M');
-#endif
-
-again:
-       retries++;
-       oldkey = tmp_shared->sem_key;
-
-       if (oldkey == 0) {
-               DEBUGLOG ("%s: Creating with new key (0x%x)", __func__, key);
-
-               /*
-                * The while loop attempts to make some sense of the
-                * bonkers 'think of a random number' method of
-                * picking a key without collision with other
-                * applications
-                */
-               while ((_wapi_sem_id = semget (key, _WAPI_SHARED_SEM_COUNT,
-                                              IPC_CREAT | IPC_EXCL | 0600)) == -1) {
-                       if (errno == ENOMEM) {
-                               g_error ("%s: semget error: %s", __func__,
-                                           g_strerror (errno));
-                       } else if (errno == ENOSPC) {
-                               g_error ("%s: semget error: %s.  Try deleting some semaphores with ipcs and ipcrm\nor increase the maximum number of semaphore in the system.", __func__, g_strerror (errno));
-                       } else if (errno != EEXIST) {
-                               if (retries > 3)
-                                       g_warning ("%s: semget error: %s key 0x%x - trying again", __func__,
-                                                       g_strerror (errno), key);
-                       }
-                       
-                       key++;
-                       DEBUGLOG ("%s: Got (%s), trying with new key (0x%x)", __func__, g_strerror (errno), key);
-               }
-               /*
-                * Got a semaphore array, so initialise it and install
-                * the key into the shared memory
-                */
-               
-               if (semctl (_wapi_sem_id, 0, SETALL, defs) == -1) {
-                       if (retries > 3)
-                               g_warning ("%s: semctl init error: %s - trying again", __func__, g_strerror (errno));
-
-                       /*
-                        * Something went horribly wrong, so try
-                        * getting a new set from scratch
-                        */
-                       semctl (_wapi_sem_id, 0, IPC_RMID);
-                       goto again;
-               }
-
-               if (InterlockedCompareExchange (&tmp_shared->sem_key,
-                                               key, 0) != 0) {
-                       /*
-                        * Someone else created one and installed the
-                        * key while we were working, so delete the
-                        * array we created and fall through to the
-                        * 'key already known' case.
-                        */
-                       semctl (_wapi_sem_id, 0, IPC_RMID);
-                       oldkey = tmp_shared->sem_key;
-               } else {
-                       /*
-                        * We've installed this semaphore set's key into
-                        * the shared memory
-                        */
-                       goto done;
-               }
-       }
-       
-       DEBUGLOG ("%s: Trying with old key 0x%x", __func__, oldkey);
-
-       _wapi_sem_id = semget (oldkey, _WAPI_SHARED_SEM_COUNT, 0600);
-       if (_wapi_sem_id == -1) {
-               if (retries > 3)
-                       g_warning ("%s: semget error opening old key 0x%x (%s) - trying again",
-                                       __func__, oldkey,g_strerror (errno));
-
-               /*
-                * Someone must have deleted the semaphore set, so
-                * blow away the bad key and try again
-                */
-               InterlockedCompareExchange (&tmp_shared->sem_key, 0, oldkey);
-               
-               goto again;
-       }
-
-  done:
-       /* Increment the usage count of this semaphore set */
-       thr_ret = _wapi_shm_sem_lock (_WAPI_SHARED_SEM_PROCESS_COUNT_LOCK);
-       g_assert (thr_ret == 0);
-       
-       DEBUGLOG ("%s: Incrementing the process count (%d)", __func__, _wapi_getpid ());
-
-       /*
-        * We only ever _unlock_ this semaphore, letting the kernel
-        * restore (ie decrement) this unlock when this process exits.
-        * We lock another semaphore around it so we can serialise
-        * access when we're testing the value of this semaphore when
-        * we exit cleanly, so we can delete the whole semaphore set.
-        */
-       _wapi_shm_sem_unlock (_WAPI_SHARED_SEM_PROCESS_COUNT);
-
-       DEBUGLOG ("%s: Process count is now %d (%d)", __func__, semctl (_wapi_sem_id, _WAPI_SHARED_SEM_PROCESS_COUNT, GETVAL), _wapi_getpid ());
-       
-       _wapi_shm_sem_unlock (_WAPI_SHARED_SEM_PROCESS_COUNT_LOCK);
-
-       if (_wapi_shm_disabled)
-               g_free (tmp_shared);
-       else
-               munmap (tmp_shared, sizeof(struct _WapiHandleSharedLayout));
-}
-
-static void
-shm_semaphores_remove (void)
-{
-       int thr_ret;
-       int proc_count;
-       gchar *shm_name;
-       
-       DEBUGLOG ("%s: Checking process count (%d)", __func__, _wapi_getpid ());
-       
-       thr_ret = _wapi_shm_sem_lock (_WAPI_SHARED_SEM_PROCESS_COUNT_LOCK);
-       g_assert (thr_ret == 0);
-       
-       proc_count = semctl (_wapi_sem_id, _WAPI_SHARED_SEM_PROCESS_COUNT,
-                            GETVAL);
-
-       g_assert (proc_count > 0);
-       if (proc_count == 1) {
-               /*
-                * Just us, so blow away the semaphores and the shared
-                * files
-                */
-               DEBUGLOG ("%s: Removing semaphores! (%d)", __func__, _wapi_getpid ());
-
-               semctl (_wapi_sem_id, 0, IPC_RMID);
-#ifdef USE_SHM
-               shm_name = _wapi_shm_shm_name (WAPI_SHM_DATA);
-               shm_unlink (shm_name);
-               g_free (shm_name);
-
-               shm_name = _wapi_shm_shm_name (WAPI_SHM_FILESHARE);
-               shm_unlink (shm_name);
-               g_free (shm_name);
-#endif
-               unlink (_wapi_shm_file (WAPI_SHM_DATA));
-               unlink (_wapi_shm_file (WAPI_SHM_FILESHARE));
-       } else {
-               /*
-                * "else" clause, because there's no point unlocking
-                * the semaphore if we've just blown it away...
-                */
-               _wapi_shm_sem_unlock (_WAPI_SHARED_SEM_PROCESS_COUNT_LOCK);
-       }
-}
-
-static int
-shm_sem_lock (int sem)
-{
-       struct sembuf ops;
-       int ret;
-       
-       DEBUGLOG ("%s: locking sem %d", __func__, sem);
-
-       ops.sem_num = sem;
-       ops.sem_op = -1;
-       ops.sem_flg = SEM_UNDO;
-       
-  retry:
-       do {
-               ret = semop (_wapi_sem_id, &ops, 1);
-       } while (ret == -1 && errno == EINTR);
-
-       if (ret == -1) {
-               /*
-                * EINVAL covers the case when the semaphore was
-                * deleted before we started the semop
-                */
-               if (errno == EIDRM || errno == EINVAL) {
-                       /*
-                        * Someone blew away this semaphore set, so
-                        * get a new one and try again
-                        */
-                       DEBUGLOG ("%s: Reinitialising the semaphores!", __func__);
-
-                       _wapi_shm_semaphores_init ();
-                       goto retry;
-               }
-               
-               /* Turn this into a pthreads-style return value */
-               ret = errno;
-       }
-       
-       DEBUGLOG ("%s: returning %d (%s)", __func__, ret, g_strerror (ret));
-       
-       return ret;
-}
-
-static int
-shm_sem_trylock (int sem)
-{
-       struct sembuf ops;
-       int ret;
-       
-       DEBUGLOG ("%s: trying to lock sem %d", __func__, sem);
-       
-       ops.sem_num = sem;
-       ops.sem_op = -1;
-       ops.sem_flg = IPC_NOWAIT | SEM_UNDO;
-       
-  retry:
-       do {
-               ret = semop (_wapi_sem_id, &ops, 1);
-       } while (ret == -1 && errno == EINTR);
-
-       if (ret == -1) {
-               /*
-                * EINVAL covers the case when the semaphore was
-                * deleted before we started the semop
-                */
-               if (errno == EIDRM || errno == EINVAL) {
-                       /*
-                        * Someone blew away this semaphore set, so
-                        * get a new one and try again
-                        */
-                       DEBUGLOG ("%s: Reinitialising the semaphores!", __func__);
-
-                       _wapi_shm_semaphores_init ();
-                       goto retry;
-               }
-               
-               /* Turn this into a pthreads-style return value */
-               ret = errno;
-       }
-       
-       if (ret == EAGAIN) {
-               /* But pthreads uses this code instead */
-               ret = EBUSY;
-       }
-       
-       DEBUGLOG ("%s: returning %d (%s)", __func__, ret, g_strerror (ret));
-       
-       return ret;
-}
-
-static int
-shm_sem_unlock (int sem)
-{
-       struct sembuf ops;
-       int ret;
-       
-       DEBUGLOG ("%s: unlocking sem %d", __func__, sem);
-       
-       ops.sem_num = sem;
-       ops.sem_op = 1;
-       ops.sem_flg = SEM_UNDO;
-       
-  retry:
-       do {
-               ret = semop (_wapi_sem_id, &ops, 1);
-       } while (ret == -1 && errno == EINTR);
-
-       if (ret == -1) {
-               /* EINVAL covers the case when the semaphore was
-                * deleted before we started the semop
-                */
-               if (errno == EIDRM || errno == EINVAL) {
-                       /* Someone blew away this semaphore set, so
-                        * get a new one and try again (we can't just
-                        * assume that the semaphore is now unlocked)
-                        */
-                       DEBUGLOG ("%s: Reinitialising the semaphores!", __func__);
-
-                       _wapi_shm_semaphores_init ();
-                       goto retry;
-               }
-               
-               /* Turn this into a pthreads-style return value */
-               ret = errno;
-       }
-       
-       DEBUGLOG ("%s: returning %d (%s)", __func__, ret, g_strerror (ret));
-
-       return ret;
-}
-
-void
-_wapi_shm_semaphores_init (void)
-{
-       if (!_wapi_shm_enabled ())
-               noshm_semaphores_init ();
-       else
-               shm_semaphores_init ();
-}
-
-void
-_wapi_shm_semaphores_remove (void)
-{
-       if (!_wapi_shm_disabled) 
-               shm_semaphores_remove ();
-}
-
-int
-_wapi_shm_sem_lock (int sem)
-{
-       if (_wapi_shm_disabled) 
-               return noshm_sem_lock (sem);
-       else
-               return shm_sem_lock (sem);
+       DEBUGLOG ("%s: locking nosem %d", __func__, sem);
+       return mono_os_mutex_lock (&noshm_sems[sem]);
 }
 
 int
 _wapi_shm_sem_trylock (int sem)
 {
-       if (_wapi_shm_disabled) 
-               return noshm_sem_trylock (sem);
-       else 
-               return shm_sem_trylock (sem);
+       DEBUGLOG ("%s: trying to lock nosem %d", __func__, sem);
+       return mono_os_mutex_trylock (&noshm_sems[sem]);
 }
 
 int
 _wapi_shm_sem_unlock (int sem)
 {
-       if (_wapi_shm_disabled) 
-               return noshm_sem_unlock (sem);
-       else 
-               return shm_sem_unlock (sem);
+       DEBUGLOG ("%s: unlocking nosem %d", __func__, sem);
+       return mono_os_mutex_unlock (&noshm_sems[sem]);
 }
-#endif /* !DISABLE_SHARED_HANDLES */
index 5f66a732e6d680d5dcbb4d36c220b500bc48a5d3..4807adc5a8e8af2567b97cf6e1b514d88eefe1e9 100644 (file)
 #ifndef _WAPI_SHARED_H_
 #define _WAPI_SHARED_H_
 
-#include <mono/io-layer/wapi-private.h>
-
-typedef enum {
-       WAPI_SHM_DATA,
-       WAPI_SHM_FILESHARE
-} _wapi_shm_t;
-
-extern gpointer _wapi_shm_attach (_wapi_shm_t type);
-extern void _wapi_shm_detach (_wapi_shm_t type);
-extern gboolean _wapi_shm_enabled_internal (void);
 extern void _wapi_shm_semaphores_init (void);
 extern void _wapi_shm_semaphores_remove (void);
 extern int _wapi_shm_sem_lock (int sem);
 extern int _wapi_shm_sem_trylock (int sem);
 extern int _wapi_shm_sem_unlock (int sem);
 
-static inline gboolean
-_wapi_shm_enabled (void)
-{
-#ifdef DISABLE_SHARED_HANDLES
-       return FALSE;
-#else
-       return _wapi_shm_enabled_internal ();
-#endif
-}
-
 #endif /* _WAPI_SHARED_H_ */
index 311f355c240778d3ea8a76f02609833b9d0bf857..54c8798637c27a71cae21ba763b3dea7cd9a06a9 100644 (file)
@@ -841,10 +841,10 @@ guint32 _wapi_socket(int domain, int type, int protocol, void *unused,
         * https://bugzilla.novell.com/show_bug.cgi?id=MONO53992
         */
        {
-               int ret, true = 1;
+               int ret, true_ = 1;
        
-               ret = setsockopt (fd, SOL_SOCKET, SO_REUSEADDR, &true,
-                                 sizeof (true));
+               ret = setsockopt (fd, SOL_SOCKET, SO_REUSEADDR, &true_,
+                                 sizeof (true_));
                if (ret == -1) {
                        int errnum = errno;
 
@@ -1165,7 +1165,7 @@ WSAIoctl (guint32 fd, gint32 command,
        }
 
        if (i_len > 0) {
-               buffer = g_memdup (input, i_len);
+               buffer = (char *)g_memdup (input, i_len);
        }
 
        ret = ioctl (fd, command, buffer);
index 13ae9961477eae4bfac003d9fd64f6caba15e507..d634ae956ec8f1beb980e440f5261e52bf55ea71 100644 (file)
@@ -72,7 +72,7 @@ typedef struct
 #define SIO_KEEPALIVE_VALS 0x98000004
 
 typedef gboolean (*WapiDisconnectExFn)(guint32, WapiOverlapped *, guint32,
-                                       WapiTransmitFileFlags);
+                                       guint32);
 typedef gboolean (*WapiTransmitFileFn)(guint32, gpointer, guint32, guint32,
                                        WapiOverlapped *,
                                        WapiTransmitFileBuffers *,
index 2dc95f326156918a028873d82738fb35d6cbb933..8a147e1f2e46c0a9fd9124814a548df3ccd2c1ec 100644 (file)
@@ -901,7 +901,7 @@ VerQueryValue (gconstpointer datablock, const gunichar2 *subblock, gpointer *buf
                                            string_value != NULL &&
                                            string_value_len != 0) {
                                                *buffer = string_value;
-                                               *len = unicode_chars (string_value) + 1; /* Include trailing null */
+                                               *len = unicode_chars ((const gunichar2 *)string_value) + 1; /* Include trailing null */
                                                ret = TRUE;
                                                goto done;
                                        }
index bbcc5cc2876db4bd2ad8ca84c4173cebbcdf0ee9..e01cdf6804cda195b9b55d6cd89a89f9d0e8c109 100644 (file)
@@ -14,6 +14,7 @@
 #include <glib.h>
 #include <sys/stat.h>
 
+#include <mono/io-layer/wapi.h>
 #include <mono/io-layer/handles.h>
 #include <mono/io-layer/io.h>
 
@@ -173,7 +174,7 @@ struct _WapiHandleSharedLayout
        struct _WapiHandleShared handles[_WAPI_HANDLE_INITIAL_COUNT];
 };
 
-#define _WAPI_FILESHARE_SIZE 102400
+typedef struct _WapiHandleSharedLayout _WapiHandleSharedLayout;
 
 struct _WapiFileShare
 {
@@ -191,15 +192,6 @@ struct _WapiFileShare
 
 typedef struct _WapiFileShare _WapiFileShare;
 
-struct _WapiFileShareLayout
-{
-       guint32 hwm;
-       
-       struct _WapiFileShare share_info[_WAPI_FILESHARE_SIZE];
-};
-
-
-
 #define _WAPI_HANDLE_INVALID (gpointer)-1
 
 #endif /* _WAPI_PRIVATE_H_ */
index 31c7f6d94111971a913552abda8b601c234446e3..88864821be44d394939dd5d19a9c87239eee38f7 100644 (file)
@@ -266,8 +266,9 @@ globextend(const gchar *path, wapi_glob_t *pglob, size_t *limitp)
        const gchar *p;
 
        newsize = sizeof(*pathv) * (2 + pglob->gl_pathc + pglob->gl_offs);
-       pathv = pglob->gl_pathv ? realloc((char *)pglob->gl_pathv, newsize) :
-           malloc(newsize);
+       /* FIXME: Can just use realloc(). */
+       pathv = (char **)(pglob->gl_pathv ? realloc((char *)pglob->gl_pathv, newsize) :
+           malloc(newsize));
        if (pathv == NULL) {
                if (pglob->gl_pathv) {
                        free(pglob->gl_pathv);
@@ -288,7 +289,7 @@ globextend(const gchar *path, wapi_glob_t *pglob, size_t *limitp)
                ;
        len = (size_t)(p - path);
        *limitp += len;
-       if ((copy = malloc(len)) != NULL) {
+       if ((copy = (char *)malloc(len)) != NULL) {
                if (g_Ctoc(path, copy, len)) {
                        free(copy);
                        return(WAPI_GLOB_NOSPACE);
index 0e57d84fb44b27e15872550dbadec7855c493395..89c163c83ee5e7f52538738000a3882499852f28 100644 (file)
@@ -237,8 +237,8 @@ mono_runtime_init (MonoDomain *domain, MonoThreadStartCB start_cb,
        mono_install_assembly_refonly_preload_hook (mono_domain_assembly_preload, GUINT_TO_POINTER (TRUE));
        mono_install_assembly_search_hook (mono_domain_assembly_search, GUINT_TO_POINTER (FALSE));
        mono_install_assembly_refonly_search_hook (mono_domain_assembly_search, GUINT_TO_POINTER (TRUE));
-       mono_install_assembly_postload_search_hook ((void*)mono_domain_assembly_postload_search, GUINT_TO_POINTER (FALSE));
-       mono_install_assembly_postload_refonly_search_hook ((void*)mono_domain_assembly_postload_search, GUINT_TO_POINTER (TRUE));
+       mono_install_assembly_postload_search_hook ((MonoAssemblySearchFunc)mono_domain_assembly_postload_search, GUINT_TO_POINTER (FALSE));
+       mono_install_assembly_postload_refonly_search_hook ((MonoAssemblySearchFunc)mono_domain_assembly_postload_search, GUINT_TO_POINTER (TRUE));
        mono_install_assembly_load_hook (mono_domain_fire_assembly_load, NULL);
        mono_install_lookup_dynamic_token (mono_reflection_lookup_dynamic_token);
 
@@ -647,7 +647,7 @@ ves_icall_System_AppDomain_GetData (MonoAppDomain *ad, MonoString *name)
        else if (!strcmp (str, "FORCE_CACHE_INSTALL"))
                o = (MonoObject *)add->setup->shadow_copy_files;
        else 
-               o = mono_g_hash_table_lookup (add->env, name);
+               o = (MonoObject *)mono_g_hash_table_lookup (add->env, name);
 
        mono_domain_unlock (add);
        g_free (str);
@@ -731,7 +731,7 @@ start_element (GMarkupParseContext *context,
               gpointer             user_data,
               GError             **error)
 {
-       RuntimeConfig *runtime_config = user_data;
+       RuntimeConfig *runtime_config = (RuntimeConfig *)user_data;
        
        if (strcmp (element_name, "runtime") == 0) {
                runtime_config->runtime_count++;
@@ -764,7 +764,7 @@ end_element (GMarkupParseContext *context,
             gpointer             user_data,
             GError             **error)
 {
-       RuntimeConfig *runtime_config = user_data;
+       RuntimeConfig *runtime_config = (RuntimeConfig *)user_data;
        if (strcmp (element_name, "runtime") == 0)
                runtime_config->runtime_count--;
        else if (strcmp (element_name, "assemblyBinding") == 0)
@@ -774,7 +774,7 @@ end_element (GMarkupParseContext *context,
 static void
 parse_error   (GMarkupParseContext *context, GError *error, gpointer user_data)
 {
-       RuntimeConfig *state = user_data;
+       RuntimeConfig *state = (RuntimeConfig *)user_data;
        const gchar *msg;
        const gchar *filename;
 
@@ -827,7 +827,7 @@ mono_set_private_bin_path_from_config (MonoDomain *domain)
        if (len > 3 && text [0] == '\xef' && text [1] == (gchar) '\xbb' && text [2] == '\xbf')
                offset = 3; /* Skip UTF-8 BOM */
 
-       context = g_markup_parse_context_new (&mono_parser, 0, &runtime_config, NULL);
+       context = g_markup_parse_context_new (&mono_parser, (GMarkupParseFlags)0, &runtime_config, NULL);
        if (g_markup_parse_context_parse (context, text + offset, len - offset, NULL))
                g_markup_parse_context_end_parse (context, NULL);
        g_markup_parse_context_free (context);
@@ -878,7 +878,7 @@ ves_icall_System_AppDomain_GetAssemblies (MonoAppDomain *ad, MonoBoolean refonly
        /* Need to skip internal assembly builders created by remoting */
        mono_domain_assemblies_lock (domain);
        for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
-               ass = tmp->data;
+               ass = (MonoAssembly *)tmp->data;
                if (refonly != ass->ref_only)
                        continue;
                if (ass->corlib_internal)
@@ -889,7 +889,7 @@ ves_icall_System_AppDomain_GetAssemblies (MonoAppDomain *ad, MonoBoolean refonly
 
        res = mono_array_new (domain, System_Reflection_Assembly, assemblies->len);
        for (i = 0; i < assemblies->len; ++i) {
-               ass = g_ptr_array_index (assemblies, i);
+               ass = (MonoAssembly *)g_ptr_array_index (assemblies, i);
                mono_array_setref (res, i, mono_assembly_get_object (domain, ass));
        }
 
@@ -1142,7 +1142,7 @@ set_domain_search_path (MonoDomain *domain)
        if (domain->search_path)
                g_strfreev (domain->search_path);
 
-       tmp = g_malloc ((npaths + 1) * sizeof (gchar *));
+       tmp = (gchar **)g_malloc ((npaths + 1) * sizeof (gchar *));
        tmp [npaths] = NULL;
 
        *tmp = mono_string_to_utf8_checked (setup->application_base, &error);
@@ -1521,7 +1521,7 @@ shadow_copy_create_ini (const char *shadow, const char *filename)
        if (!u16_ini) {
                return FALSE;
        }
-       handle = CreateFile (u16_ini, GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE,
+       handle = (void **)CreateFile (u16_ini, GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE,
                                NULL, CREATE_NEW, FileAttributes_Normal, NULL);
        g_free (u16_ini);
        if (handle == INVALID_HANDLE_VALUE) {
@@ -1864,7 +1864,7 @@ mono_domain_assembly_search (MonoAssemblyName *aname,
 
        mono_domain_assemblies_lock (domain);
        for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
-               ass = tmp->data;
+               ass = (MonoAssembly *)tmp->data;
                /* Dynamic assemblies can't match here in MS.NET */
                if (assembly_is_dynamic (ass) || refonly != ass->ref_only || !mono_assembly_names_equal (aname, &ass->aname))
                        continue;
@@ -2221,7 +2221,7 @@ deregister_reflection_info_roots_from_list (MonoImage *image)
        GSList *list = image->reflection_info_unregister_classes;
 
        while (list) {
-               MonoClass *klass = list->data;
+               MonoClass *klass = (MonoClass *)list->data;
 
                mono_class_free_ref_info (klass);
 
@@ -2238,7 +2238,7 @@ deregister_reflection_info_roots (MonoDomain *domain)
 
        mono_domain_assemblies_lock (domain);
        for (list = domain->domain_assemblies; list; list = list->next) {
-               MonoAssembly *assembly = list->data;
+               MonoAssembly *assembly = (MonoAssembly *)list->data;
                MonoImage *image = assembly->image;
                int i;
 
@@ -2310,11 +2310,11 @@ unload_thread_main (void *arg)
         * the collection there won't be any more remsets.
         */
        for (i = 0; i < domain->class_vtable_array->len; ++i)
-               zero_static_data (g_ptr_array_index (domain->class_vtable_array, i));
+               zero_static_data ((MonoVTable *)g_ptr_array_index (domain->class_vtable_array, i));
        mono_gc_collect (0);
 #endif
        for (i = 0; i < domain->class_vtable_array->len; ++i)
-               clear_cached_vtable (g_ptr_array_index (domain->class_vtable_array, i));
+               clear_cached_vtable ((MonoVTable *)g_ptr_array_index (domain->class_vtable_array, i));
        deregister_reflection_info_roots (domain);
 
        mono_assembly_cleanup_domain_bindings (domain->domain_id);
@@ -2408,9 +2408,9 @@ mono_domain_try_unload (MonoDomain *domain, MonoObject **exc)
        /* printf ("UNLOAD STARTING FOR %s (%p) IN THREAD 0x%x.\n", domain->friendly_name, domain, mono_native_thread_id_get ()); */
 
        /* Atomically change our state to UNLOADING */
-       prev_state = InterlockedCompareExchange ((gint32*)&domain->state,
-                                                                                        MONO_APPDOMAIN_UNLOADING_START,
-                                                                                        MONO_APPDOMAIN_CREATED);
+       prev_state = (MonoAppDomainState)InterlockedCompareExchange ((gint32*)&domain->state,
+               MONO_APPDOMAIN_UNLOADING_START,
+               MONO_APPDOMAIN_CREATED);
        if (prev_state != MONO_APPDOMAIN_CREATED) {
                switch (prev_state) {
                case MONO_APPDOMAIN_UNLOADING_START:
index afa1827a7167b18d46deb3715cee4ae0fe0b2a91..a3916463b691522ce18b0f11b87e17c1d5195102 100644 (file)
@@ -208,7 +208,7 @@ encode_public_tok (const guchar *token, gint32 len)
        gchar *res;
        int i;
 
-       res = g_malloc (len * 2 + 1);
+       res = (gchar *)g_malloc (len * 2 + 1);
        for (i = 0; i < len; i++) {
                res [i * 2] = allowed [token [i] >> 4];
                res [i * 2 + 1] = allowed [token [i] & 0xF];
@@ -791,7 +791,7 @@ mono_assembly_fill_assembly_name (MonoImage *image, MonoAssemblyName *aname)
        aname->revision = cols [MONO_ASSEMBLY_REV_NUMBER];
        aname->hash_alg = cols [MONO_ASSEMBLY_HASH_ALG];
        if (cols [MONO_ASSEMBLY_PUBLIC_KEY]) {
-               guchar* token = g_malloc (8);
+               guchar* token = (guchar *)g_malloc (8);
                gchar* encoded;
                const gchar* pkey;
                int len;
@@ -1116,7 +1116,7 @@ mono_assembly_load_reference (MonoImage *image, int index)
                 * a non loaded reference using the ReflectionOnly api
                */
                if (!reference)
-                       reference = REFERENCE_MISSING;
+                       reference = (MonoAssembly *)REFERENCE_MISSING;
        } else {
                /* we first try without setting the basedir: this can eventually result in a ResolveAssembly
                 * event which is the MS .net compatible behaviour (the assemblyresolve_event3.cs test has been fixed
@@ -1157,7 +1157,7 @@ mono_assembly_load_reference (MonoImage *image, int index)
        mono_assemblies_lock ();
        if (reference == NULL) {
                /* Flag as not found */
-               reference = REFERENCE_MISSING;
+               reference = (MonoAssembly *)REFERENCE_MISSING;
        }       
 
        if (!image->references [index]) {
@@ -1937,10 +1937,10 @@ parse_public_key (const gchar *key, gchar** pubkey, gboolean *is_ecma)
        /* Encode the size of the blob */
        offset = 0;
        if (keylen <= 127) {
-               arr = g_malloc (keylen + 1);
+               arr = (gchar *)g_malloc (keylen + 1);
                arr [offset++] = keylen;
        } else {
-               arr = g_malloc (keylen + 2);
+               arr = (gchar *)g_malloc (keylen + 2);
                arr [offset++] = 0x80; /* 10bs */
                arr [offset++] = keylen;
        }
@@ -2547,7 +2547,7 @@ mono_assembly_load_publisher_policy (MonoAssemblyName *aname)
 
        if (strstr (aname->name, ".dll")) {
                len = strlen (aname->name) - 4;
-               name = g_malloc (len);
+               name = (gchar *)g_malloc (len);
                strncpy (name, aname->name, len);
        } else
                name = g_strdup (aname->name);
@@ -2613,7 +2613,7 @@ search_binding_loaded (MonoAssemblyName *aname)
        GSList *tmp;
 
        for (tmp = loaded_assembly_bindings; tmp; tmp = tmp->next) {
-               MonoAssemblyBindingInfo *info = tmp->data;
+               MonoAssemblyBindingInfo *info = (MonoAssemblyBindingInfo *)tmp->data;
                if (assembly_binding_maps_name (info, aname))
                        return info;
        }
@@ -2668,12 +2668,12 @@ assembly_binding_info_parsed (MonoAssemblyBindingInfo *info, void *user_data)
                return;
 
        for (tmp = domain->assembly_bindings; tmp; tmp = tmp->next) {
-               info_tmp = tmp->data;
+               info_tmp = (MonoAssemblyBindingInfo *)tmp->data;
                if (strcmp (info->name, info_tmp->name) == 0 && info_versions_equal (info, info_tmp))
                        return;
        }
 
-       info_copy = mono_mempool_alloc0 (domain->mp, sizeof (MonoAssemblyBindingInfo));
+       info_copy = (MonoAssemblyBindingInfo *)mono_mempool_alloc0 (domain->mp, sizeof (MonoAssemblyBindingInfo));
        memcpy (info_copy, info, sizeof (MonoAssemblyBindingInfo));
        if (info->name)
                info_copy->name = mono_mempool_strdup (domain->mp, info->name);
@@ -2721,7 +2721,7 @@ get_per_domain_assembly_binding_info (MonoDomain *domain, MonoAssemblyName *anam
 
        info = NULL;
        for (list = domain->assembly_bindings; list; list = list->next) {
-               info = list->data;
+               info = (MonoAssemblyBindingInfo *)list->data;
                if (info && !strcmp (aname->name, info->name) && info_major_minor_in_range (info, aname))
                        break;
                info = NULL;
@@ -2787,7 +2787,7 @@ mono_assembly_apply_binding (MonoAssemblyName *aname, MonoAssemblyName *dest_nam
                info2 = get_per_domain_assembly_binding_info (domain, aname);
 
                if (info2) {
-                       info = g_memdup (info2, sizeof (MonoAssemblyBindingInfo));
+                       info = (MonoAssemblyBindingInfo *)g_memdup (info2, sizeof (MonoAssemblyBindingInfo));
                        info->name = g_strdup (info2->name);
                        info->culture = g_strdup (info2->culture);
                        info->domain_id = domain->domain_id;
@@ -2858,7 +2858,7 @@ mono_assembly_load_from_gac (MonoAssemblyName *aname,  gchar *filename, MonoImag
 
        if (strstr (aname->name, ".dll")) {
                len = strlen (filename) - 4;
-               name = g_malloc (len);
+               name = (gchar *)g_malloc (len);
                strncpy (name, aname->name, len);
        } else {
                name = g_strdup (aname->name);
@@ -3173,7 +3173,7 @@ mono_assembly_close_except_image_pools (MonoAssembly *assembly)
                assembly->image = NULL;
 
        for (tmp = assembly->friend_assembly_names; tmp; tmp = tmp->next) {
-               MonoAssemblyName *fname = tmp->data;
+               MonoAssemblyName *fname = (MonoAssemblyName *)tmp->data;
                mono_assembly_name_free (fname);
                g_free (fname);
        }
@@ -3252,7 +3252,7 @@ mono_assemblies_cleanup (void)
        mono_os_mutex_destroy (&assembly_binding_mutex);
 
        for (l = loaded_assembly_bindings; l; l = l->next) {
-               MonoAssemblyBindingInfo *info = l->data;
+               MonoAssemblyBindingInfo *info = (MonoAssemblyBindingInfo *)l->data;
 
                mono_assembly_binding_info_free (info);
                g_free (info);
@@ -3274,7 +3274,7 @@ mono_assembly_cleanup_domain_bindings (guint32 domain_id)
        iter = &loaded_assembly_bindings;
        while (*iter) {
                GSList *l = *iter;
-               MonoAssemblyBindingInfo *info = l->data;
+               MonoAssemblyBindingInfo *info = (MonoAssemblyBindingInfo *)l->data;
 
                if (info->domain_id == domain_id) {
                        *iter = l->next;
index 8f978326b4448af58d78b831d7a3b687477b33ca..4f5024a72f0bb61a91d78f648b0265e9500b47de 100644 (file)
@@ -152,7 +152,7 @@ decode_string_value (guint8 *buf, guint8 **endbuf, guint8 *limit)
 
        g_assert (length < (1 << 16));
 
-       s = g_malloc (length + 1);
+       s = (char *)g_malloc (length + 1);
 
        g_assert (p + length <= limit);
        memcpy (s, p, length);
@@ -524,7 +524,7 @@ receiver_thread (void *arg)
                        content_len = decode_int (p, &p, p_end);
 
                        /* Read message body */
-                       body = g_malloc (content_len);
+                       body = (guint8 *)g_malloc (content_len);
                        res = read (conn_fd, body, content_len);
                        
                        p = body;
index a29e83ed57b15d986ac30ed6c8ec943e078d6feb..0bd92412414f81254439cbe17c0edc83af451273 100644 (file)
@@ -235,7 +235,7 @@ mono_gc_base_init (void)
        memset (&cb, 0, sizeof (cb));
        cb.thread_register = boehm_thread_register;
        cb.thread_unregister = boehm_thread_unregister;
-       cb.mono_method_is_critical = (gpointer)mono_runtime_is_critical_method;
+       cb.mono_method_is_critical = (gboolean (*)(void *))mono_runtime_is_critical_method;
 
        mono_threads_init (&cb, sizeof (MonoThreadInfo));
        mono_os_mutex_init (&mono_gc_lock);
@@ -405,7 +405,7 @@ boehm_thread_unregister (MonoThreadInfo *p)
 gboolean
 mono_object_is_alive (MonoObject* o)
 {
-       return GC_is_marked ((gpointer)o);
+       return GC_is_marked ((ptr_t)o);
 }
 
 int
@@ -551,14 +551,14 @@ mono_gc_weak_link_remove (void **link_addr, gboolean track)
 static gpointer
 reveal_link (gpointer link_addr)
 {
-       void **link_a = link_addr;
+       void **link_a = (void **)link_addr;
        return REVEAL_POINTER (*link_a);
 }
 
 static MonoObject *
 mono_gc_weak_link_get (void **link_addr)
 {
-       MonoObject *obj = GC_call_with_alloc_lock (reveal_link, link_addr);
+       MonoObject *obj = (MonoObject *)GC_call_with_alloc_lock (reveal_link, link_addr);
        if (obj == (MonoObject *) -1)
                return NULL;
        return obj;
@@ -629,16 +629,16 @@ mono_gc_alloc_obj (MonoVTable *vtable, size_t size)
        MonoObject *obj;
 
        if (!vtable->klass->has_references) {
-               obj = GC_MALLOC_ATOMIC (size);
+               obj = (MonoObject *)GC_MALLOC_ATOMIC (size);
 
                obj->vtable = vtable;
                obj->synchronisation = NULL;
 
                memset ((char *) obj + sizeof (MonoObject), 0, size - sizeof (MonoObject));
        } else if (vtable->gc_descr != GC_NO_DESCRIPTOR) {
-               obj = GC_GCJ_MALLOC (size, vtable);
+               obj = (MonoObject *)GC_GCJ_MALLOC (size, vtable);
        } else {
-               obj = GC_MALLOC (size);
+               obj = (MonoObject *)GC_MALLOC (size);
 
                obj->vtable = vtable;
        }
@@ -655,16 +655,16 @@ mono_gc_alloc_vector (MonoVTable *vtable, size_t size, uintptr_t max_length)
        MonoArray *obj;
 
        if (!vtable->klass->has_references) {
-               obj = GC_MALLOC_ATOMIC (size);
+               obj = (MonoArray *)GC_MALLOC_ATOMIC (size);
 
                obj->obj.vtable = vtable;
                obj->obj.synchronisation = NULL;
 
                memset ((char *) obj + sizeof (MonoObject), 0, size - sizeof (MonoObject));
        } else if (vtable->gc_descr != GC_NO_DESCRIPTOR) {
-               obj = GC_GCJ_MALLOC (size, vtable);
+               obj = (MonoArray *)GC_GCJ_MALLOC (size, vtable);
        } else {
-               obj = GC_MALLOC (size);
+               obj = (MonoArray *)GC_MALLOC (size);
 
                obj->obj.vtable = vtable;
        }
@@ -683,16 +683,16 @@ mono_gc_alloc_array (MonoVTable *vtable, size_t size, uintptr_t max_length, uint
        MonoArray *obj;
 
        if (!vtable->klass->has_references) {
-               obj = GC_MALLOC_ATOMIC (size);
+               obj = (MonoArray *)GC_MALLOC_ATOMIC (size);
 
                obj->obj.vtable = vtable;
                obj->obj.synchronisation = NULL;
 
                memset ((char *) obj + sizeof (MonoObject), 0, size - sizeof (MonoObject));
        } else if (vtable->gc_descr != GC_NO_DESCRIPTOR) {
-               obj = GC_GCJ_MALLOC (size, vtable);
+               obj = (MonoArray *)GC_GCJ_MALLOC (size, vtable);
        } else {
-               obj = GC_MALLOC (size);
+               obj = (MonoArray *)GC_MALLOC (size);
 
                obj->obj.vtable = vtable;
        }
@@ -711,7 +711,7 @@ mono_gc_alloc_array (MonoVTable *vtable, size_t size, uintptr_t max_length, uint
 void *
 mono_gc_alloc_string (MonoVTable *vtable, size_t size, gint32 len)
 {
-       MonoString *obj = GC_MALLOC_ATOMIC (size);
+       MonoString *obj = (MonoString *)GC_MALLOC_ATOMIC (size);
 
        obj->object.vtable = vtable;
        obj->object.synchronisation = NULL;
@@ -770,7 +770,7 @@ mono_gc_wbarrier_generic_store (gpointer ptr, MonoObject* value)
 void
 mono_gc_wbarrier_generic_store_atomic (gpointer ptr, MonoObject *value)
 {
-       InterlockedWritePointer (ptr, value);
+       InterlockedWritePointer ((volatile gpointer *)ptr, value);
 }
 
 void
@@ -1354,7 +1354,7 @@ mono_gc_register_for_finalization (MonoObject *obj, void *user_data)
        g_assert (GC_base (obj) == (char*)obj - offset);
 #endif
 
-       GC_REGISTER_FINALIZER_NO_ORDER ((char*)obj - offset, user_data, GUINT_TO_POINTER (offset), NULL, NULL);
+       GC_REGISTER_FINALIZER_NO_ORDER ((char*)obj - offset, (GC_finalization_proc)user_data, GUINT_TO_POINTER (offset), NULL, NULL);
 }
 
 #ifndef HOST_WIN32
@@ -1448,7 +1448,7 @@ static MonoToggleRefStatus
 test_toggleref_callback (MonoObject *obj)
 {
        static MonoClassField *mono_toggleref_test_field;
-       int status = MONO_TOGGLE_REF_DROP;
+       MonoToggleRefStatus status = MONO_TOGGLE_REF_DROP;
 
        if (!mono_toggleref_test_field) {
                mono_toggleref_test_field = mono_class_get_field_from_name (mono_object_get_class (obj), "__test");
@@ -1524,12 +1524,12 @@ handle_data_alloc_entries (HandleData *handles)
 {
        handles->size = 32;
        if (MONO_GC_HANDLE_TYPE_IS_WEAK (handles->type)) {
-               handles->entries = g_malloc0 (sizeof (*handles->entries) * handles->size);
-               handles->domain_ids = g_malloc0 (sizeof (*handles->domain_ids) * handles->size);
+               handles->entries = (void **)g_malloc0 (sizeof (*handles->entries) * handles->size);
+               handles->domain_ids = (guint16 *)g_malloc0 (sizeof (*handles->domain_ids) * handles->size);
        } else {
-               handles->entries = mono_gc_alloc_fixed (sizeof (*handles->entries) * handles->size, NULL, MONO_ROOT_SOURCE_GC_HANDLE, "gc handles table");
+               handles->entries = (void **)mono_gc_alloc_fixed (sizeof (*handles->entries) * handles->size, NULL, MONO_ROOT_SOURCE_GC_HANDLE, "gc handles table");
        }
-       handles->bitmap = g_malloc0 (handles->size / CHAR_BIT);
+       handles->bitmap = (guint32 *)g_malloc0 (handles->size / CHAR_BIT);
 }
 
 static gint
@@ -1566,7 +1566,7 @@ handle_data_grow (HandleData *handles, gboolean track)
        guint32 new_size = handles->size * 2; /* always double: we memset to 0 based on this below */
 
        /* resize and copy the bitmap */
-       new_bitmap = g_malloc0 (new_size / CHAR_BIT);
+       new_bitmap = (guint32 *)g_malloc0 (new_size / CHAR_BIT);
        memcpy (new_bitmap, handles->bitmap, handles->size / CHAR_BIT);
        g_free (handles->bitmap);
        handles->bitmap = new_bitmap;
@@ -1576,8 +1576,8 @@ handle_data_grow (HandleData *handles, gboolean track)
                gpointer *entries;
                guint16 *domain_ids;
                gint i;
-               domain_ids = g_malloc0 (sizeof (*handles->domain_ids) * new_size);
-               entries = g_malloc0 (sizeof (*handles->entries) * new_size);
+               domain_ids = (guint16 *)g_malloc0 (sizeof (*handles->domain_ids) * new_size);
+               entries = (void **)g_malloc0 (sizeof (*handles->entries) * new_size);
                memcpy (domain_ids, handles->domain_ids, sizeof (*handles->domain_ids) * handles->size);
                for (i = 0; i < handles->size; ++i) {
                        MonoObject *obj = mono_gc_weak_link_get (&(handles->entries [i]));
@@ -1594,7 +1594,7 @@ handle_data_grow (HandleData *handles, gboolean track)
                handles->domain_ids = domain_ids;
        } else {
                gpointer *entries;
-               entries = mono_gc_alloc_fixed (sizeof (*handles->entries) * new_size, NULL, MONO_ROOT_SOURCE_GC_HANDLE, "gc handles table");
+               entries = (void **)mono_gc_alloc_fixed (sizeof (*handles->entries) * new_size, NULL, MONO_ROOT_SOURCE_GC_HANDLE, "gc handles table");
                mono_gc_memmove_aligned (entries, handles->entries, sizeof (*handles->entries) * handles->size);
                mono_gc_free_fixed (handles->entries);
                handles->entries = entries;
@@ -1712,7 +1712,7 @@ mono_gchandle_get_target (guint32 gchandle)
                if (MONO_GC_HANDLE_TYPE_IS_WEAK (handles->type)) {
                        obj = mono_gc_weak_link_get (&handles->entries [slot]);
                } else {
-                       obj = handles->entries [slot];
+                       obj = (MonoObject *)handles->entries [slot];
                }
        } else {
                /* print a warning? */
@@ -1734,7 +1734,7 @@ mono_gchandle_set_target (guint32 gchandle, MonoObject *obj)
        lock_handles (handles);
        if (slot < handles->size && slot_occupied (handles, slot)) {
                if (MONO_GC_HANDLE_TYPE_IS_WEAK (handles->type)) {
-                       old_obj = handles->entries [slot];
+                       old_obj = (MonoObject *)handles->entries [slot];
                        if (handles->entries [slot])
                                mono_gc_weak_link_remove (&handles->entries [slot], handles->type == HANDLE_WEAK_TRACK);
                        if (obj)
@@ -1781,7 +1781,7 @@ mono_gchandle_is_in_domain (guint32 gchandle, MonoDomain *domain)
                        result = domain->domain_id == handles->domain_ids [slot];
                } else {
                        MonoObject *obj;
-                       obj = handles->entries [slot];
+                       obj = (MonoObject *)handles->entries [slot];
                        if (obj == NULL)
                                result = TRUE;
                        else
index 3efa1a5db16dc8d629e02a21a5f7ef1c052c940c..4d74e17e60ebabd5dac765cd6474b1cf751927ed 100644 (file)
@@ -223,7 +223,7 @@ mono_class_from_typeref_checked (MonoImage *image, guint32 type_token, MonoError
                if (enclosing->nested_classes_inited && enclosing->ext) {
                        /* Micro-optimization: don't scan the metadata tables if enclosing is already inited */
                        for (tmp = enclosing->ext->nested_classes; tmp; tmp = tmp->next) {
-                               res = tmp->data;
+                               res = (MonoClass *)tmp->data;
                                if (strcmp (res->name, name) == 0)
                                        return res;
                        }
@@ -299,17 +299,17 @@ MonoArrayType *
 mono_dup_array_type (MonoImage *image, MonoArrayType *a)
 {
        if (image) {
-               a = mono_image_memdup (image, a, sizeof (MonoArrayType));
+               a = (MonoArrayType *)mono_image_memdup (image, a, sizeof (MonoArrayType));
                if (a->sizes)
-                       a->sizes = mono_image_memdup (image, a->sizes, a->numsizes * sizeof (int));
+                       a->sizes = (int *)mono_image_memdup (image, a->sizes, a->numsizes * sizeof (int));
                if (a->lobounds)
-                       a->lobounds = mono_image_memdup (image, a->lobounds, a->numlobounds * sizeof (int));
+                       a->lobounds = (int *)mono_image_memdup (image, a->lobounds, a->numlobounds * sizeof (int));
        } else {
-               a = g_memdup (a, sizeof (MonoArrayType));
+               a = (MonoArrayType *)g_memdup (a, sizeof (MonoArrayType));
                if (a->sizes)
-                       a->sizes = g_memdup (a->sizes, a->numsizes * sizeof (int));
+                       a->sizes = (int *)g_memdup (a->sizes, a->numsizes * sizeof (int));
                if (a->lobounds)
-                       a->lobounds = g_memdup (a->lobounds, a->numlobounds * sizeof (int));
+                       a->lobounds = (int *)g_memdup (a->lobounds, a->numlobounds * sizeof (int));
        }
        return a;
 }
@@ -1110,7 +1110,7 @@ mono_class_inflate_generic_method_full_checked (MonoMethod *method, MonoClass *k
 
        // check cache
        mono_image_set_lock (set);
-       cached = g_hash_table_lookup (set->gmethod_cache, iresult);
+       cached = (MonoMethodInflated *)g_hash_table_lookup (set->gmethod_cache, iresult);
        mono_image_set_unlock (set);
 
        if (cached) {
@@ -1185,7 +1185,7 @@ mono_class_inflate_generic_method_full_checked (MonoMethod *method, MonoClass *k
 
        // check cache
        mono_image_set_lock (set);
-       cached = g_hash_table_lookup (set->gmethod_cache, iresult);
+       cached = (MonoMethodInflated *)g_hash_table_lookup (set->gmethod_cache, iresult);
        if (!cached) {
                g_hash_table_insert (set->gmethod_cache, iresult, iresult);
                iresult->owner = set;
@@ -1265,7 +1265,7 @@ mono_method_get_generic_container (MonoMethod *method)
        if (!method->is_generic)
                return NULL;
 
-       container = mono_image_property_lookup (method->klass->image, method, MONO_METHOD_PROP_GENERIC_CONTAINER);
+       container = (MonoGenericContainer *)mono_image_property_lookup (method->klass->image, method, MONO_METHOD_PROP_GENERIC_CONTAINER);
        g_assert (container);
 
        return container;
@@ -1454,7 +1454,7 @@ mono_class_setup_basic_field_info (MonoClass *klass)
                klass->field.count = gtd->field.count;
        }
 
-       klass->fields = mono_class_alloc0 (klass, sizeof (MonoClassField) * top);
+       klass->fields = (MonoClassField *)mono_class_alloc0 (klass, sizeof (MonoClassField) * top);
 
        /*
         * Fetch all the field information.
@@ -2192,7 +2192,7 @@ mono_class_setup_methods (MonoClass *klass)
 
                /* The + 1 makes this always non-NULL to pass the check in mono_class_setup_methods () */
                count = gklass->method.count;
-               methods = mono_class_alloc0 (klass, sizeof (MonoMethod*) * (count + 1));
+               methods = (MonoMethod **)mono_class_alloc0 (klass, sizeof (MonoMethod*) * (count + 1));
 
                for (i = 0; i < count; i++) {
                        methods [i] = mono_class_inflate_generic_method_full_checked (
@@ -2230,7 +2230,7 @@ mono_class_setup_methods (MonoClass *klass)
                        count += klass->interface_count * count_generic;
                }
 
-               methods = mono_class_alloc0 (klass, sizeof (MonoMethod*) * count);
+               methods = (MonoMethod **)mono_class_alloc0 (klass, sizeof (MonoMethod*) * count);
 
                sig = mono_metadata_signature_alloc (klass->image, klass->rank);
                sig->ret = &mono_defaults.void_class->byval_arg;
@@ -2300,7 +2300,7 @@ mono_class_setup_methods (MonoClass *klass)
                MonoError error;
 
                count = klass->method.count;
-               methods = mono_class_alloc (klass, sizeof (MonoMethod*) * count);
+               methods = (MonoMethod **)mono_class_alloc (klass, sizeof (MonoMethod*) * count);
                for (i = 0; i < count; ++i) {
                        int idx = mono_metadata_translate_token_index (klass->image, MONO_TABLE_METHOD, klass->method.first + i + 1);
                        methods [i] = mono_get_method_checked (klass->image, MONO_TOKEN_METHOD_DEF | idx, klass, NULL, &error);
@@ -2518,7 +2518,7 @@ mono_class_setup_properties (MonoClass *klass)
                                return;
                }
 
-               properties = mono_class_alloc0 (klass, sizeof (MonoProperty) * count);
+               properties = (MonoProperty *)mono_class_alloc0 (klass, sizeof (MonoProperty) * count);
                for (i = first; i < last; ++i) {
                        mono_metadata_decode_table_row (klass->image, MONO_TABLE_PROPERTY, i, cols, MONO_PROPERTY_SIZE);
                        properties [i - first].parent = klass;
@@ -2661,7 +2661,7 @@ mono_class_setup_events (MonoClass *klass)
                        }
                }
 
-               events = mono_class_alloc0 (klass, sizeof (MonoEvent) * count);
+               events = (MonoEvent *)mono_class_alloc0 (klass, sizeof (MonoEvent) * count);
                for (i = first; i < last; ++i) {
                        MonoEvent *event = &events [i - first];
 
@@ -2704,7 +2704,7 @@ mono_class_setup_events (MonoClass *klass)
                                        } else {
                                                while (event->other [n])
                                                        n++;
-                                               event->other = g_realloc (event->other, (n + 2) * sizeof (MonoMethod*));
+                                               event->other = (MonoMethod **)g_realloc (event->other, (n + 2) * sizeof (MonoMethod*));
                                        }
                                        event->other [n] = method;
                                        /* NULL terminated */
@@ -2882,8 +2882,8 @@ mono_class_get_implemented_interfaces (MonoClass *klass, MonoError *error)
 
 static int
 compare_interface_ids (const void *p_key, const void *p_element) {
-       const MonoClass *key = p_key;
-       const MonoClass *element = *(MonoClass**) p_element;
+       const MonoClass *key = (const MonoClass *)p_key;
+       const MonoClass *element = *(const MonoClass **)p_element;
        
        return (key->interface_id - element->interface_id);
 }
@@ -2891,7 +2891,7 @@ compare_interface_ids (const void *p_key, const void *p_element) {
 /*FIXME verify all callers if they should switch to mono_class_interface_offset_with_variance*/
 int
 mono_class_interface_offset (MonoClass *klass, MonoClass *itf) {
-       MonoClass **result = mono_binary_search (
+       MonoClass **result = (MonoClass **)mono_binary_search (
                        itf,
                        klass->interfaces_packed,
                        klass->interface_offsets_count,
@@ -2984,7 +2984,7 @@ print_implemented_interfaces (MonoClass *klass) {
                        mono_error_cleanup (&error);
                } else if (ifaces) {
                        for (i = 0; i < ifaces->len; i++) {
-                               MonoClass *ic = g_ptr_array_index (ifaces, i);
+                               MonoClass *ic = (MonoClass *)g_ptr_array_index (ifaces, i);
                                printf ("  [UIID %d] interface %s\n", ic->interface_id, ic->name);
                                printf ("  [%03d][UUID %03d][SLOT %03d][SIZE  %03d] interface %s.%s\n", i,
                                                ic->interface_id,
@@ -3136,7 +3136,7 @@ get_implicit_generic_array_interfaces (MonoClass *klass, int *num, int *is_enume
                                ++real_count;
                }
 
-               interfaces = g_malloc0 (sizeof (MonoClass*) * real_count);
+               interfaces = (MonoClass **)g_malloc0 (sizeof (MonoClass*) * real_count);
                interfaces [0] = valuetype_types [0];
                if (valuetype_types [1])
                        interfaces [nifaces] = valuetype_types [1];
@@ -3176,7 +3176,7 @@ get_implicit_generic_array_interfaces (MonoClass *klass, int *num, int *is_enume
                        if (valuetype_types [1])
                                ++real_count;
                }
-               interfaces = g_malloc0 (sizeof (MonoClass*) * real_count);
+               interfaces = (MonoClass **)g_malloc0 (sizeof (MonoClass*) * real_count);
                if (MONO_CLASS_IS_INTERFACE (eclass)) {
                        interfaces [0] = mono_defaults.object_class;
                        j = nifaces;
@@ -3529,7 +3529,7 @@ setup_interface_offsets (MonoClass *klass, int cur_slot, gboolean overwrite)
                if (ifaces) {
                        num_ifaces += ifaces->len;
                        for (i = 0; i < ifaces->len; ++i) {
-                               ic = g_ptr_array_index (ifaces, i);
+                               ic = (MonoClass *)g_ptr_array_index (ifaces, i);
                                if (max_iid < ic->interface_id)
                                        max_iid = ic->interface_id;
                        }
@@ -3551,8 +3551,8 @@ setup_interface_offsets (MonoClass *klass, int cur_slot, gboolean overwrite)
        }
        klass->max_interface_id = max_iid;
        /* compute vtable offset for interfaces */
-       interfaces_full = g_malloc0 (sizeof (MonoClass*) * num_ifaces);
-       interface_offsets_full = g_malloc (sizeof (int) * num_ifaces);
+       interfaces_full = (MonoClass **)g_malloc0 (sizeof (MonoClass*) * num_ifaces);
+       interface_offsets_full = (int *)g_malloc (sizeof (int) * num_ifaces);
 
        for (i = 0; i < num_ifaces; i++) {
                interface_offsets_full [i] = -1;
@@ -3566,7 +3566,7 @@ setup_interface_offsets (MonoClass *klass, int cur_slot, gboolean overwrite)
                if (ifaces) {
                        for (i = 0; i < ifaces->len; ++i) {
                                int io;
-                               ic = g_ptr_array_index (ifaces, i);
+                               ic = (MonoClass *)g_ptr_array_index (ifaces, i);
                                
                                /*Force the sharing of interface offsets between parent and subtypes.*/
                                io = mono_class_interface_offset (k, ic);
@@ -3581,7 +3581,7 @@ setup_interface_offsets (MonoClass *klass, int cur_slot, gboolean overwrite)
        if (ifaces) {
                for (i = 0; i < ifaces->len; ++i) {
                        int count;
-                       ic = g_ptr_array_index (ifaces, i);
+                       ic = (MonoClass *)g_ptr_array_index (ifaces, i);
                        if (set_interface_and_offset (num_ifaces, interfaces_full, interface_offsets_full, ic, cur_slot, FALSE))
                                continue;
                        count = count_virtual_methods (ic);
@@ -3669,13 +3669,13 @@ setup_interface_offsets (MonoClass *klass, int cur_slot, gboolean overwrite)
                uint8_t *bitmap;
                int bsize;
                klass->interface_offsets_count = interface_offsets_count;
-               klass->interfaces_packed = mono_class_alloc (klass, sizeof (MonoClass*) * interface_offsets_count);
-               klass->interface_offsets_packed = mono_class_alloc (klass, sizeof (guint16) * interface_offsets_count);
+               klass->interfaces_packed = (MonoClass **)mono_class_alloc (klass, sizeof (MonoClass*) * interface_offsets_count);
+               klass->interface_offsets_packed = (guint16 *)mono_class_alloc (klass, sizeof (guint16) * interface_offsets_count);
                bsize = (sizeof (guint8) * ((max_iid + 1) >> 3)) + (((max_iid + 1) & 7)? 1 :0);
 #ifdef COMPRESSED_INTERFACE_BITMAP
                bitmap = g_malloc0 (bsize);
 #else
-               bitmap = mono_class_alloc0 (klass, bsize);
+               bitmap = (uint8_t *)mono_class_alloc0 (klass, bsize);
 #endif
                for (i = 0; i < interface_offsets_count; i++) {
                        int id = interfaces_full [i]->interface_id;
@@ -4328,7 +4328,7 @@ mono_class_setup_vtable_general (MonoClass *klass, MonoMethod **overrides, int o
                return;
        } else if (ifaces) {
                for (i = 0; i < ifaces->len; i++) {
-                       MonoClass *ic = g_ptr_array_index (ifaces, i);
+                       MonoClass *ic = (MonoClass *)g_ptr_array_index (ifaces, i);
                        max_vtsize += ic->method.count;
                }
                g_ptr_array_free (ifaces, TRUE);
@@ -4359,7 +4359,7 @@ mono_class_setup_vtable_general (MonoClass *klass, MonoMethod **overrides, int o
                ++cur_slot;
        }
 
-       vtable = alloca (sizeof (gpointer) * max_vtsize);
+       vtable = (MonoMethod **)alloca (sizeof (gpointer) * max_vtsize);
        memset (vtable, 0, sizeof (gpointer) * max_vtsize);
 
        /* printf ("METAINIT %s.%s\n", klass->name_space, klass->name); */
@@ -4383,7 +4383,7 @@ mono_class_setup_vtable_general (MonoClass *klass, MonoMethod **overrides, int o
                        return;
                }
 
-               tmp = mono_class_alloc0 (klass, sizeof (gpointer) * gklass->vtable_size);
+               tmp = (MonoMethod **)mono_class_alloc0 (klass, sizeof (gpointer) * gklass->vtable_size);
                klass->vtable_size = gklass->vtable_size;
                for (i = 0; i < gklass->vtable_size; ++i)
                        if (gklass->vtable [i]) {
@@ -4532,7 +4532,7 @@ mono_class_setup_vtable_general (MonoClass *klass, MonoMethod **overrides, int o
                for (im_index = 0; im_index < ic->method.count; im_index++) {
                        MonoMethod *im = ic->methods [im_index];
                        int im_slot = ic_offset + im->slot;
-                       MonoMethod *override_im = (override_map != NULL) ? g_hash_table_lookup (override_map, im) : NULL;
+                       MonoMethod *override_im = (override_map != NULL) ? (MonoMethod *)g_hash_table_lookup (override_map, im) : NULL;
                        
                        if (im->flags & METHOD_ATTRIBUTE_STATIC)
                                continue;
@@ -4547,7 +4547,7 @@ mono_class_setup_vtable_general (MonoClass *klass, MonoMethod **overrides, int o
 
                                // First look for a suitable method among the class methods
                                for (l = virt_methods; l; l = l->next) {
-                                       cm = l->data;
+                                       cm = (MonoMethod *)l->data;
                                        TRACE_INTERFACE_VTABLE (printf ("    For slot %d ('%s'.'%s':'%s'), trying method '%s'.'%s':'%s'... [EXPLICIT IMPLEMENTATION = %d][SLOT IS NULL = %d]", im_slot, ic->name_space, ic->name, im->name, cm->klass->name_space, cm->klass->name, cm->name, interface_is_explicitly_implemented_by_class, (vtable [im_slot] == NULL)));
                                        if (check_interface_method_override (klass, im, cm, TRUE, interface_is_explicitly_implemented_by_class, (vtable [im_slot] == NULL))) {
                                                TRACE_INTERFACE_VTABLE (printf ("[check ok]: ASSIGNING"));
@@ -4622,7 +4622,7 @@ mono_class_setup_vtable_general (MonoClass *klass, MonoMethod **overrides, int o
 
        TRACE_INTERFACE_VTABLE (print_vtable_full (klass, vtable, cur_slot, first_non_interface_slot, "AFTER SETTING UP INTERFACE METHODS", FALSE));
        for (l = virt_methods; l; l = l->next) {
-               cm = l->data;
+               cm = (MonoMethod *)l->data;
                /*
                 * If the method is REUSE_SLOT, we must check in the
                 * base class for a method to override.
@@ -4725,7 +4725,7 @@ mono_class_setup_vtable_general (MonoClass *klass, MonoMethod **overrides, int o
                        if (vtable [i]) {
                                TRACE_INTERFACE_VTABLE (printf ("checking slot %d method %s[%p] for overrides\n", i, mono_method_full_name (vtable [i], 1), vtable [i]));
 
-                               cm = g_hash_table_lookup (override_map, vtable [i]);
+                               cm = (MonoMethod *)g_hash_table_lookup (override_map, vtable [i]);
                                if (cm)
                                        vtable [i] = cm;
                        }
@@ -4769,7 +4769,7 @@ mono_class_setup_vtable_general (MonoClass *klass, MonoMethod **overrides, int o
                mono_memory_barrier ();
                klass->vtable = klass->parent->vtable;
        } else {
-               MonoMethod **tmp = mono_class_alloc0 (klass, sizeof (gpointer) * klass->vtable_size);
+               MonoMethod **tmp = (MonoMethod **)mono_class_alloc0 (klass, sizeof (gpointer) * klass->vtable_size);
                memcpy (tmp, vtable,  sizeof (gpointer) * klass->vtable_size);
                mono_memory_barrier ();
                klass->vtable = tmp;
@@ -4954,12 +4954,12 @@ generic_array_methods (MonoClass *klass)
                }
        }
        list = g_list_reverse (list);
-       generic_array_method_info = mono_image_alloc (mono_defaults.corlib, sizeof (GenericArrayMethodInfo) * count_generic);
+       generic_array_method_info = (GenericArrayMethodInfo *)mono_image_alloc (mono_defaults.corlib, sizeof (GenericArrayMethodInfo) * count_generic);
        i = 0;
        for (tmp = list; tmp; tmp = tmp->next) {
                const char *mname, *iname;
                gchar *name;
-               MonoMethod *m = tmp->data;
+               MonoMethod *m = (MonoMethod *)tmp->data;
                const char *ireadonlylist_prefix = "InternalArray__IReadOnlyList_";
                const char *ireadonlycollection_prefix = "InternalArray__IReadOnlyCollection_";
 
@@ -4983,7 +4983,7 @@ generic_array_methods (MonoClass *klass)
                        g_assert_not_reached ();
                }
 
-               name = mono_image_alloc (mono_defaults.corlib, strlen (iname) + strlen (mname) + 1);
+               name = (gchar *)mono_image_alloc (mono_defaults.corlib, strlen (iname) + strlen (mname) + 1);
                strcpy (name, iname);
                strcpy (name + strlen (iname), mname);
                generic_array_method_info [i].name = name;
@@ -5022,7 +5022,7 @@ concat_two_strings_with_zero (MonoImage *image, const char *s1, const char *s2)
 {
        int null_length = strlen ("(null)");
        int len = (s1 ? strlen (s1) : null_length) + (s2 ? strlen (s2) : null_length) + 2;
-       char *s = mono_image_alloc (image, len);
+       char *s = (char *)mono_image_alloc (image, len);
        int result;
 
        result = g_snprintf (s, len, "%s%c%s", s1 ? s1 : "(null)", '\0', s2 ? s2 : "(null)");
@@ -5450,11 +5450,14 @@ mono_class_setup_mono_type (MonoClass *klass)
                        klass->valuetype = 0;
                        klass->enumtype = 0;
                } else if (!strcmp (name, "Object")) {
-                       klass->this_arg.type = klass->byval_arg.type = MONO_TYPE_OBJECT;
+                       klass->byval_arg.type = MONO_TYPE_OBJECT;
+                       klass->this_arg.type = MONO_TYPE_OBJECT;
                } else if (!strcmp (name, "String")) {
-                       klass->this_arg.type = klass->byval_arg.type = MONO_TYPE_STRING;
+                       klass->byval_arg.type = MONO_TYPE_STRING;
+                       klass->this_arg.type = MONO_TYPE_STRING;
                } else if (!strcmp (name, "TypedReference")) {
-                       klass->this_arg.type = klass->byval_arg.type = MONO_TYPE_TYPEDBYREF;
+                       klass->byval_arg.type = MONO_TYPE_TYPEDBYREF;
+                       klass->this_arg.type = MONO_TYPE_TYPEDBYREF;
                }
        }
 
@@ -5536,7 +5539,8 @@ mono_class_setup_mono_type (MonoClass *klass)
                                break;
                        }
                }
-               klass->this_arg.type = klass->byval_arg.type = t;
+               klass->byval_arg.type = (MonoTypeEnum)t;
+               klass->this_arg.type = (MonoTypeEnum)t;
        }
 
        if (MONO_CLASS_IS_INTERFACE (klass))
@@ -5678,7 +5682,7 @@ mono_class_setup_supertypes (MonoClass *klass)
        int ms;
        MonoClass **supertypes;
 
-       mono_atomic_load_acquire (supertypes, void*, &klass->supertypes);
+       mono_atomic_load_acquire (supertypes, MonoClass **, &klass->supertypes);
        if (supertypes)
                return;
 
@@ -5690,7 +5694,7 @@ mono_class_setup_supertypes (MonoClass *klass)
                klass->idepth = 1;
 
        ms = MAX (MONO_DEFAULT_SUPERTABLE_SIZE, klass->idepth);
-       supertypes = mono_class_alloc0 (klass, sizeof (MonoClass *) * ms);
+       supertypes = (MonoClass **)mono_class_alloc0 (klass, sizeof (MonoClass *) * ms);
 
        if (klass->parent) {
                CHECKED_METADATA_WRITE_PTR ( supertypes [klass->idepth - 1] , klass );
@@ -5779,7 +5783,7 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token, MonoError
 
        mono_loader_lock ();
 
-       if ((klass = mono_internal_hash_table_lookup (&image->class_cache, GUINT_TO_POINTER (type_token)))) {
+       if ((klass = (MonoClass *)mono_internal_hash_table_lookup (&image->class_cache, GUINT_TO_POINTER (type_token)))) {
                mono_loader_unlock ();
                mono_loader_assert_no_error ();
                return klass;
@@ -5790,7 +5794,7 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token, MonoError
        name = mono_metadata_string_heap (image, cols [MONO_TYPEDEF_NAME]);
        nspace = mono_metadata_string_heap (image, cols [MONO_TYPEDEF_NAMESPACE]);
 
-       klass = mono_image_alloc0 (image, sizeof (MonoClass));
+       klass = (MonoClass *)mono_image_alloc0 (image, sizeof (MonoClass));
 
        klass->name = name;
        klass->name_space = nspace;
@@ -6042,7 +6046,7 @@ mono_generic_class_get_class (MonoGenericClass *gclass)
                return gclass->cached_class;
        }
 
-       klass = mono_image_set_alloc0 (gclass->owner, sizeof (MonoClass));
+       klass = (MonoClass *)mono_image_set_alloc0 (gclass->owner, sizeof (MonoClass));
 
        gklass = gclass->container_class;
 
@@ -6067,7 +6071,8 @@ mono_generic_class_get_class (MonoGenericClass *gclass)
        klass->is_inflated = 1;
        klass->generic_class = gclass;
 
-       klass->this_arg.type = klass->byval_arg.type = MONO_TYPE_GENERICINST;
+       klass->byval_arg.type = MONO_TYPE_GENERICINST;
+       klass->this_arg.type = klass->byval_arg.type;
        klass->this_arg.data.generic_class = klass->byval_arg.data.generic_class = gclass;
        klass->this_arg.byref = TRUE;
        klass->enumtype = gklass->enumtype;
@@ -6157,7 +6162,7 @@ get_image_for_generic_param (MonoGenericParam *param)
 char *
 make_generic_name_string (MonoImage *image, int num)
 {
-       char *name = mono_image_alloc0 (image, INT_STRING_SIZE);
+       char *name = (char *)mono_image_alloc0 (image, INT_STRING_SIZE);
        g_snprintf (name, INT_STRING_SIZE, "%d", num);
        return name;
 }
@@ -6176,14 +6181,13 @@ make_generic_param_class (MonoGenericParam *param, MonoGenericParamInfo *pinfo)
        gboolean is_mvar = container->is_method;
        gboolean is_anonymous = container->is_anonymous;
 
-       klass = mono_image_alloc0 (image, sizeof (MonoClass));
+       klass = (MonoClass *)mono_image_alloc0 (image, sizeof (MonoClass));
        classes_size += sizeof (MonoClass);
 
        if (pinfo) {
                CHECKED_METADATA_WRITE_PTR_EXEMPT ( klass->name , pinfo->name );
        } else {
                int n = mono_generic_param_num (param);
-
                CHECKED_METADATA_WRITE_PTR_LOCAL ( klass->name , make_generic_name_string (image, n) );
        }
 
@@ -6217,7 +6221,7 @@ make_generic_param_class (MonoGenericParam *param, MonoGenericParamInfo *pinfo)
 
        if (count - pos > 0) {
                klass->interface_count = count - pos;
-               CHECKED_METADATA_WRITE_PTR_LOCAL ( klass->interfaces , mono_image_alloc0 (image, sizeof (MonoClass *) * (count - pos)) );
+               CHECKED_METADATA_WRITE_PTR_LOCAL ( klass->interfaces , (MonoClass **)mono_image_alloc0 (image, sizeof (MonoClass *) * (count - pos)) );
                klass->interfaces_inited = TRUE;
                for (i = pos; i < count; i++)
                        CHECKED_METADATA_WRITE_PTR ( klass->interfaces [i - pos] , pinfo->constraints [i] );
@@ -6230,7 +6234,8 @@ make_generic_param_class (MonoGenericParam *param, MonoGenericParamInfo *pinfo)
        CHECKED_METADATA_WRITE_PTR_LOCAL ( klass->element_class , klass );
        klass->flags = TYPE_ATTRIBUTE_PUBLIC;
 
-       klass->this_arg.type = klass->byval_arg.type = is_mvar ? MONO_TYPE_MVAR : MONO_TYPE_VAR;
+       klass->byval_arg.type = is_mvar ? MONO_TYPE_MVAR : MONO_TYPE_VAR;
+       klass->this_arg.type = klass->byval_arg.type;
        CHECKED_METADATA_WRITE_PTR ( klass->this_arg.data.generic_param ,  param );
        CHECKED_METADATA_WRITE_PTR ( klass->byval_arg.data.generic_param , param );
        klass->this_arg.byref = TRUE;
@@ -6289,7 +6294,7 @@ get_anon_gparam_class (MonoGenericParam *param, gboolean take_lock)
                if (ht) {
                        if (take_lock)
                                mono_image_lock (image);
-                       klass = g_hash_table_lookup (ht, param);
+                       klass = (MonoClass *)g_hash_table_lookup (ht, param);
                        if (take_lock)
                                mono_image_unlock (image);
                }
@@ -6306,7 +6311,7 @@ get_anon_gparam_class (MonoGenericParam *param, gboolean take_lock)
                if (ht) {
                        if (take_lock)
                                mono_image_lock (image);
-                       klass = g_hash_table_lookup (ht, GINT_TO_POINTER (n));
+                       klass = (MonoClass *)g_hash_table_lookup (ht, GINT_TO_POINTER (n));
                        if (take_lock)
                                mono_image_unlock (image);
                }
@@ -6341,11 +6346,11 @@ set_anon_gparam_class (MonoGenericParam *param, MonoClass *klass)
                if (is_mvar) {
                        /* Requires locking to avoid droping an already published class */
                        if (!image->mvar_cache_fast)
-                               image->mvar_cache_fast = mono_image_alloc0 (image, sizeof (MonoClass*) * FAST_CACHE_SIZE);
+                               image->mvar_cache_fast = (MonoClass **)mono_image_alloc0 (image, sizeof (MonoClass*) * FAST_CACHE_SIZE);
                        image->mvar_cache_fast [n] = klass;
                } else {
                        if (!image->var_cache_fast)
-                               image->var_cache_fast = mono_image_alloc0 (image, sizeof (MonoClass*) * FAST_CACHE_SIZE);
+                               image->var_cache_fast = (MonoClass **)mono_image_alloc0 (image, sizeof (MonoClass*) * FAST_CACHE_SIZE);
                        image->var_cache_fast [n] = klass;
                }
        } else {
@@ -6447,14 +6452,14 @@ mono_ptr_class_get (MonoType *type)
 
        mono_image_lock (image);
        if (image->ptr_cache) {
-               if ((result = g_hash_table_lookup (image->ptr_cache, el_class))) {
+               if ((result = (MonoClass *)g_hash_table_lookup (image->ptr_cache, el_class))) {
                        mono_image_unlock (image);
                        return result;
                }
        }
        mono_image_unlock (image);
        
-       result = mono_image_alloc0 (image, sizeof (MonoClass));
+       result = (MonoClass *)mono_image_alloc0 (image, sizeof (MonoClass));
 
        classes_size += sizeof (MonoClass);
 
@@ -6474,7 +6479,8 @@ mono_ptr_class_get (MonoType *type)
        result->cast_class = result->element_class = el_class;
        result->blittable = TRUE;
 
-       result->this_arg.type = result->byval_arg.type = MONO_TYPE_PTR;
+       result->byval_arg.type = MONO_TYPE_PTR;
+       result->this_arg.type = result->byval_arg.type;
        result->this_arg.data.type = result->byval_arg.data.type = &result->element_class->byval_arg;
        result->this_arg.byref = TRUE;
 
@@ -6483,7 +6489,7 @@ mono_ptr_class_get (MonoType *type)
        mono_image_lock (image);
        if (image->ptr_cache) {
                MonoClass *result2;
-               if ((result2 = g_hash_table_lookup (image->ptr_cache, el_class))) {
+               if ((result2 = (MonoClass *)g_hash_table_lookup (image->ptr_cache, el_class))) {
                        mono_image_unlock (image);
                        mono_profiler_class_loaded (result, MONO_PROFILE_FAILED);
                        return result2;
@@ -6512,7 +6518,7 @@ mono_fnptr_class_get (MonoMethodSignature *sig)
        if (!ptr_hash)
                ptr_hash = g_hash_table_new (mono_aligned_addr_hash, NULL);
        
-       if ((result = g_hash_table_lookup (ptr_hash, sig))) {
+       if ((result = (MonoClass *)g_hash_table_lookup (ptr_hash, sig))) {
                mono_loader_unlock ();
                return result;
        }
@@ -6532,7 +6538,8 @@ mono_fnptr_class_get (MonoMethodSignature *sig)
        result->cast_class = result->element_class = result;
        result->blittable = TRUE;
 
-       result->this_arg.type = result->byval_arg.type = MONO_TYPE_FNPTR;
+       result->byval_arg.type = MONO_TYPE_FNPTR;
+       result->this_arg.type = result->byval_arg.type;
        result->this_arg.data.method = result->byval_arg.data.method = sig;
        result->this_arg.byref = TRUE;
        result->blittable = TRUE;
@@ -6701,7 +6708,7 @@ mono_bounded_array_class_get (MonoClass *eclass, guint32 rank, gboolean bounded)
                mono_os_mutex_lock (&image->szarray_cache_lock);
                if (!image->szarray_cache)
                        image->szarray_cache = g_hash_table_new (mono_aligned_addr_hash, NULL);
-               klass = g_hash_table_lookup (image->szarray_cache, eclass);
+               klass = (MonoClass *)g_hash_table_lookup (image->szarray_cache, eclass);
                mono_os_mutex_unlock (&image->szarray_cache_lock);
                if (klass)
                        return klass;
@@ -6713,9 +6720,9 @@ mono_bounded_array_class_get (MonoClass *eclass, guint32 rank, gboolean bounded)
                if (!image->array_cache)
                        image->array_cache = g_hash_table_new (mono_aligned_addr_hash, NULL);
 
-               if ((rootlist = list = g_hash_table_lookup (image->array_cache, eclass))) {
+               if ((rootlist = list = (GSList *)g_hash_table_lookup (image->array_cache, eclass))) {
                        for (; list; list = list->next) {
-                               klass = list->data;
+                               klass = (MonoClass *)list->data;
                                if ((klass->rank == rank) && (klass->byval_arg.type == (((rank > 1) || bounded) ? MONO_TYPE_ARRAY : MONO_TYPE_SZARRAY))) {
                                        mono_loader_unlock ();
                                        return klass;
@@ -6734,12 +6741,12 @@ mono_bounded_array_class_get (MonoClass *eclass, guint32 rank, gboolean bounded)
                        mono_class_init (parent);
        }
 
-       klass = mono_image_alloc0 (image, sizeof (MonoClass));
+       klass = (MonoClass *)mono_image_alloc0 (image, sizeof (MonoClass));
 
        klass->image = image;
        klass->name_space = eclass->name_space;
        nsize = strlen (eclass->name);
-       name = g_malloc (nsize + 2 + rank + 1);
+       name = (char *)g_malloc (nsize + 2 + rank + 1);
        memcpy (name, eclass->name, nsize);
        name [nsize] = '[';
        if (rank > 1)
@@ -6820,7 +6827,7 @@ mono_bounded_array_class_get (MonoClass *eclass, guint32 rank, gboolean bounded)
        klass->element_class = eclass;
 
        if ((rank > 1) || bounded) {
-               MonoArrayType *at = mono_image_alloc0 (image, sizeof (MonoArrayType));
+               MonoArrayType *at = (MonoArrayType *)mono_image_alloc0 (image, sizeof (MonoArrayType));
                klass->byval_arg.type = MONO_TYPE_ARRAY;
                klass->byval_arg.data.array = at;
                at->eklass = eclass;
@@ -6842,7 +6849,7 @@ mono_bounded_array_class_get (MonoClass *eclass, guint32 rank, gboolean bounded)
                MonoClass *prev_class;
 
                mono_os_mutex_lock (&image->szarray_cache_lock);
-               prev_class = g_hash_table_lookup (image->szarray_cache, eclass);
+               prev_class = (MonoClass *)g_hash_table_lookup (image->szarray_cache, eclass);
                if (prev_class)
                        /* Someone got in before us */
                        klass = prev_class;
@@ -7134,7 +7141,7 @@ mono_class_get_field_default_value (MonoClassField *field, MonoTypeEnum *def_typ
 
                mono_class_alloc_ext (klass);
 
-               def_values = mono_class_alloc0 (klass, sizeof (MonoFieldDefaultValue) * klass->field.count);
+               def_values = (MonoFieldDefaultValue *)mono_class_alloc0 (klass, sizeof (MonoFieldDefaultValue) * klass->field.count);
 
                mono_image_lock (klass->image);
                mono_memory_barrier ();
@@ -7153,8 +7160,8 @@ mono_class_get_field_default_value (MonoClassField *field, MonoTypeEnum *def_typ
                g_assert (!(field->type->attrs & FIELD_ATTRIBUTE_HAS_FIELD_RVA));
 
                mono_metadata_decode_row (&field->parent->image->tables [MONO_TABLE_CONSTANT], cindex - 1, constant_cols, MONO_CONSTANT_SIZE);
-               klass->ext->field_def_values [field_index].def_type = constant_cols [MONO_CONSTANT_TYPE];
-               klass->ext->field_def_values [field_index].data = (gpointer)mono_metadata_blob_heap (field->parent->image, constant_cols [MONO_CONSTANT_VALUE]);
+               klass->ext->field_def_values [field_index].def_type = (MonoTypeEnum)constant_cols [MONO_CONSTANT_TYPE];
+               klass->ext->field_def_values [field_index].data = (const char *)mono_metadata_blob_heap (field->parent->image, constant_cols [MONO_CONSTANT_VALUE]);
        }
 
        *def_type = klass->ext->field_def_values [field_index].def_type;
@@ -7203,8 +7210,8 @@ mono_class_get_property_default_value (MonoProperty *property, MonoTypeEnum *def
                return NULL;
 
        mono_metadata_decode_row (&klass->image->tables [MONO_TABLE_CONSTANT], cindex - 1, constant_cols, MONO_CONSTANT_SIZE);
-       *def_type = constant_cols [MONO_CONSTANT_TYPE];
-       return (gpointer)mono_metadata_blob_heap (klass->image, constant_cols [MONO_CONSTANT_VALUE]);
+       *def_type = (MonoTypeEnum)constant_cols [MONO_CONSTANT_TYPE];
+       return (const char *)mono_metadata_blob_heap (klass->image, constant_cols [MONO_CONSTANT_VALUE]);
 }
 
 guint32
@@ -7437,7 +7444,7 @@ mono_class_get_checked (MonoImage *image, guint32 type_token, MonoError *error)
                        mono_error_set_bad_image (error, image,"Bad token table for dynamic image: %x", table);
                        return NULL;
                }
-               klass = mono_lookup_dynamic_token (image, type_token, NULL); /*FIXME proper error handling*/
+               klass = (MonoClass *)mono_lookup_dynamic_token (image, type_token, NULL); /*FIXME proper error handling*/
                goto done;
        }
 
@@ -7488,7 +7495,7 @@ mono_type_get_checked (MonoImage *image, guint32 type_token, MonoGenericContext
 
        //FIXME: this will not fix the very issue for which mono_type_get_full exists -but how to do it then?
        if (image_is_dynamic (image))
-               return mono_class_get_type (mono_lookup_dynamic_token (image, type_token, context));
+               return mono_class_get_type ((MonoClass *)mono_lookup_dynamic_token (image, type_token, context));
 
        if ((type_token & 0xff000000) != MONO_TOKEN_TYPE_SPEC) {
                MonoClass *klass = mono_class_get_checked (image, type_token, error);
@@ -7583,7 +7590,7 @@ mono_image_init_name_cache (MonoImage *image)
                nspace = mono_metadata_string_heap (image, cols [MONO_TYPEDEF_NAMESPACE]);
 
                nspace_index = cols [MONO_TYPEDEF_NAMESPACE];
-               nspace_table = g_hash_table_lookup (name_cache2, GUINT_TO_POINTER (nspace_index));
+               nspace_table = (GHashTable *)g_hash_table_lookup (name_cache2, GUINT_TO_POINTER (nspace_index));
                if (!nspace_table) {
                        nspace_table = g_hash_table_new (g_str_hash, g_str_equal);
                        g_hash_table_insert (the_name_cache, (char*)nspace, nspace_table);
@@ -7611,7 +7618,7 @@ mono_image_init_name_cache (MonoImage *image)
                        nspace = mono_metadata_string_heap (image, cols [MONO_EXP_TYPE_NAMESPACE]);
 
                        nspace_index = cols [MONO_EXP_TYPE_NAMESPACE];
-                       nspace_table = g_hash_table_lookup (name_cache2, GUINT_TO_POINTER (nspace_index));
+                       nspace_table = (GHashTable *)g_hash_table_lookup (name_cache2, GUINT_TO_POINTER (nspace_index));
                        if (!nspace_table) {
                                nspace_table = g_hash_table_new (g_str_hash, g_str_equal);
                                g_hash_table_insert (the_name_cache, (char*)nspace, nspace_table);
@@ -7647,7 +7654,7 @@ mono_image_add_to_name_cache (MonoImage *image, const char *nspace,
        mono_image_lock (image);
 
        name_cache = image->name_cache;
-       if (!(nspace_table = g_hash_table_lookup (name_cache, nspace))) {
+       if (!(nspace_table = (GHashTable *)g_hash_table_lookup (name_cache, nspace))) {
                nspace_table = g_hash_table_new (g_str_hash, g_str_equal);
                g_hash_table_insert (name_cache, (char *)nspace, (char *)nspace_table);
        }
@@ -7855,7 +7862,7 @@ mono_class_from_name_checked_aux (MonoImage *image, const char* name_space, cons
        mono_image_init_name_cache (image);
        mono_image_lock (image);
 
-       nspace_table = g_hash_table_lookup (image->name_cache, name_space);
+       nspace_table = (GHashTable *)g_hash_table_lookup (image->name_cache, name_space);
 
        if (nspace_table)
                token = GPOINTER_TO_UINT (g_hash_table_lookup (nspace_table, name));
@@ -8388,7 +8395,7 @@ mono_class_implement_interface_slow (MonoClass *target, MonoClass *candidate)
 
                /*A TypeBuilder can have more interfaces on tb->interfaces than on candidate->interfaces*/
                if (image_is_dynamic (candidate->image) && !candidate->wastypebuilder) {
-                       MonoReflectionTypeBuilder *tb = mono_class_get_ref_info (candidate);
+                       MonoReflectionTypeBuilder *tb = (MonoReflectionTypeBuilder *)mono_class_get_ref_info (candidate);
                        int j;
                        if (tb && tb->interfaces) {
                                for (j = mono_array_length (tb->interfaces) - 1; j >= 0; --j) {
@@ -9049,16 +9056,18 @@ mono_class_get_fields (MonoClass* klass, gpointer *iter)
                        return NULL;
                /* start from the first */
                if (klass->field.count) {
-                       return *iter = &klass->fields [0];
+                       *iter = &klass->fields [0];
+                       return &klass->fields [0];
                } else {
                        /* no fields */
                        return NULL;
                }
        }
-       field = *iter;
+       field = (MonoClassField *)*iter;
        field++;
        if (field < &klass->fields [klass->field.count]) {
-               return *iter = field;
+               *iter = field;
+               return field;
        }
        return NULL;
 }
@@ -9099,7 +9108,7 @@ mono_class_get_methods (MonoClass* klass, gpointer *iter)
                        return NULL;
                }
        }
-       method = *iter;
+       method = (MonoMethod **)*iter;
        method++;
        if (method < &klass->methods [klass->method.count]) {
                *iter = method;
@@ -9133,7 +9142,7 @@ mono_class_get_virtual_methods (MonoClass* klass, gpointer *iter)
                        /* start from the first */
                        method = &klass->methods [0];
                } else {
-                       method = *iter;
+                       method = (MonoMethod **)*iter;
                        method++;
                }
                while (method < &klass->methods [klass->method.count]) {
@@ -9204,16 +9213,18 @@ mono_class_get_properties (MonoClass* klass, gpointer *iter)
                mono_class_setup_properties (klass);
                /* start from the first */
                if (klass->ext->property.count) {
-                       return *iter = &klass->ext->properties [0];
+                       *iter = &klass->ext->properties [0];
+                       return (MonoProperty *)*iter;
                } else {
                        /* no fields */
                        return NULL;
                }
        }
-       property = *iter;
+       property = (MonoProperty *)*iter;
        property++;
        if (property < &klass->ext->properties [klass->ext->property.count]) {
-               return *iter = property;
+               *iter = property;
+               return (MonoProperty *)*iter;
        }
        return NULL;
 }
@@ -9240,16 +9251,18 @@ mono_class_get_events (MonoClass* klass, gpointer *iter)
                mono_class_setup_events (klass);
                /* start from the first */
                if (klass->ext->event.count) {
-                       return *iter = &klass->ext->events [0];
+                       *iter = &klass->ext->events [0];
+                       return (MonoEvent *)*iter;
                } else {
                        /* no fields */
                        return NULL;
                }
        }
-       event = *iter;
+       event = (MonoEvent *)*iter;
        event++;
        if (event < &klass->ext->events [klass->ext->event.count]) {
-               return *iter = event;
+               *iter = event;
+               return (MonoEvent *)*iter;
        }
        return NULL;
 }
@@ -9292,7 +9305,7 @@ mono_class_get_interfaces (MonoClass* klass, gpointer *iter)
                        return NULL;
                }
        }
-       iface = *iter;
+       iface = (MonoClass **)*iter;
        iface++;
        if (iface < &klass->interfaces [klass->interface_count]) {
                *iter = iface;
@@ -9380,17 +9393,17 @@ mono_class_get_nested_types (MonoClass* klass, gpointer *iter)
                /* start from the first */
                if (klass->ext && klass->ext->nested_classes) {
                        *iter = klass->ext->nested_classes;
-                       return klass->ext->nested_classes->data;
+                       return (MonoClass *)klass->ext->nested_classes->data;
                } else {
                        /* no nested types */
                        return NULL;
                }
        }
-       item = *iter;
+       item = (GList *)*iter;
        item = item->next;
        if (item) {
                *iter = item;
-               return item->data;
+               return (MonoClass *)item->data;
        }
        return NULL;
 }
@@ -9522,7 +9535,7 @@ mono_field_get_rva (MonoClassField *field)
        if (!klass->ext || !klass->ext->field_def_values) {
                mono_class_alloc_ext (klass);
 
-               field_def_values = mono_class_alloc0 (klass, sizeof (MonoFieldDefaultValue) * klass->field.count);
+               field_def_values = (MonoFieldDefaultValue *)mono_class_alloc0 (klass, sizeof (MonoFieldDefaultValue) * klass->field.count);
 
                mono_image_lock (klass->image);
                if (!klass->ext->field_def_values)
@@ -9915,19 +9928,19 @@ mono_class_get_exception_for_failure (MonoClass *klass)
                return ex;
        }
        case MONO_EXCEPTION_MISSING_METHOD: {
-               char *class_name = exception_data;
+               char *class_name = (char *)exception_data;
                char *assembly_name = class_name + strlen (class_name) + 1;
 
                return mono_get_exception_missing_method (class_name, assembly_name);
        }
        case MONO_EXCEPTION_MISSING_FIELD: {
-               char *class_name = exception_data;
+               char *class_name = (char *)exception_data;
                char *member_name = class_name + strlen (class_name) + 1;
 
                return mono_get_exception_missing_field (class_name, member_name);
        }
        case MONO_EXCEPTION_FILE_NOT_FOUND: {
-               char *msg_format = exception_data;
+               char *msg_format = (char *)exception_data;
                char *assembly_name = msg_format + strlen (msg_format) + 1;
                char *msg = g_strdup_printf (msg_format, assembly_name);
                MonoException *ex;
@@ -9939,7 +9952,7 @@ mono_class_get_exception_for_failure (MonoClass *klass)
                return ex;
        }
        case MONO_EXCEPTION_BAD_IMAGE: {
-               return mono_get_exception_bad_image_format (exception_data);
+               return mono_get_exception_bad_image_format ((const char *)exception_data);
        }
        default: {
                MonoLoaderError *error;
@@ -10044,16 +10057,16 @@ can_access_internals (MonoAssembly *accessing, MonoAssembly* accessed)
 
        mono_assembly_load_friends (accessed);
        for (tmp = accessed->friend_assembly_names; tmp; tmp = tmp->next) {
-               MonoAssemblyName *friend = tmp->data;
+               MonoAssemblyName *friend_ = (MonoAssemblyName *)tmp->data;
                /* Be conservative with checks */
-               if (!friend->name)
+               if (!friend_->name)
                        continue;
-               if (strcmp (accessing->aname.name, friend->name))
+               if (strcmp (accessing->aname.name, friend_->name))
                        continue;
-               if (friend->public_key_token [0]) {
+               if (friend_->public_key_token [0]) {
                        if (!accessing->aname.public_key_token [0])
                                continue;
-                       if (!mono_public_tokens_are_equal (friend->public_key_token, accessing->aname.public_key_token))
+                       if (!mono_public_tokens_are_equal (friend_->public_key_token, accessing->aname.public_key_token))
                                continue;
                }
                return TRUE;
@@ -10485,7 +10498,7 @@ mono_class_alloc_ext (MonoClass *klass)
        if (klass->ext)
                return;
 
-       ext = mono_class_alloc0 (klass, sizeof (MonoClassExt));
+       ext = (MonoClassExt *)mono_class_alloc0 (klass, sizeof (MonoClassExt));
        mono_image_lock (klass->image);
        mono_memory_barrier ();
        if (!klass->ext)
@@ -10517,7 +10530,7 @@ mono_class_setup_interfaces (MonoClass *klass, MonoError *error)
 
                /* generic IList, ICollection, IEnumerable */
                interface_count = mono_defaults.generic_ireadonlylist_class ? 2 : 1;
-               interfaces = mono_image_alloc0 (klass->image, sizeof (MonoClass*) * interface_count);
+               interfaces = (MonoClass **)mono_image_alloc0 (klass->image, sizeof (MonoClass*) * interface_count);
 
                args [0] = &klass->element_class->byval_arg;
                interfaces [0] = mono_class_bind_generic_parameters (
@@ -10686,16 +10699,18 @@ mono_class_get_fields_lazy (MonoClass* klass, gpointer *iter)
                        return NULL;
                /* start from the first */
                if (klass->field.count) {
-                       return *iter = &klass->fields [0];
+                       *iter = &klass->fields [0];
+                       return (MonoClassField *)*iter;
                } else {
                        /* no fields */
                        return NULL;
                }
        }
-       field = *iter;
+       field = (MonoClassField *)*iter;
        field++;
        if (field < &klass->fields [klass->field.count]) {
-               return *iter = field;
+               *iter = field;
+               return (MonoClassField *)*iter;
        }
        return NULL;
 }
index 277ec6dcddd3c5ea6924ca5ddc73e2a51ebbd890..9c4c8e60d371401b4c8b96845db4122bd7ca7d3c 100644 (file)
@@ -322,7 +322,7 @@ cominterop_get_method_interface (MonoMethod* method)
                        for (i = 0; i < ifaces->len; ++i) {
                                int j, offset;
                                gboolean found = FALSE;
-                               ic = g_ptr_array_index (ifaces, i);
+                               ic = (MonoClass *)g_ptr_array_index (ifaces, i);
                                offset = mono_class_interface_offset (method->klass, ic);
                                for (j = 0; j < ic->method.count; ++j) {
                                        if (method->klass->vtable [j + offset] == method) {
@@ -443,7 +443,7 @@ cominterop_com_visible (MonoClass* klass)
                int i;
                for (i = 0; i < ifaces->len; ++i) {
                        MonoClass *ic = NULL;
-                       ic = g_ptr_array_index (ifaces, i);
+                       ic = (MonoClass *)g_ptr_array_index (ifaces, i);
                        if (MONO_CLASS_IS_IMPORT (ic))
                                visible = TRUE;
 
@@ -1640,7 +1640,8 @@ ves_icall_System_ComObject_ReleaseInterfaces (MonoComObject* obj)
                g_hash_table_foreach_remove (obj->itf_hash, cominterop_rcw_interface_finalizer, NULL);
                g_hash_table_destroy (obj->itf_hash);
                ves_icall_System_Runtime_InteropServices_Marshal_ReleaseInternal (obj->iunknown);
-               obj->itf_hash = obj->iunknown = NULL;
+               obj->iunknown = NULL;
+               obj->itf_hash = NULL;
                mono_cominterop_unlock ();
        }
 }
@@ -1661,7 +1662,8 @@ cominterop_rcw_finalizer (gpointer key, gpointer value, gpointer user_data)
                        }
                        if (proxy->com_object->iunknown)
                                ves_icall_System_Runtime_InteropServices_Marshal_ReleaseInternal (proxy->com_object->iunknown);
-                       proxy->com_object->itf_hash = proxy->com_object->iunknown = NULL;
+                       proxy->com_object->iunknown = NULL;
+                       proxy->com_object->itf_hash = NULL;
                }
                
                mono_gchandle_free (gchandle);
@@ -1764,7 +1766,7 @@ cominterop_get_ccw_object (MonoCCWInterface* ccw_entry, gboolean verify)
                return NULL;
 
        if (verify) {
-               ccw = g_hash_table_lookup (ccw_interface_hash, ccw_entry);
+               ccw = (MonoCCW *)g_hash_table_lookup (ccw_interface_hash, ccw_entry);
        }
        else {
                ccw = ccw_entry->ccw;
@@ -1838,12 +1840,12 @@ cominterop_get_ccw (MonoObject* object, MonoClass* itf)
        if (!ccw_interface_hash)
                ccw_interface_hash = g_hash_table_new (mono_aligned_addr_hash, NULL);
 
-       ccw_list = g_hash_table_lookup (ccw_hash, GINT_TO_POINTER (mono_object_hash (object)));
+       ccw_list = (GList *)g_hash_table_lookup (ccw_hash, GINT_TO_POINTER (mono_object_hash (object)));
        mono_cominterop_unlock ();
 
        ccw_list_item = ccw_list;
        while (ccw_list_item) {
-               MonoCCW* ccw_iter = ccw_list_item->data;
+               MonoCCW* ccw_iter = (MonoCCW *)ccw_list_item->data;
                if (mono_gchandle_get_target (ccw_iter->gc_handle) == object) {
                        ccw = ccw_iter;
                        break;
@@ -1913,11 +1915,11 @@ cominterop_get_ccw (MonoObject* object, MonoClass* itf)
                iface = NULL;
        }
 
-       ccw_entry = g_hash_table_lookup (ccw->vtable_hash, itf);
+       ccw_entry = (MonoCCWInterface *)g_hash_table_lookup (ccw->vtable_hash, itf);
 
        if (!ccw_entry) {
                int vtable_index = method_count-1+start_slot;
-               vtable = mono_image_alloc0 (klass->image, sizeof (gpointer)*(method_count+start_slot));
+               vtable = (void **)mono_image_alloc0 (klass->image, sizeof (gpointer)*(method_count+start_slot));
                memcpy (vtable, iunknown, sizeof (iunknown));
                if (start_slot == 7)
                        memcpy (vtable+3, idispatch, sizeof (idispatch));
@@ -2055,7 +2057,7 @@ mono_marshal_free_ccw (MonoObject* object)
 
        /* need to cache orig list address to remove from hash_table if empty */
        mono_cominterop_lock ();
-       ccw_list = ccw_list_orig = g_hash_table_lookup (ccw_hash, GINT_TO_POINTER (mono_object_hash (object)));
+       ccw_list = ccw_list_orig = (GList *)g_hash_table_lookup (ccw_hash, GINT_TO_POINTER (mono_object_hash (object)));
        mono_cominterop_unlock ();
 
        if (!ccw_list)
@@ -2063,7 +2065,7 @@ mono_marshal_free_ccw (MonoObject* object)
 
        ccw_list_item = ccw_list;
        while (ccw_list_item) {
-               MonoCCW* ccw_iter = ccw_list_item->data;
+               MonoCCW* ccw_iter = (MonoCCW *)ccw_list_item->data;
                MonoObject* handle_target = mono_gchandle_get_target (ccw_iter->gc_handle);
 
                /* Looks like the GC NULLs the weakref handle target before running the
@@ -2072,7 +2074,7 @@ mono_marshal_free_ccw (MonoObject* object)
                */
                gboolean destroy_ccw = !handle_target || handle_target == object;
                if (!handle_target) {
-                       MonoCCWInterface* ccw_entry = g_hash_table_lookup (ccw_iter->vtable_hash, mono_class_get_iunknown_class ());
+                       MonoCCWInterface* ccw_entry = (MonoCCWInterface *)g_hash_table_lookup (ccw_iter->vtable_hash, mono_class_get_iunknown_class ());
                        if (!(ccw_entry && object == cominterop_get_ccw_object (ccw_entry, FALSE)))
                                destroy_ccw = FALSE;
                }
@@ -2350,7 +2352,7 @@ cominterop_ccw_queryinterface (MonoCCWInterface* ccwe, guint8* riid, gpointer* p
        if (cominterop_class_guid_equal (riid, mono_class_get_iunknown_class ())) {
                *ppv = cominterop_get_ccw (object, mono_class_get_iunknown_class ());
                /* remember to addref on QI */
-               cominterop_ccw_addref (*ppv);
+               cominterop_ccw_addref ((MonoCCWInterface *)*ppv);
                return MONO_S_OK;
        }
 
@@ -2361,7 +2363,7 @@ cominterop_ccw_queryinterface (MonoCCWInterface* ccwe, guint8* riid, gpointer* p
                
                *ppv = cominterop_get_ccw (object, mono_class_get_idispatch_class ());
                /* remember to addref on QI */
-               cominterop_ccw_addref (*ppv);
+               cominterop_ccw_addref ((MonoCCWInterface *)*ppv);
                return MONO_S_OK;
        }
 
@@ -2378,7 +2380,7 @@ cominterop_ccw_queryinterface (MonoCCWInterface* ccwe, guint8* riid, gpointer* p
                if (ifaces) {
                        for (i = 0; i < ifaces->len; ++i) {
                                MonoClass *ic = NULL;
-                               ic = g_ptr_array_index (ifaces, i);
+                               ic = (MonoClass *)g_ptr_array_index (ifaces, i);
                                if (cominterop_class_guid_equal (riid, ic)) {
                                        itf = ic;
                                        break;
@@ -2395,7 +2397,7 @@ cominterop_ccw_queryinterface (MonoCCWInterface* ccwe, guint8* riid, gpointer* p
        if (itf) {
                *ppv = cominterop_get_ccw (object, itf);
                /* remember to addref on QI */
-               cominterop_ccw_addref (*ppv);
+               cominterop_ccw_addref ((MonoCCWInterface *)*ppv);
                return MONO_S_OK;
        }
 
@@ -2619,7 +2621,7 @@ mono_string_to_bstr (MonoString *string_obj)
        if (com_provider == MONO_COM_DEFAULT) {
                int slen = mono_string_length (string_obj);
                /* allocate len + 1 utf16 characters plus 4 byte integer for length*/
-               char *ret = g_malloc ((slen + 1) * sizeof(gunichar2) + sizeof(guint32));
+               char *ret = (char *)g_malloc ((slen + 1) * sizeof(gunichar2) + sizeof(guint32));
                if (ret == NULL)
                        return NULL;
                memcpy (ret + sizeof(guint32), mono_string_chars (string_obj), slen * sizeof(gunichar2));
@@ -2653,13 +2655,13 @@ mono_string_from_bstr (gpointer bstr)
        return mono_string_new_utf16 (mono_domain_get (), bstr, SysStringLen (bstr));
 #else
        if (com_provider == MONO_COM_DEFAULT) {
-               return mono_string_new_utf16 (mono_domain_get (), bstr, *((guint32 *)bstr - 1) / sizeof(gunichar2));
+               return mono_string_new_utf16 (mono_domain_get (), (const mono_unichar2 *)bstr, *((guint32 *)bstr - 1) / sizeof(gunichar2));
        } else if (com_provider == MONO_COM_MS && init_com_provider_ms ()) {
                MonoString* str = NULL;
                glong written = 0;
                gunichar2* utf16 = NULL;
 
-               utf16 = g_ucs4_to_utf16 (bstr, sys_string_len_ms (bstr), NULL, &written, NULL);
+               utf16 = g_ucs4_to_utf16 ((const gunichar *)bstr, sys_string_len_ms (bstr), NULL, &written, NULL);
                str = mono_string_new_utf16 (mono_domain_get (), utf16, written);
                g_free (utf16);
                return str;
@@ -2681,7 +2683,7 @@ mono_free_bstr (gpointer bstr)
        if (com_provider == MONO_COM_DEFAULT) {
                g_free (((char *)bstr) - 4);
        } else if (com_provider == MONO_COM_MS && init_com_provider_ms ()) {
-               sys_free_string_ms (bstr);
+               sys_free_string_ms ((gunichar *)bstr);
        } else {
                g_assert_not_reached ();
        }
@@ -3017,8 +3019,8 @@ mono_marshal_safearray_begin (gpointer safearray, MonoArray **result, gpointer *
 
                        *indices = g_malloc (dim * sizeof(int));
 
-                       sizes = alloca (dim * sizeof(uintptr_t));
-                       bounds = alloca (dim * sizeof(intptr_t));
+                       sizes = (uintptr_t *)alloca (dim * sizeof(uintptr_t));
+                       bounds = (intptr_t *)alloca (dim * sizeof(intptr_t));
 
                        for (i=0; i<dim; ++i) {
                                glong lbound, ubound;
@@ -3049,7 +3051,7 @@ mono_marshal_safearray_begin (gpointer safearray, MonoArray **result, gpointer *
                                aklass = mono_bounded_array_class_get (mono_defaults.object_class, dim, bounded);
                                *result = mono_array_new_full (mono_domain_get (), aklass, sizes, bounds);
                        } else {
-                               *result = parameter;
+                               *result = (MonoArray *)parameter;
                        }
                }
        }
@@ -3067,7 +3069,7 @@ gpointer mono_marshal_safearray_get_value (gpointer safearray, gpointer indices)
        }
 #else
        if (com_provider == MONO_COM_MS && init_com_provider_ms ()) {
-               int hr = safe_array_ptr_of_index_ms (safearray, indices, &result);
+               int hr = safe_array_ptr_of_index_ms (safearray, (glong *)indices, &result);
                if (hr < 0) {
                        cominterop_raise_hr_exception (hr);
                }
@@ -3151,7 +3153,7 @@ mono_marshal_safearray_create (MonoArray *input, gpointer *newsafearray, gpointe
        dim = ((MonoObject *)input)->vtable->klass->rank;
 
        *indices = g_malloc (dim * sizeof (int));
-       bounds = alloca (dim * sizeof (SAFEARRAYBOUND));
+       bounds = (SAFEARRAYBOUND *)alloca (dim * sizeof (SAFEARRAYBOUND));
        (*(int*)empty) = (max_array_length == 0);
 
        if (dim > 1) {
@@ -3183,7 +3185,7 @@ void mono_marshal_safearray_set_value (gpointer safearray, gpointer indices, gpo
                cominterop_raise_hr_exception (hr);
 #else
        if (com_provider == MONO_COM_MS && init_com_provider_ms ()) {
-               int hr = safe_array_put_element_ms (safearray, indices, value);
+               int hr = safe_array_put_element_ms (safearray, (glong *)indices, (void **)value);
                if (hr < 0) {
                        cominterop_raise_hr_exception (hr);
                }
index 9629857be704a59656a345ab33761c1a7f95c676..0ac3b3981f1a6dc5d0bc3f83c317c4c031321635 100644 (file)
@@ -344,19 +344,19 @@ console_set_signal_handlers ()
        memset (&sigwinch, 0, sizeof (struct sigaction));
        
        // Continuing
-       sigcont.sa_handler = (void *) sigcont_handler;
+       sigcont.sa_handler = (void (*)(int)) sigcont_handler;
        sigcont.sa_flags = 0;
        sigemptyset (&sigcont.sa_mask);
        sigaction (SIGCONT, &sigcont, &save_sigcont);
        
        // Interrupt handler
-       sigint.sa_handler = (void *) sigint_handler;
+       sigint.sa_handler = (void (*)(int)) sigint_handler;
        sigint.sa_flags = 0;
        sigemptyset (&sigint.sa_mask);
        sigaction (SIGINT, &sigint, &save_sigint);
 
        // Window size changed
-       sigwinch.sa_handler = (void *) sigwinch_handler;
+       sigwinch.sa_handler = (void (*)(int)) sigwinch_handler;
        sigwinch.sa_flags = 0;
        sigemptyset (&sigwinch.sa_mask);
        sigaction (SIGWINCH, &sigwinch, &save_sigwinch);
index f55443001b41a5fb7ea4fb50028ba95a6e254245..f89de87218e19197eb676c6be2b5ce54cecc2e6d 100644 (file)
@@ -1031,7 +1031,7 @@ mono_class_describe_statics (MonoClass* klass)
 
        if (!vtable)
                return;
-       if (!(addr = mono_vtable_get_static_field_data (vtable)))
+       if (!(addr = (const char *)mono_vtable_get_static_field_data (vtable)))
                return;
 
        for (p = klass; p != NULL; p = p->parent) {
index 014586cb1e4abed891f18431d590455073c86b68..46cf3468e5db286e541bc687d15daa36a15249d2 100644 (file)
@@ -88,7 +88,7 @@ get_pe_debug_guid (MonoImage *image, guint8 *out_guid, gint32 *out_age, gint32 *
 static void
 doc_free (gpointer key)
 {
-       MonoDebugSourceInfo *info = key;
+       MonoDebugSourceInfo *info = (MonoDebugSourceInfo *)key;
 
        g_free (info->source_file);
        g_free (info);
@@ -176,7 +176,7 @@ mono_ppdb_lookup_method (MonoDebugHandle *handle, MonoMethod *method)
 
        mono_debugger_lock ();
 
-       minfo = g_hash_table_lookup (ppdb->method_hash, method);
+       minfo = (MonoDebugMethodInfo *)g_hash_table_lookup (ppdb->method_hash, method);
        if (minfo) {
                mono_debugger_unlock ();
                return minfo;
@@ -208,7 +208,7 @@ get_docinfo (MonoPPDBFile *ppdb, MonoImage *image, int docidx)
        MonoDebugSourceInfo *res, *cached;
 
        mono_debugger_lock ();
-       cached = g_hash_table_lookup (ppdb->doc_hash, GUINT_TO_POINTER (docidx));
+       cached = (MonoDebugSourceInfo *)g_hash_table_lookup (ppdb->doc_hash, GUINT_TO_POINTER (docidx));
        mono_debugger_unlock ();
        if (cached)
                return cached;
@@ -246,7 +246,7 @@ get_docinfo (MonoPPDBFile *ppdb, MonoImage *image, int docidx)
        res->hash = (guint8*)mono_metadata_blob_heap (image, cols [MONO_DOCUMENT_HASH]);
 
        mono_debugger_lock ();
-       cached = g_hash_table_lookup (ppdb->doc_hash, GUINT_TO_POINTER (docidx));
+       cached = (MonoDebugSourceInfo *)g_hash_table_lookup (ppdb->doc_hash, GUINT_TO_POINTER (docidx));
        if (!cached) {
                g_hash_table_insert (ppdb->doc_hash, GUINT_TO_POINTER (docidx), res);
        } else {
index 39c348cd7be38615dd5a94bcbdfa7c331aa227d1..8df4c0f902606edc04b31b5b97cb1350b851482d 100644 (file)
@@ -147,7 +147,7 @@ mono_debug_open_mono_symbols (MonoDebugHandle *handle, const uint8_t *raw_conten
        if (raw_contents != NULL) {
                unsigned char *p;
                symfile->raw_contents_size = size;
-               symfile->raw_contents = p = g_malloc (size);
+               symfile->raw_contents = p = (unsigned char *)g_malloc (size);
                memcpy (p, raw_contents, size);
                symfile->filename = g_strdup_printf ("LoadedFromMemory");
                symfile->was_loaded_from_memory = TRUE;
@@ -163,7 +163,7 @@ mono_debug_open_mono_symbols (MonoDebugHandle *handle, const uint8_t *raw_conten
                                        g_warning ("stat of %s failed: %s",
                                                   symfile->filename,  g_strerror (errno));
                        } else {
-                               symfile->raw_contents = mono_file_map (symfile->raw_contents_size, MONO_MMAP_READ|MONO_MMAP_PRIVATE, mono_file_map_fd (f), 0, &symfile->raw_contents_handle);
+                               symfile->raw_contents = (const unsigned char *)mono_file_map (symfile->raw_contents_size, MONO_MMAP_READ|MONO_MMAP_PRIVATE, mono_file_map_fd (f), 0, &symfile->raw_contents_handle);
                        }
 
                        mono_file_map_close (f);
@@ -444,7 +444,7 @@ get_source_info (MonoSymbolFile *symfile, int index)
 {
        MonoDebugSourceInfo *info;
 
-       info = g_hash_table_lookup (symfile->source_hash, GUINT_TO_POINTER (index));
+       info = (MonoDebugSourceInfo *)g_hash_table_lookup (symfile->source_hash, GUINT_TO_POINTER (index));
        if (!info) {
                int offset = read32(&(symfile->offset_table->_source_table_offset)) +
                        (index - 1) * sizeof (MonoSymbolFileSourceEntry);
@@ -454,10 +454,10 @@ get_source_info (MonoSymbolFile *symfile, int index)
 
                info = g_new0 (MonoDebugSourceInfo, 1);
                info->source_file = read_string (ptr, &ptr);
-               info->guid = g_malloc0 (16);
+               info->guid = (guint8 *)g_malloc0 (16);
                memcpy (info->guid, ptr, 16);
                ptr += 16;
-               info->hash = g_malloc0 (16);
+               info->hash = (guint8 *)g_malloc0 (16);
                memcpy (info->hash, ptr, 16);
                ptr += 16;
                g_hash_table_insert (symfile->source_hash, GUINT_TO_POINTER (index), info);
@@ -478,7 +478,7 @@ method_get_lnt_flags (MonoDebugMethodInfo *minfo)
        guint32 flags;
 
        if ((symfile = minfo->handle->symfile) == NULL)
-               return FALSE;
+               return (LineNumberTableFlags)0;
 
        ptr = symfile->raw_contents + minfo->data_offset;
 
@@ -497,7 +497,7 @@ method_get_lnt_flags (MonoDebugMethodInfo *minfo)
        read_leb128 (ptr, &ptr);
 
        flags = read_leb128 (ptr, &ptr);
-       return flags;
+       return (LineNumberTableFlags)flags;
 }
 
 /*
@@ -635,7 +635,7 @@ mono_debug_symfile_get_seq_points (MonoDebugMethodInfo *minfo, char **source_fil
 
                *source_file_list = g_ptr_array_new ();
                if (source_files)
-                       *source_files = g_malloc (il_offset_array->len * sizeof (int));
+                       *source_files = (int *)g_malloc (il_offset_array->len * sizeof (int));
 
                for (i = 0; i < il_offset_array->len; ++i) {
                        file = GPOINTER_TO_UINT (g_ptr_array_index (source_file_array, i));
@@ -744,7 +744,7 @@ mono_debug_symfile_lookup_method (MonoDebugHandle *handle, MonoMethod *method)
 
        mono_debugger_lock ();
 
-       minfo = g_hash_table_lookup (symfile->method_hash, method);
+       minfo = (MonoDebugMethodInfo *)g_hash_table_lookup (symfile->method_hash, method);
        if (minfo) {
                mono_debugger_unlock ();
                return minfo;
@@ -753,7 +753,7 @@ mono_debug_symfile_lookup_method (MonoDebugHandle *handle, MonoMethod *method)
        first_ie = (MonoSymbolFileMethodEntry *)
                (symfile->raw_contents + read32(&(symfile->offset_table->_method_table_offset)));
 
-       ie = mono_binary_search (GUINT_TO_POINTER (mono_method_get_token (method)), first_ie,
+       ie = (MonoSymbolFileMethodEntry *)mono_binary_search (GUINT_TO_POINTER (mono_method_get_token (method)), first_ie,
                                   read32(&(symfile->offset_table->_method_count)),
                                   sizeof (MonoSymbolFileMethodEntry), compare_method);
 
@@ -823,7 +823,7 @@ mono_debug_symfile_lookup_locals (MonoDebugMethodInfo *minfo)
        for (i = 0; i < num_locals; ++i) {
                res->locals [i].index = read_leb128 (p, &p);
                len = read_leb128 (p, &p);
-               res->locals [i].name = g_malloc (len + 1);
+               res->locals [i].name = (char *)g_malloc (len + 1);
                memcpy (res->locals [i].name, p, len);
                res->locals [i].name [len] = '\0';
                p += len;
index 8d1d980921698b780089474ec2b4025847a7bcc3..a485b71c969cd6ba252371e03a036005e53469dc 100644 (file)
@@ -177,7 +177,7 @@ lock_free_mempool_free (LockFreeMempool *mp)
 
        chunk = mp->chunks;
        while (chunk) {
-               next = chunk->prev;
+               next = (LockFreeMempoolChunk *)chunk->prev;
                mono_vfree (chunk, mono_pagesize ());
                chunk = next;
        }
@@ -196,9 +196,9 @@ lock_free_mempool_chunk_new (LockFreeMempool *mp, int len)
        size = mono_pagesize ();
        while (size - sizeof (LockFreeMempoolChunk) < len)
                size += mono_pagesize ();
-       chunk = mono_valloc (0, size, MONO_MMAP_READ|MONO_MMAP_WRITE);
+       chunk = (LockFreeMempoolChunk *)mono_valloc (0, size, MONO_MMAP_READ|MONO_MMAP_WRITE);
        g_assert (chunk);
-       chunk->mem = ALIGN_PTR_TO ((char*)chunk + sizeof (LockFreeMempoolChunk), 16);
+       chunk->mem = (guint8 *)ALIGN_PTR_TO ((char*)chunk + sizeof (LockFreeMempoolChunk), 16);
        chunk->size = ((char*)chunk + size) - (char*)chunk->mem;
        chunk->pos = 0;
 
@@ -341,7 +341,7 @@ domain_id_alloc (MonoDomain *domain)
        int id = -1, i;
        if (!appdomains_list) {
                appdomain_list_size = 2;
-               appdomains_list = mono_gc_alloc_fixed (appdomain_list_size * sizeof (void*), MONO_GC_DESCRIPTOR_NULL, MONO_ROOT_SOURCE_DOMAIN, "domains list");
+               appdomains_list = (MonoDomain **)mono_gc_alloc_fixed (appdomain_list_size * sizeof (void*), MONO_GC_DESCRIPTOR_NULL, MONO_ROOT_SOURCE_DOMAIN, "domains list");
        }
        for (i = appdomain_next; i < appdomain_list_size; ++i) {
                if (!appdomains_list [i]) {
@@ -363,7 +363,7 @@ domain_id_alloc (MonoDomain *domain)
                if (new_size >= (1 << 16))
                        g_assert_not_reached ();
                id = appdomain_list_size;
-               new_list = mono_gc_alloc_fixed (new_size * sizeof (void*), MONO_GC_DESCRIPTOR_NULL, MONO_ROOT_SOURCE_DOMAIN, "domains list");
+               new_list = (MonoDomain **)mono_gc_alloc_fixed (new_size * sizeof (void*), MONO_GC_DESCRIPTOR_NULL, MONO_ROOT_SOURCE_DOMAIN, "domains list");
                memcpy (new_list, appdomains_list, appdomain_list_size * sizeof (void*));
                mono_gc_free_fixed (appdomains_list);
                appdomains_list = new_list;
@@ -407,9 +407,9 @@ mono_domain_create (void)
         * running the corlib test suite.
         * To solve this, we pass a NULL descriptor, and don't register roots.
         */
-       domain = mono_gc_alloc_fixed (sizeof (MonoDomain), NULL, MONO_ROOT_SOURCE_DOMAIN, "domain object");
+       domain = (MonoDomain *)mono_gc_alloc_fixed (sizeof (MonoDomain), NULL, MONO_ROOT_SOURCE_DOMAIN, "domain object");
 #else
-       domain = mono_gc_alloc_fixed (sizeof (MonoDomain), domain_gc_desc, MONO_ROOT_SOURCE_DOMAIN, "domain object");
+       domain = (MonoDomain *)mono_gc_alloc_fixed (sizeof (MonoDomain), domain_gc_desc, MONO_ROOT_SOURCE_DOMAIN, "domain object");
        mono_gc_register_root ((char*)&(domain->MONO_DOMAIN_FIRST_GC_TRACKED), G_STRUCT_OFFSET (MonoDomain, MONO_DOMAIN_LAST_GC_TRACKED) - G_STRUCT_OFFSET (MonoDomain, MONO_DOMAIN_FIRST_GC_TRACKED), MONO_GC_DESCRIPTOR_NULL, MONO_ROOT_SOURCE_DOMAIN, "misc domain fields");
 #endif
        domain->shadow_serial = shadow_serial;
@@ -1035,7 +1035,7 @@ mono_domain_foreach (MonoDomainFunc func, gpointer user_data)
         */
        mono_appdomains_lock ();
        size = appdomain_list_size;
-       copy = mono_gc_alloc_fixed (appdomain_list_size * sizeof (void*), MONO_GC_DESCRIPTOR_NULL, MONO_ROOT_SOURCE_DOMAIN, "temporary domains list");
+       copy = (MonoDomain **)mono_gc_alloc_fixed (appdomain_list_size * sizeof (void*), MONO_GC_DESCRIPTOR_NULL, MONO_ROOT_SOURCE_DOMAIN, "temporary domains list");
        memcpy (copy, appdomains_list, appdomain_list_size * sizeof (void*));
        mono_appdomains_unlock ();
 
@@ -1063,7 +1063,7 @@ mono_domain_assembly_open (MonoDomain *domain, const char *name)
 
        mono_domain_assemblies_lock (domain);
        for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
-               ass = tmp->data;
+               ass = (MonoAssembly *)tmp->data;
                if (strcmp (name, ass->aname.name) == 0) {
                        mono_domain_assemblies_unlock (domain);
                        return ass;
@@ -1087,7 +1087,7 @@ mono_domain_assembly_open (MonoDomain *domain, const char *name)
 static void
 unregister_vtable_reflection_type (MonoVTable *vtable)
 {
-       MonoObject *type = vtable->type;
+       MonoObject *type = (MonoObject *)vtable->type;
 
        if (type->vtable->klass != mono_defaults.monotype_class)
                MONO_GC_UNREGISTER_ROOT_IF_MOVING (vtable->type);
@@ -1142,7 +1142,7 @@ mono_domain_free (MonoDomain *domain, gboolean force)
        if (domain->class_vtable_array) {
                int i;
                for (i = 0; i < domain->class_vtable_array->len; ++i)
-                       unregister_vtable_reflection_type (g_ptr_array_index (domain->class_vtable_array, i));
+                       unregister_vtable_reflection_type ((MonoVTable *)g_ptr_array_index (domain->class_vtable_array, i));
        }
 
        if (domain->type_hash) {
@@ -1155,7 +1155,7 @@ mono_domain_free (MonoDomain *domain, gboolean force)
        }
 
        for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
-               MonoAssembly *ass = tmp->data;
+               MonoAssembly *ass = (MonoAssembly *)tmp->data;
                mono_assembly_release_gc_roots (ass);
        }
 
@@ -1168,7 +1168,7 @@ mono_domain_free (MonoDomain *domain, gboolean force)
 
        /* Close dynamic assemblies first, since they have no ref count */
        for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
-               MonoAssembly *ass = tmp->data;
+               MonoAssembly *ass = (MonoAssembly *)tmp->data;
                if (!ass->image || !image_is_dynamic (ass->image))
                        continue;
                mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_ASSEMBLY, "Unloading domain %s[%p], assembly %s[%p], ref_count=%d", domain->friendly_name, domain, ass->aname.name, ass, ass->ref_count);
@@ -1177,7 +1177,7 @@ mono_domain_free (MonoDomain *domain, gboolean force)
        }
 
        for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
-               MonoAssembly *ass = tmp->data;
+               MonoAssembly *ass = (MonoAssembly *)tmp->data;
                if (!ass)
                        continue;
                if (!ass->image || image_is_dynamic (ass->image))
@@ -1188,7 +1188,7 @@ mono_domain_free (MonoDomain *domain, gboolean force)
        }
 
        for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
-               MonoAssembly *ass = tmp->data;
+               MonoAssembly *ass = (MonoAssembly *)tmp->data;
                if (ass)
                        mono_assembly_close_finish (ass);
        }
@@ -1572,7 +1572,7 @@ mono_domain_add_class_static_data (MonoDomain *domain, MonoClass *klass, gpointe
                next = GPOINTER_TO_INT (domain->static_data_array [0]);
                if (next >= size) {
                        /* 'data' is allocated by alloc_fixed */
-                       gpointer *new_array = mono_gc_alloc_fixed (sizeof (gpointer) * (size * 2), MONO_GC_ROOT_DESCR_FOR_FIXED (size * 2), MONO_ROOT_SOURCE_DOMAIN, "static field list");
+                       gpointer *new_array = (gpointer *)mono_gc_alloc_fixed (sizeof (gpointer) * (size * 2), MONO_GC_ROOT_DESCR_FOR_FIXED (size * 2), MONO_ROOT_SOURCE_DOMAIN, "static field list");
                        mono_gc_memmove_aligned (new_array, domain->static_data_array, sizeof (gpointer) * size);
                        size *= 2;
                        new_array [1] = GINT_TO_POINTER (size);
@@ -1581,7 +1581,7 @@ mono_domain_add_class_static_data (MonoDomain *domain, MonoClass *klass, gpointe
                }
        } else {
                int size = 32;
-               gpointer *new_array = mono_gc_alloc_fixed (sizeof (gpointer) * size, MONO_GC_ROOT_DESCR_FOR_FIXED (size), MONO_ROOT_SOURCE_DOMAIN, "static field list");
+               gpointer *new_array = (gpointer *)mono_gc_alloc_fixed (sizeof (gpointer) * size, MONO_GC_ROOT_DESCR_FOR_FIXED (size), MONO_ROOT_SOURCE_DOMAIN, "static field list");
                next = 2;
                new_array [0] = GINT_TO_POINTER (next);
                new_array [1] = GINT_TO_POINTER (size);
@@ -1815,7 +1815,7 @@ app_config_parse (const char *exe_filename)
 
        app_config = g_new0 (AppConfigInfo, 1);
 
-       context = g_markup_parse_context_new (&mono_parser, 0, app_config, NULL);
+       context = g_markup_parse_context_new (&mono_parser, (GMarkupParseFlags)0, app_config, NULL);
        if (g_markup_parse_context_parse (context, text, len, NULL)) {
                g_markup_parse_context_end_parse (context, NULL);
        }
index 6a37cc89562f4167797c96f7cf52759508927cb0..3c70edb3ac9045051932da332d7bae79a10c65d0 100644 (file)
@@ -849,7 +849,7 @@ mono_exception_get_native_backtrace (MonoException *exc)
 
        for (i = 0; i < len; ++i) {
                gpointer ip = mono_array_get (arr, gpointer, i);
-               MonoJitInfo *ji = mono_jit_info_table_find (mono_domain_get (), ip);
+               MonoJitInfo *ji = mono_jit_info_table_find (mono_domain_get (), (char *)ip);
                if (ji) {
                        char *msg = mono_debug_print_stack_frame (mono_jit_info_get_method (ji), (char*)ip - (char*)ji->code_start, domain);
                        g_string_append_printf (text, "%s\n", msg);
index c4364a11437fa501fb27911e64084e090b3c3a8f..69c67eabc4f46f29980dfb95a57a85e03756d96b 100644 (file)
@@ -190,7 +190,7 @@ static void convert_win32_file_attribute_data (const WIN32_FILE_ATTRIBUTE_DATA *
 static guint32 convert_attrs(MonoFileAttributes attrs)
 {
        if(attrs & FileAttributes_Encrypted) {
-               attrs |= FILE_ATTRIBUTE_ENCRYPTED;
+               attrs = (MonoFileAttributes)(attrs | FILE_ATTRIBUTE_ENCRYPTED);
        }
        
        return(attrs);
@@ -324,7 +324,7 @@ get_filesystem_entries (const gunichar2 *path,
        gchar *utf8_path = NULL, *utf8_result, *full_name;
        gint32 attributes;
 
-       mask = convert_attrs (mask);
+       mask = convert_attrs ((MonoFileAttributes)mask);
        attributes = get_file_attributes (path);
        if (attributes != -1) {
                if ((attributes & FILE_ATTRIBUTE_DIRECTORY) == 0) {
@@ -415,7 +415,7 @@ ves_icall_System_IO_MonoIO_GetFileSystemEntries (MonoString *path,
 
        result = mono_array_new (domain, mono_defaults.string_class, names->len);
        for (i = 0; i < names->len; i++) {
-               mono_array_setref (result, i, mono_string_new (domain, g_ptr_array_index (names, i)));
+               mono_array_setref (result, i, mono_string_new (domain, (const char *)g_ptr_array_index (names, i)));
                g_free (g_ptr_array_index (names, i));
        }
        g_ptr_array_free (names, TRUE);
@@ -499,7 +499,7 @@ ves_icall_System_IO_MonoIO_FindFirst (MonoString *path,
 MonoString *
 ves_icall_System_IO_MonoIO_FindNext (gpointer handle, gint32 *result_attr, gint32 *error)
 {
-       IncrementalFind *ifh = handle;
+       IncrementalFind *ifh = (IncrementalFind *)handle;
        WIN32_FIND_DATA data;
        MonoString *result;
 
@@ -520,7 +520,7 @@ ves_icall_System_IO_MonoIO_FindNext (gpointer handle, gint32 *result_attr, gint3
 int
 ves_icall_System_IO_MonoIO_FindClose (gpointer handle)
 {
-       IncrementalFind *ifh = handle;
+       IncrementalFind *ifh = (IncrementalFind *)handle;
        gint32 error;
 
        MONO_PREPARE_BLOCKING;
@@ -705,7 +705,7 @@ ves_icall_System_IO_MonoIO_SetFileAttributes (MonoString *path, gint32 attrs,
        *error=ERROR_SUCCESS;
        
        ret=SetFileAttributes (mono_string_chars (path),
-                              convert_attrs (attrs));
+               convert_attrs ((MonoFileAttributes)attrs));
        if(ret==FALSE) {
                *error=GetLastError ();
        }
@@ -803,8 +803,8 @@ ves_icall_System_IO_MonoIO_Open (MonoString *filename, gint32 mode,
                }
        }
        
-       ret=CreateFile (chars, convert_access (access_mode),
-                       convert_share (share), NULL, convert_mode (mode),
+       ret=CreateFile (chars, convert_access ((MonoFileAccess)access_mode),
+                       convert_share ((MonoFileShare)share), NULL, convert_mode ((MonoFileMode)mode),
                        attributes, NULL);
        if(ret==INVALID_HANDLE_VALUE) {
                *error=GetLastError ();
@@ -905,7 +905,7 @@ ves_icall_System_IO_MonoIO_Seek (HANDLE handle, gint64 offset, gint32 origin,
        
        offset_hi = offset >> 32;
        offset = SetFilePointer (handle, (gint32) (offset & 0xFFFFFFFF), &offset_hi,
-                                convert_seekorigin (origin));
+                                convert_seekorigin ((MonoSeekOrigin)origin));
 
        if(offset==INVALID_SET_FILE_POINTER) {
                *error=GetLastError ();
index 5b732359b9ddff7bf7721a7c71170203a4eebf29..aca3e7fb49c6fab2a7f25c8b89aeca79d801763e 100644 (file)
@@ -342,7 +342,7 @@ open_memory_map (MonoString *mapName, int mode, gint64 *capacity, int access, in
                        *error = COULD_NOT_MAP_MEMORY;
                        goto done;
                }
-               file_name = alloca (alloc_size);
+               file_name = (char *)alloca (alloc_size);
                strcpy (file_name, tmp_dir);
                strcat (file_name, MONO_ANON_FILE_TEMPLATE);
 
@@ -391,7 +391,7 @@ mono_mmap_open_file (MonoString *path, int mode, MonoString *mapName, gint64 *ca
                        *error = FILE_ALREADY_EXISTS;
                        handle = NULL;
                } else {
-                       handle = open_file_map (path, -1, mode, capacity, access, options, error);
+                       handle = (MmapHandle *)open_file_map (path, -1, mode, capacity, access, options, error);
                        if (handle) {
                                handle->name = g_strdup (c_mapName);
                                g_hash_table_insert (named_regions, handle->name, handle);
@@ -411,7 +411,7 @@ mono_mmap_open_handle (void *input_fd, MonoString *mapName, gint64 *capacity, in
 {
        MmapHandle *handle;
        if (!mapName) {
-               handle = open_file_map (NULL, GPOINTER_TO_INT (input_fd), FILE_MODE_OPEN, capacity, access, options, error);
+               handle = (MmapHandle *)open_file_map (NULL, GPOINTER_TO_INT (input_fd), FILE_MODE_OPEN, capacity, access, options, error);
        } else {
                char *c_mapName = mono_string_to_utf8 (mapName);
 
@@ -422,7 +422,7 @@ mono_mmap_open_handle (void *input_fd, MonoString *mapName, gint64 *capacity, in
                        handle = NULL;
                } else {
                        //XXX we're exploiting wapi HANDLE == FD equivalence. THIS IS FRAGILE, create a _wapi_handle_to_fd call
-                       handle = open_file_map (NULL, GPOINTER_TO_INT (input_fd), FILE_MODE_OPEN, capacity, access, options, error);
+                       handle = (MmapHandle *)open_file_map (NULL, GPOINTER_TO_INT (input_fd), FILE_MODE_OPEN, capacity, access, options, error);
                        handle->name = g_strdup (c_mapName);
                        g_hash_table_insert (named_regions, handle->name, handle);
                }
@@ -436,7 +436,7 @@ mono_mmap_open_handle (void *input_fd, MonoString *mapName, gint64 *capacity, in
 void
 mono_mmap_close (void *mmap_handle)
 {
-       MmapHandle *handle = mmap_handle;
+       MmapHandle *handle = (MmapHandle *)mmap_handle;
 
        named_regions_lock ();
        --handle->ref_count;
@@ -454,7 +454,7 @@ mono_mmap_close (void *mmap_handle)
 void
 mono_mmap_configure_inheritability (void *mmap_handle, gboolean inheritability)
 {
-       MmapHandle *h = mmap_handle;
+       MmapHandle *h = (MmapHandle *)mmap_handle;
        int fd, flags;
 
        fd = h->fd;
@@ -469,7 +469,7 @@ mono_mmap_configure_inheritability (void *mmap_handle, gboolean inheritability)
 void
 mono_mmap_flush (void *mmap_handle)
 {
-       MmapInstance *h = mmap_handle;
+       MmapInstance *h = (MmapInstance *)mmap_handle;
 
        if (h)
                msync (h->address, h->length, MS_SYNC);
@@ -479,7 +479,7 @@ int
 mono_mmap_map (void *handle, gint64 offset, gint64 *size, int access, void **mmap_handle, void **base_address)
 {
        gint64 mmap_offset = 0;
-       MmapHandle *fh = handle;
+       MmapHandle *fh = (MmapHandle *)handle;
        MmapInstance res = { 0 };
        size_t eff_size = *size;
        struct stat buf = { 0 };
@@ -518,7 +518,7 @@ gboolean
 mono_mmap_unmap (void *mmap_handle)
 {
        int res = 0;
-       MmapInstance *h = mmap_handle;
+       MmapInstance *h = (MmapInstance *)mmap_handle;
 
        res = mono_file_unmap (h->address, h->free_handle);
 
index 603de097ae13dac11bf9bb8ddc8fc98dcbe85bbe..e0f12d34b558cf3ad62cc353a2e91618c6377062 100644 (file)
@@ -151,7 +151,7 @@ mono_gc_run_finalize (void *obj, void *data)
 #ifndef HAVE_SGEN_GC
        mono_domain_finalizers_lock (domain);
 
-       o2 = g_hash_table_lookup (domain->finalizable_objects_hash, o);
+       o2 = (MonoObject *)g_hash_table_lookup (domain->finalizable_objects_hash, o);
 
        mono_domain_finalizers_unlock (domain);
 
@@ -161,7 +161,7 @@ mono_gc_run_finalize (void *obj, void *data)
 #endif
 
        /* make sure the finalizer is not called again if the object is resurrected */
-       object_register_finalizer (obj, NULL);
+       object_register_finalizer ((MonoObject *)obj, NULL);
 
        if (log_finalizers)
                g_log ("mono-gc-finalizers", G_LOG_LEVEL_MESSAGE, "<%s at %p> Registered finalizer as processed.", o->vtable->klass->name, o);
@@ -241,7 +241,7 @@ mono_gc_run_finalize (void *obj, void *data)
                domain->finalize_runtime_invoke = mono_compile_method (invoke);
        }
 
-       runtime_invoke = domain->finalize_runtime_invoke;
+       runtime_invoke = (RuntimeInvokeFunction)domain->finalize_runtime_invoke;
 
        mono_runtime_class_init (o->vtable);
 
@@ -723,7 +723,7 @@ finalizer_thread (gpointer unused)
                if (domains_to_finalize) {
                        mono_finalizer_lock ();
                        if (domains_to_finalize) {
-                               DomainFinalizationReq *req = domains_to_finalize->data;
+                               DomainFinalizationReq *req = (DomainFinalizationReq *)domains_to_finalize->data;
                                domains_to_finalize = g_slist_remove (domains_to_finalize, req);
                                mono_finalizer_unlock ();
 
@@ -932,7 +932,7 @@ ref_list_remove_element (RefQueueEntry **prev, RefQueueEntry *element)
                /* Guard if head is changed concurrently. */
                while (*prev != element)
                        prev = &(*prev)->next;
-       } while (prev && InterlockedCompareExchangePointer ((void*)prev, element->next, element) != element);
+       } while (prev && InterlockedCompareExchangePointer ((volatile gpointer *)prev, element->next, element) != element);
 }
 
 static void
@@ -943,7 +943,7 @@ ref_list_push (RefQueueEntry **head, RefQueueEntry *value)
                current = *head;
                value->next = current;
                STORE_STORE_FENCE; /*Must make sure the previous store is visible before the CAS. */
-       } while (InterlockedCompareExchangePointer ((void*)head, value, current) != current);
+       } while (InterlockedCompareExchangePointer ((volatile gpointer *)head, value, current) != current);
 }
 
 static void
index f2d76301c3c7d267a7cf9b3cf318c473b369a905..93433b6d9b9292bde5389d4be5872c3a65d2e714 100644 (file)
@@ -6,10 +6,11 @@
  *   Paolo Molaro (lupus@ximian.com)
  *      Patrik Torstensson (patrik.torstensson@labs2.com)
  *   Marek Safar (marek.safar@gmail.com)
+ *   Aleksey Kliger (aleksey@xamarin.com)
  *
  * Copyright 2001-2003 Ximian, Inc (http://www.ximian.com)
  * Copyright 2004-2009 Novell, Inc (http://www.novell.com)
- * Copyright 2011-2014 Xamarin Inc (http://www.xamarin.com).
+ * Copyright 2011-2015 Xamarin Inc (http://www.xamarin.com).
  */
 
 #include <config.h>
@@ -134,7 +135,7 @@ ves_icall_System_Array_GetValueImpl (MonoArray *arr, guint32 pos)
        if (ac->element_class->valuetype)
                return mono_value_box (arr->obj.vtable->domain, ac->element_class, ea);
        else
-               return *ea;
+               return (MonoObject *)*ea;
 }
 
 ICALL_EXPORT MonoObject *
@@ -544,7 +545,7 @@ ves_icall_System_Array_CreateInstanceImpl (MonoReflectionType *type, MonoArray *
 
        aklass = mono_bounded_array_class_get (klass, mono_array_length (lengths), bounded);
 
-       sizes = alloca (aklass->rank * sizeof(intptr_t) * 2);
+       sizes = (uintptr_t *)alloca (aklass->rank * sizeof(intptr_t) * 2);
        for (i = 0; i < aklass->rank; ++i) {
                sizes [i] = mono_array_get (lengths, guint32, i);
                if (bounds)
@@ -592,7 +593,7 @@ ves_icall_System_Array_CreateInstanceImpl64 (MonoReflectionType *type, MonoArray
 
        aklass = mono_bounded_array_class_get (klass, mono_array_length (lengths), bounded);
 
-       sizes = alloca (aklass->rank * sizeof(intptr_t) * 2);
+       sizes = (uintptr_t *)alloca (aklass->rank * sizeof(intptr_t) * 2);
        for (i = 0; i < aklass->rank; ++i) {
                sizes [i] = mono_array_get (lengths, guint64, i);
                if (bounds)
@@ -770,7 +771,7 @@ ves_icall_System_Array_SetGenericValueImpl (MonoArray *arr, guint32 pos, gpointe
 
        if (MONO_TYPE_IS_REFERENCE (&ec->byval_arg)) {
                g_assert (esize == sizeof (gpointer));
-               mono_gc_wbarrier_generic_store (ea, *(gpointer*)value);
+               mono_gc_wbarrier_generic_store (ea, *(MonoObject **)value);
        } else {
                g_assert (ec->inited);
                g_assert (esize == mono_class_value_size (ec, NULL));
@@ -1158,10 +1159,10 @@ ves_icall_ModuleBuilder_RegisterToken (MonoReflectionModuleBuilder *mb, MonoObje
 ICALL_EXPORT MonoObject*
 ves_icall_ModuleBuilder_GetRegisteredToken (MonoReflectionModuleBuilder *mb, guint32 token)
 {
-       gpointer obj;
+       MonoObject *obj;
 
        mono_loader_lock ();
-       obj = mono_g_hash_table_lookup (mb->dynamic_image->tokens, GUINT_TO_POINTER (token));
+       obj = (MonoObject *)mono_g_hash_table_lookup (mb->dynamic_image->tokens, GUINT_TO_POINTER (token));
        mono_loader_unlock ();
 
        return obj;
@@ -1170,7 +1171,7 @@ ves_icall_ModuleBuilder_GetRegisteredToken (MonoReflectionModuleBuilder *mb, gui
 static gboolean
 get_caller (MonoMethod *m, gint32 no, gint32 ilo, gboolean managed, gpointer data)
 {
-       MonoMethod **dest = data;
+       MonoMethod **dest = (MonoMethod **)data;
 
        /* skip unmanaged frames */
        if (!managed)
@@ -1190,7 +1191,7 @@ get_caller (MonoMethod *m, gint32 no, gint32 ilo, gboolean managed, gpointer dat
 static gboolean
 get_executing (MonoMethod *m, gint32 no, gint32 ilo, gboolean managed, gpointer data)
 {
-       MonoMethod **dest = data;
+       MonoMethod **dest = (MonoMethod **)data;
 
        /* skip unmanaged frames */
        if (!managed)
@@ -1208,7 +1209,7 @@ get_executing (MonoMethod *m, gint32 no, gint32 ilo, gboolean managed, gpointer
 static gboolean
 get_caller_no_reflection (MonoMethod *m, gint32 no, gint32 ilo, gboolean managed, gpointer data)
 {
-       MonoMethod **dest = data;
+       MonoMethod **dest = (MonoMethod **)data;
 
        /* skip unmanaged frames */
        if (!managed)
@@ -1780,9 +1781,9 @@ ves_icall_MonoField_SetValueInternal (MonoReflectionField *field, MonoObject *ob
                                 */
                                nullable = mono_object_new (mono_domain_get (), nklass);
 
-                               mono_nullable_init (mono_object_unbox (nullable), value, nklass);
+                               mono_nullable_init ((guint8 *)mono_object_unbox (nullable), value, nklass);
 
-                               v = mono_object_unbox (nullable);
+                               v = (gchar *)mono_object_unbox (nullable);
                        }
                        else 
                                if (gclass->container_class->valuetype && (v != NULL))
@@ -2030,8 +2031,8 @@ typedef struct {
 static void
 fill_iface_array (gpointer key, gpointer value, gpointer user_data)
 {
-       FillIfaceArrayData *data = user_data;
-       MonoClass *ic = key;
+       FillIfaceArrayData *data = (FillIfaceArrayData *)user_data;
+       MonoClass *ic = (MonoClass *)key;
        MonoType *ret = &ic->byval_arg, *inflated = NULL;
 
        if (!mono_error_ok (data->error))
@@ -2373,7 +2374,7 @@ ves_icall_Type_GetGenericTypeDefinition_impl (MonoReflectionType *type)
                tb = mono_class_get_ref_info (generic_class);
 
                if (generic_class->wastypebuilder && tb)
-                       return tb;
+                       return (MonoReflectionType *)tb;
                else
                        return mono_type_get_object (mono_object_domain (type), &generic_class->byval_arg);
        }
@@ -2394,7 +2395,7 @@ ves_icall_Type_MakeGenericType (MonoReflectionType *type, MonoArray *type_array)
        types = g_new0 (MonoType *, count);
 
        for (i = 0; i < count; i++) {
-               MonoReflectionType *t = mono_array_get (type_array, gpointer, i);
+               MonoReflectionType *t = (MonoReflectionType *)mono_array_get (type_array, gpointer, i);
                types [i] = t->type;
        }
 
@@ -2445,7 +2446,7 @@ ves_icall_Type_GetGenericParameterAttributes (MonoReflectionType *type)
 {
        g_assert (IS_MONOTYPE (type));
        g_assert (is_generic_parameter (type->type));
-       return mono_generic_param_info (type->type->data.generic_param)->flags;
+       return (GenericParameterAttributes)mono_generic_param_info (type->type->data.generic_param)->flags;
 }
 
 ICALL_EXPORT MonoArray *
@@ -2562,7 +2563,7 @@ ves_icall_MonoMethod_GetPInvoke (MonoReflectionMethod *method, int* flags, MonoS
 
        if (image_is_dynamic (image)) {
                MonoReflectionMethodAux *method_aux = 
-                       g_hash_table_lookup (((MonoDynamicImage*)image)->method_aux_hash, method->method);
+                       (MonoReflectionMethodAux *)g_hash_table_lookup (((MonoDynamicImage*)image)->method_aux_hash, method->method);
                if (method_aux) {
                        import = method_aux->dllentry;
                        scope = method_aux->dll;
@@ -2617,7 +2618,7 @@ ves_icall_MonoMethod_GetGenericMethodDefinition (MonoReflectionMethod *method)
                 * the dynamic case as well ?
                 */
                mono_image_lock ((MonoImage*)image);
-               res = mono_g_hash_table_lookup (image->generic_def_objects, imethod);
+               res = (MonoReflectionMethod *)mono_g_hash_table_lookup (image->generic_def_objects, imethod);
                mono_image_unlock ((MonoImage*)image);
 
                if (res)
@@ -2764,7 +2765,7 @@ ves_icall_InternalInvoke (MonoReflectionMethod *method, MonoObject *this_arg, Mo
                uintptr_t *lengths;
                intptr_t *lower_bounds;
                pcount = mono_array_length (params);
-               lengths = alloca (sizeof (uintptr_t) * pcount);
+               lengths = (uintptr_t *)alloca (sizeof (uintptr_t) * pcount);
                /* Note: the synthetized array .ctors have int32 as argument type */
                for (i = 0; i < pcount; ++i)
                        lengths [i] = *(int32_t*) ((char*)mono_array_get (params, gpointer, i) + sizeof (MonoObject));
@@ -2787,7 +2788,7 @@ ves_icall_InternalInvoke (MonoReflectionMethod *method, MonoObject *this_arg, Mo
                } else {
                        g_assert (pcount == (m->klass->rank * 2));
                        /* The arguments are lower-bound-length pairs */
-                       lower_bounds = g_alloca (sizeof (intptr_t) * pcount);
+                       lower_bounds = (intptr_t *)g_alloca (sizeof (intptr_t) * pcount);
 
                        for (i = 0; i < pcount / 2; ++i) {
                                lower_bounds [i] = *(int32_t*) ((char*)mono_array_get (params, gpointer, (i * 2)) + sizeof (MonoObject));
@@ -2835,7 +2836,7 @@ ves_icall_InternalExecute (MonoReflectionMethod *method, MonoObject *this_arg, M
                                        if (field_klass->valuetype)
                                                result = mono_value_box (domain, field_klass, (char *)this_arg + field->offset);
                                        else 
-                                               result = *((gpointer *)((char *)this_arg + field->offset));
+                                               result = (MonoObject *)*((gpointer *)((char *)this_arg + field->offset));
                                
                                        out_args = mono_array_new (domain, mono_defaults.object_class, 1);
                                        mono_gc_wbarrier_generic_store (outArgs, (MonoObject*) out_args);
@@ -2871,7 +2872,7 @@ ves_icall_InternalExecute (MonoReflectionMethod *method, MonoObject *this_arg, M
                                MonoClassField* field = mono_class_get_field_from_name (k, str);
                                if (field) {
                                        MonoClass *field_klass =  mono_class_from_mono_type (field->type);
-                                       MonoObject *val = mono_array_get (params, gpointer, 2);
+                                       MonoObject *val = (MonoObject *)mono_array_get (params, gpointer, 2);
 
                                        if (field_klass->valuetype) {
                                                size = mono_type_size (field->type, &align);
@@ -2966,19 +2967,19 @@ write_enum_value (char *mem, int type, guint64 value)
        }
        case MONO_TYPE_U2:
        case MONO_TYPE_I2: {
-               guint16 *p = (void*)mem;
+               guint16 *p = (guint16 *)mem;
                *p = value;
                break;
        }
        case MONO_TYPE_U4:
        case MONO_TYPE_I4: {
-               guint32 *p = (void*)mem;
+               guint32 *p = (guint32 *)mem;
                *p = value;
                break;
        }
        case MONO_TYPE_U8:
        case MONO_TYPE_I8: {
-               guint64 *p = (void*)mem;
+               guint64 *p = (guint64 *)mem;
                *p = value;
                break;
        }
@@ -3478,7 +3479,7 @@ ves_icall_Type_GetMethodsByName (MonoReflectionType *type, MonoString *name, gui
        res = mono_array_new_specific (array_vtable, method_array->len);
 
        for (i = 0; i < method_array->len; ++i) {
-               MonoMethod *method = g_ptr_array_index (method_array, i);
+               MonoMethod *method = (MonoMethod *)g_ptr_array_index (method_array, i);
                mono_array_setref (res, i, mono_method_get_object (domain, method, refklass));
        }
 
@@ -5037,7 +5038,7 @@ ves_icall_System_Reflection_Assembly_GetTypes (MonoReflectionAssembly *assembly,
 
        ex_count = 0;
        for (i = 0; i < len; i++) {
-               MonoReflectionType *t = mono_array_get (res, gpointer, i);
+               MonoReflectionType *t = (MonoReflectionType *)mono_array_get (res, gpointer, i);
                MonoClass *klass;
 
                if (t) {
@@ -5064,7 +5065,7 @@ ves_icall_System_Reflection_Assembly_GetTypes (MonoReflectionAssembly *assembly,
                exl = mono_array_new (domain, mono_defaults.exception_class, length);
                /* Types for which mono_class_get_checked () succeeded */
                for (i = 0, tmp = list; tmp; i++, tmp = tmp->next) {
-                       MonoException *exc = mono_class_get_exception_for_failure (tmp->data);
+                       MonoException *exc = mono_class_get_exception_for_failure ((MonoClass *)tmp->data);
                        mono_array_setref (exl, i, exc);
                }
                /* Types for which it don't */
@@ -5256,12 +5257,12 @@ ves_icall_System_Reflection_Module_ResolveTypeToken (MonoImage *image, guint32 t
 
        if (image_is_dynamic (image)) {
                if ((table == MONO_TABLE_TYPEDEF) || (table == MONO_TABLE_TYPEREF)) {
-                       klass = mono_lookup_dynamic_token_class (image, token, FALSE, NULL, NULL);
+                       klass = (MonoClass *)mono_lookup_dynamic_token_class (image, token, FALSE, NULL, NULL);
                        return klass ? &klass->byval_arg : NULL;
                }
 
                init_generic_context_from_args (&context, type_args, method_args);
-               klass = mono_lookup_dynamic_token_class (image, token, FALSE, NULL, &context);
+               klass = (MonoClass *)mono_lookup_dynamic_token_class (image, token, FALSE, NULL, &context);
                return klass ? &klass->byval_arg : NULL;
        }
 
@@ -5302,7 +5303,7 @@ ves_icall_System_Reflection_Module_ResolveMethodToken (MonoImage *image, guint32
 
        if (image_is_dynamic (image)) {
                if (table == MONO_TABLE_METHOD)
-                       return mono_lookup_dynamic_token_class (image, token, FALSE, NULL, NULL);
+                       return (MonoMethod *)mono_lookup_dynamic_token_class (image, token, FALSE, NULL, NULL);
 
                if ((table == MONO_TABLE_MEMBERREF) && !(mono_memberref_is_method (image, token))) {
                        *resolve_error = ResolveTokenError_BadTable;
@@ -5310,7 +5311,7 @@ ves_icall_System_Reflection_Module_ResolveMethodToken (MonoImage *image, guint32
                }
 
                init_generic_context_from_args (&context, type_args, method_args);
-               return mono_lookup_dynamic_token_class (image, token, FALSE, NULL, &context);
+               return (MonoMethod *)mono_lookup_dynamic_token_class (image, token, FALSE, NULL, &context);
        }
 
        if ((index <= 0) || (index > image->tables [table].rows)) {
@@ -5343,7 +5344,7 @@ ves_icall_System_Reflection_Module_ResolveStringToken (MonoImage *image, guint32
        }
 
        if (image_is_dynamic (image))
-               return mono_lookup_dynamic_token_class (image, token, FALSE, NULL, NULL);
+               return (MonoString *)mono_lookup_dynamic_token_class (image, token, FALSE, NULL, NULL);
 
        if ((index <= 0) || (index >= image->heap_us.size)) {
                *error = ResolveTokenError_OutOfRange;
@@ -5375,7 +5376,7 @@ ves_icall_System_Reflection_Module_ResolveFieldToken (MonoImage *image, guint32
 
        if (image_is_dynamic (image)) {
                if (table == MONO_TABLE_FIELD)
-                       return mono_lookup_dynamic_token_class (image, token, FALSE, NULL, NULL);
+                       return (MonoClassField *)mono_lookup_dynamic_token_class (image, token, FALSE, NULL, NULL);
 
                if (mono_memberref_is_method (image, token)) {
                        *resolve_error = ResolveTokenError_BadTable;
@@ -5383,7 +5384,7 @@ ves_icall_System_Reflection_Module_ResolveFieldToken (MonoImage *image, guint32
                }
 
                init_generic_context_from_args (&context, type_args, method_args);
-               return mono_lookup_dynamic_token_class (image, token, FALSE, NULL, &context);
+               return (MonoClassField *)mono_lookup_dynamic_token_class (image, token, FALSE, NULL, &context);
        }
 
        if ((index <= 0) || (index > image->tables [table].rows)) {
@@ -5782,10 +5783,15 @@ ves_icall_Remoting_RealProxy_GetTransparentProxy (MonoObject *this_obj, MonoStri
        type = ((MonoReflectionType *)rp->class_to_proxy)->type;
        klass = mono_class_from_mono_type (type);
 
+       // mono_remote_class_vtable cannot handle errors well, so force any loading error to occur early
+       mono_class_setup_vtable (klass);
+       if (klass->exception_type)
+               mono_raise_exception (mono_class_get_exception_for_failure (klass));
+
        tp->custom_type_info = (mono_object_isinst (this_obj, mono_defaults.iremotingtypeinfo_class) != NULL);
        tp->remote_class = mono_remote_class (domain, class_name, klass);
 
-       res->vtable = mono_remote_class_vtable (domain, tp->remote_class, rp);
+       res->vtable = (MonoVTable *)mono_remote_class_vtable (domain, tp->remote_class, rp);
        return res;
 }
 
@@ -6120,7 +6126,7 @@ ves_icall_System_Environment_GetLogicalDrives (void)
                if (size > initial_size) {
                        if (ptr != buf)
                                g_free (ptr);
-                       ptr = g_malloc0 ((size + 1) * sizeof (gunichar2));
+                       ptr = (gunichar2 *)g_malloc0 ((size + 1) * sizeof (gunichar2));
                        initial_size = size;
                        size++;
                }
@@ -6487,7 +6493,7 @@ get_bundled_app_config (void)
                return NULL;
 
        len = config_file_path_length - config_ext_length;
-       module = g_malloc0 (len + 1);
+       module = (gchar *)g_malloc0 (len + 1);
        memcpy (module, config_file_path, len);
        // Get the config file from the module name
        app_config = mono_config_string_for_assembly_file (module);
@@ -6551,7 +6557,7 @@ ves_icall_get_resources_ptr (MonoReflectionAssembly *assembly, gpointer *result,
        *result = NULL;
        *size = 0;
        image = assembly->assembly->image;
-       entry = mono_image_lookup_resource (image, MONO_PE_RESOURCE_ID_ASPNET_STRING, 0, NULL);
+       entry = (MonoPEResourceDataEntry *)mono_image_lookup_resource (image, MONO_PE_RESOURCE_ID_ASPNET_STRING, 0, NULL);
        if (!entry)
                return FALSE;
 
@@ -6619,6 +6625,7 @@ ICALL_EXPORT MonoReflectionMethod *
 ves_icall_MonoMethod_get_base_method (MonoReflectionMethod *m, gboolean definition)
 {
        MonoClass *klass, *parent;
+       MonoGenericContext *generic_inst = NULL;
        MonoMethod *method = m->method;
        MonoMethod *result = NULL;
        int slot;
@@ -6636,21 +6643,75 @@ ves_icall_MonoMethod_get_base_method (MonoReflectionMethod *m, gboolean definiti
                return m;
 
        klass = method->klass;
-       if (klass->generic_class)
+       if (klass->generic_class) {
+               generic_inst = mono_class_get_context (klass);
                klass = klass->generic_class->container_class;
+       }
 
        if (definition) {
                /* At the end of the loop, klass points to the eldest class that has this virtual function slot. */
                for (parent = klass->parent; parent != NULL; parent = parent->parent) {
+                       /* on entry, klass is either a plain old non-generic class and generic_inst == NULL
+                          or klass is the generic container class and generic_inst is the instantiation.
+
+                          when we go to the parent, if the parent is an open constructed type, we need to
+                          replace the type parameters by the definitions from the generic_inst, and then take it
+                          apart again into the klass and the generic_inst.
+
+                          For cases like this:
+                          class C<T> : B<T, int> {
+                              public override void Foo () { ... }
+                          }
+                          class B<U,V> : A<HashMap<U,V>> {
+                              public override void Foo () { ... }
+                          }
+                          class A<X> {
+                              public virtual void Foo () { ... }
+                          }
+
+                          if at each iteration the parent isn't open, we can skip inflating it.  if at some
+                          iteration the parent isn't generic (after possible inflation), we set generic_inst to
+                          NULL;
+                       */
+                       MonoGenericContext *parent_inst = NULL;
+                       if (mono_class_is_open_constructed_type (mono_class_get_type (parent))) {
+                               MonoError error;
+                               parent = mono_class_inflate_generic_class_checked (parent, generic_inst, &error);
+                               mono_error_raise_exception(&error);
+                       }
+                       if (parent->generic_class) {
+                               parent_inst = mono_class_get_context (parent);
+                               parent = parent->generic_class->container_class;
+                       }
+
                        mono_class_setup_vtable (parent);
                        if (parent->vtable_size <= slot)
                                break;
                        klass = parent;
+                       generic_inst = parent_inst;
                }
        } else {
                klass = klass->parent;
                if (!klass)
                        return m;
+               if (mono_class_is_open_constructed_type (mono_class_get_type (klass))) {
+                       MonoError error;
+                       klass = mono_class_inflate_generic_class_checked (klass, generic_inst, &error);
+                       mono_error_raise_exception(&error);
+
+                       generic_inst = NULL;
+               }
+               if (klass->generic_class) {
+                       generic_inst = mono_class_get_context (klass);
+                       klass = klass->generic_class->container_class;
+               }
+
+       }
+
+       if (generic_inst) {
+               MonoError error;
+               klass = mono_class_inflate_generic_class_checked (klass, generic_inst, &error);
+               mono_error_raise_exception(&error);
        }
 
        if (klass == method->klass)
@@ -6798,7 +6859,7 @@ ICALL_EXPORT MonoObject*
 mono_TypedReference_ToObject (MonoTypedRef* tref)
 {
        if (MONO_TYPE_IS_REFERENCE (tref->type)) {
-               MonoObject** objp = tref->value;
+               MonoObject** objp = (MonoObject **)tref->value;
                return *objp;
        }
 
@@ -7339,7 +7400,7 @@ compare_method_imap (const void *key, const void *elem)
 static gpointer
 find_method_icall (const IcallTypeDesc *imap, const char *name)
 {
-       const guint16 *nameslot = mono_binary_search (name, icall_names_idx + imap->first_icall, icall_desc_num_icalls (imap), sizeof (icall_names_idx [0]), compare_method_imap);
+       const guint16 *nameslot = (const guint16 *)mono_binary_search (name, icall_names_idx + imap->first_icall, icall_desc_num_icalls (imap), sizeof (icall_names_idx [0]), compare_method_imap);
        if (!nameslot)
                return NULL;
        return (gpointer)icall_functions [(nameslot - &icall_names_idx [0])];
@@ -7355,7 +7416,7 @@ compare_class_imap (const void *key, const void *elem)
 static const IcallTypeDesc*
 find_class_icalls (const char *name)
 {
-       const guint16 *nameslot = mono_binary_search (name, icall_type_names_idx, Icall_type_num, sizeof (icall_type_names_idx [0]), compare_class_imap);
+       const guint16 *nameslot = (const guint16 *)mono_binary_search (name, icall_type_names_idx, Icall_type_num, sizeof (icall_type_names_idx [0]), compare_class_imap);
        if (!nameslot)
                return NULL;
        return &icall_type_descs [nameslot - &icall_type_names_idx [0]];
@@ -7614,48 +7675,48 @@ mono_lookup_icall_symbol (MonoMethod *m)
 }
 
 static MonoType*
-type_from_typename (char *typename)
+type_from_typename (char *type_name)
 {
        MonoClass *klass = NULL;        /* assignment to shut GCC warning up */
 
-       if (!strcmp (typename, "int"))
+       if (!strcmp (type_name, "int"))
                klass = mono_defaults.int_class;
-       else if (!strcmp (typename, "ptr"))
+       else if (!strcmp (type_name, "ptr"))
                klass = mono_defaults.int_class;
-       else if (!strcmp (typename, "void"))
+       else if (!strcmp (type_name, "void"))
                klass = mono_defaults.void_class;
-       else if (!strcmp (typename, "int32"))
+       else if (!strcmp (type_name, "int32"))
                klass = mono_defaults.int32_class;
-       else if (!strcmp (typename, "uint32"))
+       else if (!strcmp (type_name, "uint32"))
                klass = mono_defaults.uint32_class;
-       else if (!strcmp (typename, "int8"))
+       else if (!strcmp (type_name, "int8"))
                klass = mono_defaults.sbyte_class;
-       else if (!strcmp (typename, "uint8"))
+       else if (!strcmp (type_name, "uint8"))
                klass = mono_defaults.byte_class;
-       else if (!strcmp (typename, "int16"))
+       else if (!strcmp (type_name, "int16"))
                klass = mono_defaults.int16_class;
-       else if (!strcmp (typename, "uint16"))
+       else if (!strcmp (type_name, "uint16"))
                klass = mono_defaults.uint16_class;
-       else if (!strcmp (typename, "long"))
+       else if (!strcmp (type_name, "long"))
                klass = mono_defaults.int64_class;
-       else if (!strcmp (typename, "ulong"))
+       else if (!strcmp (type_name, "ulong"))
                klass = mono_defaults.uint64_class;
-       else if (!strcmp (typename, "float"))
+       else if (!strcmp (type_name, "float"))
                klass = mono_defaults.single_class;
-       else if (!strcmp (typename, "double"))
+       else if (!strcmp (type_name, "double"))
                klass = mono_defaults.double_class;
-       else if (!strcmp (typename, "object"))
+       else if (!strcmp (type_name, "object"))
                klass = mono_defaults.object_class;
-       else if (!strcmp (typename, "obj"))
+       else if (!strcmp (type_name, "obj"))
                klass = mono_defaults.object_class;
-       else if (!strcmp (typename, "string"))
+       else if (!strcmp (type_name, "string"))
                klass = mono_defaults.string_class;
-       else if (!strcmp (typename, "bool"))
+       else if (!strcmp (type_name, "bool"))
                klass = mono_defaults.boolean_class;
-       else if (!strcmp (typename, "boolean"))
+       else if (!strcmp (type_name, "boolean"))
                klass = mono_defaults.boolean_class;
        else {
-               g_error ("%s", typename);
+               g_error ("%s", type_name);
                g_assert_not_reached ();
        }
        return &klass->byval_arg;
@@ -7674,7 +7735,7 @@ mono_create_icall_signature (const char *sigstr)
        MonoImage *corlib = mono_defaults.corlib;
 
        mono_image_lock (corlib);
-       res = g_hash_table_lookup (corlib->helper_signatures, sigstr);
+       res = (MonoMethodSignature *)g_hash_table_lookup (corlib->helper_signatures, sigstr);
        mono_image_unlock (corlib);
 
        if (res)
@@ -7708,7 +7769,7 @@ mono_create_icall_signature (const char *sigstr)
        g_strfreev (parts);
 
        mono_image_lock (corlib);
-       res2 = g_hash_table_lookup (corlib->helper_signatures, sigstr);
+       res2 = (MonoMethodSignature *)g_hash_table_lookup (corlib->helper_signatures, sigstr);
        if (res2)
                res = res2; /*Value is allocated in the image pool*/
        else
@@ -7725,7 +7786,7 @@ mono_find_jit_icall_by_name (const char *name)
        g_assert (jit_icall_hash_name);
 
        mono_icall_lock ();
-       info = g_hash_table_lookup (jit_icall_hash_name, name);
+       info = (MonoJitICallInfo *)g_hash_table_lookup (jit_icall_hash_name, name);
        mono_icall_unlock ();
        return info;
 }
@@ -7737,7 +7798,7 @@ mono_find_jit_icall_by_addr (gconstpointer addr)
        g_assert (jit_icall_hash_addr);
 
        mono_icall_lock ();
-       info = g_hash_table_lookup (jit_icall_hash_addr, (gpointer)addr);
+       info = (MonoJitICallInfo *)g_hash_table_lookup (jit_icall_hash_addr, (gpointer)addr);
        mono_icall_unlock ();
 
        return info;
@@ -7767,7 +7828,7 @@ mono_lookup_jit_icall_symbol (const char *name)
        const char *res = NULL;
 
        mono_icall_lock ();
-       info = g_hash_table_lookup (jit_icall_hash_name, name);
+       info = (MonoJitICallInfo *)g_hash_table_lookup (jit_icall_hash_name, name);
        if (info)
                res = info->c_symbol;
        mono_icall_unlock ();
index dbe802939861bc131a7a5c7b94c2ecb6ac7b4963..fbbf58f6b3ea541d87a28fd78b583fa492585bbb 100644 (file)
@@ -114,7 +114,7 @@ mono_remove_image_unload_hook (MonoImageUnloadFunc func, gpointer user_data)
        ImageUnloadHook *hook;
 
        for (l = image_unload_hooks; l; l = l->next) {
-               hook = l->data;
+               hook = (ImageUnloadHook *)l->data;
 
                if (hook->func == func && hook->user_data == user_data) {
                        g_free (hook);
@@ -131,7 +131,7 @@ mono_image_invoke_unload_hook (MonoImage *image)
        ImageUnloadHook *hook;
 
        for (l = image_unload_hooks; l; l = l->next) {
-               hook = l->data;
+               hook = (ImageUnloadHook *)l->data;
 
                hook->func (image, hook->user_data);
        }
@@ -149,7 +149,7 @@ mono_install_image_loader (const MonoImageLoader *loader)
 guint32
 mono_cli_rva_image_map (MonoImage *image, guint32 addr)
 {
-       MonoCLIImageInfo *iinfo = image->image_info;
+       MonoCLIImageInfo *iinfo = (MonoCLIImageInfo *)image->image_info;
        const int top = iinfo->cli_section_count;
        MonoSectionTable *tables = iinfo->cli_section_tables;
        int i;
@@ -185,7 +185,7 @@ mono_cli_rva_image_map (MonoImage *image, guint32 addr)
 char *
 mono_image_rva_map (MonoImage *image, guint32 addr)
 {
-       MonoCLIImageInfo *iinfo = image->image_info;
+       MonoCLIImageInfo *iinfo = (MonoCLIImageInfo *)image->image_info;
        const int top = iinfo->cli_section_count;
        MonoSectionTable *tables = iinfo->cli_section_tables;
        int i;
@@ -274,7 +274,7 @@ mono_images_cleanup (void)
 int
 mono_image_ensure_section_idx (MonoImage *image, int section)
 {
-       MonoCLIImageInfo *iinfo = image->image_info;
+       MonoCLIImageInfo *iinfo = (MonoCLIImageInfo *)image->image_info;
        MonoSectionTable *sect;
        
        g_return_val_if_fail (section < iinfo->cli_section_count, FALSE);
@@ -309,7 +309,7 @@ mono_image_ensure_section_idx (MonoImage *image, int section)
 int
 mono_image_ensure_section (MonoImage *image, const char *section)
 {
-       MonoCLIImageInfo *ii = image->image_info;
+       MonoCLIImageInfo *ii = (MonoCLIImageInfo *)image->image_info;
        int i;
        
        for (i = 0; i < ii->cli_section_count; i++){
@@ -697,7 +697,7 @@ mono_image_load_module (MonoImage *image, int idx)
 static gpointer
 class_key_extract (gpointer value)
 {
-       MonoClass *klass = value;
+       MonoClass *klass = (MonoClass *)value;
 
        return GUINT_TO_POINTER (klass->type_token);
 }
@@ -705,7 +705,7 @@ class_key_extract (gpointer value)
 static gpointer*
 class_next_value (gpointer value)
 {
-       MonoClass *klass = value;
+       MonoClass *klass = (MonoClass *)value;
 
        return (gpointer*)&klass->next_class_cache;
 }
@@ -894,7 +894,7 @@ pe_image_load_pe_data (MonoImage *image)
        MonoMSDOSHeader msdos;
        gint32 offset = 0;
 
-       iinfo = image->image_info;
+       iinfo = (MonoCLIImageInfo *)image->image_info;
        header = &iinfo->cli_header;
 
 #ifdef HOST_WIN32
@@ -963,7 +963,7 @@ pe_image_load_cli_data (MonoImage *image)
        MonoCLIImageInfo *iinfo;
        MonoDotNetHeader *header;
 
-       iinfo = image->image_info;
+       iinfo = (MonoCLIImageInfo *)image->image_info;
        header = &iinfo->cli_header;
 
        /* Load the CLI header */
@@ -1034,12 +1034,12 @@ do_mono_image_load (MonoImage *image, MonoImageOpenStatus *status,
 
        mono_image_init (image);
 
-       iinfo = image->image_info;
+       iinfo = (MonoCLIImageInfo *)image->image_info;
        header = &iinfo->cli_header;
 
        if (!image->metadata_only) {
                for (l = image_loaders; l; l = l->next) {
-                       MonoImageLoader *loader = l->data;
+                       MonoImageLoader *loader = (MonoImageLoader *)l->data;
                        if (loader->match (image)) {
                                image->loader = loader;
                                break;
@@ -1091,7 +1091,7 @@ done:
 
 invalid_image:
        if (errors) {
-               MonoVerifyInfo *info = errors->data;
+               MonoVerifyInfo *info = (MonoVerifyInfo *)errors->data;
                g_warning ("Could not load image %s due to %s", image->name, info->message);
                mono_free_verify_list (errors);
        }
@@ -1127,11 +1127,11 @@ do_mono_image_open (const char *fname, MonoImageOpenStatus *status,
        image = g_new0 (MonoImage, 1);
        image->raw_buffer_used = TRUE;
        image->raw_data_len = mono_file_map_size (filed);
-       image->raw_data = mono_file_map (image->raw_data_len, MONO_MMAP_READ|MONO_MMAP_PRIVATE, mono_file_map_fd (filed), 0, &image->raw_data_handle);
+       image->raw_data = (char *)mono_file_map (image->raw_data_len, MONO_MMAP_READ|MONO_MMAP_PRIVATE, mono_file_map_fd (filed), 0, &image->raw_data_handle);
 #if defined(HAVE_MMAP) && !defined (HOST_WIN32)
        if (!image->raw_data) {
                image->fileio_used = TRUE;
-               image->raw_data = mono_file_map_fileio (image->raw_data_len, MONO_MMAP_READ|MONO_MMAP_PRIVATE, mono_file_map_fd (filed), 0, &image->raw_data_handle);
+               image->raw_data = (char *)mono_file_map_fileio (image->raw_data_len, MONO_MMAP_READ|MONO_MMAP_PRIVATE, mono_file_map_fd (filed), 0, &image->raw_data_handle);
        }
 #endif
        if (!image->raw_data) {
@@ -1170,9 +1170,9 @@ mono_image_loaded_full (const char *name, gboolean refonly)
        MonoImage *res;
 
        mono_images_lock ();
-       res = g_hash_table_lookup (get_loaded_images_hash (refonly), name);
+       res = (MonoImage *)g_hash_table_lookup (get_loaded_images_hash (refonly), name);
        if (!res)
-               res = g_hash_table_lookup (get_loaded_images_by_name_hash (refonly), name);
+               res = (MonoImage *)g_hash_table_lookup (get_loaded_images_by_name_hash (refonly), name);
        mono_images_unlock ();
 
        return res;
@@ -1200,12 +1200,12 @@ typedef struct {
 static void
 find_by_guid (gpointer key, gpointer val, gpointer user_data)
 {
-       GuidData *data = user_data;
+       GuidData *data = (GuidData *)user_data;
        MonoImage *image;
 
        if (data->res)
                return;
-       image = val;
+       image = (MonoImage *)val;
        if (strcmp (data->guid, mono_image_get_guid (image)) == 0)
                data->res = image;
 }
@@ -1237,7 +1237,7 @@ register_image (MonoImage *image)
        GHashTable *loaded_images = get_loaded_images_hash (image->ref_only);
 
        mono_images_lock ();
-       image2 = g_hash_table_lookup (loaded_images, image->name);
+       image2 = (MonoImage *)g_hash_table_lookup (loaded_images, image->name);
 
        if (image2) {
                /* Somebody else beat us to it */
@@ -1270,7 +1270,7 @@ mono_image_open_from_data_internal (char *data, guint32 data_len, gboolean need_
        }
        datac = data;
        if (need_copy) {
-               datac = g_try_malloc (data_len);
+               datac = (char *)g_try_malloc (data_len);
                if (!datac) {
                        if (status)
                                *status = MONO_IMAGE_ERROR_ERRNO;
@@ -1429,7 +1429,7 @@ mono_image_open_full (const char *fname, MonoImageOpenStatus *status, gboolean r
         * the same image, we discard all but the first copy.
         */
        mono_images_lock ();
-       image = g_hash_table_lookup (loaded_images, absfname);
+       image = (MonoImage *)g_hash_table_lookup (loaded_images, absfname);
        g_free (absfname);
 
        if (image) { // Image already loaded
@@ -1669,7 +1669,7 @@ mono_image_close_except_pools (MonoImage *image)
 
        loaded_images         = get_loaded_images_hash (image->ref_only);
        loaded_images_by_name = get_loaded_images_by_name_hash (image->ref_only);
-       image2 = g_hash_table_lookup (loaded_images, image->name);
+       image2 = (MonoImage *)g_hash_table_lookup (loaded_images, image->name);
        if (image == image2) {
                /* This is not true if we are called from mono_image_open () */
                g_hash_table_remove (loaded_images, image->name);
@@ -1740,7 +1740,7 @@ mono_image_close_except_pools (MonoImage *image)
        if (image->raw_data_allocated) {
                /* FIXME: do we need this? (image is disposed anyway) */
                /* image->raw_metadata and cli_sections might lie inside image->raw_data */
-               MonoCLIImageInfo *ii = image->image_info;
+               MonoCLIImageInfo *ii = (MonoCLIImageInfo *)image->image_info;
 
                if ((image->raw_metadata > image->raw_data) &&
                        (image->raw_metadata <= (image->raw_data + image->raw_data_len)))
@@ -1829,7 +1829,7 @@ mono_image_close_except_pools (MonoImage *image)
                mono_bitset_free (image->interface_bitset);
        }
        if (image->image_info){
-               MonoCLIImageInfo *ii = image->image_info;
+               MonoCLIImageInfo *ii = (MonoCLIImageInfo *)image->image_info;
 
                if (ii->cli_section_tables)
                        g_free (ii->cli_section_tables);
@@ -2049,7 +2049,7 @@ mono_image_lookup_resource (MonoImage *image, guint32 res_id, guint32 lang_id, g
 
        mono_image_ensure_section_idx (image, MONO_SECTION_RSRC);
 
-       info=image->image_info;
+       info = (MonoCLIImageInfo *)image->image_info;
        if(info==NULL) {
                return(NULL);
        }
@@ -2122,7 +2122,7 @@ mono_image_get_entry_point (MonoImage *image)
 const char*
 mono_image_get_resource (MonoImage *image, guint32 offset, guint32 *size)
 {
-       MonoCLIImageInfo *iinfo = image->image_info;
+       MonoCLIImageInfo *iinfo = (MonoCLIImageInfo *)image->image_info;
        MonoCLIHeader *ch = &iinfo->cli_cli_header;
        const char* data;
 
@@ -2212,7 +2212,7 @@ done:
 const char*
 mono_image_get_strong_name (MonoImage *image, guint32 *size)
 {
-       MonoCLIImageInfo *iinfo = image->image_info;
+       MonoCLIImageInfo *iinfo = (MonoCLIImageInfo *)image->image_info;
        MonoPEDirEntry *de = &iinfo->cli_cli_header.ch_strong_name;
        const char* data;
 
@@ -2240,7 +2240,7 @@ mono_image_get_strong_name (MonoImage *image, guint32 *size)
 guint32
 mono_image_strong_name_position (MonoImage *image, guint32 *size)
 {
-       MonoCLIImageInfo *iinfo = image->image_info;
+       MonoCLIImageInfo *iinfo = (MonoCLIImageInfo *)image->image_info;
        MonoPEDirEntry *de = &iinfo->cli_cli_header.ch_strong_name;
        guint32 pos;
 
@@ -2384,7 +2384,7 @@ mono_image_is_dynamic (MonoImage *image)
 gboolean
 mono_image_has_authenticode_entry (MonoImage *image)
 {
-       MonoCLIImageInfo *iinfo = image->image_info;
+       MonoCLIImageInfo *iinfo = (MonoCLIImageInfo *)image->image_info;
        MonoDotNetHeader *header = &iinfo->cli_header;
        MonoPEDirEntry *de = &header->datadir.pe_certificate_table;
        // the Authenticode "pre" (non ASN.1) header is 8 bytes long
@@ -2441,7 +2441,7 @@ g_list_prepend_image (MonoImage *image, GList *list, gpointer data)
 {
        GList *new_list;
        
-       new_list = mono_image_alloc (image, sizeof (GList));
+       new_list = (GList *)mono_image_alloc (image, sizeof (GList));
        new_list->data = data;
        new_list->prev = list ? list->prev : NULL;
     new_list->next = list;
@@ -2459,7 +2459,7 @@ g_slist_append_image (MonoImage *image, GSList *list, gpointer data)
 {
        GSList *new_list;
 
-       new_list = mono_image_alloc (image, sizeof (GSList));
+       new_list = (GSList *)mono_image_alloc (image, sizeof (GSList));
        new_list->data = data;
        new_list->next = NULL;
 
index 06375a4977384fa0470080717388e77d08baed90..33dd5471c5fc713016ed172149a0b0642720d9bb 100644 (file)
@@ -90,7 +90,7 @@ jit_info_table_new_chunk (void)
 MonoJitInfoTable *
 mono_jit_info_table_new (MonoDomain *domain)
 {
-       MonoJitInfoTable *table = g_malloc0 (MONO_SIZEOF_JIT_INFO_TABLE + sizeof (MonoJitInfoTableChunk*));
+       MonoJitInfoTable *table = (MonoJitInfoTable *)g_malloc0 (MONO_SIZEOF_JIT_INFO_TABLE + sizeof (MonoJitInfoTableChunk*));
 
        table->domain = domain;
        table->num_chunks = 1;
@@ -197,7 +197,7 @@ jit_info_table_chunk_index (MonoJitInfoTableChunk *chunk, MonoThreadHazardPointe
 
        while (left < right) {
                int pos = (left + right) / 2;
-               MonoJitInfo *ji = get_hazardous_pointer((gpointer volatile*)&chunk->data [pos], hp, JIT_INFO_HAZARD_INDEX);
+               MonoJitInfo *ji = (MonoJitInfo *)get_hazardous_pointer((gpointer volatile*)&chunk->data [pos], hp, JIT_INFO_HAZARD_INDEX);
                gint8 *code_end = (gint8*)ji->code_start + ji->code_size;
 
                if (addr < code_end)
@@ -230,7 +230,7 @@ jit_info_table_find (MonoJitInfoTable *table, MonoThreadHazardPointers *hp, gint
                MonoJitInfoTableChunk *chunk = table->chunks [chunk_pos];
 
                while (pos < chunk->num_elements) {
-                       ji = get_hazardous_pointer ((gpointer volatile*)&chunk->data [pos], hp, JIT_INFO_HAZARD_INDEX);
+                       ji = (MonoJitInfo *)get_hazardous_pointer ((gpointer volatile*)&chunk->data [pos], hp, JIT_INFO_HAZARD_INDEX);
 
                        ++pos;
 
@@ -288,7 +288,7 @@ mono_jit_info_table_find_internal (MonoDomain *domain, char *addr, gboolean try_
           table by a hazard pointer and make sure that the pointer is
           still there after we've made it hazardous, we don't have to
           worry about the writer freeing the table. */
-       table = get_hazardous_pointer ((gpointer volatile*)&domain->jit_info_table, hp, JIT_INFO_TABLE_HAZARD_INDEX);
+       table = (MonoJitInfoTable *)get_hazardous_pointer ((gpointer volatile*)&domain->jit_info_table, hp, JIT_INFO_TABLE_HAZARD_INDEX);
 
        ji = jit_info_table_find (table, hp, (gint8*)addr);
        if (hp)
@@ -300,7 +300,7 @@ mono_jit_info_table_find_internal (MonoDomain *domain, char *addr, gboolean try_
 
        /* Maybe its an AOT module */
        if (try_aot && mono_get_root_domain () && mono_get_root_domain ()->aot_modules) {
-               table = get_hazardous_pointer ((gpointer volatile*)&mono_get_root_domain ()->aot_modules, hp, JIT_INFO_TABLE_HAZARD_INDEX);
+               table = (MonoJitInfoTable *)get_hazardous_pointer ((gpointer volatile*)&mono_get_root_domain ()->aot_modules, hp, JIT_INFO_TABLE_HAZARD_INDEX);
                module_ji = jit_info_table_find (table, hp, (gint8*)addr);
                if (module_ji)
                        ji = jit_info_find_in_aot_func (domain, module_ji->d.image, addr);
@@ -370,7 +370,7 @@ jit_info_table_realloc (MonoJitInfoTable *old)
        int required_size;
        int num_chunks;
        int new_chunk, new_element;
-       MonoJitInfoTable *new;
+       MonoJitInfoTable *result;
 
        /* number of needed places for elements needed */
        required_size = (int)((long)num_elements * JIT_INFO_TABLE_FILL_RATIO_DENOM / JIT_INFO_TABLE_FILL_RATIO_NOM);
@@ -381,12 +381,12 @@ jit_info_table_realloc (MonoJitInfoTable *old)
        }
        g_assert (num_chunks > 0);
 
-       new = g_malloc (MONO_SIZEOF_JIT_INFO_TABLE + sizeof (MonoJitInfoTableChunk*) * num_chunks);
-       new->domain = old->domain;
-       new->num_chunks = num_chunks;
+       result = (MonoJitInfoTable *)g_malloc (MONO_SIZEOF_JIT_INFO_TABLE + sizeof (MonoJitInfoTableChunk*) * num_chunks);
+       result->domain = old->domain;
+       result->num_chunks = num_chunks;
 
        for (i = 0; i < num_chunks; ++i)
-               new->chunks [i] = jit_info_table_new_chunk ();
+               result->chunks [i] = jit_info_table_new_chunk ();
 
        new_chunk = 0;
        new_element = 0;
@@ -398,9 +398,9 @@ jit_info_table_realloc (MonoJitInfoTable *old)
                for (j = 0; j < chunk_num_elements; ++j) {
                        if (!IS_JIT_INFO_TOMBSTONE (chunk->data [j])) {
                                g_assert (new_chunk < num_chunks);
-                               new->chunks [new_chunk]->data [new_element] = chunk->data [j];
+                               result->chunks [new_chunk]->data [new_element] = chunk->data [j];
                                if (++new_element >= JIT_INFO_TABLE_FILLED_NUM_ELEMENTS) {
-                                       new->chunks [new_chunk]->num_elements = new_element;
+                                       result->chunks [new_chunk]->num_elements = new_element;
                                        ++new_chunk;
                                        new_element = 0;
                                }
@@ -410,18 +410,18 @@ jit_info_table_realloc (MonoJitInfoTable *old)
 
        if (new_chunk < num_chunks) {
                g_assert (new_chunk == num_chunks - 1);
-               new->chunks [new_chunk]->num_elements = new_element;
-               g_assert (new->chunks [new_chunk]->num_elements > 0);
+               result->chunks [new_chunk]->num_elements = new_element;
+               g_assert (result->chunks [new_chunk]->num_elements > 0);
        }
 
        for (i = 0; i < num_chunks; ++i) {
-               MonoJitInfoTableChunk *chunk = new->chunks [i];
+               MonoJitInfoTableChunk *chunk = result->chunks [i];
                MonoJitInfo *ji = chunk->data [chunk->num_elements - 1];
 
-               new->chunks [i]->last_code_end = (gint8*)ji->code_start + ji->code_size;
+               result->chunks [i]->last_code_end = (gint8*)ji->code_start + ji->code_size;
        }
 
-       return new;
+       return result;
 }
 
 static void
@@ -450,7 +450,7 @@ jit_info_table_split_chunk (MonoJitInfoTableChunk *chunk, MonoJitInfoTableChunk
 static MonoJitInfoTable*
 jit_info_table_copy_and_split_chunk (MonoJitInfoTable *table, MonoJitInfoTableChunk *chunk)
 {
-       MonoJitInfoTable *new_table = g_malloc (MONO_SIZEOF_JIT_INFO_TABLE
+       MonoJitInfoTable *new_table = (MonoJitInfoTable *)g_malloc (MONO_SIZEOF_JIT_INFO_TABLE
                + sizeof (MonoJitInfoTableChunk*) * (table->num_chunks + 1));
        int i, j;
 
@@ -477,28 +477,28 @@ jit_info_table_copy_and_split_chunk (MonoJitInfoTable *table, MonoJitInfoTableCh
 static MonoJitInfoTableChunk*
 jit_info_table_purify_chunk (MonoJitInfoTableChunk *old)
 {
-       MonoJitInfoTableChunk *new = jit_info_table_new_chunk ();
+       MonoJitInfoTableChunk *result = jit_info_table_new_chunk ();
        int i, j;
 
        j = 0;
        for (i = 0; i < old->num_elements; ++i) {
                if (!IS_JIT_INFO_TOMBSTONE (old->data [i]))
-                       new->data [j++] = old->data [i];
+                       result->data [j++] = old->data [i];
        }
 
-       new->num_elements = j;
-       if (new->num_elements > 0)
-               new->last_code_end = (gint8*)new->data [j - 1]->code_start + new->data [j - 1]->code_size;
+       result->num_elements = j;
+       if (result->num_elements > 0)
+               result->last_code_end = (gint8*)result->data [j - 1]->code_start + result->data [j - 1]->code_size;
        else
-               new->last_code_end = old->last_code_end;
+               result->last_code_end = old->last_code_end;
 
-       return new;
+       return result;
 }
 
 static MonoJitInfoTable*
 jit_info_table_copy_and_purify_chunk (MonoJitInfoTable *table, MonoJitInfoTableChunk *chunk)
 {
-       MonoJitInfoTable *new_table = g_malloc (MONO_SIZEOF_JIT_INFO_TABLE
+       MonoJitInfoTable *new_table = (MonoJitInfoTable *)g_malloc (MONO_SIZEOF_JIT_INFO_TABLE
                + sizeof (MonoJitInfoTableChunk*) * table->num_chunks);
        int i, j;
 
@@ -690,10 +690,10 @@ jit_info_table_remove (MonoJitInfoTable *table, MonoJitInfo *ji)
        gpointer start = ji->code_start;
        int chunk_pos, pos;
 
-       chunk_pos = jit_info_table_index (table, start);
+       chunk_pos = jit_info_table_index (table, (gint8 *)start);
        g_assert (chunk_pos < table->num_chunks);
 
-       pos = jit_info_table_chunk_index (table->chunks [chunk_pos], NULL, start);
+       pos = jit_info_table_chunk_index (table->chunks [chunk_pos], NULL, (gint8 *)start);
 
        do {
                chunk = table->chunks [chunk_pos];
index d2136bbfc6419667341cf5066afe5afd7140a877..0566fe2d1028268ae0b92dd1531422364d750289 100644 (file)
@@ -461,7 +461,7 @@ field_from_memberref (MonoImage *image, guint32 token, MonoClass **retklass,
        MonoTableInfo *tables = image->tables;
        MonoType *sig_type;
        guint32 cols[6];
-       guint32 nindex, class;
+       guint32 nindex, class_index;
        const char *fname;
        const char *ptr;
        guint32 idx = mono_metadata_token_index (token);
@@ -470,16 +470,16 @@ field_from_memberref (MonoImage *image, guint32 token, MonoClass **retklass,
 
        mono_metadata_decode_row (&tables [MONO_TABLE_MEMBERREF], idx-1, cols, MONO_MEMBERREF_SIZE);
        nindex = cols [MONO_MEMBERREF_CLASS] >> MONO_MEMBERREF_PARENT_BITS;
-       class = cols [MONO_MEMBERREF_CLASS] & MONO_MEMBERREF_PARENT_MASK;
+       class_index = cols [MONO_MEMBERREF_CLASS] & MONO_MEMBERREF_PARENT_MASK;
 
        fname = mono_metadata_string_heap (image, cols [MONO_MEMBERREF_NAME]);
 
        if (!mono_verifier_verify_memberref_field_signature (image, cols [MONO_MEMBERREF_SIGNATURE], NULL)) {
-               mono_error_set_bad_image (error, image, "Bad field '%s' signature 0x%08x", class, token);
+               mono_error_set_bad_image (error, image, "Bad field '%s' signature 0x%08x", class_index, token);
                return NULL;
        }
 
-       switch (class) {
+       switch (class_index) {
        case MONO_MEMBERREF_PARENT_TYPEDEF:
                klass = mono_class_get_checked (image, MONO_TOKEN_TYPE_DEF | nindex, error);
                break;
@@ -490,7 +490,7 @@ field_from_memberref (MonoImage *image, guint32 token, MonoClass **retklass,
                klass = mono_class_get_and_inflate_typespec_checked (image, MONO_TOKEN_TYPE_SPEC | nindex, context, error);
                break;
        default:
-               mono_error_set_bad_image (error, image, "Bad field field '%s' signature 0x%08x", class, token);
+               mono_error_set_bad_image (error, image, "Bad field field '%s' signature 0x%08x", class_index, token);
        }
 
        if (!klass)
@@ -501,21 +501,21 @@ field_from_memberref (MonoImage *image, guint32 token, MonoClass **retklass,
        /* we may want to check the signature here... */
 
        if (*ptr++ != 0x6) {
-               mono_error_set_field_load (error, klass, fname, "Bad field signature class token %08x field name %s token %08x", class, fname, token);
+               mono_error_set_field_load (error, klass, fname, "Bad field signature class token %08x field name %s token %08x", class_index, fname, token);
                return NULL;
        }
 
        /* FIXME: This needs a cache, especially for generic instances, since
         * mono_metadata_parse_type () allocates everything from a mempool.
         */
-       sig_type = find_cached_memberref_sig (image, cols [MONO_MEMBERREF_SIGNATURE]);
+       sig_type = (MonoType *)find_cached_memberref_sig (image, cols [MONO_MEMBERREF_SIGNATURE]);
        if (!sig_type) {
                sig_type = mono_metadata_parse_type (image, MONO_PARSE_TYPE, 0, ptr, &ptr);
                if (sig_type == NULL) {
                        mono_error_set_field_load (error, klass, fname, "Could not parse field '%s' signature %08x", fname, token);
                        return NULL;
                }
-               sig_type = cache_memberref_sig (image, cols [MONO_MEMBERREF_SIGNATURE], sig_type);
+               sig_type = (MonoType *)cache_memberref_sig (image, cols [MONO_MEMBERREF_SIGNATURE], sig_type);
        }
 
        mono_class_init (klass); /*FIXME is this really necessary?*/
@@ -562,7 +562,7 @@ mono_field_from_token_checked (MonoImage *image, guint32 token, MonoClass **retk
                MonoClass *handle_class;
 
                *retklass = NULL;
-               result = mono_lookup_dynamic_token_class (image, token, TRUE, &handle_class, context);
+               result = (MonoClassField *)mono_lookup_dynamic_token_class (image, token, TRUE, &handle_class, context);
                // This checks the memberref type as well
                if (!result || handle_class != mono_defaults.fieldhandle_class) {
                        mono_error_set_bad_image (error, image, "Bad field token 0x%08x", token);
@@ -572,7 +572,7 @@ mono_field_from_token_checked (MonoImage *image, guint32 token, MonoClass **retk
                return result;
        }
 
-       if ((field = mono_conc_hashtable_lookup (image->field_cache, GUINT_TO_POINTER (token)))) {
+       if ((field = (MonoClassField *)mono_conc_hashtable_lookup (image->field_cache, GUINT_TO_POINTER (token)))) {
                *retklass = field->parent;
                return field;
        }
@@ -815,7 +815,7 @@ inflate_generic_signature_checked (MonoImage *image, MonoMethodSignature *sig, M
        if (!context)
                return sig;
 
-       res = g_malloc0 (MONO_SIZEOF_METHOD_SIGNATURE + ((gint32)sig->param_count) * sizeof (MonoType*));
+       res = (MonoMethodSignature *)g_malloc0 (MONO_SIZEOF_METHOD_SIGNATURE + ((gint32)sig->param_count) * sizeof (MonoType*));
        res->param_count = sig->param_count;
        res->sentinelpos = -1;
        res->ret = mono_class_inflate_generic_type_checked (sig->ret, context, error);
@@ -875,7 +875,7 @@ inflate_generic_header (MonoMethodHeader *header, MonoGenericContext *context)
 {
        MonoMethodHeader *res;
        int i;
-       res = g_malloc0 (MONO_SIZEOF_METHOD_HEADER + sizeof (gpointer) * header->num_locals);
+       res = (MonoMethodHeader *)g_malloc0 (MONO_SIZEOF_METHOD_HEADER + sizeof (gpointer) * header->num_locals);
        res->code = header->code;
        res->code_size = header->code_size;
        res->max_stack = header->max_stack;
@@ -886,7 +886,7 @@ inflate_generic_header (MonoMethodHeader *header, MonoGenericContext *context)
        for (i = 0; i < header->num_locals; ++i)
                res->locals [i] = mono_class_inflate_generic_type (header->locals [i], context);
        if (res->num_clauses) {
-               res->clauses = g_memdup (header->clauses, sizeof (MonoExceptionClause) * res->num_clauses);
+               res->clauses = (MonoExceptionClause *)g_memdup (header->clauses, sizeof (MonoExceptionClause) * res->num_clauses);
                for (i = 0; i < header->num_clauses; ++i) {
                        MonoExceptionClause *clause = &res->clauses [i];
                        if (clause->flags != MONO_EXCEPTION_CLAUSE_NONE)
@@ -951,14 +951,14 @@ mono_method_get_signature_checked (MonoMethod *method, MonoImage *image, guint32
                mono_metadata_decode_row (&image->tables [MONO_TABLE_MEMBERREF], idx-1, cols, MONO_MEMBERREF_SIZE);
                sig_idx = cols [MONO_MEMBERREF_SIGNATURE];
 
-               sig = find_cached_memberref_sig (image, sig_idx);
+               sig = (MonoMethodSignature *)find_cached_memberref_sig (image, sig_idx);
                if (!sig) {
                        if (!mono_verifier_verify_memberref_method_signature (image, sig_idx, NULL)) {
-                               guint32 class = cols [MONO_MEMBERREF_CLASS] & MONO_MEMBERREF_PARENT_MASK;
+                               guint32 klass = cols [MONO_MEMBERREF_CLASS] & MONO_MEMBERREF_PARENT_MASK;
                                const char *fname = mono_metadata_string_heap (image, cols [MONO_MEMBERREF_NAME]);
 
                                //FIXME include the verification error
-                               mono_error_set_bad_image (error, image, "Bad method signature class token 0x%08x field name %s token 0x%08x", class, fname, token);
+                               mono_error_set_bad_image (error, image, "Bad method signature class token 0x%08x field name %s token 0x%08x", klass, fname, token);
                                return NULL;
                        }
 
@@ -969,14 +969,14 @@ mono_method_get_signature_checked (MonoMethod *method, MonoImage *image, guint32
                        if (!sig)
                                return NULL;
 
-                       sig = cache_memberref_sig (image, sig_idx, sig);
+                       sig = (MonoMethodSignature *)cache_memberref_sig (image, sig_idx, sig);
                }
                /* FIXME: we probably should verify signature compat in the dynamic case too*/
                if (!mono_verifier_is_sig_compatible (image, method, sig)) {
-                       guint32 class = cols [MONO_MEMBERREF_CLASS] & MONO_MEMBERREF_PARENT_MASK;
+                       guint32 klass = cols [MONO_MEMBERREF_CLASS] & MONO_MEMBERREF_PARENT_MASK;
                        const char *fname = mono_metadata_string_heap (image, cols [MONO_MEMBERREF_NAME]);
 
-                       mono_error_set_bad_image (error, image, "Incompatible method signature class token 0x%08x field name %s token 0x%08x", class, fname, token);
+                       mono_error_set_bad_image (error, image, "Incompatible method signature class token 0x%08x field name %s token 0x%08x", klass, fname, token);
                        return NULL;
                }
        }
@@ -1041,7 +1041,7 @@ method_from_memberref (MonoImage *image, guint32 idx, MonoGenericContext *typesp
        MonoMethod *method = NULL;
        MonoTableInfo *tables = image->tables;
        guint32 cols[6];
-       guint32 nindex, class, sig_idx;
+       guint32 nindex, class_index, sig_idx;
        const char *mname;
        MonoMethodSignature *sig;
        const char *ptr;
@@ -1050,7 +1050,7 @@ method_from_memberref (MonoImage *image, guint32 idx, MonoGenericContext *typesp
 
        mono_metadata_decode_row (&tables [MONO_TABLE_MEMBERREF], idx-1, cols, 3);
        nindex = cols [MONO_MEMBERREF_CLASS] >> MONO_MEMBERREF_PARENT_BITS;
-       class = cols [MONO_MEMBERREF_CLASS] & MONO_MEMBERREF_PARENT_MASK;
+       class_index = cols [MONO_MEMBERREF_CLASS] & MONO_MEMBERREF_PARENT_MASK;
        /*g_print ("methodref: 0x%x 0x%x %s\n", class, nindex,
                mono_metadata_string_heap (m, cols [MONO_MEMBERREF_NAME]));*/
 
@@ -1062,9 +1062,9 @@ method_from_memberref (MonoImage *image, guint32 idx, MonoGenericContext *typesp
         * method into a cache.
         */
        if (used_context)
-               *used_context = class == MONO_MEMBERREF_PARENT_TYPESPEC;
+               *used_context = class_index == MONO_MEMBERREF_PARENT_TYPESPEC;
 
-       switch (class) {
+       switch (class_index) {
        case MONO_MEMBERREF_PARENT_TYPEREF:
                klass = mono_class_from_typeref_checked (image, MONO_TOKEN_TYPE_REF | nindex, error);
                if (!klass)
@@ -1090,7 +1090,7 @@ method_from_memberref (MonoImage *image, guint32 idx, MonoGenericContext *typesp
                return method;
        }
        default:
-               mono_error_set_bad_image (error, image, "Memberref parent unknown: class: %d, index %d", class, nindex);
+               mono_error_set_bad_image (error, image, "Memberref parent unknown: class: %d, index %d", class_index, nindex);
                goto fail;
        }
 
@@ -1107,16 +1107,16 @@ method_from_memberref (MonoImage *image, guint32 idx, MonoGenericContext *typesp
        ptr = mono_metadata_blob_heap (image, sig_idx);
        mono_metadata_decode_blob_size (ptr, &ptr);
 
-       sig = find_cached_memberref_sig (image, sig_idx);
+       sig = (MonoMethodSignature *)find_cached_memberref_sig (image, sig_idx);
        if (!sig) {
                sig = mono_metadata_parse_method_signature_full (image, NULL, 0, ptr, NULL, error);
                if (sig == NULL)
                        goto fail;
 
-               sig = cache_memberref_sig (image, sig_idx, sig);
+               sig = (MonoMethodSignature *)cache_memberref_sig (image, sig_idx, sig);
        }
 
-       switch (class) {
+       switch (class_index) {
        case MONO_MEMBERREF_PARENT_TYPEREF:
        case MONO_MEMBERREF_PARENT_TYPEDEF:
                method = find_method (klass, NULL, mname, sig, klass, error);
@@ -1138,7 +1138,7 @@ method_from_memberref (MonoImage *image, guint32 idx, MonoGenericContext *typesp
                break;
        }
        default:
-               mono_error_set_bad_image (error, image,"Memberref parent unknown: class: %d, index %d", class, nindex);
+               mono_error_set_bad_image (error, image,"Memberref parent unknown: class: %d, index %d", class_index, nindex);
                goto fail;
        }
 
@@ -1332,7 +1332,7 @@ mono_dllmap_insert (MonoImage *assembly, const char *dll, const char *func, cons
        mono_loader_init ();
 
        if (!assembly) {
-               entry = g_malloc0 (sizeof (MonoDllMap));
+               entry = (MonoDllMap *)g_malloc0 (sizeof (MonoDllMap));
                entry->dll = dll? g_strdup (dll): NULL;
                entry->target = tdll? g_strdup (tdll): NULL;
                entry->func = func? g_strdup (func): NULL;
@@ -1343,7 +1343,7 @@ mono_dllmap_insert (MonoImage *assembly, const char *dll, const char *func, cons
                global_dll_map = entry;
                global_loader_data_unlock ();
        } else {
-               entry = mono_image_alloc0 (assembly, sizeof (MonoDllMap));
+               entry = (MonoDllMap *)mono_image_alloc0 (assembly, sizeof (MonoDllMap));
                entry->dll = dll? mono_image_strdup (assembly, dll): NULL;
                entry->target = tdll? mono_image_strdup (assembly, tdll): NULL;
                entry->func = func? mono_image_strdup (assembly, func): NULL;
@@ -1390,7 +1390,7 @@ cached_module_load (const char *name, int flags, char **err)
        global_loader_data_lock ();
        if (!global_module_map)
                global_module_map = g_hash_table_new (g_str_hash, g_str_equal);
-       res = g_hash_table_lookup (global_module_map, name);
+       res = (MonoDl *)g_hash_table_lookup (global_module_map, name);
        if (res) {
                global_loader_data_unlock ();
                return res;
@@ -1446,7 +1446,7 @@ mono_lookup_pinvoke_call (MonoMethod *method, const char **exc_class, const char
 
        if (image_is_dynamic (method->klass->image)) {
                MonoReflectionMethodAux *method_aux = 
-                       g_hash_table_lookup (
+                       (MonoReflectionMethodAux *)g_hash_table_lookup (
                                ((MonoDynamicImage*)method->klass->image)->method_aux_hash, method);
                if (!method_aux)
                        return NULL;
@@ -1477,8 +1477,8 @@ mono_lookup_pinvoke_call (MonoMethod *method, const char **exc_class, const char
                        image->pinvoke_scopes = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
                        image->pinvoke_scope_filenames = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
                }
-               module = g_hash_table_lookup (image->pinvoke_scopes, new_scope);
-               found_name = g_hash_table_lookup (image->pinvoke_scope_filenames, new_scope);
+               module = (MonoDl *)g_hash_table_lookup (image->pinvoke_scopes, new_scope);
+               found_name = (char *)g_hash_table_lookup (image->pinvoke_scope_filenames, new_scope);
                mono_image_unlock (image);
                if (module)
                        cached = TRUE;
@@ -1866,7 +1866,7 @@ mono_get_method_from_token (MonoImage *image, guint32 token, MonoClass *klass,
        if (image_is_dynamic (image)) {
                MonoClass *handle_class;
 
-               result = mono_lookup_dynamic_token_class (image, token, TRUE, &handle_class, context);
+               result = (MonoMethod *)mono_lookup_dynamic_token_class (image, token, TRUE, &handle_class, context);
                mono_loader_assert_no_error ();
 
                // This checks the memberref type as well
@@ -2012,11 +2012,11 @@ mono_get_method_checked (MonoImage *image, guint32 token, MonoClass *klass, Mono
        if (mono_metadata_token_table (token) == MONO_TABLE_METHOD) {
                if (!image->method_cache)
                        image->method_cache = g_hash_table_new (NULL, NULL);
-               result = g_hash_table_lookup (image->method_cache, GINT_TO_POINTER (mono_metadata_token_index (token)));
+               result = (MonoMethod *)g_hash_table_lookup (image->method_cache, GINT_TO_POINTER (mono_metadata_token_index (token)));
        } else if (!image_is_dynamic (image)) {
                if (!image->methodref_cache)
                        image->methodref_cache = g_hash_table_new (NULL, NULL);
-               result = g_hash_table_lookup (image->methodref_cache, GINT_TO_POINTER (token));
+               result = (MonoMethod *)g_hash_table_lookup (image->methodref_cache, GINT_TO_POINTER (token));
        }
        mono_image_unlock (image);
 
@@ -2033,9 +2033,9 @@ mono_get_method_checked (MonoImage *image, guint32 token, MonoClass *klass, Mono
                MonoMethod *result2 = NULL;
 
                if (mono_metadata_token_table (token) == MONO_TABLE_METHOD)
-                       result2 = g_hash_table_lookup (image->method_cache, GINT_TO_POINTER (mono_metadata_token_index (token)));
+                       result2 = (MonoMethod *)g_hash_table_lookup (image->method_cache, GINT_TO_POINTER (mono_metadata_token_index (token)));
                else if (!image_is_dynamic (image))
-                       result2 = g_hash_table_lookup (image->methodref_cache, GINT_TO_POINTER (token));
+                       result2 = (MonoMethod *)g_hash_table_lookup (image->methodref_cache, GINT_TO_POINTER (token));
 
                if (result2) {
                        mono_image_unlock (image);
@@ -2231,7 +2231,7 @@ mono_method_get_param_names (MonoMethod *method, const char **names)
 
        if (image_is_dynamic (klass->image)) {
                MonoReflectionMethodAux *method_aux = 
-                       g_hash_table_lookup (
+                       (MonoReflectionMethodAux *)g_hash_table_lookup (
                                ((MonoDynamicImage*)method->klass->image)->method_aux_hash, method);
                if (method_aux && method_aux->param_names) {
                        for (i = 0; i < mono_method_signature (method)->param_count; ++i)
@@ -2246,7 +2246,7 @@ mono_method_get_param_names (MonoMethod *method, const char **names)
 
                mono_image_lock (klass->image);
                if (klass->image->wrapper_param_names)
-                       pnames = g_hash_table_lookup (klass->image->wrapper_param_names, method);
+                       pnames = (char **)g_hash_table_lookup (klass->image->wrapper_param_names, method);
                mono_image_unlock (klass->image);
 
                if (pnames) {
@@ -2322,7 +2322,7 @@ mono_method_get_marshal_info (MonoMethod *method, MonoMarshalSpec **mspecs)
 
        if (image_is_dynamic (method->klass->image)) {
                MonoReflectionMethodAux *method_aux = 
-                       g_hash_table_lookup (
+                       (MonoReflectionMethodAux *)g_hash_table_lookup (
                                ((MonoDynamicImage*)method->klass->image)->method_aux_hash, method);
                if (method_aux && method_aux->param_marshall) {
                        MonoMarshalSpec **dyn_specs = method_aux->param_marshall;
@@ -2377,7 +2377,7 @@ mono_method_has_marshal_info (MonoMethod *method)
 
        if (image_is_dynamic (method->klass->image)) {
                MonoReflectionMethodAux *method_aux = 
-                       g_hash_table_lookup (
+                       (MonoReflectionMethodAux *)g_hash_table_lookup (
                                ((MonoDynamicImage*)method->klass->image)->method_aux_hash, method);
                MonoMarshalSpec **dyn_specs = method_aux->param_marshall;
                if (dyn_specs) {
@@ -2422,7 +2422,7 @@ mono_method_get_wrapper_data (MonoMethod *method, guint32 id)
 
        if (method->is_inflated)
                method = ((MonoMethodInflated *) method)->declaring;
-       data = ((MonoMethodWrapper *)method)->method_data;
+       data = (void **)((MonoMethodWrapper *)method)->method_data;
        g_assert (data != NULL);
        g_assert (id <= GPOINTER_TO_UINT (*data));
        return data [id];
@@ -2436,7 +2436,7 @@ typedef struct {
 static gboolean
 stack_walk_adapter (MonoStackFrameInfo *frame, MonoContext *ctx, gpointer data)
 {
-       StackWalkUserData *d = data;
+       StackWalkUserData *d = (StackWalkUserData *)data;
 
        switch (frame->type) {
        case FRAME_TYPE_DEBUGGER_INVOKE:
@@ -2476,7 +2476,7 @@ typedef struct {
 static gboolean
 async_stack_walk_adapter (MonoStackFrameInfo *frame, MonoContext *ctx, gpointer data)
 {
-       AsyncStackWalkUserData *d = data;
+       AsyncStackWalkUserData *d = (AsyncStackWalkUserData *)data;
 
        switch (frame->type) {
        case FRAME_TYPE_DEBUGGER_INVOKE:
@@ -2517,7 +2517,7 @@ mono_stack_walk_async_safe (MonoStackWalkAsyncSafe func, void *initial_sig_conte
 static gboolean
 last_managed (MonoMethod *m, gint no, gint ilo, gboolean managed, gpointer data)
 {
-       MonoMethod **dest = data;
+       MonoMethod **dest = (MonoMethod **)data;
        *dest = m;
        /*g_print ("In %s::%s [%d] [%d]\n", m->klass->name, m->name, no, ilo);*/
 
@@ -2670,7 +2670,7 @@ mono_method_signature_checked (MonoMethod *m, MonoError *error)
 
        if (can_cache_signature) {
                mono_image_lock (img);
-               signature = g_hash_table_lookup (img->method_signatures, sig);
+               signature = (MonoMethodSignature *)g_hash_table_lookup (img->method_signatures, sig);
                mono_image_unlock (img);
        }
 
@@ -2688,7 +2688,7 @@ mono_method_signature_checked (MonoMethod *m, MonoError *error)
 
                if (can_cache_signature) {
                        mono_image_lock (img);
-                       sig2 = g_hash_table_lookup (img->method_signatures, sig);
+                       sig2 = (MonoMethodSignature *)g_hash_table_lookup (img->method_signatures, sig);
                        if (!sig2)
                                g_hash_table_insert (img->method_signatures, (gpointer)sig, signature);
                        mono_image_unlock (img);
@@ -2714,7 +2714,7 @@ mono_method_signature_checked (MonoMethod *m, MonoError *error)
        if (m->iflags & METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL)
                signature->pinvoke = 1;
        else if (m->flags & METHOD_ATTRIBUTE_PINVOKE_IMPL) {
-               MonoCallConvention conv = 0;
+               MonoCallConvention conv = (MonoCallConvention)0;
                MonoMethodPInvoke *piinfo = (MonoMethodPInvoke *)m;
                signature->pinvoke = 1;
 
@@ -2865,7 +2865,7 @@ mono_method_get_header (MonoMethod *method)
        container = mono_method_get_generic_container (method);
        if (!container)
                container = method->klass->generic_container;
-       header = mono_metadata_parse_mh_full (img, container, loc);
+       header = mono_metadata_parse_mh_full (img, container, (const char *)loc);
 
        return header;
 }
index 26732679cac03db1eee3afd590c7d45ba0565283..52e97eaca1efa3320afd009ecebb680026719eed 100644 (file)
@@ -60,8 +60,8 @@ static const RegionInfoEntry* region_info_entry_from_lcid (int lcid);
 static int
 culture_lcid_locator (const void *a, const void *b)
 {
-       const int *lcid = a;
-       const CultureInfoEntry *bb = b;
+       const int *lcid = (const int *)a;
+       const CultureInfoEntry *bb = (const CultureInfoEntry *)b;
 
        return *lcid - bb->lcid;
 }
@@ -69,8 +69,8 @@ culture_lcid_locator (const void *a, const void *b)
 static int
 culture_name_locator (const void *a, const void *b)
 {
-       const char *aa = a;
-       const CultureInfoNameEntry *bb = b;
+       const char *aa = (const char *)a;
+       const CultureInfoNameEntry *bb = (const CultureInfoNameEntry *)b;
        int ret;
        
        ret = strcmp (aa, idx2string (bb->name));
@@ -81,8 +81,8 @@ culture_name_locator (const void *a, const void *b)
 static int
 region_name_locator (const void *a, const void *b)
 {
-       const char *aa = a;
-       const RegionInfoNameEntry *bb = b;
+       const char *aa = (const char *)a;
+       const RegionInfoNameEntry *bb = (const RegionInfoNameEntry *)b;
        int ret;
        
        ret = strcmp (aa, idx2string (bb->name));
@@ -167,7 +167,7 @@ ves_icall_System_Globalization_CalendarData_fill_calendar_data (MonoCalendarData
        char *n;
 
        n = mono_string_to_utf8 (name);
-       ne = mono_binary_search (n, culture_name_entries, NUM_CULTURE_ENTRIES,
+       ne = (const CultureInfoNameEntry *)mono_binary_search (n, culture_name_entries, NUM_CULTURE_ENTRIES,
                        sizeof (CultureInfoNameEntry), culture_name_locator);
        g_free (n);
        if (ne == NULL) {
@@ -317,7 +317,7 @@ culture_info_entry_from_lcid (int lcid)
 {
        const CultureInfoEntry *ci;
 
-       ci = mono_binary_search (&lcid, culture_entries, NUM_CULTURE_ENTRIES, sizeof (CultureInfoEntry), culture_lcid_locator);
+       ci = (const CultureInfoEntry *)mono_binary_search (&lcid, culture_entries, NUM_CULTURE_ENTRIES, sizeof (CultureInfoEntry), culture_lcid_locator);
 
        return ci;
 }
@@ -328,7 +328,7 @@ region_info_entry_from_lcid (int lcid)
        const RegionInfoEntry *entry;
        const CultureInfoEntry *ne;
 
-       ne = mono_binary_search (&lcid, culture_entries, NUM_CULTURE_ENTRIES, sizeof (CultureInfoEntry), culture_lcid_locator);
+       ne = (const CultureInfoEntry *)mono_binary_search (&lcid, culture_entries, NUM_CULTURE_ENTRIES, sizeof (CultureInfoEntry), culture_lcid_locator);
 
        if (ne == NULL)
                return FALSE;
@@ -509,7 +509,7 @@ ves_icall_System_Globalization_CultureInfo_construct_internal_locale_from_name (
        char *n;
        
        n = mono_string_to_utf8 (name);
-       ne = mono_binary_search (n, culture_name_entries, NUM_CULTURE_ENTRIES,
+       ne = (const CultureInfoNameEntry *)mono_binary_search (n, culture_name_entries, NUM_CULTURE_ENTRIES,
                        sizeof (CultureInfoNameEntry), culture_name_locator);
 
        if (ne == NULL) {
@@ -557,7 +557,7 @@ ves_icall_System_Globalization_RegionInfo_construct_internal_region_from_name (M
        char *n;
        
        n = mono_string_to_utf8 (name);
-       ne = mono_binary_search (n, region_name_entries, NUM_REGION_ENTRIES,
+       ne = (const RegionInfoNameEntry *)mono_binary_search (n, region_name_entries, NUM_REGION_ENTRIES,
                sizeof (RegionInfoNameEntry), region_name_locator);
 
        if (ne == NULL) {
@@ -666,12 +666,12 @@ int ves_icall_System_Threading_Thread_current_lcid (void)
        return(0x007F);
 }
 
-MonoString *ves_icall_System_String_InternalReplace_Str_Comp (MonoString *this_obj, MonoString *old, MonoString *new, MonoCompareInfo *comp)
+MonoString *ves_icall_System_String_InternalReplace_Str_Comp (MonoString *this_obj, MonoString *old, MonoString *new_, MonoCompareInfo *comp)
 {
        /* Do a normal ascii string compare and replace, as we only
         * know the invariant locale if we dont have ICU
         */
-       return(string_invariant_replace (this_obj, old, new));
+       return(string_invariant_replace (this_obj, old, new_));
 }
 
 static gint32 string_invariant_compare_char (gunichar2 c1, gunichar2 c2,
index d6ce9a031ed121ef7e43230321bd5960b3b10d01..830434175405988088d7f58a2f85b85de36d5bd9 100644 (file)
@@ -436,7 +436,7 @@ mono_ftnptr_to_delegate (MonoClass *klass, gpointer ftn)
                else
                        d = NULL;
        } else {
-               d = g_hash_table_lookup (delegate_hash_table, ftn);
+               d = (MonoDelegate *)g_hash_table_lookup (delegate_hash_table, ftn);
                mono_marshal_unlock ();
        }
        if (d == NULL) {
@@ -502,11 +502,11 @@ mono_delegate_free_ftnptr (MonoDelegate *delegate)
                void **method_data;
                MonoMethod *method;
 
-               ji = mono_jit_info_table_find (mono_domain_get (), mono_get_addr_from_ftnptr (ptr));
+               ji = mono_jit_info_table_find (mono_domain_get (), (char *)mono_get_addr_from_ftnptr (ptr));
                g_assert (ji);
 
                method = mono_jit_info_get_method (ji);
-               method_data = ((MonoMethodWrapper*)method)->method_data;
+               method_data = (void **)((MonoMethodWrapper*)method)->method_data;
 
                /*the target gchandle is the first entry after size and the wrapper itself.*/
                gchandle = GPOINTER_TO_UINT (method_data [2]);
@@ -580,9 +580,9 @@ mono_array_to_lparray (MonoArray *array)
                break;
        case MONO_TYPE_CLASS:
                nativeArraySize = array->max_length;
-               nativeArray = malloc(sizeof(gpointer) * nativeArraySize);
+               nativeArray = (void **)malloc(sizeof(gpointer) * nativeArraySize);
                for(i = 0; i < nativeArraySize; ++i)    
-                       nativeArray[i] = ves_icall_System_Runtime_InteropServices_Marshal_GetIUnknownForObjectInternal(((gpointer*)array->vector)[i]);
+                       nativeArray[i] = ves_icall_System_Runtime_InteropServices_Marshal_GetIUnknownForObjectInternal(((MonoObject **)array->vector)[i]);
                return nativeArray;
        case MONO_TYPE_U1:
        case MONO_TYPE_BOOLEAN:
@@ -647,7 +647,7 @@ mono_byvalarray_to_array (MonoArray *arr, gpointer native_arr, MonoClass *elclas
                guint16 *ut;
                glong items_written;
 
-               ut = g_utf8_to_utf16 (native_arr, elnum, NULL, &items_written, &error);
+               ut = g_utf8_to_utf16 ((const gchar *)native_arr, elnum, NULL, &items_written, &error);
 
                if (!error) {
                        memcpy (mono_array_addr (arr, guint16, 0), ut, items_written * sizeof (guint16));
@@ -847,7 +847,7 @@ mono_string_builder_to_utf8 (MonoStringBuilder *sb)
                return NULL;
        } else {
                guint len = mono_string_builder_capacity (sb) + 1;
-               gchar *res = mono_marshal_alloc (len * sizeof (gchar));
+               gchar *res = (gchar *)mono_marshal_alloc (len * sizeof (gchar));
                g_assert (str_len < len);
                memcpy (res, tmp, str_len * sizeof (gchar));
                res[str_len] = '\0';
@@ -882,7 +882,7 @@ mono_string_builder_to_utf16 (MonoStringBuilder *sb)
        if (len == 0)
                len = 1;
 
-       gunichar2 *str = mono_marshal_alloc ((len + 1) * sizeof (gunichar2));
+       gunichar2 *str = (gunichar2 *)mono_marshal_alloc ((len + 1) * sizeof (gunichar2));
        str[len] = '\0';
 
        if (len == 0)
@@ -1798,7 +1798,7 @@ emit_struct_conv_full (MonoMethodBuilder *mb, MonoClass *klass, gboolean to_obje
                if (ftype->attrs & FIELD_ATTRIBUTE_STATIC)
                        continue;
 
-               ntype = mono_type_to_unmanaged (ftype, info->fields [i].mspec, TRUE, klass->unicode, &conv);
+               ntype = (MonoMarshalNative)mono_type_to_unmanaged (ftype, info->fields [i].mspec, TRUE, klass->unicode, &conv);
 
                if (last_field) {
                        msize = klass->instance_size - info->fields [i].field->offset;
@@ -1977,7 +1977,7 @@ emit_struct_conv_full (MonoMethodBuilder *mb, MonoClass *klass, gboolean to_obje
 static void
 emit_struct_conv (MonoMethodBuilder *mb, MonoClass *klass, gboolean to_object)
 {
-       emit_struct_conv_full (mb, klass, to_object, -1);
+       emit_struct_conv_full (mb, klass, to_object, (MonoMarshalNative)-1);
 }
 
 static void
@@ -2225,7 +2225,7 @@ mono_marshal_get_string_to_ptr_conv (MonoMethodPInvoke *piinfo, MonoMarshalSpec
        case MONO_NATIVE_BSTR:
                return MONO_MARSHAL_CONV_STR_BSTR;
        default:
-               return -1;
+               return (MonoMarshalConv)-1;
        }
 }
 
@@ -2245,7 +2245,7 @@ mono_marshal_get_stringbuilder_to_ptr_conv (MonoMethodPInvoke *piinfo, MonoMarsh
                return MONO_MARSHAL_CONV_SB_LPTSTR;
                break;
        default:
-               return -1;
+               return (MonoMarshalConv)-1;
        }
 }
 
@@ -2268,7 +2268,7 @@ mono_marshal_get_ptr_to_string_conv (MonoMethodPInvoke *piinfo, MonoMarshalSpec
        case MONO_NATIVE_BSTR:
                return MONO_MARSHAL_CONV_BSTR_STR;
        default:
-               return -1;
+               return (MonoMarshalConv)-1;
        }
 }
 
@@ -2294,7 +2294,7 @@ mono_marshal_get_ptr_to_stringbuilder_conv (MonoMethodPInvoke *piinfo, MonoMarsh
                return MONO_MARSHAL_CONV_LPTSTR_SB;
                break;
        default:
-               return -1;
+               return (MonoMarshalConv)-1;
        }
 }
 
@@ -2358,7 +2358,7 @@ mono_marshal_find_in_cache (GHashTable *cache, gpointer key)
        MonoMethod *res;
 
        mono_marshal_lock ();
-       res = g_hash_table_lookup (cache, key);
+       res = (MonoMethod *)g_hash_table_lookup (cache, key);
        mono_marshal_unlock ();
        return res;
 }
@@ -2392,13 +2392,13 @@ mono_mb_create_and_cache_full (GHashTable *cache, gpointer key,
                *out_found = FALSE;
 
        mono_marshal_lock ();
-       res = g_hash_table_lookup (cache, key);
+       res = (MonoMethod *)g_hash_table_lookup (cache, key);
        mono_marshal_unlock ();
        if (!res) {
                MonoMethod *newm;
                newm = mono_mb_create_method (mb, sig, max_stack);
                mono_marshal_lock ();
-               res = g_hash_table_lookup (cache, key);
+               res = (MonoMethod *)g_hash_table_lookup (cache, key);
                if (!res) {
                        res = newm;
                        g_hash_table_insert (cache, key, res);
@@ -2489,7 +2489,7 @@ mono_marshal_get_wrapper_info (MonoMethod *wrapper)
 {
        g_assert (wrapper->wrapper_type);
 
-       return mono_method_get_wrapper_data (wrapper, 1);
+       return (WrapperInfo *)mono_method_get_wrapper_data (wrapper, 1);
 }
 
 /*
@@ -2506,7 +2506,7 @@ mono_marshal_set_wrapper_info (MonoMethod *method, WrapperInfo *info)
        if (method->wrapper_type == MONO_WRAPPER_NONE || method->wrapper_type == MONO_WRAPPER_DYNAMIC_METHOD)
                return;
 
-       datav = ((MonoMethodWrapper *)method)->method_data;
+       datav = (void **)((MonoMethodWrapper *)method)->method_data;
        datav [1] = info;
 }
 
@@ -2515,7 +2515,7 @@ mono_wrapper_info_create (MonoMethodBuilder *mb, WrapperSubtype subtype)
 {
        WrapperInfo *info;
 
-       info = mono_image_alloc0 (mb->method->klass->image, sizeof (WrapperInfo));
+       info = (WrapperInfo *)mono_image_alloc0 (mb->method->klass->image, sizeof (WrapperInfo));
        info->subtype = subtype;
        return info;
 }
@@ -2595,7 +2595,7 @@ check_generic_wrapper_cache (GHashTable *cache, MonoMethod *orig_method, gpointe
                /* Cache it */
                mono_memory_barrier ();
                mono_marshal_lock ();
-               res = g_hash_table_lookup (cache, key);
+               res = (MonoMethod *)g_hash_table_lookup (cache, key);
                if (!res) {
                        g_hash_table_insert (cache, key, inst);
                        res = inst;
@@ -2619,7 +2619,7 @@ cache_generic_wrapper (GHashTable *cache, MonoMethod *orig_method, MonoMethod *d
        g_assert (mono_error_ok (&error)); /* FIXME don't swallow the error */
        mono_memory_barrier ();
        mono_marshal_lock ();
-       res = g_hash_table_lookup (cache, key);
+       res = (MonoMethod *)g_hash_table_lookup (cache, key);
        if (!res) {
                g_hash_table_insert (cache, key, inst);
                res = inst;
@@ -2653,7 +2653,7 @@ check_generic_delegate_wrapper_cache (GHashTable *cache, MonoMethod *orig_method
                /* Cache it */
                mono_memory_barrier ();
                mono_marshal_lock ();
-               res = g_hash_table_lookup (cache, orig_method->klass);
+               res = (MonoMethod *)g_hash_table_lookup (cache, orig_method->klass);
                if (!res) {
                        g_hash_table_insert (cache, orig_method->klass, inst);
                        res = inst;
@@ -2678,7 +2678,7 @@ cache_generic_delegate_wrapper (GHashTable *cache, MonoMethod *orig_method, Mono
 
        mono_memory_barrier ();
        mono_marshal_lock ();
-       res = g_hash_table_lookup (cache, orig_method->klass);
+       res = (MonoMethod *)g_hash_table_lookup (cache, orig_method->klass);
        if (!res) {
                g_hash_table_insert (cache, orig_method->klass, inst);
                res = inst;
@@ -2790,7 +2790,7 @@ mono_delegate_end_invoke (MonoDelegate *delegate, gpointer *params)
 
        msg = mono_method_call_message_new (method, params, NULL, NULL, NULL);
 
-       ares = mono_array_get (msg->args, gpointer, sig->param_count - 1);
+       ares = (MonoAsyncResult *)mono_array_get (msg->args, gpointer, sig->param_count - 1);
        if (ares == NULL) {
                mono_raise_exception (mono_exception_from_name_msg (mono_defaults.corlib, "System.Runtime.Remoting", "RemotingException", "The async result object is null or of an unexpected type."));
                return NULL;
@@ -3017,7 +3017,7 @@ sig_to_rgctx_sig (MonoMethodSignature *sig)
        MonoMethodSignature *res;
        int i;
 
-       res = g_malloc (MONO_SIZEOF_METHOD_SIGNATURE + (sig->param_count + 1) * sizeof (MonoType*));
+       res = (MonoMethodSignature *)g_malloc (MONO_SIZEOF_METHOD_SIGNATURE + (sig->param_count + 1) * sizeof (MonoType*));
        memcpy (res, sig, MONO_SIZEOF_METHOD_SIGNATURE);
        res->param_count = sig->param_count + 1;
        for (i = 0; i < sig->param_count; ++i)
@@ -3130,7 +3130,7 @@ mono_marshal_get_delegate_invoke_internal (MonoMethod *method, gboolean callvirt
                cache = *cache_ptr;
                key.sig = invoke_sig;
                key.pointer = target_method;
-               res = g_hash_table_lookup (cache, &key);
+               res = (MonoMethod *)g_hash_table_lookup (cache, &key);
                mono_marshal_unlock ();
                if (res)
                        return res;
@@ -3455,7 +3455,7 @@ lookup_string_ctor_signature (MonoMethodSignature *sig)
        mono_marshal_lock ();
        callsig = NULL;
        for (item = strsig_list; item; item = item->next) {
-               cs = item->data;
+               cs = (CtorSigPair *)item->data;
                /* mono_metadata_signature_equal () is safe to call with the marshal lock
                 * because it is lock-free.
                 */
@@ -3590,7 +3590,7 @@ static void
 emit_invoke_call (MonoMethodBuilder *mb, MonoMethod *method,
                                  MonoMethodSignature *sig, MonoMethodSignature *callsig,
                                  int loc_res,
-                                 gboolean virtual, gboolean need_direct_wrapper)
+                                 gboolean virtual_, gboolean need_direct_wrapper)
 {
        static MonoString *string_dummy = NULL;
        int i;
@@ -3603,7 +3603,7 @@ emit_invoke_call (MonoMethodBuilder *mb, MonoMethod *method,
                string_dummy = mono_string_new_wrapper ("dummy");
        }
 
-       if (virtual) {
+       if (virtual_) {
                g_assert (sig->hasthis);
                g_assert (method->flags & METHOD_ATTRIBUTE_VIRTUAL);
        }
@@ -3703,7 +3703,7 @@ handle_enum:
                }
        }
        
-       if (virtual) {
+       if (virtual_) {
                mono_mb_emit_op (mb, CEE_CALLVIRT, method);
        } else if (need_direct_wrapper) {
                mono_mb_emit_op (mb, CEE_CALL, method);
@@ -3786,7 +3786,7 @@ handle_enum:
 static void
 emit_runtime_invoke_body (MonoMethodBuilder *mb, MonoClass *target_klass, MonoMethod *method,
                                                  MonoMethodSignature *sig, MonoMethodSignature *callsig,
-                                                 gboolean virtual, gboolean need_direct_wrapper)
+                                                 gboolean virtual_, gboolean need_direct_wrapper)
 {
        gint32 labels [16];
        MonoExceptionClause *clause;
@@ -3821,12 +3821,12 @@ emit_runtime_invoke_body (MonoMethodBuilder *mb, MonoClass *target_klass, MonoMe
         */
        labels [1] = mono_mb_get_label (mb);
        emit_thread_force_interrupt_checkpoint (mb);
-       emit_invoke_call (mb, method, sig, callsig, loc_res, virtual, need_direct_wrapper);
+       emit_invoke_call (mb, method, sig, callsig, loc_res, virtual_, need_direct_wrapper);
 
        labels [2] = mono_mb_emit_branch (mb, CEE_LEAVE);
 
        /* Add a try clause around the call */
-       clause = mono_image_alloc0 (target_klass->image, sizeof (MonoExceptionClause));
+       clause = (MonoExceptionClause *)mono_image_alloc0 (target_klass->image, sizeof (MonoExceptionClause));
        clause->flags = MONO_EXCEPTION_CLAUSE_NONE;
        clause->data.catch_class = mono_defaults.exception_class;
        clause->try_offset = labels [1];
@@ -3855,7 +3855,7 @@ emit_runtime_invoke_body (MonoMethodBuilder *mb, MonoClass *target_klass, MonoMe
         */
        mono_mb_patch_branch (mb, labels [0]);
        emit_thread_force_interrupt_checkpoint (mb);
-       emit_invoke_call (mb, method, sig, callsig, loc_res, virtual, need_direct_wrapper);
+       emit_invoke_call (mb, method, sig, callsig, loc_res, virtual_, need_direct_wrapper);
 
        mono_mb_emit_ldloc (mb, 0);
        mono_mb_emit_byte (mb, CEE_RET);
@@ -3875,7 +3875,7 @@ emit_runtime_invoke_body (MonoMethodBuilder *mb, MonoClass *target_klass, MonoMe
  * first argument (after 'this').
  */
 MonoMethod *
-mono_marshal_get_runtime_invoke (MonoMethod *method, gboolean virtual, gboolean pass_rgctx)
+mono_marshal_get_runtime_invoke (MonoMethod *method, gboolean virtual_, gboolean pass_rgctx)
 {
        MonoMethodSignature *sig, *csig, *callsig;
        MonoMethodBuilder *mb;
@@ -3901,14 +3901,14 @@ mono_marshal_get_runtime_invoke (MonoMethod *method, gboolean virtual, gboolean
                finalize_signature->hasthis = 1;
        }
 
-       if (virtual)
+       if (virtual_)
                need_direct_wrapper = TRUE;
 
        /* 
         * Use a separate cache indexed by methods to speed things up and to avoid the
         * boundless mempool growth caused by the signature_dup stuff below.
         */
-       if (virtual)
+       if (virtual_)
                cache = get_cache (&method->klass->image->runtime_invoke_vcall_cache, mono_aligned_addr_hash, NULL);
        else
                cache = get_cache (&mono_method_get_wrapper_cache (method)->runtime_invoke_direct_cache, mono_aligned_addr_hash, NULL);
@@ -3975,7 +3975,7 @@ mono_marshal_get_runtime_invoke (MonoMethod *method, gboolean virtual, gboolean
 
                /* from mono_marshal_find_in_cache */
                mono_marshal_lock ();
-               res = g_hash_table_lookup (cache, callsig);
+               res = (MonoMethod *)g_hash_table_lookup (cache, callsig);
                mono_marshal_unlock ();
 
                if (res) {
@@ -4005,7 +4005,7 @@ mono_marshal_get_runtime_invoke (MonoMethod *method, gboolean virtual, gboolean
        csig->call_convention = MONO_CALL_C;
 #endif
 
-       name = mono_signature_to_name (callsig, pass_rgctx ? (virtual ? "runtime_invoke_virtual_rgctx" : "runtime_invoke_rgctx") : (virtual ? "runtime_invoke_virtual" : "runtime_invoke"));
+       name = mono_signature_to_name (callsig, pass_rgctx ? (virtual_ ? "runtime_invoke_virtual_rgctx" : "runtime_invoke_rgctx") : (virtual_ ? "runtime_invoke_virtual" : "runtime_invoke"));
        mb = mono_mb_new (target_klass, name,  MONO_WRAPPER_RUNTIME_INVOKE);
        g_free (name);
 
@@ -4016,20 +4016,20 @@ mono_marshal_get_runtime_invoke (MonoMethod *method, gboolean virtual, gboolean
        param_names [3] = "method";
        mono_mb_set_param_names (mb, param_names);
 
-       emit_runtime_invoke_body (mb, target_klass, method, sig, callsig, virtual, need_direct_wrapper);
+       emit_runtime_invoke_body (mb, target_klass, method, sig, callsig, virtual_, need_direct_wrapper);
 #endif
 
        if (need_direct_wrapper) {
 #ifndef DISABLE_JIT
                mb->skip_visibility = 1;
 #endif
-               info = mono_wrapper_info_create (mb, virtual ? WRAPPER_SUBTYPE_RUNTIME_INVOKE_VIRTUAL : WRAPPER_SUBTYPE_RUNTIME_INVOKE_DIRECT);
+               info = mono_wrapper_info_create (mb, virtual_ ? WRAPPER_SUBTYPE_RUNTIME_INVOKE_VIRTUAL : WRAPPER_SUBTYPE_RUNTIME_INVOKE_DIRECT);
                info->d.runtime_invoke.method = method;
                res = mono_mb_create_and_cache_full (cache, method, mb, csig, sig->param_count + 16, info, NULL);
        } else {
                /* taken from mono_mb_create_and_cache */
                mono_marshal_lock ();
-               res = g_hash_table_lookup (cache, callsig);
+               res = (MonoMethod *)g_hash_table_lookup (cache, callsig);
                mono_marshal_unlock ();
 
                info = mono_wrapper_info_create (mb, WRAPPER_SUBTYPE_RUNTIME_INVOKE_NORMAL);
@@ -4042,7 +4042,7 @@ mono_marshal_get_runtime_invoke (MonoMethod *method, gboolean virtual, gboolean
                        newm = mono_mb_create (mb, csig, sig->param_count + 16, info);
 
                        mono_marshal_lock ();
-                       res = g_hash_table_lookup (cache, callsig);
+                       res = (MonoMethod *)g_hash_table_lookup (cache, callsig);
                        if (!res) {
                                GHashTable *direct_cache;
                                res = newm;
@@ -4129,7 +4129,7 @@ mono_marshal_get_runtime_invoke_dynamic (void)
 
        pos = mono_mb_emit_branch (mb, CEE_LEAVE);
 
-       clause = mono_image_alloc0 (mono_defaults.corlib, sizeof (MonoExceptionClause));
+       clause = (MonoExceptionClause *)mono_image_alloc0 (mono_defaults.corlib, sizeof (MonoExceptionClause));
        clause->flags = MONO_EXCEPTION_CLAUSE_FILTER;
        clause->try_len = mono_mb_get_label (mb);
 
@@ -6007,7 +6007,7 @@ emit_marshal_array (EmitMarshalContext *m, int argnum, MonoType *t,
                                conv = mono_marshal_get_stringbuilder_to_ptr_conv (m->piinfo, spec);
                        }
                        else
-                               conv = -1;
+                               conv = (MonoMarshalConv)-1;
 
                        if (is_string && conv == -1) {
                                char *msg = g_strdup_printf ("string/stringbuilder marshalling conversion %d not implemented", encoding);
@@ -6083,7 +6083,7 @@ emit_marshal_array (EmitMarshalContext *m, int argnum, MonoType *t,
                                mono_mb_emit_stloc (mb, 1);
 
                                /* emit valuetype conversion code */
-                               emit_struct_conv_full (mb, eklass, FALSE, eklass == mono_defaults.char_class ? encoding : -1);
+                               emit_struct_conv_full (mb, eklass, FALSE, eklass == mono_defaults.char_class ? encoding : (MonoMarshalNative)-1);
                        }
 
                        mono_mb_emit_add_to_local (mb, index_var, 1);
@@ -6228,7 +6228,7 @@ emit_marshal_array (EmitMarshalContext *m, int argnum, MonoType *t,
                                        mono_mb_emit_stloc (mb, 1);
 
                                        /* emit valuetype conversion code */
-                                       emit_struct_conv_full (mb, eklass, TRUE, eklass == mono_defaults.char_class ? encoding : -1);
+                                       emit_struct_conv_full (mb, eklass, TRUE, eklass == mono_defaults.char_class ? encoding : (MonoMarshalNative)-1);
                                }
 
                                if (need_free) {
@@ -6328,7 +6328,7 @@ emit_marshal_array (EmitMarshalContext *m, int argnum, MonoType *t,
                        conv = mono_marshal_get_ptr_to_stringbuilder_conv (m->piinfo, spec, &need_free);
                }
                else
-                       conv = -1;
+                       conv = (MonoMarshalConv)-1;
 
                mono_marshal_load_type_info (eklass);
 
@@ -6491,7 +6491,7 @@ emit_marshal_array (EmitMarshalContext *m, int argnum, MonoType *t,
                        conv = mono_marshal_get_stringbuilder_to_ptr_conv (m->piinfo, spec);
                }
                else
-                       conv = -1;
+                       conv = (MonoMarshalConv)-1;
 
                mono_marshal_load_type_info (eklass);
 
@@ -6573,7 +6573,7 @@ emit_marshal_array (EmitMarshalContext *m, int argnum, MonoType *t,
                MonoClass *eklass;
                guint32 label1, label2, label3;
                int index_var, src, dest, esize;
-               MonoMarshalConv conv = -1;
+               MonoMarshalConv conv = (MonoMarshalConv)-1;
                gboolean is_string = FALSE;
                
                g_assert (!t->byref);
@@ -7131,8 +7131,8 @@ mono_marshal_emit_native_wrapper (MonoImage *image, MonoMethodBuilder *mb, MonoM
        }
 
        /* we first do all conversions */
-       tmp_locals = alloca (sizeof (int) * sig->param_count);
-       m.orig_conv_args = alloca (sizeof (int) * (sig->param_count + 1));
+       tmp_locals = (int *)alloca (sizeof (int) * sig->param_count);
+       m.orig_conv_args = (int *)alloca (sizeof (int) * (sig->param_count + 1));
 
        for (i = 0; i < sig->param_count; i ++) {
                tmp_locals [i] = emit_marshal (&m, i + param_shift, sig->params [i], mspecs [i + 1], 0, &csig->params [i], MARSHAL_ACTION_CONV_IN);
@@ -7755,7 +7755,7 @@ mono_marshal_emit_managed_wrapper (MonoMethodBuilder *mb, MonoMethodSignature *i
        }
 
        /* we first do all conversions */
-       tmp_locals = alloca (sizeof (int) * sig->param_count);
+       tmp_locals = (int *)alloca (sizeof (int) * sig->param_count);
        for (i = 0; i < sig->param_count; i ++) {
                MonoType *t = sig->params [i];
 
@@ -8874,7 +8874,7 @@ mono_marshal_get_synchronized_wrapper (MonoMethod *method)
        this_local = mono_mb_add_local (mb, &mono_defaults.object_class->byval_arg);
        taken_local = mono_mb_add_local (mb, &mono_defaults.boolean_class->byval_arg);
 
-       clause = mono_image_alloc0 (method->klass->image, sizeof (MonoExceptionClause));
+       clause = (MonoExceptionClause *)mono_image_alloc0 (method->klass->image, sizeof (MonoExceptionClause));
        clause->flags = MONO_EXCEPTION_CLAUSE_FINALLY;
 #endif
 
@@ -9517,7 +9517,7 @@ mono_marshal_get_virtual_stelemref_wrappers (int *nwrappers)
        int i;
 
        *nwrappers = STELEMREF_KIND_COUNT;
-       res = g_malloc0 (STELEMREF_KIND_COUNT * sizeof (MonoMethod*));
+       res = (MonoMethod **)g_malloc0 (STELEMREF_KIND_COUNT * sizeof (MonoMethod*));
        for (i = 0; i < STELEMREF_KIND_COUNT; ++i)
                res [i] = get_virtual_stelemref_wrapper (i);
        return res;
@@ -10062,7 +10062,7 @@ mono_marshal_string_to_utf16_copy (MonoString *s)
        if (s == NULL) {
                return NULL;
        } else {
-               gunichar2 *res = mono_marshal_alloc ((mono_string_length (s) * 2) + 2);
+               gunichar2 *res = (gunichar2 *)mono_marshal_alloc ((mono_string_length (s) * 2) + 2);
                memcpy (res, mono_string_chars (s), mono_string_length (s) * 2);
                res [mono_string_length (s)] = 0;
                return res;
@@ -10420,7 +10420,7 @@ ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni (MonoString
                gunichar2 *res = ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal 
                        ((mono_string_length (string) + 1) * 2);
 #else
-               gunichar2 *res = g_malloc ((mono_string_length (string) + 1) * 2);              
+               gunichar2 *res = (gunichar2 *)g_malloc ((mono_string_length (string) + 1) * 2);
 #endif
                memcpy (res, mono_string_chars (string), mono_string_length (string) * 2);
                res [mono_string_length (string)] = 0;
@@ -10619,7 +10619,7 @@ ves_icall_System_Runtime_InteropServices_Marshal_GetDelegateForFunctionPointerIn
 static gboolean
 mono_marshal_is_loading_type_info (MonoClass *klass)
 {
-       GSList *loads_list = mono_native_tls_get_value (load_type_info_tls_id);
+       GSList *loads_list = (GSList *)mono_native_tls_get_value (load_type_info_tls_id);
 
        return g_slist_find (loads_list, klass) != NULL;
 }
@@ -10660,7 +10660,7 @@ mono_marshal_load_type_info (MonoClass* klass)
         * under initialization in a TLS list.
         */
        g_assert (!mono_marshal_is_loading_type_info (klass));
-       loads_list = mono_native_tls_get_value (load_type_info_tls_id);
+       loads_list = (GSList *)mono_native_tls_get_value (load_type_info_tls_id);
        loads_list = g_slist_prepend (loads_list, klass);
        mono_native_tls_set_value (load_type_info_tls_id, loads_list);
        
@@ -10676,7 +10676,7 @@ mono_marshal_load_type_info (MonoClass* klass)
        layout = klass->flags & TYPE_ATTRIBUTE_LAYOUT_MASK;
 
        /* The mempool is protected by the loader lock */
-       info = mono_image_alloc0 (klass->image, MONO_SIZEOF_MARSHAL_TYPE + sizeof (MonoMarshalField) * count);
+       info = (MonoMarshalType *)mono_image_alloc0 (klass->image, MONO_SIZEOF_MARSHAL_TYPE + sizeof (MonoMarshalField) * count);
        info->num_fields = count;
        
        /* Try to find a size for this type in metadata */
@@ -10767,7 +10767,7 @@ mono_marshal_load_type_info (MonoClass* klass)
                mono_marshal_load_type_info (klass->element_class);
        }
 
-       loads_list = mono_native_tls_get_value (load_type_info_tls_id);
+       loads_list = (GSList *)mono_native_tls_get_value (load_type_info_tls_id);
        loads_list = g_slist_remove (loads_list, klass);
        mono_native_tls_set_value (load_type_info_tls_id, loads_list);
 
@@ -11103,7 +11103,7 @@ mono_marshal_free_asany (MonoObject *o, gpointer ptr, MonoMarshalNative string_e
                }
 
                if (!((param_attrs & PARAM_ATTRIBUTE_OUT) && !(param_attrs & PARAM_ATTRIBUTE_IN))) {
-                       mono_struct_delete_old (klass, ptr);
+                       mono_struct_delete_old (klass, (char *)ptr);
                }
 
                mono_marshal_free (ptr);
@@ -11297,7 +11297,7 @@ mono_marshal_get_thunk_invoke_wrapper (MonoMethod *method)
        }
 
        /* try */
-       clause = mono_image_alloc0 (image, sizeof (MonoExceptionClause));
+       clause = (MonoExceptionClause *)mono_image_alloc0 (image, sizeof (MonoExceptionClause));
        clause->try_offset = mono_mb_get_label (mb);
 
        /* push method's args */
index 7747ce23863f64bfba00e5b3f69872575436467a..abbdbdbace3b167545217577638bccda303b010a 100644 (file)
@@ -107,7 +107,7 @@ mono_mempool_new_size (int initial_size)
                initial_size = MONO_MEMPOOL_MINSIZE;
 #endif
 
-       pool = g_malloc (initial_size);
+       pool = (MonoMemPool *)g_malloc (initial_size);
 
        pool->next = NULL;
        pool->pos = (guint8*)pool + SIZEOF_MEM_POOL; // Start after header
@@ -277,7 +277,7 @@ mono_mempool_alloc (MonoMemPool *pool, guint size)
                // (In individual allocation mode, the constant will be 0 and this path will always be taken)
                if (size >= MONO_MEMPOOL_PREFER_INDIVIDUAL_ALLOCATION_SIZE) {
                        guint new_size = SIZEOF_MEM_POOL + size;
-                       MonoMemPool *np = g_malloc (new_size);
+                       MonoMemPool *np = (MonoMemPool *)g_malloc (new_size);
 
                        np->next = pool->next;
                        np->size = new_size;
@@ -289,7 +289,7 @@ mono_mempool_alloc (MonoMemPool *pool, guint size)
                } else {
                        // Notice: any unused memory at the end of the old head becomes simply abandoned in this case until the mempool is freed (see Bugzilla #35136)
                        guint new_size = get_next_size (pool, size);
-                       MonoMemPool *np = g_malloc (new_size);
+                       MonoMemPool *np = (MonoMemPool *)g_malloc (new_size);
 
                        np->next = pool->next;
                        np->size = new_size;
@@ -373,7 +373,7 @@ mono_mempool_strdup (MonoMemPool *pool,
                return NULL;
 
        l = strlen (s);
-       res = mono_mempool_alloc (pool, l + 1);
+       res = (char *)mono_mempool_alloc (pool, l + 1);
        memcpy (res, s, l + 1);
 
        return res;
index 1a1597f6ca73e6d1ada66adc0c16f1594f772eb6..65f3bba5686998a1b5b7ea59f79fd20ffbd4cf70 100644 (file)
@@ -332,7 +332,7 @@ bounds_check_virtual_address (VerifyContext *ctx, guint32 rva, guint32 size)
                return FALSE;
 
        if (ctx->stage > STAGE_PE) {
-               MonoCLIImageInfo *iinfo = ctx->image->image_info;
+               MonoCLIImageInfo *iinfo = (MonoCLIImageInfo *)ctx->image->image_info;
                const int top = iinfo->cli_section_count;
                MonoSectionTable *tables = iinfo->cli_section_tables;
                int i;
@@ -689,7 +689,7 @@ verify_resources_table (VerifyContext *ctx)
 static DataDirectory
 get_data_dir (VerifyContext *ctx, int idx)
 {
-       MonoCLIImageInfo *iinfo = ctx->image->image_info;
+       MonoCLIImageInfo *iinfo = (MonoCLIImageInfo *)ctx->image->image_info;
        MonoPEDirEntry *entry= &iinfo->cli_header.datadir.pe_export_table;
        DataDirectory res;
 
@@ -1069,7 +1069,7 @@ search_sorted_table (VerifyContext *ctx, int table, int column, guint32 coded_to
        base = tinfo->base;
 
        VERIFIER_DEBUG ( printf ("looking token %x table %d col %d rsize %d roff %d\n", coded_token, table, column, locator.col_size, locator.col_offset) );
-       res = mono_binary_search (&locator, base, tinfo->rows, tinfo->row_size, token_locator);
+       res = (const char *)mono_binary_search (&locator, base, tinfo->rows, tinfo->row_size, token_locator);
        if (!res)
                return -1;
 
@@ -1787,7 +1787,7 @@ get_enum_by_encoded_name (VerifyContext *ctx, const char **_ptr, const char *end
                return NULL;
        }
 
-       enum_name = g_memdup (str_start, str_len + 1);
+       enum_name = (char *)g_memdup (str_start, str_len + 1);
        enum_name [str_len] = 0;
        type = mono_reflection_type_from_name (enum_name, ctx->image);
        if (!type) {
@@ -1881,7 +1881,7 @@ handle_enum:
                        } else if (etype == 0x50 || etype == MONO_TYPE_CLASS) {
                                klass = mono_defaults.systemtype_class;
                        } else if ((etype >= MONO_TYPE_BOOLEAN && etype <= MONO_TYPE_STRING) || etype == 0x51) {
-                               simple_type.type = etype == 0x51 ? MONO_TYPE_OBJECT : etype;
+                               simple_type.type = etype == 0x51 ? MONO_TYPE_OBJECT : (MonoTypeEnum)etype;
                                klass = mono_class_from_mono_type (&simple_type);
                        } else
                                FAIL (ctx, g_strdup_printf ("CustomAttribute: Invalid array element type %x", etype));
@@ -1986,7 +1986,7 @@ is_valid_cattr_content (VerifyContext *ctx, MonoMethod *ctor, const char *ptr, g
                        FAIL (ctx, g_strdup_printf ("CustomAttribute: Not enough space for named parameter %d type", i));
 
                if (kind >= MONO_TYPE_BOOLEAN && kind <= MONO_TYPE_STRING) {
-                       simple_type.type = kind;
+                       simple_type.type = (MonoTypeEnum)kind;
                        type = &simple_type;
                } else if (kind == MONO_TYPE_ENUM) {
                        MonoClass *klass = get_enum_by_encoded_name (ctx, &ptr, end);
@@ -2010,7 +2010,7 @@ is_valid_cattr_content (VerifyContext *ctx, MonoMethod *ctor, const char *ptr, g
                        } else if (etype == 0x50 || etype == MONO_TYPE_CLASS) {
                                klass = mono_defaults.systemtype_class;
                        } else if ((etype >= MONO_TYPE_BOOLEAN && etype <= MONO_TYPE_STRING) || etype == 0x51) {
-                               simple_type.type = etype == 0x51 ? MONO_TYPE_OBJECT : etype;
+                               simple_type.type = etype == 0x51 ? MONO_TYPE_OBJECT : (MonoTypeEnum)etype;
                                klass = mono_class_from_mono_type (&simple_type);
                        } else
                                FAIL (ctx, g_strdup_printf ("CustomAttribute: Invalid array element type %x", etype));
@@ -3487,7 +3487,7 @@ verify_exportedtype_table (VerifyContext *ctx)
 static void
 verify_manifest_resource_table (VerifyContext *ctx)
 {
-       MonoCLIImageInfo *iinfo = ctx->image->image_info;
+       MonoCLIImageInfo *iinfo = (MonoCLIImageInfo *)ctx->image->image_info;
        MonoCLIHeader *ch = &iinfo->cli_cli_header;
        MonoTableInfo *table = &ctx->image->tables [MONO_TABLE_MANIFESTRESOURCE];
        guint32 data [MONO_MANIFEST_SIZE], impl_table, token, resources_size;
@@ -3662,15 +3662,15 @@ typedef struct {
 static guint
 typedef_hash (gconstpointer _key)
 {
-       const TypeDefUniqueId *key = _key;
+       const TypeDefUniqueId *key = (const TypeDefUniqueId *)_key;
        return g_str_hash (key->name) ^ g_str_hash (key->name_space) ^ key->resolution_scope; /*XXX better salt the int key*/
 }
 
 static gboolean
 typedef_equals (gconstpointer _a, gconstpointer _b)
 {
-       const TypeDefUniqueId *a = _a;
-       const TypeDefUniqueId *b = _b;
+       const TypeDefUniqueId *a = (const TypeDefUniqueId *)_a;
+       const TypeDefUniqueId *b = (const TypeDefUniqueId *)_b;
        return !strcmp (a->name, b->name) && !strcmp (a->name_space, b->name_space) && a->resolution_scope == b->resolution_scope;
 }
 
@@ -3878,7 +3878,7 @@ cleanup_context_checked (VerifyContext *ctx, MonoError *error)
 {
        g_free (ctx->sections);
        if (ctx->errors) {
-               MonoVerifyInfo *info = ctx->errors->data;
+               MonoVerifyInfo *info = (MonoVerifyInfo *)ctx->errors->data;
                mono_error_set_bad_image (error, ctx->image, "%s", info->message);
                mono_free_verify_list (ctx->errors);
        }
index 7aa5300a753aaeebd2063a4603a4b57195efea61..e50ad0288c968135460f054b7e73e34f5406f363 100644 (file)
@@ -1333,19 +1333,19 @@ mono_metadata_parse_array_internal (MonoImage *m, MonoGenericContainer *containe
        if (!etype)
                return NULL;
 
-       array = transient ? g_malloc0 (sizeof (MonoArrayType)) : mono_image_alloc0 (m, sizeof (MonoArrayType));
+       array = transient ? (MonoArrayType *)g_malloc0 (sizeof (MonoArrayType)) : (MonoArrayType *)mono_image_alloc0 (m, sizeof (MonoArrayType));
        array->eklass = mono_class_from_mono_type (etype);
        array->rank = mono_metadata_decode_value (ptr, &ptr);
 
        array->numsizes = mono_metadata_decode_value (ptr, &ptr);
        if (array->numsizes)
-               array->sizes = transient ? g_malloc0 (sizeof (int) * array->numsizes) : mono_image_alloc0 (m, sizeof (int) * array->numsizes);
+               array->sizes = transient ? (int *)g_malloc0 (sizeof (int) * array->numsizes) : (int *)mono_image_alloc0 (m, sizeof (int) * array->numsizes);
        for (i = 0; i < array->numsizes; ++i)
                array->sizes [i] = mono_metadata_decode_value (ptr, &ptr);
 
        array->numlobounds = mono_metadata_decode_value (ptr, &ptr);
        if (array->numlobounds)
-               array->lobounds = transient ? g_malloc0 (sizeof (int) * array->numlobounds) : mono_image_alloc0 (m, sizeof (int) * array->numlobounds);
+               array->lobounds = transient ? (int *)g_malloc0 (sizeof (int) * array->numlobounds) : (int *)mono_image_alloc0 (m, sizeof (int) * array->numlobounds);
        for (i = 0; i < array->numlobounds; ++i)
                array->lobounds [i] = mono_metadata_decode_signed_value (ptr, &ptr);
 
@@ -1654,7 +1654,7 @@ mono_metadata_parse_type_internal (MonoImage *m, MonoGenericContainer *container
                int size;
 
                size = MONO_SIZEOF_TYPE + ((gint32)count) * sizeof (MonoCustomMod);
-               type = transient ? g_malloc0 (size) : mono_image_alloc0 (m, size);
+               type = transient ? (MonoType *)g_malloc0 (size) : (MonoType *)mono_image_alloc0 (m, size);
                type->num_mods = count;
                if (count > 64)
                        g_warning ("got more than 64 modifiers in type");
@@ -1728,7 +1728,7 @@ mono_metadata_parse_type_internal (MonoImage *m, MonoGenericContainer *container
                        }
                }
                /* No need to use locking since nobody is modifying the hash table */
-               if ((cached = g_hash_table_lookup (type_cache, type))) {
+               if ((cached = (MonoType *)g_hash_table_lookup (type_cache, type))) {
                        return cached;
                }
        }
@@ -1736,7 +1736,7 @@ mono_metadata_parse_type_internal (MonoImage *m, MonoGenericContainer *container
        /* printf ("%x %x %c %s\n", type->attrs, type->num_mods, type->pinned ? 'p' : ' ', mono_type_full_name (type)); */
        
        if (type == &stype) { // Type was allocated on the stack, so we need to copy it to safety
-               type = transient ? g_malloc (MONO_SIZEOF_TYPE) : mono_image_alloc (m, MONO_SIZEOF_TYPE);
+               type = transient ? (MonoType *)g_malloc (MONO_SIZEOF_TYPE) : (MonoType *)mono_image_alloc (m, MONO_SIZEOF_TYPE);
                memcpy (type, &stype, MONO_SIZEOF_TYPE);
        }
        return type;
@@ -1865,7 +1865,7 @@ mono_metadata_parse_signature (MonoImage *image, guint32 token)
        const char *ptr;
 
        if (image_is_dynamic (image))
-               return mono_lookup_dynamic_token (image, token, NULL);
+               return (MonoMethodSignature *)mono_lookup_dynamic_token (image, token, NULL);
 
        g_assert (mono_metadata_token_table(token) == MONO_TABLE_STANDALONESIG);
                
@@ -1897,7 +1897,7 @@ mono_metadata_signature_alloc (MonoImage *m, guint32 nparams)
 {
        MonoMethodSignature *sig;
 
-       sig = mono_image_alloc0 (m, MONO_SIZEOF_METHOD_SIGNATURE + ((gint32)nparams) * sizeof (MonoType*));
+       sig = (MonoMethodSignature *)mono_image_alloc0 (m, MONO_SIZEOF_METHOD_SIGNATURE + ((gint32)nparams) * sizeof (MonoType*));
        sig->param_count = nparams;
        sig->sentinelpos = -1;
 
@@ -1914,11 +1914,11 @@ mono_metadata_signature_dup_internal_with_padding (MonoImage *image, MonoMemPool
                sigsize += MONO_SIZEOF_TYPE;
 
        if (image) {
-               ret = mono_image_alloc (image, sigsize);
+               ret = (MonoMethodSignature *)mono_image_alloc (image, sigsize);
        } else if (mp) {
-               ret = mono_mempool_alloc (mp, sigsize);
+               ret = (MonoMethodSignature *)mono_mempool_alloc (mp, sigsize);
        } else {
-               ret = g_malloc (sigsize);
+               ret = (MonoMethodSignature *)g_malloc (sigsize);
        }
 
        memcpy (ret, sig, sig_header_size - padding);
@@ -2188,8 +2188,8 @@ mono_metadata_free_inflated_signature (MonoMethodSignature *sig)
 static gboolean
 inflated_method_equal (gconstpointer a, gconstpointer b)
 {
-       const MonoMethodInflated *ma = a;
-       const MonoMethodInflated *mb = b;
+       const MonoMethodInflated *ma = (const MonoMethodInflated *)a;
+       const MonoMethodInflated *mb = (const MonoMethodInflated *)b;
        if (ma->declaring != mb->declaring)
                return FALSE;
        return mono_metadata_generic_context_equal (&ma->context, &mb->context);
@@ -2198,15 +2198,15 @@ inflated_method_equal (gconstpointer a, gconstpointer b)
 static guint
 inflated_method_hash (gconstpointer a)
 {
-       const MonoMethodInflated *ma = a;
+       const MonoMethodInflated *ma = (const MonoMethodInflated *)a;
        return (mono_metadata_generic_context_hash (&ma->context) ^ mono_aligned_addr_hash (ma->declaring));
 }
 
 static gboolean
 inflated_signature_equal (gconstpointer a, gconstpointer b)
 {
-       const MonoInflatedMethodSignature *sig1 = a;
-       const MonoInflatedMethodSignature *sig2 = b;
+       const MonoInflatedMethodSignature *sig1 = (const MonoInflatedMethodSignature *)a;
+       const MonoInflatedMethodSignature *sig2 = (const MonoInflatedMethodSignature *)b;
 
        /* sig->sig is assumed to be canonized */
        if (sig1->sig != sig2->sig)
@@ -2218,7 +2218,7 @@ inflated_signature_equal (gconstpointer a, gconstpointer b)
 static guint
 inflated_signature_hash (gconstpointer a)
 {
-       const MonoInflatedMethodSignature *sig = a;
+       const MonoInflatedMethodSignature *sig = (const MonoInflatedMethodSignature *)a;
 
        /* sig->sig is assumed to be canonized */
        return mono_metadata_generic_context_hash (&sig->context) ^ mono_aligned_addr_hash (sig->sig);
@@ -2351,7 +2351,7 @@ get_image_set (MonoImage **images, int nimages)
        set = NULL;
        while (l) // Iterate over selected list, looking for an imageset with members equal to our target one
        {
-               set = l->data;
+               set = (MonoImageSet *)l->data;
 
                if (set->nimages == nimages) { // Member count differs, this can't be it
                        // Compare all members to all members-- order might be different
@@ -2660,8 +2660,8 @@ typedef struct {
 static gboolean
 steal_gclass_in_image (gpointer key, gpointer value, gpointer data)
 {
-       MonoGenericClass *gclass = key;
-       CleanForImageUserData *user_data = data;
+       MonoGenericClass *gclass = (MonoGenericClass *)key;
+       CleanForImageUserData *user_data = (CleanForImageUserData *)data;
 
        g_assert (gclass_in_image (gclass, user_data->image));
 
@@ -2672,8 +2672,8 @@ steal_gclass_in_image (gpointer key, gpointer value, gpointer data)
 static gboolean
 steal_ginst_in_image (gpointer key, gpointer value, gpointer data)
 {
-       MonoGenericInst *ginst = key;
-       CleanForImageUserData *user_data = data;
+       MonoGenericInst *ginst = (MonoGenericInst *)key;
+       CleanForImageUserData *user_data = (CleanForImageUserData *)data;
 
        // This doesn't work during corlib compilation
        //g_assert (ginst_in_image (ginst, user_data->image));
@@ -2685,8 +2685,8 @@ steal_ginst_in_image (gpointer key, gpointer value, gpointer data)
 static gboolean
 inflated_method_in_image (gpointer key, gpointer value, gpointer data)
 {
-       MonoImage *image = data;
-       MonoMethodInflated *method = key;
+       MonoImage *image = (MonoImage *)data;
+       MonoMethodInflated *method = (MonoMethodInflated *)key;
 
        // FIXME:
        // https://bugzilla.novell.com/show_bug.cgi?id=458168
@@ -2700,8 +2700,8 @@ inflated_method_in_image (gpointer key, gpointer value, gpointer data)
 static gboolean
 inflated_signature_in_image (gpointer key, gpointer value, gpointer data)
 {
-       MonoImage *image = data;
-       MonoInflatedMethodSignature *sig = key;
+       MonoImage *image = (MonoImage *)data;
+       MonoInflatedMethodSignature *sig = (MonoInflatedMethodSignature *)key;
 
        return signature_in_image (sig->sig, image) ||
                (sig->context.class_inst && ginst_in_image (sig->context.class_inst, image)) ||
@@ -2711,8 +2711,8 @@ inflated_signature_in_image (gpointer key, gpointer value, gpointer data)
 static void
 check_gmethod (gpointer key, gpointer value, gpointer data)
 {
-       MonoMethodInflated *method = key;
-       MonoImage *image = data;
+       MonoMethodInflated *method = (MonoMethodInflated *)key;
+       MonoImage *image = (MonoImage *)data;
 
        if (method->context.class_inst)
                g_assert (!ginst_in_image (method->context.class_inst, image));
@@ -2737,7 +2737,7 @@ check_image_sets (MonoImage *image)
                return;
 
        for (i = 0; i < image_sets->len; ++i) {
-               MonoImageSet *set = g_ptr_array_index (image_sets, i);
+               MonoImageSet *set = (MonoImageSet *)g_ptr_array_index (image_sets, i);
 
                if (!g_slist_find (l, set)) {
                        g_hash_table_foreach (set->gmethod_cache, check_gmethod, image);
@@ -2763,7 +2763,7 @@ mono_metadata_clean_for_image (MonoImage *image)
        /* Collect the items to delete */
        /* delete_image_set () modifies the lists so make a copy */
        for (l = image->image_sets; l; l = l->next) {
-               MonoImageSet *set = l->data;
+               MonoImageSet *set = (MonoImageSet *)l->data;
 
                mono_image_set_lock (set);
                g_hash_table_foreach_steal (set->gclass_cache, steal_gclass_in_image, &gclass_data);
@@ -2775,15 +2775,15 @@ mono_metadata_clean_for_image (MonoImage *image)
 
        /* Delete the removed items */
        for (l = ginst_data.list; l; l = l->next)
-               free_generic_inst (l->data);
+               free_generic_inst ((MonoGenericInst *)l->data);
        for (l = gclass_data.list; l; l = l->next)
-               free_generic_class (l->data);
+               free_generic_class ((MonoGenericClass *)l->data);
        g_slist_free (ginst_data.list);
        g_slist_free (gclass_data.list);
        /* delete_image_set () modifies the lists so make a copy */
        set_list = g_slist_copy (image->image_sets);
        for (l = set_list; l; l = l->next) {
-               MonoImageSet *set = l->data;
+               MonoImageSet *set = (MonoImageSet *)l->data;
 
                delete_image_set (set);
        }
@@ -2869,7 +2869,7 @@ mono_metadata_get_inflated_signature (MonoMethodSignature *sig, MonoGenericConte
 
        mono_image_set_lock (set);
 
-       res = g_hash_table_lookup (set->gsignature_cache, &helper);
+       res = (MonoInflatedMethodSignature *)g_hash_table_lookup (set->gsignature_cache, &helper);
        if (!res) {
                res = g_new0 (MonoInflatedMethodSignature, 1);
                res->sig = sig;
@@ -2920,7 +2920,7 @@ mono_metadata_get_generic_inst (int type_argc, MonoType **type_argv)
                        break;
        is_open = (i < type_argc);
 
-       ginst = g_alloca (size);
+       ginst = (MonoGenericInst *)g_alloca (size);
        memset (ginst, 0, sizeof (MonoGenericInst));
        ginst->is_open = is_open;
        ginst->type_argc = type_argc;
@@ -2936,9 +2936,9 @@ mono_metadata_get_generic_inst (int type_argc, MonoType **type_argv)
 
        mono_image_set_lock (set);
 
-       ginst = g_hash_table_lookup (set->ginst_cache, ginst);
+       ginst = (MonoGenericInst *)g_hash_table_lookup (set->ginst_cache, ginst);
        if (!ginst) {
-               ginst = mono_image_set_alloc0 (set, size);
+               ginst = (MonoGenericInst *)mono_image_set_alloc0 (set, size);
 #ifndef MONO_SMALL_CONFIG
                ginst->id = ++next_generic_inst_id;
 #endif
@@ -2996,7 +2996,7 @@ mono_metadata_lookup_generic_class (MonoClass *container_class, MonoGenericInst
 
        mono_image_set_lock (set);
 
-       gclass = g_hash_table_lookup (set->gclass_cache, &helper);
+       gclass = (MonoGenericClass *)g_hash_table_lookup (set->gclass_cache, &helper);
 
        /* A tripwire just to keep us honest */
        g_assert (!helper.cached_class);
@@ -3172,7 +3172,7 @@ get_anonymous_container_for_image (MonoImage *image, gboolean is_mvar)
        if (!result)
        {
                // Note this is never deallocated anywhere-- it exists for the lifetime of the image it's allocated from
-               result = mono_image_alloc0 (image, sizeof (MonoGenericContainer));
+               result = (MonoGenericContainer *)mono_image_alloc0 (image, sizeof (MonoGenericContainer));
                result->owner.image = image;
                result->is_anonymous = TRUE;
                result->is_small_param = TRUE;
@@ -3180,7 +3180,7 @@ get_anonymous_container_for_image (MonoImage *image, gboolean is_mvar)
 
                // If another thread already made a container, use that and leak this new one.
                // (Technically it would currently be safe to just assign instead of CASing.)
-               MonoGenericContainer *exchange = InterlockedCompareExchangePointer ((volatile gpointer *)container_pointer, result, NULL);
+               MonoGenericContainer *exchange = (MonoGenericContainer *)InterlockedCompareExchangePointer ((volatile gpointer *)container_pointer, result, NULL);
                if (exchange)
                        result = exchange;
        }
@@ -3221,7 +3221,7 @@ mono_metadata_parse_generic_param (MonoImage *m, MonoGenericContainer *generic_c
                /* Create dummy MonoGenericParam */
                MonoGenericParam *param;
 
-               param = mono_image_alloc0 (m, sizeof (MonoGenericParam));
+               param = (MonoGenericParam *)mono_image_alloc0 (m, sizeof (MonoGenericParam));
                param->num = index;
                param->owner = get_anonymous_container_for_image (m, is_mvar);
 
@@ -3255,7 +3255,7 @@ mono_metadata_get_shared_type (MonoType *type)
        MonoType *cached;
 
        /* No need to use locking since nobody is modifying the hash table */
-       if ((cached = g_hash_table_lookup (type_cache, type)))
+       if ((cached = (MonoType *)g_hash_table_lookup (type_cache, type)))
                return cached;
 
        switch (type->type){
@@ -3369,7 +3369,7 @@ do_mono_metadata_parse_type (MonoType *type, MonoImage *m, MonoGenericContainer
 {
        mono_error_init (error);
 
-       type->type = mono_metadata_decode_value (ptr, &ptr);
+       type->type = (MonoTypeEnum)mono_metadata_decode_value (ptr, &ptr);
        
        switch (type->type){
        case MONO_TYPE_VOID:
@@ -3552,7 +3552,7 @@ parse_section_data (MonoImage *m, int *num_clauses, const unsigned char *ptr)
                        int i;
                        *num_clauses = is_fat ? sect_data_len / 24: sect_data_len / 12;
                        /* we could just store a pointer if we don't need to byteswap */
-                       clauses = g_malloc0 (sizeof (MonoExceptionClause) * (*num_clauses));
+                       clauses = (MonoExceptionClause *)g_malloc0 (sizeof (MonoExceptionClause) * (*num_clauses));
                        for (i = 0; i < *num_clauses; ++i) {
                                MonoExceptionClause *ec = &clauses [i];
                                guint32 tof_value;
@@ -3703,7 +3703,7 @@ mono_metadata_parse_mh_full (MonoImage *m, MonoGenericContainer *container, cons
 
        switch (format) {
        case METHOD_HEADER_TINY_FORMAT:
-               mh = g_malloc0 (MONO_SIZEOF_METHOD_HEADER);
+               mh = (MonoMethodHeader *)g_malloc0 (MONO_SIZEOF_METHOD_HEADER);
                ptr++;
                mh->max_stack = 8;
                mh->is_transient = TRUE;
@@ -3761,7 +3761,7 @@ mono_metadata_parse_mh_full (MonoImage *m, MonoGenericContainer *container, cons
                        g_warning ("wrong signature for locals blob");
                locals_ptr++;
                len = mono_metadata_decode_value (locals_ptr, &locals_ptr);
-               mh = g_malloc0 (MONO_SIZEOF_METHOD_HEADER + len * sizeof (MonoType*) + num_clauses * sizeof (MonoExceptionClause));
+               mh = (MonoMethodHeader *)g_malloc0 (MONO_SIZEOF_METHOD_HEADER + len * sizeof (MonoType*) + num_clauses * sizeof (MonoExceptionClause));
                mh->num_locals = len;
                for (i = 0; i < len; ++i) {
                        mh->locals [i] = mono_metadata_parse_type_internal (m, container,
@@ -3770,7 +3770,7 @@ mono_metadata_parse_mh_full (MonoImage *m, MonoGenericContainer *container, cons
                                goto fail;
                }
        } else {
-               mh = g_malloc0 (MONO_SIZEOF_METHOD_HEADER + num_clauses * sizeof (MonoExceptionClause));
+               mh = (MonoMethodHeader *)g_malloc0 (MONO_SIZEOF_METHOD_HEADER + num_clauses * sizeof (MonoExceptionClause));
        }
        mh->code = code;
        mh->code_size = code_size;
@@ -3917,7 +3917,7 @@ mono_method_header_get_clauses (MonoMethodHeader *header, MonoMethod *method, gp
                *clause = *sc;
                return TRUE;
        }
-       sc = *iter;
+       sc = (MonoExceptionClause *)*iter;
        sc++;
        if (sc < header->clauses + header->num_clauses) {
                *iter = sc;
@@ -4249,7 +4249,7 @@ mono_metadata_interfaces_from_typedef_full (MonoImage *meta, guint32 index, Mono
        if (heap_alloc_result)
                result = g_new0 (MonoClass*, pos - start);
        else
-               result = mono_image_alloc0 (meta, sizeof (MonoClass*) * (pos - start));
+               result = (MonoClass **)mono_image_alloc0 (meta, sizeof (MonoClass*) * (pos - start));
 
        pos = start;
        while (pos < tdef->rows) {
@@ -5157,7 +5157,7 @@ mono_metadata_type_dup (MonoImage *image, const MonoType *o)
        if (o->num_mods)
                sizeof_o += o->num_mods  * sizeof (MonoCustomMod);
 
-       r = image ? mono_image_alloc0 (image, sizeof_o) : g_malloc (sizeof_o);
+       r = image ? (MonoType *)mono_image_alloc0 (image, sizeof_o) : (MonoType *)g_malloc (sizeof_o);
 
        memcpy (r, o, sizeof_o);
 
@@ -5575,7 +5575,7 @@ mono_type_create_from_typespec_checked (MonoImage *image, guint32 type_spec, Mon
        mono_error_init (error);
 
        mono_image_lock (image);
-       type = g_hash_table_lookup (image->typespec_cache, GUINT_TO_POINTER (type_spec));
+       type = (MonoType *)g_hash_table_lookup (image->typespec_cache, GUINT_TO_POINTER (type_spec));
        mono_image_unlock (image);
        if (type)
                return type;
@@ -5600,7 +5600,7 @@ mono_type_create_from_typespec_checked (MonoImage *image, guint32 type_spec, Mon
        mono_metadata_free_type (type);
 
        mono_image_lock (image);
-       type = g_hash_table_lookup (image->typespec_cache, GUINT_TO_POINTER (type_spec));
+       type = (MonoType *)g_hash_table_lookup (image->typespec_cache, GUINT_TO_POINTER (type_spec));
        /* We might leak some data in the image mempool if found */
        if (!type) {
                g_hash_table_insert (image->typespec_cache, GUINT_TO_POINTER (type_spec), type2);
@@ -5618,7 +5618,7 @@ mono_image_strndup (MonoImage *image, const char *data, guint len)
        char *res;
        if (!image)
                return g_strndup (data, len);
-       res = mono_image_alloc (image, len + 1);
+       res = (char *)mono_image_alloc (image, len + 1);
        memcpy (res, data, len);
        res [len] = 0;
        return res;
@@ -5644,12 +5644,12 @@ mono_metadata_parse_marshal_spec_full (MonoImage *image, MonoImage *parent_image
        /* fixme: this is incomplete, but I cant find more infos in the specs */
 
        if (image)
-               res = mono_image_alloc0 (image, sizeof (MonoMarshalSpec));
+               res = (MonoMarshalSpec *)mono_image_alloc0 (image, sizeof (MonoMarshalSpec));
        else
                res = g_new0 (MonoMarshalSpec, 1);
        
        len = mono_metadata_decode_value (ptr, &ptr);
-       res->native = *ptr++;
+       res->native = (MonoMarshalNative)*ptr++;
 
        if (res->native == MONO_NATIVE_LPARRAY) {
                res->data.array_data.param_num = -1;
@@ -5657,7 +5657,7 @@ mono_metadata_parse_marshal_spec_full (MonoImage *image, MonoImage *parent_image
                res->data.array_data.elem_mult = -1;
 
                if (ptr - start <= len)
-                       res->data.array_data.elem_type = *ptr++;
+                       res->data.array_data.elem_type = (MonoMarshalNative)*ptr++;
                if (ptr - start <= len)
                        res->data.array_data.param_num = mono_metadata_decode_value (ptr, &ptr);
                if (ptr - start <= len)
@@ -5704,10 +5704,10 @@ mono_metadata_parse_marshal_spec_full (MonoImage *image, MonoImage *parent_image
        }
 
        if (res->native == MONO_NATIVE_SAFEARRAY) {
-               res->data.safearray_data.elem_type = 0;
+               res->data.safearray_data.elem_type = (MonoMarshalVariant)0;
                res->data.safearray_data.num_elem = 0;
                if (ptr - start <= len)
-                       res->data.safearray_data.elem_type = *ptr++;
+                       res->data.safearray_data.elem_type = (MonoMarshalVariant)*ptr++;
                if (ptr - start <= len)
                        res->data.safearray_data.num_elem = *ptr++;
        }
@@ -6098,9 +6098,9 @@ get_constraints (MonoImage *image, int owner, MonoClass ***constraints, MonoGene
        }
        if (!found)
                return TRUE;
-       res = mono_image_alloc0 (image, sizeof (MonoClass*) * (found + 1));
+       res = (MonoClass **)mono_image_alloc0 (image, sizeof (MonoClass*) * (found + 1));
        for (i = 0, tmp = cons; i < found; ++i, tmp = tmp->next) {
-               res [i] = tmp->data;
+               res [i] = (MonoClass *)tmp->data;
        }
        g_slist_free (cons);
        *constraints = res;
@@ -6212,12 +6212,12 @@ mono_metadata_load_generic_params (MonoImage *image, guint32 token, MonoGenericC
        mono_metadata_decode_row (tdef, i - 1, cols, MONO_GENERICPARAM_SIZE);
        params = NULL;
        n = 0;
-       container = mono_image_alloc0 (image, sizeof (MonoGenericContainer));
+       container = (MonoGenericContainer *)mono_image_alloc0 (image, sizeof (MonoGenericContainer));
        container->owner.image = image; // Temporarily mark as anonymous, but this will be overriden by caller
        container->is_anonymous = TRUE;
        do {
                n++;
-               params = g_realloc (params, sizeof (MonoGenericParamFull) * n);
+               params = (MonoGenericParamFull *)g_realloc (params, sizeof (MonoGenericParamFull) * n);
                memset (&params [n - 1], 0, sizeof (MonoGenericParamFull));
                params [n - 1].param.owner = container;
                params [n - 1].param.num = cols [MONO_GENERICPARAM_NUMBER];
@@ -6232,7 +6232,7 @@ mono_metadata_load_generic_params (MonoImage *image, guint32 token, MonoGenericC
        } while (cols [MONO_GENERICPARAM_OWNER] == owner);
 
        container->type_argc = n;
-       container->type_params = mono_image_alloc0 (image, sizeof (MonoGenericParamFull) * n);
+       container->type_params = (MonoGenericParamFull *)mono_image_alloc0 (image, sizeof (MonoGenericParamFull) * n);
        memcpy (container->type_params, params, sizeof (MonoGenericParamFull) * n);
        g_free (params);
        container->parent = parent_container;
@@ -6482,7 +6482,7 @@ mono_signature_get_params (MonoMethodSignature *sig, gpointer *iter)
                        return NULL;
                }
        }
-       type = *iter;
+       type = (MonoType **)*iter;
        type++;
        if (type < &sig->params [sig->param_count]) {
                *iter = type;
@@ -6659,7 +6659,7 @@ mono_find_image_set_owner (void *ptr)
        if (image_sets)
        {
                for (i = 0; !owner && i < image_sets->len; ++i) {
-                       MonoImageSet *set = g_ptr_array_index (image_sets, i);
+                       MonoImageSet *set = (MonoImageSet *)g_ptr_array_index (image_sets, i);
                        if (mono_mempool_contains_addr (set->mempool, ptr))
                                owner = set;
                }
index 234598d496250d8026180410ecc8664aef17af11..23f8d5990952d0a176d19cbb1e26e1a0f305114a 100644 (file)
@@ -67,7 +67,7 @@ mono_mb_new_base (MonoClass *klass, MonoWrapperType type)
 
 #ifndef DISABLE_JIT
        mb->code_size = 40;
-       mb->code = g_malloc (mb->code_size);
+       mb->code = (unsigned char *)g_malloc (mb->code_size);
 #endif
        /* placeholder for the wrapper always at index 1 */
        mono_mb_add_data (mb, NULL);
@@ -155,7 +155,7 @@ mono_mb_create_method (MonoMethodBuilder *mb, MonoMethodSignature *signature, in
        {
                /* Realloc the method info into a mempool */
 
-               method = mono_image_alloc0 (image, sizeof (MonoMethodWrapper));
+               method = (MonoMethod *)mono_image_alloc0 (image, sizeof (MonoMethodWrapper));
                memcpy (method, mb->method, sizeof (MonoMethodWrapper));
                mw = (MonoMethodWrapper*) method;
 
@@ -168,7 +168,7 @@ mono_mb_create_method (MonoMethodBuilder *mb, MonoMethodSignature *signature, in
                mw->header = header = (MonoMethodHeader *) 
                        mono_image_alloc0 (image, MONO_SIZEOF_METHOD_HEADER + mb->locals * sizeof (MonoType *));
 
-               header->code = mono_image_alloc (image, mb->pos);
+               header->code = (const unsigned char *)mono_image_alloc (image, mb->pos);
                memcpy ((char*)header->code, mb->code, mb->pos);
 
                for (i = 0, l = mb->locals_list; l; l = l->next, i++) {
@@ -197,15 +197,15 @@ mono_mb_create_method (MonoMethodBuilder *mb, MonoMethodSignature *signature, in
        method->skip_visibility = mb->skip_visibility;
 #endif
 
-       i = g_list_length (mw->method_data);
+       i = g_list_length ((GList *)mw->method_data);
        if (i) {
                GList *tmp;
                void **data;
-               l = g_list_reverse (mw->method_data);
+               l = g_list_reverse ((GList *)mw->method_data);
                if (method_is_dynamic (method))
-                       data = g_malloc (sizeof (gpointer) * (i + 1));
+                       data = (void **)g_malloc (sizeof (gpointer) * (i + 1));
                else
-                       data = mono_image_alloc (image, sizeof (gpointer) * (i + 1));
+                       data = (void **)mono_image_alloc (image, sizeof (gpointer) * (i + 1));
                /* store the size in the first element */
                data [0] = GUINT_TO_POINTER (i);
                i = 1;
@@ -232,7 +232,7 @@ mono_mb_create_method (MonoMethodBuilder *mb, MonoMethodSignature *signature, in
 #endif
 
        if (mb->param_names) {
-               char **param_names = mono_image_alloc0 (image, signature->param_count * sizeof (gpointer));
+               char **param_names = (char **)mono_image_alloc0 (image, signature->param_count * sizeof (gpointer));
                for (i = 0; i < signature->param_count; ++i)
                        param_names [i] = mono_image_strdup (image, mb->param_names [i]);
 
@@ -257,9 +257,9 @@ mono_mb_add_data (MonoMethodBuilder *mb, gpointer data)
        mw = (MonoMethodWrapper *)mb->method;
 
        /* one O(n) is enough */
-       mw->method_data = g_list_prepend (mw->method_data, data);
+       mw->method_data = g_list_prepend ((GList *)mw->method_data, data);
 
-       return g_list_length (mw->method_data);
+       return g_list_length ((GList *)mw->method_data);
 }
 
 #ifndef DISABLE_JIT
@@ -299,7 +299,7 @@ mono_mb_emit_byte (MonoMethodBuilder *mb, guint8 op)
 {
        if (mb->pos >= mb->code_size) {
                mb->code_size += mb->code_size >> 1;
-               mb->code = g_realloc (mb->code, mb->code_size);
+               mb->code = (unsigned char *)g_realloc (mb->code, mb->code_size);
        }
 
        mb->code [mb->pos++] = op;
@@ -322,7 +322,7 @@ mono_mb_emit_i4 (MonoMethodBuilder *mb, gint32 data)
 {
        if ((mb->pos + 4) >= mb->code_size) {
                mb->code_size += mb->code_size >> 1;
-               mb->code = g_realloc (mb->code, mb->code_size);
+               mb->code = (unsigned char *)g_realloc (mb->code, mb->code_size);
        }
 
        mono_mb_patch_addr (mb, mb->pos, data);
@@ -334,7 +334,7 @@ mono_mb_emit_i8 (MonoMethodBuilder *mb, gint64 data)
 {
        if ((mb->pos + 8) >= mb->code_size) {
                mb->code_size += mb->code_size >> 1;
-               mb->code = g_realloc (mb->code, mb->code_size);
+               mb->code = (unsigned char *)g_realloc (mb->code, mb->code_size);
        }
 
        mono_mb_patch_addr (mb, mb->pos, data);
@@ -347,7 +347,7 @@ mono_mb_emit_i2 (MonoMethodBuilder *mb, gint16 data)
 {
        if ((mb->pos + 2) >= mb->code_size) {
                mb->code_size += mb->code_size >> 1;
-               mb->code = g_realloc (mb->code, mb->code_size);
+               mb->code = (unsigned char *)g_realloc (mb->code, mb->code_size);
        }
 
        mb->code [mb->pos] = data & 0xff;
index d4dd2ee371c21f5d3fa3cec11df7c0cde47b9c03..0c1d28130aff76741a2bc76e03d5cd84ea9dfdd8 100644 (file)
@@ -260,8 +260,8 @@ mono_monitor_cleanup (void)
        /*mono_os_mutex_destroy (&monitor_mutex);*/
 
        /* The monitors on the freelist don't have weak links - mark them */
-       for (mon = monitor_freelist; mon; mon = mon->data)
-               mon->wait_list = (gpointer)-1;
+       for (mon = monitor_freelist; mon; mon = (MonoThreadsSync *)mon->data)
+               mon->wait_list = (GSList *)-1;
 
        /*
         * FIXME: This still crashes with sgen (async_read.exe)
@@ -319,7 +319,7 @@ mono_locks_dump (gboolean include_untaken)
        int used = 0, on_freelist = 0, to_recycle = 0, total = 0, num_arrays = 0;
        MonoThreadsSync *mon;
        MonitorArray *marray;
-       for (mon = monitor_freelist; mon; mon = mon->data)
+       for (mon = monitor_freelist; mon; mon = (MonoThreadsSync *)mon->data)
                on_freelist++;
        for (marray = monitor_allocated; marray; marray = marray->next) {
                total += marray->num_monitors;
@@ -330,7 +330,7 @@ mono_locks_dump (gboolean include_untaken)
                                if (i < marray->num_monitors - 1)
                                        to_recycle++;
                        } else {
-                               if (!monitor_is_on_freelist (mon->data)) {
+                               if (!monitor_is_on_freelist ((MonoThreadsSync *)mon->data)) {
                                        MonoObject *holder = (MonoObject *)mono_gchandle_get_target ((guint32)mon->data);
                                        if (mon_status_get_owner (mon->status)) {
                                                g_print ("Lock %p in object %p held by thread %d, nest level: %d\n",
@@ -378,39 +378,39 @@ mon_finalize (MonoThreadsSync *mon)
 static MonoThreadsSync *
 mon_new (gsize id)
 {
-       MonoThreadsSync *new;
+       MonoThreadsSync *new_;
 
        if (!monitor_freelist) {
                MonitorArray *marray;
                int i;
                /* see if any sync block has been collected */
-               new = NULL;
+               new_ = NULL;
                for (marray = monitor_allocated; marray; marray = marray->next) {
                        for (i = 0; i < marray->num_monitors; ++i) {
                                if (mono_gchandle_get_target ((guint32)marray->monitors [i].data) == NULL) {
-                                       new = &marray->monitors [i];
-                                       if (new->wait_list) {
+                                       new_ = &marray->monitors [i];
+                                       if (new_->wait_list) {
                                                /* Orphaned events left by aborted threads */
-                                               while (new->wait_list) {
+                                               while (new_->wait_list) {
                                                        LOCK_DEBUG (g_message (G_GNUC_PRETTY_FUNCTION ": (%d): Closing orphaned event %d", mono_thread_info_get_small_id (), new->wait_list->data));
-                                                       CloseHandle (new->wait_list->data);
-                                                       new->wait_list = g_slist_remove (new->wait_list, new->wait_list->data);
+                                                       CloseHandle (new_->wait_list->data);
+                                                       new_->wait_list = g_slist_remove (new_->wait_list, new_->wait_list->data);
                                                }
                                        }
-                                       mono_gchandle_free ((guint32)new->data);
-                                       new->data = monitor_freelist;
-                                       monitor_freelist = new;
+                                       mono_gchandle_free ((guint32)new_->data);
+                                       new_->data = monitor_freelist;
+                                       monitor_freelist = new_;
                                }
                        }
                        /* small perf tweak to avoid scanning all the blocks */
-                       if (new)
+                       if (new_)
                                break;
                }
                /* need to allocate a new array of monitors */
                if (!monitor_freelist) {
                        MonitorArray *last;
                        LOCK_DEBUG (g_message ("%s: allocating more monitors: %d", __func__, array_size));
-                       marray = g_malloc0 (MONO_SIZEOF_MONO_ARRAY + array_size * sizeof (MonoThreadsSync));
+                       marray = (MonitorArray *)g_malloc0 (MONO_SIZEOF_MONO_ARRAY + array_size * sizeof (MonoThreadsSync));
                        marray->num_monitors = array_size;
                        array_size *= 2;
                        /* link into the freelist */
@@ -433,18 +433,18 @@ mon_new (gsize id)
                }
        }
 
-       new = monitor_freelist;
-       monitor_freelist = new->data;
+       new_ = monitor_freelist;
+       monitor_freelist = (MonoThreadsSync *)new_->data;
 
-       new->status = mon_status_set_owner (0, id);
-       new->status = mon_status_init_entry_count (new->status);
-       new->nest = 1;
-       new->data = NULL;
+       new_->status = mon_status_set_owner (0, id);
+       new_->status = mon_status_init_entry_count (new_->status);
+       new_->nest = 1;
+       new_->data = NULL;
        
 #ifndef DISABLE_PERFCOUNTERS
        mono_perfcounters->gc_sync_blocks++;
 #endif
-       return new;
+       return new_;
 }
 
 static MonoThreadsSync*
@@ -493,7 +493,7 @@ mono_monitor_inflate_owned (MonoObject *obj, int id)
        nlw = lock_word_new_inflated (mon);
 
        mono_memory_write_barrier ();
-       tmp_lw.sync = InterlockedCompareExchangePointer ((gpointer*)&obj->synchronisation, nlw.sync, old_lw.sync);
+       tmp_lw.sync = (MonoThreadsSync *)InterlockedCompareExchangePointer ((gpointer*)&obj->synchronisation, nlw.sync, old_lw.sync);
        if (tmp_lw.sync != old_lw.sync) {
                /* Someone else inflated the lock in the meantime */
                discard_mon (mon);
@@ -536,7 +536,7 @@ mono_monitor_inflate (MonoObject *obj)
                        mon->nest = lock_word_get_nest (old_lw);
                }
                mono_memory_write_barrier ();
-               tmp_lw.sync = InterlockedCompareExchangePointer ((gpointer*)&obj->synchronisation, nlw.sync, old_lw.sync);
+               tmp_lw.sync = (MonoThreadsSync *)InterlockedCompareExchangePointer ((gpointer*)&obj->synchronisation, nlw.sync, old_lw.sync);
                if (tmp_lw.sync == old_lw.sync) {
                        /* Successfully inflated the lock */
                        return;
@@ -592,7 +592,7 @@ mono_object_hash (MonoObject* obj)
                LockWord old_lw;
                lw = lock_word_new_thin_hash (hash);
 
-               old_lw.sync = InterlockedCompareExchangePointer ((gpointer*)&obj->synchronisation, lw.sync, NULL);
+               old_lw.sync = (MonoThreadsSync *)InterlockedCompareExchangePointer ((gpointer*)&obj->synchronisation, lw.sync, NULL);
                if (old_lw.sync == NULL) {
                        return hash;
                }
@@ -707,7 +707,7 @@ mono_monitor_exit_flat (MonoObject *obj, LockWord old_lw)
        else
                new_lw.lock_word = 0;
 
-       tmp_lw.sync = InterlockedCompareExchangePointer ((gpointer*)&obj->synchronisation, new_lw.sync, old_lw.sync);
+       tmp_lw.sync = (MonoThreadsSync *)InterlockedCompareExchangePointer ((gpointer*)&obj->synchronisation, new_lw.sync, old_lw.sync);
        if (old_lw.sync != tmp_lw.sync) {
                /* Someone inflated the lock in the meantime */
                mono_monitor_exit_inflated (obj);
@@ -896,7 +896,7 @@ retry_contended:
                 * We have to obey a stop/suspend request even if 
                 * allow_interruption is FALSE to avoid hangs at shutdown.
                 */
-               if (!mono_thread_test_state (mono_thread_internal_current (), (ThreadState_StopRequested|ThreadState_SuspendRequested))) {
+               if (!mono_thread_test_state (mono_thread_internal_current (), (MonoThreadState)(ThreadState_StopRequested | ThreadState_SuspendRequested))) {
                        if (ms != INFINITE) {
                                now = mono_msec_ticks ();
                                if (now < then) {
@@ -981,7 +981,7 @@ mono_monitor_try_enter_internal (MonoObject *obj, guint32 ms, gboolean allow_int
                        } else {
                                LockWord nlw, old_lw;
                                nlw = lock_word_increment_nest (lw);
-                               old_lw.sync = InterlockedCompareExchangePointer ((gpointer*)&obj->synchronisation, nlw.sync, lw.sync);
+                               old_lw.sync = (MonoThreadsSync *)InterlockedCompareExchangePointer ((gpointer*)&obj->synchronisation, nlw.sync, lw.sync);
                                if (old_lw.sync != lw.sync) {
                                        /* Someone else inflated it in the meantime */
                                        g_assert (lock_word_is_inflated (old_lw));
index a62c39868d18bf86f36539b771e5a2d676ec4110..53c74e8cf5bf442774e648c6a6a1d09680d807af 100644 (file)
@@ -295,11 +295,11 @@ bb_liveness (MonoSimpleBasicBlock *bb)
        }
 
        while (mark_stack->len > 0) {
-               MonoSimpleBasicBlock *block = g_ptr_array_remove_index_fast (mark_stack, mark_stack->len - 1);
+               MonoSimpleBasicBlock *block = (MonoSimpleBasicBlock *)g_ptr_array_remove_index_fast (mark_stack, mark_stack->len - 1);
                block->dead = FALSE;
 
                for (tmp = block->out_bb; tmp; tmp = tmp->next) {
-                       MonoSimpleBasicBlock *to = tmp->data;
+                       MonoSimpleBasicBlock *to = (MonoSimpleBasicBlock *)tmp->data;
                        if (to->dead)
                                g_ptr_array_add (mark_stack, to);
                }
index e29fe9d0fccf942479547318a64628afd60af3c4..e9aab32a48d4484e8de91a09909d2772561e6fc2 100644 (file)
@@ -166,9 +166,9 @@ static void start_element (GMarkupParseContext *context,
                           gpointer             user_data,
                           GError             **error)
 {
-       ParseState *state = user_data;
+       ParseState *state = (ParseState *)user_data;
        if (!state->current) {
-               state->current = g_hash_table_lookup (config_handlers, element_name);
+               state->current = (MonoParseHandler *)g_hash_table_lookup (config_handlers, element_name);
                if (state->current && state->current->init)
                        state->user_data = state->current->init (state->assembly);
        }
@@ -181,7 +181,7 @@ static void end_element   (GMarkupParseContext *context,
                           gpointer             user_data,
                           GError             **error)
 {
-       ParseState *state = user_data;
+       ParseState *state = (ParseState *)user_data;
        if (state->current) {
                if (state->current->end)
                        state->current->end (state->user_data, element_name);
@@ -200,7 +200,7 @@ static void parse_text    (GMarkupParseContext *context,
                           gpointer             user_data,
                           GError             **error)
 {
-       ParseState *state = user_data;
+       ParseState *state = (ParseState *)user_data;
        if (state->current && state->current->text)
                state->current->text (state->user_data, text, text_len);
 }
@@ -218,7 +218,7 @@ static void parse_error   (GMarkupParseContext *context,
                            GError              *error,
                           gpointer             user_data)
 {
-       ParseState *state = user_data;
+       ParseState *state = (ParseState *)user_data;
        const gchar *msg;
        const gchar *filename;
 
@@ -267,7 +267,7 @@ dllmap_start (gpointer user_data,
               const gchar        **attribute_values)
 {
        int i;
-       DllInfo *info = user_data;
+       DllInfo *info = (DllInfo *)user_data;
        
        if (strcmp (element_name, "dllmap") == 0) {
                g_free (info->dll);
@@ -284,7 +284,7 @@ dllmap_start (gpointer user_data,
                                        size_t libdir_len = strlen (libdir);
                                        char *result;
                                        
-                                       result = g_malloc (libdir_len-strlen("$mono_libdir")+strlen(attribute_values[i])+1);
+                                       result = (char *)g_malloc (libdir_len-strlen("$mono_libdir")+strlen(attribute_values[i])+1);
                                        strncpy (result, attribute_names[i], p-attribute_values[i]);
                                        strcat (result, libdir);
                                        strcat (result, p+strlen("$mono_libdir"));
@@ -327,7 +327,7 @@ dllmap_start (gpointer user_data,
 static void
 dllmap_finish (gpointer user_data)
 {
-       DllInfo *info = user_data;
+       DllInfo *info = (DllInfo *)user_data;
 
        g_free (info->dll);
        g_free (info->target);
@@ -448,7 +448,7 @@ mono_config_parse_xml_with_context (ParseState *state, const char *text, gsize l
        if (!inited)
                mono_config_init ();
 
-       context = g_markup_parse_context_new (&mono_parser, 0, state, NULL);
+       context = g_markup_parse_context_new (&mono_parser, (GMarkupParseFlags)0, state, NULL);
        if (g_markup_parse_context_parse (context, text, len, NULL)) {
                g_markup_parse_context_end_parse (context, NULL);
        }
@@ -668,7 +668,7 @@ mono_get_machine_config (void)
 static void
 assembly_binding_end (gpointer user_data, const char *element_name)
 {
-       ParserUserData *pud = user_data;
+       ParserUserData *pud = (ParserUserData *)user_data;
 
        if (!strcmp (element_name, "dependentAssembly")) {
                if (pud->info_parsed && pud->info) {
@@ -689,7 +689,7 @@ publisher_policy_start (gpointer user_data,
        MonoAssemblyBindingInfo *info;
        int n;
 
-       pud = user_data;
+       pud = (ParserUserData *)user_data;
        info = pud->info;
        if (!strcmp (element_name, "dependentAssembly")) {
                info->name = NULL;
index ba9898781716d25e8d733d985411d86140929e38..09c55b3bcc8486be2385d9e3ea800cd4f954af0c 100644 (file)
@@ -100,7 +100,7 @@ lookup_data_table (MonoDomain *domain)
 {
        MonoDebugDataTable *table;
 
-       table = g_hash_table_lookup (data_table_hash, domain);
+       table = (MonoDebugDataTable *)g_hash_table_lookup (data_table_hash, domain);
        if (!table) {
                g_error ("lookup_data_table () failed for %p\n", domain);
                g_assert (table);
@@ -197,7 +197,7 @@ mono_debug_domain_unload (MonoDomain *domain)
 
        mono_debugger_lock ();
 
-       table = g_hash_table_lookup (data_table_hash, domain);
+       table = (MonoDebugDataTable *)g_hash_table_lookup (data_table_hash, domain);
        if (!table) {
                g_warning (G_STRLOC ": unloading unknown domain %p / %d",
                           domain, mono_domain_get_id (domain));
@@ -216,7 +216,7 @@ mono_debug_domain_unload (MonoDomain *domain)
 static MonoDebugHandle *
 mono_debug_get_image (MonoImage *image)
 {
-       return g_hash_table_lookup (mono_debug_handles, image);
+       return (MonoDebugHandle *)g_hash_table_lookup (mono_debug_handles, image);
 }
 
 void
@@ -444,7 +444,7 @@ mono_debug_add_method (MonoMethod *method, MonoDebugMethodJitInfo *jit, MonoDoma
                (25 + sizeof (gpointer)) * (1 + jit->num_params + jit->num_locals);
 
        if (max_size > BUFSIZ)
-               ptr = oldptr = g_malloc (max_size);
+               ptr = oldptr = (guint8 *)g_malloc (max_size);
        else
                ptr = oldptr = buffer;
 
@@ -482,9 +482,9 @@ mono_debug_add_method (MonoMethod *method, MonoDebugMethodJitInfo *jit, MonoDoma
        total_size = size + sizeof (MonoDebugMethodAddress);
 
        if (method_is_dynamic (method)) {
-               address = g_malloc0 (total_size);
+               address = (MonoDebugMethodAddress *)g_malloc0 (total_size);
        } else {
-               address = mono_mempool_alloc (table->mp, total_size);
+               address = (MonoDebugMethodAddress *)mono_mempool_alloc (table->mp, total_size);
        }
 
        address->code_start = jit->code_start;
@@ -515,7 +515,7 @@ mono_debug_remove_method (MonoMethod *method, MonoDomain *domain)
 
        table = lookup_data_table (domain);
 
-       address = g_hash_table_lookup (table->method_address_hash, method);
+       address = (MonoDebugMethodAddress *)g_hash_table_lookup (table->method_address_hash, method);
        if (address)
                g_free (address);
 
@@ -579,7 +579,7 @@ read_variable (MonoDebugVarInfo *var, guint8 *ptr, guint8 **rptr)
        var->size = read_leb128 (ptr, &ptr);
        var->begin_scope = read_leb128 (ptr, &ptr);
        var->end_scope = read_leb128 (ptr, &ptr);
-       READ_UNALIGNED (gpointer, ptr, var->type);
+       READ_UNALIGNED (MonoType *, ptr, var->type);
        ptr += sizeof (gpointer);
        *rptr = ptr;
 }
@@ -655,7 +655,7 @@ find_method (MonoMethod *method, MonoDomain *domain)
        MonoDebugMethodAddress *address;
 
        table = lookup_data_table (domain);
-       address = g_hash_table_lookup (table->method_address_hash, method);
+       address = (MonoDebugMethodAddress *)g_hash_table_lookup (table->method_address_hash, method);
 
        if (!address)
                return NULL;
index bbfa757212bd7706345bf9b4de0851d14af76cc8..aaff73db581ffa249deeab394dfb93737e5b34e8 100644 (file)
@@ -173,7 +173,7 @@ typedef struct {
 static void*
 do_rehash (void *_data)
 {
-       RehashData *data = _data;
+       RehashData *data = (RehashData *)_data;
        MonoGHashTable *hash = data->hash;
        int current_size, i;
        Slot **table;
@@ -425,17 +425,17 @@ mono_g_hash_table_insert_replace (MonoGHashTable *hash, gpointer key, gpointer v
                        if (replace){
                                if (hash->key_destroy_func != NULL)
                                        (*hash->key_destroy_func)(s->key);
-                               s->key = key;
+                               s->key = (MonoObject *)key;
                        }
                        if (hash->value_destroy_func != NULL)
                                (*hash->value_destroy_func) (s->value);
-                       s->value = value;
+                       s->value = (MonoObject *)value;
                        return;
                }
        }
        s = new_slot (hash);
-       s->key = key;
-       s->value = value;
+       s->key = (MonoObject *)key;
+       s->value = (MonoObject *)value;
        s->next = hash->table [hashcode];
        hash->table [hashcode] = s;
        hash->in_use++;
index 4b04b679eaec3ec19f20cdd8444af7b9ec6e7d12..e622308066a44d2e8d632909c69007b00796381b 100644 (file)
@@ -359,9 +359,9 @@ load_sarea_for_pid (int pid)
        perfctr_lock ();
        if (pid_to_shared_area == NULL)
                pid_to_shared_area = g_hash_table_new (NULL, NULL);
-       data = g_hash_table_lookup (pid_to_shared_area, GINT_TO_POINTER (pid));
+       data = (ExternalSArea *)g_hash_table_lookup (pid_to_shared_area, GINT_TO_POINTER (pid));
        if (!data) {
-               area = mono_shared_area_for_pid (GINT_TO_POINTER (pid));
+               area = (MonoSharedArea *)mono_shared_area_for_pid (GINT_TO_POINTER (pid));
                if (area) {
                        data = g_new (ExternalSArea, 1);
                        data->sarea = area;
@@ -369,7 +369,7 @@ load_sarea_for_pid (int pid)
                        g_hash_table_insert (pid_to_shared_area, GINT_TO_POINTER (pid), data);
                }
        } else {
-               area = data->sarea;
+               area = (MonoSharedArea *)data->sarea;
                data->refcount ++;
        }
        perfctr_unlock ();
@@ -380,7 +380,7 @@ static void
 unref_pid_unlocked (int pid)
 {
        ExternalSArea *data;
-       data = g_hash_table_lookup (pid_to_shared_area, GINT_TO_POINTER (pid));
+       data = (ExternalSArea *)g_hash_table_lookup (pid_to_shared_area, GINT_TO_POINTER (pid));
        if (data) {
                data->refcount--;
                if (!data->refcount) {
@@ -539,7 +539,7 @@ mono_perfcounters_init (void)
 
        mono_os_mutex_init_recursive (&perfctr_mutex);
 
-       shared_area = mono_shared_area ();
+       shared_area = (MonoSharedArea *)mono_shared_area ();
        shared_area->counters_start = G_STRUCT_OFFSET (MonoSharedArea, counters);
        shared_area->counters_size = sizeof (MonoPerfCounters);
        shared_area->data_start = d_offset;
@@ -645,7 +645,7 @@ typedef struct {
 static gboolean
 category_search (SharedHeader *header, void *data)
 {
-       CatSearch *search = data;
+       CatSearch *search = (CatSearch *)data;
        if (header->ftype == FTYPE_CATEGORY) {
                SharedCategory *cat = (SharedCategory*)header;
                if (mono_string_compare_ascii (search->name, cat->name) == 0) {
@@ -669,7 +669,7 @@ find_custom_category (MonoString *name)
 static gboolean
 category_collect (SharedHeader *header, void *data)
 {
-       GSList **list = data;
+       GSList **list = (GSList **)data;
        if (header->ftype == FTYPE_CATEGORY) {
                *list = g_slist_prepend (*list, header);
        }
@@ -718,7 +718,7 @@ typedef struct {
 static gboolean
 instance_search (SharedHeader *header, void *data)
 {
-       InstanceSearch *search = data;
+       InstanceSearch *search = (InstanceSearch *)data;
        if (header->ftype == FTYPE_INSTANCE) {
                SharedInstance *ins = (SharedInstance*)header;
                if (search->cat_offset == ins->category_offset) {
@@ -890,7 +890,7 @@ network_cleanup (ImplVtable *vtable)
        if (vtable == NULL)
                return;
 
-       narg = vtable->arg;
+       narg = (NetworkVtableArg *)vtable->arg;
        if (narg == NULL)
                return;
 
@@ -1219,7 +1219,7 @@ static gint64
 custom_writable_update (ImplVtable *vtable, MonoBoolean do_incr, gint64 value)
 {
        /* FIXME: check writability */
-       guint64 *ptr = vtable->arg;
+       guint64 *ptr = (guint64 *)vtable->arg;
        if (ptr) {
                if (do_incr) {
                        /* FIXME: we need to do this atomically */
@@ -1304,7 +1304,7 @@ custom_get_impl (SharedCategory *cat, MonoString* counter, MonoString* instance,
        g_free (name);
        if (!inst)
                return NULL;
-       return custom_vtable (scounter, inst, custom_get_value_address (scounter, inst));
+       return custom_vtable (scounter, inst, (char *)custom_get_value_address (scounter, inst));
 }
 
 static const CategoryDesc*
@@ -1361,7 +1361,7 @@ mono_perfcounter_get_impl (MonoString* category, MonoString* counter, MonoString
 MonoBoolean
 mono_perfcounter_get_sample (void *impl, MonoBoolean only_value, MonoCounterSample *sample)
 {
-       ImplVtable *vtable = impl;
+       ImplVtable *vtable = (ImplVtable *)impl;
        if (vtable && vtable->sample)
                return vtable->sample (vtable, only_value, sample);
        return FALSE;
@@ -1370,7 +1370,7 @@ mono_perfcounter_get_sample (void *impl, MonoBoolean only_value, MonoCounterSamp
 gint64
 mono_perfcounter_update_value (void *impl, MonoBoolean do_incr, gint64 value)
 {
-       ImplVtable *vtable = impl;
+       ImplVtable *vtable = (ImplVtable *)impl;
        if (vtable && vtable->update)
                return vtable->update (vtable, do_incr, value);
        return 0;
@@ -1379,7 +1379,7 @@ mono_perfcounter_update_value (void *impl, MonoBoolean do_incr, gint64 value)
 void
 mono_perfcounter_free_data (void *impl)
 {
-       ImplVtable *vtable = impl;
+       ImplVtable *vtable = (ImplVtable *)impl;
        if (vtable && vtable->cleanup)
                vtable->cleanup (vtable);
        g_free (impl);
@@ -1596,7 +1596,7 @@ mono_perfcounter_category_names (MonoString *machine)
                mono_array_setref (res, i, mono_string_new (domain, cdesc->name));
        }
        for (tmp = custom_categories; tmp; tmp = tmp->next) {
-               SharedCategory *scat = tmp->data;
+               SharedCategory *scat = (SharedCategory *)tmp->data;
                mono_array_setref (res, i, mono_string_new (domain, scat->name));
                i++;
        }
@@ -1674,7 +1674,7 @@ get_string_array_of_strings (void **array, int count)
        MonoDomain *domain = mono_domain_get ();
        MonoArray * res = mono_array_new (mono_domain_get (), mono_get_string_class (), count);
        for (i = 0; i < count; ++i) {
-               char* p = array[i];
+               char* p = (char *)array[i];
                mono_array_setref (res, i, mono_string_new (domain, p));
        }
 
@@ -1753,7 +1753,7 @@ get_custom_instances (MonoString *category)
                int i = 0;
                MonoArray *array = mono_array_new (mono_domain_get (), mono_get_string_class (), g_slist_length (list));
                for (tmp = list; tmp; tmp = tmp->next) {
-                       SharedInstance *inst = tmp->data;
+                       SharedInstance *inst = (SharedInstance *)tmp->data;
                        mono_array_setref (array, i, mono_string_new (mono_domain_get (), inst->instance_name));
                        i++;
                }
@@ -1802,7 +1802,7 @@ mono_perfcounter_foreach_shared_item (SharedHeader *header, gpointer data)
        SharedCategory *cat;
        SharedCounter *counter;
        SharedInstance *inst;
-       PerfCounterForeachData *foreach_data = data;
+       PerfCounterForeachData *foreach_data = (PerfCounterForeachData *)data;
 
        if (header->ftype == FTYPE_CATEGORY) {
                cat = (SharedCategory*)header;
index 8ecac9866101498875a7edbd1ee03fd176f72a6d..00b3b09c39288a69ad3b804845071c28c597a007 100644 (file)
@@ -34,7 +34,9 @@ typedef struct {
        (ARRAY).capacity = MAX (INITIAL_SIZE, MONO_PTR_ARRAY_MAX_ON_STACK); \
        (ARRAY).source = SOURCE; \
        (ARRAY).msg = MSG; \
-       (ARRAY).data = INITIAL_SIZE > MONO_PTR_ARRAY_MAX_ON_STACK ? mono_gc_alloc_fixed (sizeof (void*) * INITIAL_SIZE, mono_gc_make_root_descr_all_refs (INITIAL_SIZE), SOURCE, MSG) : g_newa (void*, MONO_PTR_ARRAY_MAX_ON_STACK); \
+       (ARRAY).data = INITIAL_SIZE > MONO_PTR_ARRAY_MAX_ON_STACK \
+               ? (void **)mono_gc_alloc_fixed (sizeof (void*) * INITIAL_SIZE, mono_gc_make_root_descr_all_refs (INITIAL_SIZE), SOURCE, MSG) \
+               : g_newa (void*, MONO_PTR_ARRAY_MAX_ON_STACK); \
 } while (0)
 
 #define mono_ptr_array_destroy(ARRAY) do {\
@@ -44,8 +46,8 @@ typedef struct {
 
 #define mono_ptr_array_append(ARRAY, VALUE) do { \
        if ((ARRAY).size >= (ARRAY).capacity) {\
-       void *__tmp = mono_gc_alloc_fixed (sizeof (void*) * (ARRAY).capacity * 2, mono_gc_make_root_descr_all_refs ((ARRAY).capacity * 2), (ARRAY).source, (ARRAY).msg); \
-               mono_gc_memmove_aligned (__tmp, (ARRAY).data, (ARRAY).capacity * sizeof (void*)); \
+       void **__tmp = (void **)mono_gc_alloc_fixed (sizeof (void*) * (ARRAY).capacity * 2, mono_gc_make_root_descr_all_refs ((ARRAY).capacity * 2), (ARRAY).source, (ARRAY).msg); \
+               mono_gc_memmove_aligned ((void *)__tmp, (ARRAY).data, (ARRAY).capacity * sizeof (void*)); \
                if ((ARRAY).capacity > MONO_PTR_ARRAY_MAX_ON_STACK)     \
                        mono_gc_free_fixed ((ARRAY).data);      \
                (ARRAY).data = __tmp;   \
index c5024b86a73b03ae7550c9d004c13cc5af7121b0..6dfa3d846ce7a0184249757f5f1e740859233f1e 100644 (file)
@@ -153,7 +153,7 @@ GetTokenName (uid_t uid)
 #else
        fbufsize = MONO_SYSCONF_DEFAULT_SIZE;
 #endif
-       fbuf = g_malloc0 (fbufsize);
+       fbuf = (gchar *)g_malloc0 (fbufsize);
        retval = getpwuid_r (uid, &pwd, fbuf, fbufsize, &p);
        result = ((retval == 0) && (p == &pwd));
 #else
@@ -220,7 +220,7 @@ IsDefaultGroup (uid_t user, gid_t group)
        fbufsize = MONO_SYSCONF_DEFAULT_SIZE;
 #endif
 
-       fbuf = g_malloc0 (fbufsize);
+       fbuf = (gchar *)g_malloc0 (fbufsize);
        retval = getpwuid_r (user, &pwd, fbuf, fbufsize, &p);
        result = ((retval == 0) && (p == &pwd));
 #else
@@ -359,7 +359,7 @@ ves_icall_System_Security_Principal_WindowsIdentity_GetUserToken (MonoString *us
        fbufsize = MONO_SYSCONF_DEFAULT_SIZE;
 #endif
 
-       fbuf = g_malloc0 (fbufsize);
+       fbuf = (gchar *)g_malloc0 (fbufsize);
        retval = getpwnam_r (utf8_name, &pwd, fbuf, fbufsize, &p);
        result = ((retval == 0) && (p == &pwd));
 #else
@@ -500,7 +500,7 @@ ves_icall_System_Security_Principal_WindowsPrincipal_IsMemberOfGroupId (gpointer
 #else
        fbufsize = MONO_SYSCONF_DEFAULT_SIZE;
 #endif
-       fbuf = g_malloc0 (fbufsize);
+       fbuf = (gchar *)g_malloc0 (fbufsize);
        retval = getgrgid_r ((gid_t) GPOINTER_TO_INT (group), &grp, fbuf, fbufsize, &g);
        result = ((retval == 0) && (g == &grp));
 #else
@@ -547,7 +547,7 @@ ves_icall_System_Security_Principal_WindowsPrincipal_IsMemberOfGroupName (gpoint
 #else
                size_t fbufsize = MONO_SYSCONF_DEFAULT_SIZE;
 #endif
-               fbuf = g_malloc0 (fbufsize);
+               fbuf = (gchar *)g_malloc0 (fbufsize);
                retval = getgrnam_r (utf8_groupname, &grp, fbuf, fbufsize, &g);
                result = ((retval == 0) && (g == &grp));
 #else
index d140243af004eda46cb8e4f2829ea65af89dcbbe..a28c6f15d9dc322fa675fdbf0a8e76edb222c38b 100644 (file)
@@ -76,7 +76,7 @@ mono_runtime_object_init (MonoObject *this_obj)
                g_error ("Could not lookup zero argument constructor for class %s", mono_type_get_full_name (klass));
 
        if (method->klass->valuetype)
-               this_obj = mono_object_unbox (this_obj);
+               this_obj = (MonoObject *)mono_object_unbox (this_obj);
        mono_runtime_invoke (method, this_obj, NULL, NULL);
 }
 
@@ -237,7 +237,7 @@ get_type_init_exception_for_vtable (MonoVTable *vtable)
        ex = NULL;
        mono_domain_lock (domain);
        if (domain->type_init_exception_hash)
-               ex = mono_g_hash_table_lookup (domain->type_init_exception_hash, klass);
+               ex = (MonoException *)mono_g_hash_table_lookup (domain->type_init_exception_hash, klass);
        mono_domain_unlock (domain);
 
        if (!ex) {
@@ -338,7 +338,7 @@ mono_runtime_class_init_full (MonoVTable *vtable, gboolean raise_exception)
                        mono_raise_exception (get_type_init_exception_for_vtable (vtable));
                return get_type_init_exception_for_vtable (vtable);
        }
-       lock = g_hash_table_lookup (type_initialization_hash, vtable);
+       lock = (TypeInitializationLock *)g_hash_table_lookup (type_initialization_hash, vtable);
        if (lock == NULL) {
                /* This thread will get to do the initialization */
                if (mono_domain_get () != domain) {
@@ -352,7 +352,7 @@ mono_runtime_class_init_full (MonoVTable *vtable, gboolean raise_exception)
                                return mono_get_exception_appdomain_unloaded ();
                        }
                }
-               lock = g_malloc (sizeof(TypeInitializationLock));
+               lock = (TypeInitializationLock *)g_malloc (sizeof (TypeInitializationLock));
                mono_coop_mutex_init_recursive (&lock->initialization_section);
                lock->initializing_tid = tid;
                lock->waiting_count = 1;
@@ -691,7 +691,7 @@ compute_class_bitmap (MonoClass *klass, gsize *bitmap, int size, int offset, int
                max_size = klass->instance_size / sizeof (gpointer);
        if (max_size > size) {
                g_assert (offset <= 0);
-               bitmap = g_malloc0 ((max_size + BITMAP_EL_SIZE - 1) / BITMAP_EL_SIZE * sizeof (gsize));
+               bitmap = (gsize *)g_malloc0 ((max_size + BITMAP_EL_SIZE - 1) / BITMAP_EL_SIZE * sizeof (gsize));
                size = max_size;
        }
 
@@ -1109,7 +1109,7 @@ mono_method_get_imt_slot (MonoMethod *method)
 
        sig = mono_method_signature (method);
        hashes_count = sig->param_count + 4;
-       hashes_start = malloc (hashes_count * sizeof (guint32));
+       hashes_start = (guint32 *)malloc (hashes_count * sizeof (guint32));
        hashes = hashes_start;
 
        if (! MONO_CLASS_IS_INTERFACE (method->klass)) {
@@ -1171,7 +1171,7 @@ add_imt_builder_entry (MonoImtBuilderEntry **imt_builder, MonoMethod *method, gu
                return;
        }
 
-       entry = g_malloc0 (sizeof (MonoImtBuilderEntry));
+       entry = (MonoImtBuilderEntry *)g_malloc0 (sizeof (MonoImtBuilderEntry));
        entry->key = method;
        entry->value.vtable_slot = vtable_slot;
        entry->next = imt_builder [imt_slot];
@@ -1261,7 +1261,7 @@ imt_sort_slot_entries (MonoImtBuilderEntry *entries) {
        MONO_REQ_GC_NEUTRAL_MODE;
 
        int number_of_entries = entries->children + 1;
-       MonoImtBuilderEntry **sorted_array = malloc (sizeof (MonoImtBuilderEntry*) * number_of_entries);
+       MonoImtBuilderEntry **sorted_array = (MonoImtBuilderEntry **)malloc (sizeof (MonoImtBuilderEntry*) * number_of_entries);
        GPtrArray *result = g_ptr_array_new ();
        MonoImtBuilderEntry *current_entry;
        int i;
@@ -1326,7 +1326,7 @@ build_imt_slots (MonoClass *klass, MonoVTable *vt, MonoDomain *domain, gpointer*
        int i;
        GSList *list_item;
        guint32 imt_collisions_bitmap = 0;
-       MonoImtBuilderEntry **imt_builder = calloc (MONO_IMT_SIZE, sizeof (MonoImtBuilderEntry*));
+       MonoImtBuilderEntry **imt_builder = (MonoImtBuilderEntry **)calloc (MONO_IMT_SIZE, sizeof (MonoImtBuilderEntry*));
        int method_count = 0;
        gboolean record_method_count_for_max_collisions = FALSE;
        gboolean has_generic_virtual = FALSE, has_variant_iface = FALSE;
@@ -1377,7 +1377,7 @@ build_imt_slots (MonoClass *klass, MonoVTable *vt, MonoDomain *domain, gpointer*
                int interface_offset = klass->vtable_size;
 
                for (list_item = extra_interfaces; list_item != NULL; list_item=list_item->next) {
-                       MonoClass* iface = list_item->data;
+                       MonoClass* iface = (MonoClass *)list_item->data;
                        int method_slot_in_interface;
                        for (method_slot_in_interface = 0; method_slot_in_interface < iface->method.count; method_slot_in_interface++) {
                                MonoMethod *method = mono_class_get_method_by_index (iface, method_slot_in_interface);
@@ -1529,7 +1529,7 @@ init_thunk_free_lists (MonoDomain *domain)
 
        if (domain->thunk_free_lists)
                return;
-       domain->thunk_free_lists = mono_domain_alloc0 (domain, sizeof (gpointer) * NUM_FREE_LISTS);
+       domain->thunk_free_lists = (MonoThunkFreeList **)mono_domain_alloc0 (domain, sizeof (gpointer) * NUM_FREE_LISTS);
 }
 
 static int
@@ -1602,7 +1602,7 @@ mono_method_alloc_generic_virtual_thunk (MonoDomain *domain, int size)
        }
        generic_virtual_thunks_size += size;
 
-       p = mono_domain_code_reserve (domain, size);
+       p = (guint32 *)mono_domain_code_reserve (domain, size);
        *p = size;
 
        mono_domain_lock (domain);
@@ -1622,7 +1622,7 @@ invalidate_generic_virtual_thunk (MonoDomain *domain, gpointer code)
 {
        MONO_REQ_GC_NEUTRAL_MODE;
 
-       guint32 *p = code;
+       guint32 *p = (guint32 *)code;
        MonoThunkFreeList *l = (MonoThunkFreeList*)(p - 1);
        gboolean found = FALSE;
 
@@ -1692,7 +1692,7 @@ get_generic_virtual_entries (MonoDomain *domain, gpointer *vtable_slot)
        if (!domain->generic_virtual_cases)
                domain->generic_virtual_cases = g_hash_table_new (mono_aligned_addr_hash, NULL);
  
-       list = g_hash_table_lookup (domain->generic_virtual_cases, vtable_slot);
+       list = (GenericVirtualCase *)g_hash_table_lookup (domain->generic_virtual_cases, vtable_slot);
  
        entries = NULL;
        for (; list; list = list->next) {
@@ -1749,7 +1749,7 @@ mono_method_add_generic_virtual_invocation (MonoDomain *domain, MonoVTable *vtab
                domain->generic_virtual_cases = g_hash_table_new (mono_aligned_addr_hash, NULL);
 
        /* Check whether the case was already added */
-       list = g_hash_table_lookup (domain->generic_virtual_cases, vtable_slot);
+       list = (GenericVirtualCase *)g_hash_table_lookup (domain->generic_virtual_cases, vtable_slot);
        gvc = list;
        while (gvc) {
                if (gvc->method == method)
@@ -1759,11 +1759,11 @@ mono_method_add_generic_virtual_invocation (MonoDomain *domain, MonoVTable *vtab
 
        /* If not found, make a new one */
        if (!gvc) {
-               gvc = mono_domain_alloc (domain, sizeof (GenericVirtualCase));
+               gvc = (GenericVirtualCase *)mono_domain_alloc (domain, sizeof (GenericVirtualCase));
                gvc->method = method;
                gvc->code = code;
                gvc->count = 0;
-               gvc->next = g_hash_table_lookup (domain->generic_virtual_cases, vtable_slot);
+               gvc->next = (GenericVirtualCase *)g_hash_table_lookup (domain->generic_virtual_cases, vtable_slot);
 
                g_hash_table_insert (domain->generic_virtual_cases, vtable_slot, gvc);
 
@@ -1775,7 +1775,7 @@ mono_method_add_generic_virtual_invocation (MonoDomain *domain, MonoVTable *vtab
        }
 
        if (++gvc->count == THUNK_THRESHOLD) {
-               gpointer *old_thunk = *vtable_slot;
+               gpointer *old_thunk = (void **)*vtable_slot;
                gpointer vtable_trampoline = NULL;
                gpointer imt_trampoline = NULL;
 
@@ -2164,7 +2164,7 @@ mono_class_create_runtime_vtable (MonoDomain *domain, MonoClass *klass, gboolean
        if (klass != mono_defaults.monotype_class) {
                /*FIXME check for OOM*/
                vt->type = mono_type_get_object (domain, &klass->byval_arg);
-               if (mono_object_get_class (vt->type) != mono_defaults.monotype_class)
+               if (mono_object_get_class ((MonoObject *)vt->type) != mono_defaults.monotype_class)
                        /* This is unregistered in
                           unregister_vtable_reflection_type() in
                           domain.c. */
@@ -2203,7 +2203,7 @@ mono_class_create_runtime_vtable (MonoDomain *domain, MonoClass *klass, gboolean
                /* this is a bounded memory retention issue: may want to 
                 * handle it differently when we'll have a rcu-like system.
                 */
-               runtime_info = mono_image_alloc0 (klass->image, MONO_SIZEOF_CLASS_RUNTIME_INFO + new_size * sizeof (gpointer));
+               runtime_info = (MonoClassRuntimeInfo *)mono_image_alloc0 (klass->image, MONO_SIZEOF_CLASS_RUNTIME_INFO + new_size * sizeof (gpointer));
                runtime_info->max_domain = new_size - 1;
                /* copy the stuff from the older info */
                if (old_info) {
@@ -2218,7 +2218,7 @@ mono_class_create_runtime_vtable (MonoDomain *domain, MonoClass *klass, gboolean
        if (klass == mono_defaults.monotype_class) {
                /*FIXME check for OOM*/
                vt->type = mono_type_get_object (domain, &klass->byval_arg);
-               if (mono_object_get_class (vt->type) != mono_defaults.monotype_class)
+               if (mono_object_get_class ((MonoObject *)vt->type) != mono_defaults.monotype_class)
                        /* This is unregistered in
                           unregister_vtable_reflection_type() in
                           domain.c. */
@@ -2291,7 +2291,7 @@ mono_class_proxy_vtable (MonoDomain *domain, MonoRemoteClass *remote_class, Mono
                g_assert (mono_error_ok (&error)); /*FIXME do proper error handling*/
                if (ifaces) {
                        for (i = 0; i < ifaces->len; ++i) {
-                               MonoClass *ic = g_ptr_array_index (ifaces, i);
+                               MonoClass *ic = (MonoClass *)g_ptr_array_index (ifaces, i);
                                /*FIXME test for interfaces with variant generic arguments*/
                                if (MONO_CLASS_IMPLEMENTS_INTERFACE (klass, ic->interface_id))
                                        continue;       /* interface implemented by the class */
@@ -2350,9 +2350,9 @@ mono_class_proxy_vtable (MonoDomain *domain, MonoRemoteClass *remote_class, Mono
        pvt->max_interface_id = max_interface_id;
        bsize = sizeof (guint8) * (max_interface_id/8 + 1 );
 #ifdef COMPRESSED_INTERFACE_BITMAP
-       bitmap = g_malloc0 (bsize);
+       bitmap = (uint8_t *)g_malloc0 (bsize);
 #else
-       bitmap = mono_domain_alloc0 (domain, bsize);
+       bitmap = (uint8_t *)mono_domain_alloc0 (domain, bsize);
 #endif
 
        for (i = 0; i < klass->interface_offsets_count; ++i) {
@@ -2369,7 +2369,7 @@ mono_class_proxy_vtable (MonoDomain *domain, MonoRemoteClass *remote_class, Mono
 
                /* Create trampolines for the methods of the interfaces */
                for (list_item = extra_interfaces; list_item != NULL; list_item=list_item->next) {
-                       interf = list_item->data;
+                       interf = (MonoClass *)list_item->data;
                        
                        bitmap [interf->interface_id >> 3] |= (1 << (interf->interface_id & 7));
 
@@ -2482,18 +2482,18 @@ create_remote_class_key (MonoRemoteClass *remote_class, MonoClass *extra_class)
        
        if (remote_class == NULL) {
                if (extra_class->flags & TYPE_ATTRIBUTE_INTERFACE) {
-                       key = g_malloc (sizeof(gpointer) * 3);
+                       key = (void **)g_malloc (sizeof(gpointer) * 3);
                        key [0] = GINT_TO_POINTER (2);
                        key [1] = mono_defaults.marshalbyrefobject_class;
                        key [2] = extra_class;
                } else {
-                       key = g_malloc (sizeof(gpointer) * 2);
+                       key = (void **)g_malloc (sizeof(gpointer) * 2);
                        key [0] = GINT_TO_POINTER (1);
                        key [1] = extra_class;
                }
        } else {
                if (extra_class != NULL && (extra_class->flags & TYPE_ATTRIBUTE_INTERFACE)) {
-                       key = g_malloc (sizeof(gpointer) * (remote_class->interface_count + 3));
+                       key = (void **)g_malloc (sizeof(gpointer) * (remote_class->interface_count + 3));
                        key [0] = GINT_TO_POINTER (remote_class->interface_count + 2);
                        key [1] = remote_class->proxy_class;
 
@@ -2509,7 +2509,7 @@ create_remote_class_key (MonoRemoteClass *remote_class, MonoClass *extra_class)
                                key [j] = extra_class;
                } else {
                        // Replace the old class. The interface list is the same
-                       key = g_malloc (sizeof(gpointer) * (remote_class->interface_count + 2));
+                       key = (void **)g_malloc (sizeof(gpointer) * (remote_class->interface_count + 2));
                        key [0] = GINT_TO_POINTER (remote_class->interface_count + 1);
                        key [1] = extra_class != NULL ? extra_class : remote_class->proxy_class;
                        for (i = 0; i < remote_class->interface_count; i++)
@@ -2531,7 +2531,7 @@ copy_remote_class_key (MonoDomain *domain, gpointer *key)
        MONO_REQ_GC_NEUTRAL_MODE
 
        int key_size = (GPOINTER_TO_UINT (key [0]) + 1) * sizeof (gpointer);
-       gpointer *mp_key = mono_domain_alloc (domain, key_size);
+       gpointer *mp_key = (gpointer *)mono_domain_alloc (domain, key_size);
 
        memcpy (mp_key, key, key_size);
 
@@ -2560,7 +2560,7 @@ mono_remote_class (MonoDomain *domain, MonoString *class_name, MonoClass *proxy_
        key = create_remote_class_key (NULL, proxy_class);
        
        mono_domain_lock (domain);
-       rc = g_hash_table_lookup (domain->proxy_vtable_hash, key);
+       rc = (MonoRemoteClass *)g_hash_table_lookup (domain->proxy_vtable_hash, key);
 
        if (rc) {
                g_free (key);
@@ -2580,12 +2580,12 @@ mono_remote_class (MonoDomain *domain, MonoString *class_name, MonoClass *proxy_
        key = mp_key;
 
        if (proxy_class->flags & TYPE_ATTRIBUTE_INTERFACE) {
-               rc = mono_domain_alloc (domain, MONO_SIZEOF_REMOTE_CLASS + sizeof(MonoClass*));
+               rc = (MonoRemoteClass *)mono_domain_alloc (domain, MONO_SIZEOF_REMOTE_CLASS + sizeof(MonoClass*));
                rc->interface_count = 1;
                rc->interfaces [0] = proxy_class;
                rc->proxy_class = mono_defaults.marshalbyrefobject_class;
        } else {
-               rc = mono_domain_alloc (domain, MONO_SIZEOF_REMOTE_CLASS);
+               rc = (MonoRemoteClass *)mono_domain_alloc (domain, MONO_SIZEOF_REMOTE_CLASS);
                rc->interface_count = 0;
                rc->proxy_class = proxy_class;
        }
@@ -2616,7 +2616,7 @@ clone_remote_class (MonoDomain *domain, MonoRemoteClass* remote_class, MonoClass
        gpointer* key, *mp_key;
        
        key = create_remote_class_key (remote_class, extra_class);
-       rc = g_hash_table_lookup (domain->proxy_vtable_hash, key);
+       rc = (MonoRemoteClass *)g_hash_table_lookup (domain->proxy_vtable_hash, key);
        if (rc != NULL) {
                g_free (key);
                return rc;
@@ -2628,7 +2628,7 @@ clone_remote_class (MonoDomain *domain, MonoRemoteClass* remote_class, MonoClass
 
        if (extra_class->flags & TYPE_ATTRIBUTE_INTERFACE) {
                int i,j;
-               rc = mono_domain_alloc (domain, MONO_SIZEOF_REMOTE_CLASS + sizeof(MonoClass*) * (remote_class->interface_count + 1));
+               rc = (MonoRemoteClass *)mono_domain_alloc (domain, MONO_SIZEOF_REMOTE_CLASS + sizeof(MonoClass*) * (remote_class->interface_count + 1));
                rc->proxy_class = remote_class->proxy_class;
                rc->interface_count = remote_class->interface_count + 1;
                
@@ -2643,7 +2643,7 @@ clone_remote_class (MonoDomain *domain, MonoRemoteClass* remote_class, MonoClass
                        rc->interfaces [j] = extra_class;
        } else {
                // Replace the old class. The interface array is the same
-               rc = mono_domain_alloc (domain, MONO_SIZEOF_REMOTE_CLASS + sizeof(MonoClass*) * remote_class->interface_count);
+               rc = (MonoRemoteClass *)mono_domain_alloc (domain, MONO_SIZEOF_REMOTE_CLASS + sizeof(MonoClass*) * remote_class->interface_count);
                rc->proxy_class = extra_class;
                rc->interface_count = remote_class->interface_count;
                if (rc->interface_count > 0)
@@ -2729,7 +2729,7 @@ mono_upgrade_remote_class (MonoDomain *domain, MonoObject *proxy_object, MonoCla
 
        if (redo_vtable) {
                tproxy->remote_class = clone_remote_class (domain, remote_class, klass);
-               proxy_object->vtable = mono_remote_class_vtable (domain, tproxy->remote_class, tproxy->rp);
+               proxy_object->vtable = (MonoVTable *)mono_remote_class_vtable (domain, tproxy->remote_class, tproxy->rp);
        }
        
        mono_domain_unlock (domain);
@@ -3023,7 +3023,7 @@ handle_enum:
        case MONO_TYPE_CLASS:
        case MONO_TYPE_OBJECT:
        case MONO_TYPE_ARRAY:
-               mono_gc_wbarrier_generic_store (dest, deref_pointer? *(gpointer*)value: value);
+               mono_gc_wbarrier_generic_store (dest, deref_pointer ? *(MonoObject **)value : (MonoObject *)value);
                return;
        case MONO_TYPE_FNPTR:
        case MONO_TYPE_PTR: {
@@ -3145,7 +3145,7 @@ mono_field_get_addr (MonoObject *obj, MonoVTable *vt, MonoClassField *field)
                        mono_domain_lock (vt->domain);
                        addr = g_hash_table_lookup (vt->domain->special_static_fields, field);
                        mono_domain_unlock (vt->domain);
-                       src = mono_get_special_static_data (GPOINTER_TO_UINT (addr));
+                       src = (guint8 *)mono_get_special_static_data (GPOINTER_TO_UINT (addr));
                } else {
                        src = (guint8*)mono_vtable_get_static_field_data (vt) + field->offset;
                }
@@ -4296,7 +4296,7 @@ mono_runtime_invoke_array (MonoMethod *method, void *obj, MonoArray *params,
        gboolean has_byref_nullables = FALSE;
 
        if (NULL != params) {
-               pa = alloca (sizeof (gpointer) * mono_array_length (params));
+               pa = (void **)alloca (sizeof (gpointer) * mono_array_length (params));
                for (i = 0; i < mono_array_length (params); i++) {
                        MonoType *t = sig->params [i];
 
@@ -4401,7 +4401,7 @@ mono_runtime_invoke_array (MonoMethod *method, void *obj, MonoArray *params,
                        }
 #endif
                        if (method->klass->valuetype)
-                               o = mono_object_unbox (obj);
+                               o = (MonoObject *)mono_object_unbox ((MonoObject *)obj);
                        else
                                o = obj;
                } else if (method->klass->valuetype) {
@@ -4409,7 +4409,7 @@ mono_runtime_invoke_array (MonoMethod *method, void *obj, MonoArray *params,
                }
 
                mono_runtime_invoke (method, o, pa, exc);
-               return obj;
+               return (MonoObject *)obj;
        } else {
                if (mono_class_is_nullable (method->klass)) {
                        MonoObject *nullable;
@@ -4417,7 +4417,7 @@ mono_runtime_invoke_array (MonoMethod *method, void *obj, MonoArray *params,
                        /* Convert the unboxed vtype into a Nullable structure */
                        nullable = mono_object_new (mono_domain_get (), method->klass);
 
-                       mono_nullable_init (mono_object_unbox (nullable), mono_value_box (mono_domain_get (), method->klass->cast_class, obj), method->klass);
+                       mono_nullable_init ((guint8 *)mono_object_unbox (nullable), mono_value_box (mono_domain_get (), method->klass->cast_class, obj), method->klass);
                        obj = mono_object_unbox (nullable);
                }
 
@@ -4513,7 +4513,7 @@ mono_object_new_pinned (MonoDomain *domain, MonoClass *klass)
                return NULL;
 
 #ifdef HAVE_SGEN_GC
-       return mono_gc_alloc_pinned_obj (vtable, mono_class_instance_size (klass));
+       return (MonoObject *)mono_gc_alloc_pinned_obj (vtable, mono_class_instance_size (klass));
 #else
        return mono_object_new_specific (vtable);
 #endif
@@ -4565,7 +4565,7 @@ mono_object_new_alloc_specific (MonoVTable *vtable)
 {
        MONO_REQ_GC_UNSAFE_MODE;
 
-       MonoObject *o = mono_gc_alloc_obj (vtable, vtable->klass->instance_size);
+       MonoObject *o = (MonoObject *)mono_gc_alloc_obj (vtable, vtable->klass->instance_size);
 
        if (G_UNLIKELY (vtable->klass->has_finalize))
                mono_object_register_finalizer (o);
@@ -4578,7 +4578,7 @@ mono_object_new_fast (MonoVTable *vtable)
 {
        MONO_REQ_GC_UNSAFE_MODE;
 
-       return mono_gc_alloc_obj (vtable, vtable->klass->instance_size);
+       return (MonoObject *)mono_gc_alloc_obj (vtable, vtable->klass->instance_size);
 }
 
 /**
@@ -4661,7 +4661,7 @@ mono_object_clone (MonoObject *obj)
        if (obj->vtable->klass->rank)
                return (MonoObject*)mono_array_clone ((MonoArray*)obj);
 
-       o = mono_gc_alloc_obj (obj->vtable, size);
+       o = (MonoObject *)mono_gc_alloc_obj (obj->vtable, size);
 
        /* If the object doesn't contain references this will do a simple memmove. */
        mono_gc_wbarrier_object_copy (o, obj);
@@ -4743,7 +4743,7 @@ mono_array_clone_in_domain (MonoDomain *domain, MonoArray *array)
                return o;
        }
        
-       sizes = alloca (klass->rank * sizeof(intptr_t) * 2);
+       sizes = (uintptr_t *)alloca (klass->rank * sizeof(intptr_t) * 2);
        size = mono_array_element_size (klass);
        for (i = 0; i < klass->rank; ++i) {
                sizes [i] = array->bounds [i].length;
@@ -4883,9 +4883,9 @@ mono_array_new_full (MonoDomain *domain, MonoClass *array_class, uintptr_t *leng
         */
        vtable = mono_class_vtable_full (domain, array_class, TRUE);
        if (bounds_size)
-               o = mono_gc_alloc_array (vtable, byte_len, len, bounds_size);
+               o = (MonoObject *)mono_gc_alloc_array (vtable, byte_len, len, bounds_size);
        else
-               o = mono_gc_alloc_vector (vtable, byte_len, len);
+               o = (MonoObject *)mono_gc_alloc_vector (vtable, byte_len, len);
        array = (MonoArray*)o;
 
        bounds = array->bounds;
@@ -4948,7 +4948,7 @@ mono_array_new_specific (MonoVTable *vtable, uintptr_t n)
                mono_gc_out_of_memory (MONO_ARRAY_MAX_SIZE);
                return NULL;
        }
-       o = mono_gc_alloc_vector (vtable, byte_len, n);
+       o = (MonoObject *)mono_gc_alloc_vector (vtable, byte_len, n);
        ao = (MonoArray*)o;
 
        return ao;
@@ -5037,7 +5037,7 @@ mono_string_new_size (MonoDomain *domain, gint32 len)
        vtable = mono_class_vtable (domain, mono_defaults.string_class);
        g_assert (vtable);
 
-       s = mono_gc_alloc_string (vtable, size, len);
+       s = (MonoString *)mono_gc_alloc_string (vtable, size, len);
 
        return s;
 }
@@ -5157,7 +5157,7 @@ mono_value_box (MonoDomain *domain, MonoClass *klass, gpointer value)
 
        g_assert (klass->valuetype);
        if (mono_class_is_nullable (klass))
-               return mono_nullable_box (value, klass);
+               return mono_nullable_box ((guint8 *)value, klass);
 
        vtable = mono_class_vtable (domain, klass);
        if (!vtable)
@@ -5426,10 +5426,10 @@ str_lookup (MonoDomain *domain, gpointer user_data)
 {
        MONO_REQ_GC_UNSAFE_MODE;
 
-       LDStrInfo *info = user_data;
+       LDStrInfo *info = (LDStrInfo *)user_data;
        if (info->res || domain == info->orig_domain)
                return;
-       info->res = mono_g_hash_table_lookup (domain->ldstr_table, info->ins);
+       info->res = (MonoString *)mono_g_hash_table_lookup (domain->ldstr_table, info->ins);
 }
 
 #ifdef HAVE_SGEN_GC
@@ -5442,7 +5442,7 @@ mono_string_get_pinned (MonoString *str)
        int size;
        MonoString *news;
        size = sizeof (MonoString) + 2 * (mono_string_length (str) + 1);
-       news = mono_gc_alloc_pinned_obj (((MonoObject*)str)->vtable, size);
+       news = (MonoString *)mono_gc_alloc_pinned_obj (((MonoObject*)str)->vtable, size);
        if (news) {
                memcpy (mono_string_chars (news), mono_string_chars (str), mono_string_length (str) * 2);
                news->length = mono_string_length (str);
@@ -5466,7 +5466,7 @@ mono_string_is_interned_lookup (MonoString *str, int insert)
        domain = ((MonoObject *)str)->vtable->domain;
        ldstr_table = domain->ldstr_table;
        ldstr_lock ();
-       res = mono_g_hash_table_lookup (ldstr_table, str);
+       res = (MonoString *)mono_g_hash_table_lookup (ldstr_table, str);
        if (res) {
                ldstr_unlock ();
                return res;
@@ -5477,7 +5477,7 @@ mono_string_is_interned_lookup (MonoString *str, int insert)
                s = mono_string_get_pinned (str);
                if (s) {
                        ldstr_lock ();
-                       res = mono_g_hash_table_lookup (ldstr_table, str);
+                       res = (MonoString *)mono_g_hash_table_lookup (ldstr_table, str);
                        if (res) {
                                ldstr_unlock ();
                                return res;
@@ -5551,7 +5551,7 @@ mono_ldstr (MonoDomain *domain, MonoImage *image, guint32 idx)
        MONO_REQ_GC_UNSAFE_MODE;
 
        if (image->dynamic) {
-               MonoString *str = mono_lookup_dynamic_token (image, MONO_TOKEN_STRING | idx, NULL);
+               MonoString *str = (MonoString *)mono_lookup_dynamic_token (image, MONO_TOKEN_STRING | idx, NULL);
                return str;
        } else {
                if (!mono_verifier_verify_string_signature (image, idx, NULL))
@@ -5591,7 +5591,7 @@ mono_ldstr_metadata_sig (MonoDomain *domain, const char* sig)
        }
 #endif
        ldstr_lock ();
-       interned = mono_g_hash_table_lookup (domain->ldstr_table, o);
+       interned = (MonoString *)mono_g_hash_table_lookup (domain->ldstr_table, o);
        ldstr_unlock ();
        if (interned)
                return interned; /* o will get garbage collected */
@@ -5599,7 +5599,7 @@ mono_ldstr_metadata_sig (MonoDomain *domain, const char* sig)
        o = mono_string_get_pinned (o);
        if (o) {
                ldstr_lock ();
-               interned = mono_g_hash_table_lookup (domain->ldstr_table, o);
+               interned = (MonoString *)mono_g_hash_table_lookup (domain->ldstr_table, o);
                if (!interned) {
                        mono_g_hash_table_insert (domain->ldstr_table, o, o);
                        interned = o;
@@ -5667,7 +5667,7 @@ mono_string_to_utf8_checked (MonoString *s, MonoError *error)
        /* g_utf16_to_utf8  may not be able to complete the convertion (e.g. NULL values were found, #335488) */
        if (s->length > written) {
                /* allocate the total length and copy the part of the string that has been converted */
-               char *as2 = g_malloc0 (s->length);
+               char *as2 = (char *)g_malloc0 (s->length);
                memcpy (as2, as, written);
                g_free (as);
                as = as2;
@@ -5704,7 +5704,7 @@ mono_string_to_utf8_ignore (MonoString *s)
        /* g_utf16_to_utf8  may not be able to complete the convertion (e.g. NULL values were found, #335488) */
        if (s->length > written) {
                /* allocate the total length and copy the part of the string that has been converted */
-               char *as2 = g_malloc0 (s->length);
+               char *as2 = (char *)g_malloc0 (s->length);
                memcpy (as2, as, written);
                g_free (as);
                as = as2;
@@ -5761,7 +5761,7 @@ mono_string_to_utf16 (MonoString *s)
        if (s == NULL)
                return NULL;
 
-       as = g_malloc ((s->length * 2) + 2);
+       as = (char *)g_malloc ((s->length * 2) + 2);
        as [(s->length * 2)] = '\0';
        as [(s->length * 2) + 1] = '\0';
 
@@ -5880,9 +5880,9 @@ mono_string_to_utf8_internal (MonoMemPool *mp, MonoImage *image, MonoString *s,
 
        len = strlen (r) + 1;
        if (mp)
-               mp_s = mono_mempool_alloc (mp, len);
+               mp_s = (char *)mono_mempool_alloc (mp, len);
        else
-               mp_s = mono_image_alloc (image, len);
+               mp_s = (char *)mono_image_alloc (image, len);
 
        memcpy (mp_s, r, len);
 
@@ -6032,7 +6032,7 @@ mono_runtime_capture_context (MonoDomain *domain)
                domain->capture_context_method = mono_compile_method (method);
        }
 
-       runtime_invoke = domain->capture_context_runtime_invoke;
+       runtime_invoke = (RuntimeInvokeFunction)domain->capture_context_runtime_invoke;
 
        return runtime_invoke (NULL, NULL, NULL, domain->capture_context_method);
 }
@@ -6060,7 +6060,7 @@ mono_async_result_new (MonoDomain *domain, HANDLE handle, MonoObject *state, gpo
                /* note: result may be null if the flow is suppressed */
        }
 
-       res->data = data;
+       res->data = (void **)data;
        MONO_OBJECT_SETREF (res, object_data, object_data);
        MONO_OBJECT_SETREF (res, async_state, state);
        if (handle != NULL)
@@ -6168,7 +6168,7 @@ mono_message_init (MonoDomain *domain,
        for (i = 0, j = 0; i < sig->param_count; i++) {
                if (sig->params [i]->byref) {
                        if (out_args) {
-                               MonoObject* arg = mono_array_get (out_args, gpointer, j);
+                               MonoObject* arg = (MonoObject *)mono_array_get (out_args, gpointer, j);
                                mono_array_setref (this_obj->args, i, arg);
                                j++;
                        }
@@ -6277,7 +6277,7 @@ mono_message_invoke (MonoObject *target, MonoMethodMessage *msg,
        for (i = 0, j = 0; i < sig->param_count; i++) {
                if (sig->params [i]->byref) {
                        MonoObject* arg;
-                       arg = mono_array_get (msg->args, gpointer, i);
+                       arg = (MonoObject *)mono_array_get (msg->args, gpointer, i);
                        mono_array_setref (*out_args, j, arg);
                        j++;
                }
@@ -6443,10 +6443,10 @@ mono_delegate_ctor (MonoObject *this_obj, MonoObject *target, gpointer addr)
 
        g_assert (addr);
 
-       ji = mono_jit_info_table_find (domain, mono_get_addr_from_ftnptr (addr));
+       ji = mono_jit_info_table_find (domain, (char *)mono_get_addr_from_ftnptr (addr));
        /* Shared code */
        if (!ji && domain != mono_get_root_domain ())
-               ji = mono_jit_info_table_find (mono_get_root_domain (), mono_get_addr_from_ftnptr (addr));
+               ji = mono_jit_info_table_find (mono_get_root_domain (), (char *)mono_get_addr_from_ftnptr (addr));
        if (ji) {
                method = mono_jit_info_get_method (ji);
                g_assert (!method->klass->generic_container);
@@ -6542,7 +6542,7 @@ mono_method_return_message_restore (MonoMethod *method, gpointer *params, MonoAr
                        if (j >= out_len)
                                mono_raise_exception (mono_get_exception_execution_engine ("The proxy call returned an incorrect number of output arguments"));
 
-                       arg = mono_array_get (out_args, gpointer, j);
+                       arg = (char *)mono_array_get (out_args, gpointer, j);
                        type = pt->type;
 
                        g_assert (type != MONO_TYPE_VOID);
index e534d33b42239c659f083813f3a06176d3682af8..6cfbe5cbcce2fe85df1a6912fbcb024ad8401d8e 100644 (file)
@@ -72,19 +72,19 @@ mono_opcode_value (const mono_byte **ip, const mono_byte *end)
        const mono_byte *p = *ip;
 
        if (p >= end)
-               return -1;
+               return (MonoOpcodeEnum)-1;
        if (*p == 0xfe) {
                ++p;
                if (p >= end)
-                       return -1;
-               res = *p + MONO_PREFIX1_OFFSET;
+                       return (MonoOpcodeEnum)-1;
+               res = (MonoOpcodeEnum)(*p + MONO_PREFIX1_OFFSET);
        } else if (*p == MONO_CUSTOM_PREFIX) {
                ++p;
                if (p >= end)
-                       return -1;
-               res = *p + MONO_CUSTOM_PREFIX_OFFSET;
+                       return (MonoOpcodeEnum)-1;
+               res = (MonoOpcodeEnum)(*p + MONO_CUSTOM_PREFIX_OFFSET);
        } else {
-               res = *p;
+               res = (MonoOpcodeEnum)*p;
        }
        *ip = p;
        return res;
index e2e3fdff79fe388496a7fd12b060b1e037f1787a..eacaa657785eacec163dbf70a251599b45f62454 100644 (file)
@@ -333,7 +333,7 @@ dump_methoddef (MonoImage *metadata, guint32 token)
 static void
 dump_dotnet_iinfo (MonoImage *image)
 {
-       MonoCLIImageInfo *iinfo = image->image_info;
+       MonoCLIImageInfo *iinfo = (MonoCLIImageInfo *)image->image_info;
 
        dump_dotnet_header (&iinfo->cli_header);
        dump_sections (iinfo);
@@ -385,7 +385,7 @@ dump_verify_info (MonoImage *image, int flags)
                        }
 
                        for (tmp = errors; tmp; tmp = tmp->next) {
-                               MonoVerifyInfo *info = tmp->data;
+                               MonoVerifyInfo *info = (MonoVerifyInfo *)tmp->data;
                                g_print ("%s: %s\n", desc [info->status], info->message);
                                if (info->status == MONO_VERIFY_ERROR) {
                                        count++;
@@ -504,7 +504,7 @@ verify_image_file (const char *fname)
 
 invalid_image:
        for (tmp = errors; tmp; tmp = tmp->next) {
-               MonoVerifyInfo *info = tmp->data;
+               MonoVerifyInfo *info = (MonoVerifyInfo *)tmp->data;
                g_print ("%s: %s\n", desc [info->status], info->message);
                if (info->status == MONO_VERIFY_ERROR)
                        count++;
@@ -610,7 +610,7 @@ pedump_assembly_search_hook (MonoAssemblyName *aname, gpointer user_data)
         GList *tmp;
 
        for (tmp = loaded_assemblies; tmp; tmp = tmp->next) {
-               MonoAssembly *ass = tmp->data;
+               MonoAssembly *ass = (MonoAssembly *)tmp->data;
                if (mono_assembly_names_equal (aname, &ass->aname))
                       return ass;
        }
index 53e762d0a2886686b7299696c10686f66a3776ce..24d33ee89c86a283f21b4270967fd9083ec50af7 100644 (file)
@@ -464,7 +464,7 @@ static GPtrArray* get_domain_assemblies (MonoDomain *domain)
        assemblies = g_ptr_array_new ();
        mono_domain_assemblies_lock (domain);
        for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
-               MonoAssembly *ass = tmp->data;
+               MonoAssembly *ass = (MonoAssembly *)tmp->data;
                if (ass->image->fileio_used)
                        continue;
                g_ptr_array_add (assemblies, ass);
@@ -522,7 +522,7 @@ MonoArray *ves_icall_System_Diagnostics_Process_GetModules_internal (MonoObject
 
        if (assemblies) {
                for (i = 0; i < assembly_count; i++) {
-                       MonoAssembly *ass = g_ptr_array_index (assemblies, i);
+                       MonoAssembly *ass = (MonoAssembly *)g_ptr_array_index (assemblies, i);
                        MonoObject *module = get_process_module (ass, proc_class);
                        mono_array_setref (temp_arr, num_added++, module);
                }
@@ -623,9 +623,9 @@ MonoBoolean ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal (MonoPr
        gboolean ret;
 
        shellex.cbSize = sizeof(SHELLEXECUTEINFO);
-       shellex.fMask = SEE_MASK_FLAG_DDEWAIT | SEE_MASK_NOCLOSEPROCESS | SEE_MASK_UNICODE;
-       shellex.nShow = proc_start_info->window_style;
-       shellex.nShow = (shellex.nShow == 0) ? 1 : (shellex.nShow == 1 ? 0 : shellex.nShow);
+       shellex.fMask = (gulong)(SEE_MASK_FLAG_DDEWAIT | SEE_MASK_NOCLOSEPROCESS | SEE_MASK_UNICODE);
+       shellex.nShow = (gulong)proc_start_info->window_style;
+       shellex.nShow = (gulong)((shellex.nShow == 0) ? 1 : (shellex.nShow == 1 ? 0 : shellex.nShow));
        
        
        if (proc_start_info->filename != NULL) {
@@ -649,7 +649,7 @@ MonoBoolean ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal (MonoPr
        if (proc_start_info->error_dialog) {    
                shellex.hwnd = proc_start_info->error_dialog_parent_handle;
        } else {
-               shellex.fMask |= SEE_MASK_FLAG_NO_UI;
+               shellex.fMask = (gulong)(shellex.fMask | SEE_MASK_FLAG_NO_UI);
        }
 
        ret = ShellExecuteEx (&shellex);
@@ -771,7 +771,12 @@ MonoBoolean ves_icall_System_Diagnostics_Process_CreateProcess_internal (MonoPro
 
        if (process_info->username) {
                logon_flags = process_info->load_user_profile ? LOGON_WITH_PROFILE : 0;
-               ret=CreateProcessWithLogonW (mono_string_chars (process_info->username), process_info->domain ? mono_string_chars (process_info->domain) : NULL, process_info->password, logon_flags, shell_path, cmd? mono_string_chars (cmd): NULL, creation_flags, env_vars, dir, &startinfo, &procinfo);
+               ret = CreateProcessWithLogonW (
+                       mono_string_chars (process_info->username),
+                       process_info->domain ? mono_string_chars (process_info->domain) : NULL,
+                       (const gunichar2 *)process_info->password, logon_flags, shell_path,
+                       cmd ? mono_string_chars (cmd) : NULL,
+                       creation_flags, env_vars, dir, &startinfo, &procinfo);
        } else {
                ret=CreateProcess (shell_path, cmd? mono_string_chars (cmd): NULL, NULL, NULL, TRUE, creation_flags, env_vars, dir, &startinfo, &procinfo);
        }
@@ -1063,7 +1068,7 @@ ves_icall_System_Diagnostics_Process_GetProcessData (int pid, gint32 data_type,
        MonoProcessError perror;
        guint64 res;
 
-       res = mono_process_get_data_with_error (GINT_TO_POINTER (pid), data_type, &perror);
+       res = mono_process_get_data_with_error (GINT_TO_POINTER (pid), (MonoProcessData)data_type, &perror);
        if (error)
                *error = perror;
        return res;
index f6a914040832e8ec3b1409baa9399269e8039133..af9ac55ec7ce7a4c7ca46cb63544bb12818632d4 100644 (file)
@@ -159,11 +159,11 @@ void
 mono_profiler_set_events (MonoProfileFlags events)
 {
        ProfilerDesc *prof;
-       MonoProfileFlags value = 0;
+       MonoProfileFlags value = (MonoProfileFlags)0;
        if (prof_list)
                prof_list->events = events;
        for (prof = prof_list; prof; prof = prof->next)
-               value |= prof->events;
+               value = (MonoProfileFlags)(value | prof->events);
        mono_profiler_events = value;
 }
 
@@ -813,7 +813,7 @@ mono_profiler_shutdown (void)
                        prof->shutdown_callback (prof->profiler);
        }
 
-       mono_profiler_set_events (0);
+       mono_profiler_set_events ((MonoProfileFlags)0);
 }
 
 void
@@ -1018,7 +1018,7 @@ mono_profiler_coverage_alloc (MonoMethod *method, int entries)
        if (!coverage_hash)
                coverage_hash = g_hash_table_new (NULL, NULL);
 
-       res = g_malloc0 (sizeof (MonoProfileCoverageInfo) + sizeof (void*) * 2 * entries);
+       res = (MonoProfileCoverageInfo *)g_malloc0 (sizeof (MonoProfileCoverageInfo) + sizeof (void*) * 2 * entries);
 
        res->entries = entries;
 
@@ -1040,7 +1040,7 @@ mono_profiler_coverage_free (MonoMethod *method)
                return;
        }
 
-       info = g_hash_table_lookup (coverage_hash, method);
+       info = (MonoProfileCoverageInfo *)g_hash_table_lookup (coverage_hash, method);
        if (info) {
                g_free (info);
                g_hash_table_remove (coverage_hash, method);
@@ -1073,7 +1073,7 @@ mono_profiler_coverage_get (MonoProfiler *prof, MonoMethod *method, MonoProfileC
 
        mono_profiler_coverage_lock ();
        if (coverage_hash)
-               info = g_hash_table_lookup (coverage_hash, method);
+               info = (MonoProfileCoverageInfo *)g_hash_table_lookup (coverage_hash, method);
        mono_profiler_coverage_unlock ();
 
        if (!info)
@@ -1240,7 +1240,7 @@ mono_profiler_load (const char *desc)
                gboolean res = FALSE;
 
                if (col != NULL) {
-                       mname = g_memdup (desc, col - desc + 1);
+                       mname = (char *)g_memdup (desc, col - desc + 1);
                        mname [col - desc] = 0;
                } else {
                        mname = g_strdup (desc);
index 90f6a365e8f96f93d34d806b74d1bd486c5522bb..4f1f6d8405494b51c21655a4fdc9c7dd7f213fd9 100644 (file)
@@ -194,7 +194,7 @@ static MonoMethod * inflate_method (MonoReflectionType *type, MonoObject *obj);
 static guint32 create_typespec (MonoDynamicImage *assembly, MonoType *type);
 static void init_type_builder_generics (MonoObject *type);
 
-#define RESOLVE_TYPE(type) do { type = (void*)mono_reflection_type_resolve_user_types ((MonoReflectionType*)type); } while (0)
+#define RESOLVE_TYPE(type) do { type = (MonoObject *)mono_reflection_type_resolve_user_types ((MonoReflectionType*)type); } while (0)
 #define RESOLVE_ARRAY_TYPE_ELEMENT(array, index) do {  \
        MonoReflectionType *__type = mono_array_get (array, MonoReflectionType*, index);        \
        __type = mono_reflection_type_resolve_user_types (__type);      \
@@ -247,7 +247,7 @@ mono_find_dynamic_image_owner (void *ptr)
        if (dynamic_images)
        {
                for (i = 0; !owner && i < dynamic_images->len; ++i) {
-                       MonoImage *image = g_ptr_array_index (dynamic_images, i);
+                       MonoImage *image = (MonoImage *)g_ptr_array_index (dynamic_images, i);
                        if (mono_mempool_contains_addr (image->mempool, ptr))
                                owner = image;
                }
@@ -296,7 +296,7 @@ lookup_dyn_token (MonoDynamicImage *assembly, guint32 token)
        MonoObject *obj;
 
        dynamic_image_lock (assembly);
-       obj = mono_g_hash_table_lookup (assembly->tokens, GUINT_TO_POINTER (token));
+       obj = (MonoObject *)mono_g_hash_table_lookup (assembly->tokens, GUINT_TO_POINTER (token));
        dynamic_image_unlock (assembly);
 
        return obj;
@@ -307,7 +307,7 @@ sigbuffer_init (SigBuffer *buf, int size)
 {
        MONO_REQ_GC_NEUTRAL_MODE;
 
-       buf->buf = g_malloc (size);
+       buf->buf = (char *)g_malloc (size);
        buf->p = buf->buf;
        buf->end = buf->buf + size;
 }
@@ -319,7 +319,7 @@ sigbuffer_make_room (SigBuffer *buf, int size)
 
        if (buf->end - buf->p < size) {
                int new_size = buf->end - buf->buf + size + 32;
-               char *p = g_realloc (buf->buf, new_size);
+               char *p = (char *)g_realloc (buf->buf, new_size);
                size = buf->p - buf->buf;
                buf->buf = p;
                buf->p = p + size;
@@ -435,7 +435,7 @@ alloc_table (MonoDynamicTable *table, guint nrows)
                                table->alloc_rows *= 2;
                }
 
-               table->values = g_renew (guint32, table->values, (table->alloc_rows) * table->columns);
+               table->values = (guint32 *)g_renew (guint32, table->values, (table->alloc_rows) * table->columns);
        }
 }
 
@@ -454,7 +454,7 @@ make_room_in_stream (MonoDynamicStream *stream, int size)
                        stream->alloc_size *= 2;
        }
        
-       stream->data = g_realloc (stream->data, stream->alloc_size);
+       stream->data = (char *)g_realloc (stream->data, stream->alloc_size);
 }
 
 static guint32
@@ -505,7 +505,7 @@ string_heap_init (MonoDynamicStream *sh)
 
        sh->index = 0;
        sh->alloc_size = 4096;
-       sh->data = g_malloc (4096);
+       sh->data = (char *)g_malloc (4096);
        sh->hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
        string_heap_insert (sh, "");
 }
@@ -599,7 +599,7 @@ add_to_blob_cached (MonoDynamicImage *assembly, char *b1, int s1, char *b2, int
        char *copy;
        gpointer oldkey, oldval;
 
-       copy = g_malloc (s1+s2);
+       copy = (char *)g_malloc (s1+s2);
        memcpy (copy, b1, s1);
        memcpy (copy + s1, b2, s2);
        if (g_hash_table_lookup_extended (assembly->blob_cache, copy, &oldkey, &oldval)) {
@@ -1330,12 +1330,12 @@ lookup_custom_attr (MonoImage *image, gpointer member)
 
        MonoCustomAttrInfo* res;
 
-       res = mono_image_property_lookup (image, member, MONO_PROP_DYNAMIC_CATTR);
+       res = (MonoCustomAttrInfo *)mono_image_property_lookup (image, member, MONO_PROP_DYNAMIC_CATTR);
 
        if (!res)
                return NULL;
 
-       res = g_memdup (res, MONO_SIZEOF_CUSTOM_ATTR_INFO + sizeof (MonoCustomAttrEntry) * res->num_attrs);
+       res = (MonoCustomAttrInfo *)g_memdup (res, MONO_SIZEOF_CUSTOM_ATTR_INFO + sizeof (MonoCustomAttrEntry) * res->num_attrs);
        res->cached = 0;
        return res;
 }
@@ -1381,7 +1381,7 @@ mono_custom_attrs_from_builders (MonoImage *alloc_img, MonoImage *image, MonoArr
        }
        count -= not_visible;
 
-       ainfo = image_g_malloc0 (alloc_img, MONO_SIZEOF_CUSTOM_ATTR_INFO + sizeof (MonoCustomAttrEntry) * count);
+       ainfo = (MonoCustomAttrInfo *)image_g_malloc0 (alloc_img, MONO_SIZEOF_CUSTOM_ATTR_INFO + sizeof (MonoCustomAttrEntry) * count);
 
        ainfo->image = image;
        ainfo->num_attrs = count;
@@ -1390,7 +1390,7 @@ mono_custom_attrs_from_builders (MonoImage *alloc_img, MonoImage *image, MonoArr
        for (i = 0; i < count; ++i) {
                cattr = (MonoReflectionCustomAttr*)mono_array_get (cattrs, gpointer, i);
                if (custom_attr_visible (image, cattr)) {
-                       unsigned char *saved = mono_image_alloc (image, mono_array_length (cattr->data));
+                       unsigned char *saved = (unsigned char *)mono_image_alloc (image, mono_array_length (cattr->data));
                        memcpy (saved, mono_array_addr (cattr->data, char, 0), mono_array_length (cattr->data));
                        ainfo->attrs [index].ctor = cattr->ctor->method;
                        ainfo->attrs [index].data = saved;
@@ -1419,7 +1419,7 @@ mono_save_custom_attrs (MonoImage *image, void *obj, MonoArray *cattrs)
        ainfo = mono_custom_attrs_from_builders (image, image, cattrs);
 
        mono_loader_lock ();
-       tmp = mono_image_property_lookup (image, obj, MONO_PROP_DYNAMIC_CATTR);
+       tmp = (MonoCustomAttrInfo *)mono_image_property_lookup (image, obj, MONO_PROP_DYNAMIC_CATTR);
        if (tmp)
                mono_custom_attrs_free (tmp);
        mono_image_property_insert (image, obj, MONO_PROP_DYNAMIC_CATTR, ainfo);
@@ -1823,7 +1823,7 @@ mono_image_get_method_info (MonoReflectionMethodBuilder *mb, MonoDynamicImage *a
                        guint32 owner = MONO_TYPEORMETHOD_METHOD | (mb->table_idx << MONO_TYPEORMETHOD_BITS);
 
                        mono_image_get_generic_param_info (
-                               mono_array_get (mb->generic_params, gpointer, i), owner, assembly);
+                               (MonoReflectionGenericParam *)mono_array_get (mb->generic_params, gpointer, i), owner, assembly);
                }
        }
 
@@ -1956,7 +1956,7 @@ field_encode_signature (MonoDynamicImage *assembly, MonoReflectionFieldBuilder *
 }
 
 static guint32
-encode_constant (MonoDynamicImage *assembly, MonoObject *val, guint32 *ret_type)
+encode_constant (MonoDynamicImage *assembly, MonoObject *val, MonoTypeEnum *ret_type)
 {
        MONO_REQ_GC_UNSAFE_MODE;
 
@@ -1966,7 +1966,7 @@ encode_constant (MonoDynamicImage *assembly, MonoObject *val, guint32 *ret_type)
        char* buf;
        guint32 idx = 0, len = 0, dummy = 0;
 
-       buf = g_malloc (64);
+       buf = (char *)g_malloc (64);
        if (!val) {
                *ret_type = MONO_TYPE_CLASS;
                len = 4;
@@ -2161,7 +2161,7 @@ mono_image_get_field_info (MonoReflectionFieldBuilder *fb, MonoDynamicImage *ass
                values [MONO_FIELD_LAYOUT_OFFSET] = fb->offset;
        }
        if (fb->attrs & FIELD_ATTRIBUTE_LITERAL) {
-               guint32 field_type = 0;
+               MonoTypeEnum field_type = (MonoTypeEnum)0;
                table = &assembly->tables [MONO_TABLE_CONSTANT];
                table->rows ++;
                alloc_table (table, table->rows);
@@ -2290,7 +2290,7 @@ mono_image_get_property_info (MonoReflectionPropertyBuilder *pb, MonoDynamicImag
                values [MONO_METHOD_SEMA_ASSOCIATION] = (pb->table_idx << MONO_HAS_SEMANTICS_BITS) | MONO_HAS_SEMANTICS_PROPERTY;
        }
        if (pb->attrs & PROPERTY_ATTRIBUTE_HAS_DEFAULT) {
-               guint32 field_type = 0;
+               MonoTypeEnum field_type = (MonoTypeEnum)0;
                table = &assembly->tables [MONO_TABLE_CONSTANT];
                table->rows ++;
                alloc_table (table, table->rows);
@@ -2388,7 +2388,7 @@ encode_constraints (MonoReflectionGenericParam *gparam, guint32 owner, MonoDynam
        }
 
        for (i = 0; i < num_constraints; i++) {
-               MonoReflectionType *constraint = mono_array_get (
+               MonoReflectionType *constraint = (MonoReflectionType *)mono_array_get (
                        gparam->iface_constraints, gpointer, i);
 
                table_idx = table->next_idx ++;
@@ -2600,9 +2600,9 @@ mono_image_typedef_or_ref_full (MonoDynamicImage *assembly, MonoType *type, gboo
         */
        if ((klass->image == &assembly->image) && (type->type != MONO_TYPE_VAR) && 
                        (type->type != MONO_TYPE_MVAR)) {
-               MonoReflectionTypeBuilder *tb = mono_class_get_ref_info (klass);
+               MonoReflectionTypeBuilder *tb = (MonoReflectionTypeBuilder *)mono_class_get_ref_info (klass);
                token = MONO_TYPEDEFORREF_TYPEDEF | (tb->table_idx << MONO_TYPEDEFORREF_BITS);
-               register_dyn_token (assembly, token, mono_class_get_ref_info (klass));
+               register_dyn_token (assembly, token, (MonoObject *)mono_class_get_ref_info (klass));
                return token;
        }
 
@@ -2625,7 +2625,7 @@ mono_image_typedef_or_ref_full (MonoDynamicImage *assembly, MonoType *type, gboo
        token = MONO_TYPEDEFORREF_TYPEREF | (table->next_idx << MONO_TYPEDEFORREF_BITS); /* typeref */
        g_hash_table_insert (assembly->typeref, type, GUINT_TO_POINTER(token));
        table->next_idx ++;
-       register_dyn_token (assembly, token, mono_class_get_ref_info (klass));
+       register_dyn_token (assembly, token, (MonoObject *)mono_class_get_ref_info (klass));
        return token;
 }
 
@@ -3112,7 +3112,7 @@ mono_reflection_method_on_tb_inst_get_handle (MonoReflectionMethodOnTypeBuilderI
 
        type_argv = g_new0 (MonoType *, count);
        for (i = 0; i < count; i++) {
-               MonoReflectionType *garg = mono_array_get (m->method_args, gpointer, i);
+               MonoReflectionType *garg = (MonoReflectionType *)mono_array_get (m->method_args, gpointer, i);
                type_argv [i] = mono_reflection_type_get_handle (garg);
        }
        ginst = mono_metadata_get_generic_inst (count, type_argv);
@@ -3375,7 +3375,7 @@ add_custom_modifiers (MonoDynamicImage *assembly, MonoType *type, MonoArray *mod
                return mono_metadata_type_dup (NULL, type);
 
        len = MONO_SIZEOF_TYPE + ((gint32)count) * sizeof (MonoCustomMod);
-       t = g_malloc (len);
+       t = (MonoType *)g_malloc (len);
        memcpy (t, type, MONO_SIZEOF_TYPE);
 
        t->num_mods = count;
@@ -3577,7 +3577,7 @@ mono_image_get_array_token (MonoDynamicImage *assembly, MonoReflectionArrayMetho
 
        name = mono_string_to_utf8 (m->name);
        nparams = mono_array_length (m->parameters);
-       sig = g_malloc0 (MONO_SIZEOF_METHOD_SIGNATURE + sizeof (MonoType*) * nparams);
+       sig = (MonoMethodSignature *)g_malloc0 (MONO_SIZEOF_METHOD_SIGNATURE + sizeof (MonoType*) * nparams);
        sig->hasthis = 1;
        sig->sentinelpos = -1;
        sig->call_convention = reflection_cc_to_file (m->call_conv);
@@ -3588,7 +3588,7 @@ mono_image_get_array_token (MonoDynamicImage *assembly, MonoReflectionArrayMetho
                sig->params [i] = mono_type_array_get_and_resolve (m->parameters, i);
 
        for (tmp = assembly->array_methods; tmp; tmp = tmp->next) {
-               am = tmp->data;
+               am = (ArrayMethod *)tmp->data;
                if (strcmp (name, am->name) == 0 && 
                                mono_metadata_type_equal (am->parent, mtype) &&
                                mono_metadata_signature_equal (am->sig, sig)) {
@@ -3980,7 +3980,7 @@ mono_image_fill_export_table_from_class (MonoDomain *domain, MonoClass *klass,
                GList *tmp;
 
                for (tmp = klass->ext->nested_classes; tmp; tmp = tmp->next)
-                       mono_image_fill_export_table_from_class (domain, tmp->data, module_index, table->next_idx - 1, assembly);
+                       mono_image_fill_export_table_from_class (domain, (MonoClass *)tmp->data, module_index, table->next_idx - 1, assembly);
        }
 
        return res;
@@ -4103,16 +4103,16 @@ mono_image_fill_export_table_from_type_forwarders (MonoReflectionAssemblyBuilder
 static int
 compare_constants (const void *a, const void *b)
 {
-       const guint32 *a_values = a;
-       const guint32 *b_values = b;
+       const guint32 *a_values = (const guint32 *)a;
+       const guint32 *b_values = (const guint32 *)b;
        return a_values [MONO_CONSTANT_PARENT] - b_values [MONO_CONSTANT_PARENT];
 }
 
 static int
 compare_semantics (const void *a, const void *b)
 {
-       const guint32 *a_values = a;
-       const guint32 *b_values = b;
+       const guint32 *a_values = (const guint32 *)a;
+       const guint32 *b_values = (const guint32 *)b;
        int assoc = a_values [MONO_METHOD_SEMA_ASSOCIATION] - b_values [MONO_METHOD_SEMA_ASSOCIATION];
        if (assoc)
                return assoc;
@@ -4122,8 +4122,8 @@ compare_semantics (const void *a, const void *b)
 static int
 compare_custom_attrs (const void *a, const void *b)
 {
-       const guint32 *a_values = a;
-       const guint32 *b_values = b;
+       const guint32 *a_values = (const guint32 *)a;
+       const guint32 *b_values = (const guint32 *)b;
 
        return a_values [MONO_CUSTOM_ATTR_PARENT] - b_values [MONO_CUSTOM_ATTR_PARENT];
 }
@@ -4131,8 +4131,8 @@ compare_custom_attrs (const void *a, const void *b)
 static int
 compare_field_marshal (const void *a, const void *b)
 {
-       const guint32 *a_values = a;
-       const guint32 *b_values = b;
+       const guint32 *a_values = (const guint32 *)a;
+       const guint32 *b_values = (const guint32 *)b;
 
        return a_values [MONO_FIELD_MARSHAL_PARENT] - b_values [MONO_FIELD_MARSHAL_PARENT];
 }
@@ -4140,8 +4140,8 @@ compare_field_marshal (const void *a, const void *b)
 static int
 compare_nested (const void *a, const void *b)
 {
-       const guint32 *a_values = a;
-       const guint32 *b_values = b;
+       const guint32 *a_values = (const guint32 *)a;
+       const guint32 *b_values = (const guint32 *)b;
 
        return a_values [MONO_NESTED_CLASS_NESTED] - b_values [MONO_NESTED_CLASS_NESTED];
 }
@@ -4163,8 +4163,8 @@ compare_genericparam (const void *a, const void *b)
 static int
 compare_declsecurity_attrs (const void *a, const void *b)
 {
-       const guint32 *a_values = a;
-       const guint32 *b_values = b;
+       const guint32 *a_values = (const guint32 *)a;
+       const guint32 *b_values = (const guint32 *)b;
 
        return a_values [MONO_DECL_SECURITY_PARENT] - b_values [MONO_DECL_SECURITY_PARENT];
 }
@@ -4172,8 +4172,8 @@ compare_declsecurity_attrs (const void *a, const void *b)
 static int
 compare_interface_impl (const void *a, const void *b)
 {
-       const guint32 *a_values = a;
-       const guint32 *b_values = b;
+       const guint32 *a_values = (const guint32 *)a;
+       const guint32 *b_values = (const guint32 *)b;
 
        int klass = a_values [MONO_INTERFACEIMPL_CLASS] - b_values [MONO_INTERFACEIMPL_CLASS];
        if (klass)
@@ -4223,7 +4223,7 @@ build_compressed_metadata (MonoDynamicImage *assembly)
 
        qsort (assembly->gen_params->pdata, assembly->gen_params->len, sizeof (gpointer), compare_genericparam);
        for (i = 0; i < assembly->gen_params->len; i++){
-               GenericParamTableEntry *entry = g_ptr_array_index (assembly->gen_params, i);
+               GenericParamTableEntry *entry = (GenericParamTableEntry *)g_ptr_array_index (assembly->gen_params, i);
                write_generic_param_entry (assembly, entry);
        }
 
@@ -4285,7 +4285,7 @@ build_compressed_metadata (MonoDynamicImage *assembly)
        heapt_size += 3;
        heapt_size &= ~3;
        meta_size += heapt_size;
-       meta->raw_metadata = g_malloc0 (meta_size);
+       meta->raw_metadata = (char *)g_malloc0 (meta_size);
        p = (unsigned char*)meta->raw_metadata;
        /* the metadata signature */
        *p++ = 'B'; *p++ = 'S'; *p++ = 'J'; *p++ = 'B';
@@ -4558,7 +4558,7 @@ fixup_cattrs (MonoDynamicImage *assembly)
                if ((type & MONO_CUSTOM_ATTR_TYPE_MASK) == MONO_CUSTOM_ATTR_TYPE_METHODDEF) {
                        idx = type >> MONO_CUSTOM_ATTR_TYPE_BITS;
                        token = mono_metadata_make_token (MONO_TABLE_METHOD, idx);
-                       ctor = mono_g_hash_table_lookup (assembly->remapped_tokens, GUINT_TO_POINTER (token));
+                       ctor = (MonoObject *)mono_g_hash_table_lookup (assembly->remapped_tokens, GUINT_TO_POINTER (token));
                        g_assert (ctor);
 
                        if (!strcmp (ctor->vtable->klass->name, "MonoCMethod")) {
@@ -4697,7 +4697,7 @@ load_public_key (MonoArray *pkey, MonoDynamicImage *assembly) {
        token = mono_image_add_stream_data (&assembly->blob, blob_size, b - blob_size);
        mono_image_add_stream_data (&assembly->blob, mono_array_addr (pkey, char, 0), len);
 
-       assembly->public_key = g_malloc (len);
+       assembly->public_key = (guint8 *)g_malloc (len);
        memcpy (assembly->public_key, mono_array_addr (pkey, char, 0), len);
        assembly->public_key_len = len;
 
@@ -4713,7 +4713,7 @@ load_public_key (MonoArray *pkey, MonoDynamicImage *assembly) {
                g_warning ("Invalid public key length: %d bits (total: %d)", (int)MONO_PUBLIC_KEY_BIT_SIZE (len), (int)len);
                assembly->strong_name_size = MONO_DEFAULT_PUBLIC_KEY_LENGTH; /* to be safe */
        }
-       assembly->strong_name = g_malloc0 (assembly->strong_name_size);
+       assembly->strong_name = (char *)g_malloc0 (assembly->strong_name_size);
 
        return token;
 }
@@ -4878,7 +4878,7 @@ mono_image_build_metadata (MonoReflectionModuleBuilder *moduleb)
                        collect_types (&types, type);
                }
 
-       mono_ptr_array_sort (types, (gpointer)compare_types_by_table_idx);
+       mono_ptr_array_sort (types, (int (*)(const void *, const void *))compare_types_by_table_idx);
        table = &assembly->tables [MONO_TABLE_TYPEDEF];
        table->rows += mono_ptr_array_size (types);
        alloc_table (table, table->rows);
@@ -4888,16 +4888,16 @@ mono_image_build_metadata (MonoReflectionModuleBuilder *moduleb)
         * so load_class_names () needs to touch fewer pages.
         */
        for (i = 0; i < mono_ptr_array_size (types); ++i) {
-               MonoReflectionTypeBuilder *tb = mono_ptr_array_get (types, i);
+               MonoReflectionTypeBuilder *tb = (MonoReflectionTypeBuilder *)mono_ptr_array_get (types, i);
                string_heap_insert_mstring (&assembly->sheap, tb->nspace);
        }
        for (i = 0; i < mono_ptr_array_size (types); ++i) {
-               MonoReflectionTypeBuilder *tb = mono_ptr_array_get (types, i);
+               MonoReflectionTypeBuilder *tb = (MonoReflectionTypeBuilder *)mono_ptr_array_get (types, i);
                string_heap_insert_mstring (&assembly->sheap, tb->name);
        }
 
        for (i = 0; i < mono_ptr_array_size (types); ++i) {
-               MonoReflectionTypeBuilder *type = mono_ptr_array_get (types, i);
+               MonoReflectionTypeBuilder *type = (MonoReflectionTypeBuilder *)mono_ptr_array_get (types, i);
                mono_image_get_type_info (domain, type, assembly);
        }
 
@@ -4932,7 +4932,7 @@ mono_image_build_metadata (MonoReflectionModuleBuilder *moduleb)
        }
 
        for (i = 0; i < mono_ptr_array_size (types); ++i) {
-               MonoReflectionTypeBuilder *type = mono_ptr_array_get (types, i);
+               MonoReflectionTypeBuilder *type = (MonoReflectionTypeBuilder *)mono_ptr_array_get (types, i);
                if (type->methods) {
                        for (j = 0; j < type->num_methods; ++j) {
                                MonoReflectionMethodBuilder *mb = mono_array_get (
@@ -5288,7 +5288,7 @@ mono_image_register_token (MonoDynamicImage *assembly, guint32 token, MonoObject
        MonoObject *prev;
 
        dynamic_image_lock (assembly);
-       prev = mono_g_hash_table_lookup (assembly->tokens, GUINT_TO_POINTER (token));
+       prev = (MonoObject *)mono_g_hash_table_lookup (assembly->tokens, GUINT_TO_POINTER (token));
        if (prev) {
                /* There could be multiple MethodInfo objects with the same token */
                //g_assert (prev == obj);
@@ -5314,7 +5314,7 @@ create_dynamic_mono_image (MonoDynamicAssembly *assembly, char *assembly_name, c
 
 #if HAVE_BOEHM_GC
        /* The MonoGHashTable's need GC tracking */
-       image = GC_MALLOC (sizeof (MonoDynamicImage));
+       image = (MonoDynamicImage *)GC_MALLOC (sizeof (MonoDynamicImage));
 #else
        image = g_new0 (MonoDynamicImage, 1);
 #endif
@@ -5459,7 +5459,7 @@ mono_dynamic_image_free (MonoDynamicImage *image)
        g_list_free (di->array_methods);
        if (di->gen_params) {
                for (i = 0; i < di->gen_params->len; i++) {
-                       GenericParamTableEntry *entry = g_ptr_array_index (di->gen_params, i);
+                       GenericParamTableEntry *entry = (GenericParamTableEntry *)g_ptr_array_index (di->gen_params, i);
                        mono_gc_deregister_root ((char*) &entry->gparam);
                        g_free (entry);
                }
@@ -5533,7 +5533,7 @@ mono_image_basic_init (MonoReflectionAssemblyBuilder *assemblyb)
 
 #if HAVE_BOEHM_GC
        /* assembly->assembly.image might be GC allocated */
-       assembly = assemblyb->dynamic_assembly = GC_MALLOC (sizeof (MonoDynamicAssembly));
+       assembly = assemblyb->dynamic_assembly = (MonoDynamicAssembly *)GC_MALLOC (sizeof (MonoDynamicAssembly));
 #else
        assembly = assemblyb->dynamic_assembly = g_new0 (MonoDynamicAssembly, 1);
 #endif
@@ -5832,13 +5832,13 @@ assembly_add_win32_resources (MonoDynamicImage *assembly, MonoReflectionAssembly
        }
        /* Directory structure */
        size += mono_array_length (assemblyb->win32_resources) * 256;
-       p = buf = g_malloc (size);
+       p = buf = (char *)g_malloc (size);
 
        resource_tree_encode (tree, p, p, &p);
 
        g_assert (p - buf <= size);
 
-       assembly->win32_res = g_malloc (p - buf);
+       assembly->win32_res = (char *)g_malloc (p - buf);
        assembly->win32_res_size = p - buf;
        memcpy (assembly->win32_res, buf, p - buf);
 
@@ -6315,15 +6315,15 @@ typedef struct {
 
 static gboolean
 reflected_equal (gconstpointer a, gconstpointer b) {
-       const ReflectedEntry *ea = a;
-       const ReflectedEntry *eb = b;
+       const ReflectedEntry *ea = (const ReflectedEntry *)a;
+       const ReflectedEntry *eb = (const ReflectedEntry *)b;
 
        return (ea->item == eb->item) && (ea->refclass == eb->refclass);
 }
 
 static guint
 reflected_hash (gconstpointer a) {
-       const ReflectedEntry *ea = a;
+       const ReflectedEntry *ea = (const ReflectedEntry *)a;
        return mono_aligned_addr_hash (ea->item);
 }
 
@@ -6336,7 +6336,7 @@ reflected_hash (gconstpointer a) {
                mono_domain_lock (domain);      \
                if (!domain->refobject_hash)    \
                        domain->refobject_hash = mono_g_hash_table_new_type (reflected_hash, reflected_equal, MONO_HASH_VALUE_GC, MONO_ROOT_SOURCE_DOMAIN, "domain reflection objects table");  \
-               if ((_obj = mono_g_hash_table_lookup (domain->refobject_hash, &e))) {   \
+               if ((_obj = (t)mono_g_hash_table_lookup (domain->refobject_hash, &e))) {        \
                        mono_domain_unlock (domain);    \
                        return _obj;    \
                }       \
@@ -6349,7 +6349,7 @@ reflected_hash (gconstpointer a) {
 #define FREE_REFENTRY(entry) g_free ((entry))
 #define REFENTRY_REQUIRES_CLEANUP
 #else
-#define ALLOC_REFENTRY mono_mempool_alloc (domain->mp, sizeof (ReflectedEntry))
+#define ALLOC_REFENTRY (ReflectedEntry *)mono_mempool_alloc (domain->mp, sizeof (ReflectedEntry))
 /* FIXME: */
 #define FREE_REFENTRY(entry)
 #endif
@@ -6363,7 +6363,7 @@ reflected_hash (gconstpointer a) {
         mono_domain_lock (domain); \
                if (!domain->refobject_hash)    \
                        domain->refobject_hash = mono_g_hash_table_new_type (reflected_hash, reflected_equal, MONO_HASH_VALUE_GC, MONO_ROOT_SOURCE_DOMAIN, "domain reflection objects table");  \
-        _obj = mono_g_hash_table_lookup (domain->refobject_hash, &pe); \
+        _obj = (t)mono_g_hash_table_lookup (domain->refobject_hash, &pe); \
         if (!_obj) { \
                    ReflectedEntry *e = ALLOC_REFENTRY;         \
                    e->item = (p);      \
@@ -6710,7 +6710,7 @@ mono_type_get_object (MonoDomain *domain, MonoType *type)
        if (type == &klass->byval_arg && !image_is_dynamic (klass->image)) {
                MonoVTable *vtable = mono_class_try_get_vtable (domain, klass);
                if (vtable && vtable->type)
-                       return vtable->type;
+                       return (MonoReflectionType *)vtable->type;
        }
 
        mono_loader_lock (); /*FIXME mono_class_init and mono_class_vtable acquire it*/
@@ -6718,7 +6718,7 @@ mono_type_get_object (MonoDomain *domain, MonoType *type)
        if (!domain->type_hash)
                domain->type_hash = mono_g_hash_table_new_type ((GHashFunc)mono_metadata_type_hash, 
                                (GCompareFunc)mono_metadata_type_equal, MONO_HASH_VALUE_GC, MONO_ROOT_SOURCE_DOMAIN, "domain reflection types table");
-       if ((res = mono_g_hash_table_lookup (domain->type_hash, type))) {
+       if ((res = (MonoReflectionType *)mono_g_hash_table_lookup (domain->type_hash, type))) {
                mono_domain_unlock (domain);
                mono_loader_unlock ();
                return res;
@@ -6775,7 +6775,7 @@ mono_type_get_object (MonoDomain *domain, MonoType *type)
                if (is_type_done && !type->byref) {
                        mono_domain_unlock (domain);
                        mono_loader_unlock ();
-                       return mono_class_get_ref_info (klass);
+                       return (MonoReflectionType *)mono_class_get_ref_info (klass);
                }
        }
        /* This is stored in vtables/JITted code so it has to be pinned */
@@ -7095,7 +7095,7 @@ mono_param_get_objects_internal (MonoDomain *domain, MonoMethod *method, MonoCla
                        /* Build MonoType for the type from the Constant Table */
                        if (!type)
                                type = g_new0 (MonoType, 1);
-                       type->type = types [i];
+                       type->type = (MonoTypeEnum)types [i];
                        type->data.klass = NULL;
                        if (types [i] == MONO_TYPE_CLASS)
                                type->data.klass = mono_defaults.object_class;
@@ -7301,7 +7301,7 @@ get_default_param_value_blobs (MonoMethod *method, char **blobs, guint32 *types)
                MonoReflectionMethodAux *aux;
                if (method->is_inflated)
                        method = ((MonoMethodInflated*)method)->declaring;
-               aux = g_hash_table_lookup (((MonoDynamicImage*)method->klass->image)->method_aux_hash, method);
+               aux = (MonoReflectionMethodAux *)g_hash_table_lookup (((MonoDynamicImage*)method->klass->image)->method_aux_hash, method);
                if (aux && aux->param_defaults) {
                        memcpy (blobs, &(aux->param_defaults [1]), methodsig->param_count * sizeof (char*));
                        memcpy (types, &(aux->param_default_types [1]), methodsig->param_count * sizeof (guint32));
@@ -7337,7 +7337,7 @@ get_default_param_value_blobs (MonoMethod *method, char **blobs, guint32 *types)
                }
        
                mono_metadata_decode_row (constt, crow - 1, const_cols, MONO_CONSTANT_SIZE);
-               blobs [paramseq - 1] = (gpointer) mono_metadata_blob_heap (image, const_cols [MONO_CONSTANT_VALUE]);
+               blobs [paramseq - 1] = (char *)mono_metadata_blob_heap (image, const_cols [MONO_CONSTANT_VALUE]);
                types [paramseq - 1] = const_cols [MONO_CONSTANT_TYPE];
        }
 
@@ -7847,19 +7847,19 @@ mono_reflection_get_type_internal (MonoImage *rootimage, MonoImage* image, MonoT
                        char *nested_name, *nested_nspace;
                        gboolean match = TRUE;
 
-                       lastp = strrchr (mod->data, '.');
+                       lastp = strrchr ((const char *)mod->data, '.');
                        if (lastp) {
                                /* Nested classes can have namespaces */
                                int nspace_len;
 
                                nested_name = g_strdup (lastp + 1);
                                nspace_len = lastp - (char*)mod->data;
-                               nested_nspace = g_malloc (nspace_len + 1);
+                               nested_nspace = (char *)g_malloc (nspace_len + 1);
                                memcpy (nested_nspace, mod->data, nspace_len);
                                nested_nspace [nspace_len] = '\0';
 
                        } else {
-                               nested_name = mod->data;
+                               nested_name = (char *)mod->data;
                                nested_nspace = NULL;
                        }
 
@@ -7902,7 +7902,7 @@ mono_reflection_get_type_internal (MonoImage *rootimage, MonoImage* image, MonoT
                int i;
 
                for (i = 0; i < info->type_arguments->len; i++) {
-                       MonoTypeNameParse *subinfo = g_ptr_array_index (info->type_arguments, i);
+                       MonoTypeNameParse *subinfo = (MonoTypeNameParse *)g_ptr_array_index (info->type_arguments, i);
 
                        type_args [i] = _mono_reflection_get_type_from_info (subinfo, rootimage, ignorecase);
                        if (!type_args [i]) {
@@ -8044,7 +8044,7 @@ mono_reflection_free_type_info (MonoTypeNameParse *info)
                int i;
 
                for (i = 0; i < info->type_arguments->len; i++) {
-                       MonoTypeNameParse *subinfo = g_ptr_array_index (info->type_arguments, i);
+                       MonoTypeNameParse *subinfo = (MonoTypeNameParse *)g_ptr_array_index (info->type_arguments, i);
 
                        mono_reflection_free_type_info (subinfo);
                        /*We free the subinfo since it is allocated by _mono_reflection_parse_type*/
@@ -8187,7 +8187,7 @@ load_cattr_enum_type (MonoImage *image, const char *p, const char **end, MonoErr
 
        mono_error_init (error);
 
-       n = g_memdup (p, slen + 1);
+       n = (char *)g_memdup (p, slen + 1);
        n [slen] = 0;
        t = mono_reflection_type_from_name (n, image);
        if (!t) {
@@ -8215,7 +8215,7 @@ handle_enum:
        case MONO_TYPE_U1:
        case MONO_TYPE_I1:
        case MONO_TYPE_BOOLEAN: {
-               MonoBoolean *bval = g_malloc (sizeof (MonoBoolean));
+               MonoBoolean *bval = (MonoBoolean *)g_malloc (sizeof (MonoBoolean));
                *bval = *p;
                *end = p + 1;
                return bval;
@@ -8223,7 +8223,7 @@ handle_enum:
        case MONO_TYPE_CHAR:
        case MONO_TYPE_U2:
        case MONO_TYPE_I2: {
-               guint16 *val = g_malloc (sizeof (guint16));
+               guint16 *val = (guint16 *)g_malloc (sizeof (guint16));
                *val = read16 (p);
                *end = p + 2;
                return val;
@@ -8235,7 +8235,7 @@ handle_enum:
        case MONO_TYPE_R4:
        case MONO_TYPE_U4:
        case MONO_TYPE_I4: {
-               guint32 *val = g_malloc (sizeof (guint32));
+               guint32 *val = (guint32 *)g_malloc (sizeof (guint32));
                *val = read32 (p);
                *end = p + 4;
                return val;
@@ -8246,13 +8246,13 @@ handle_enum:
 #endif
        case MONO_TYPE_U8:
        case MONO_TYPE_I8: {
-               guint64 *val = g_malloc (sizeof (guint64));
+               guint64 *val = (guint64 *)g_malloc (sizeof (guint64));
                *val = read64 (p);
                *end = p + 8;
                return val;
        }
        case MONO_TYPE_R8: {
-               double *val = g_malloc (sizeof (double));
+               double *val = (double *)g_malloc (sizeof (double));
                readr8 (p, val);
                *end = p + 8;
                return val;
@@ -8265,7 +8265,7 @@ handle_enum:
                        MonoClass *k =  t->data.klass;
                        
                        if (mono_is_corlib_image (k->image) && strcmp (k->name_space, "System") == 0 && strcmp (k->name, "DateTime") == 0){
-                               guint64 *val = g_malloc (sizeof (guint64));
+                               guint64 *val = (guint64 *)g_malloc (sizeof (guint64));
                                *val = read64 (p);
                                *end = p + 8;
                                return val;
@@ -8291,7 +8291,7 @@ handle_enum:
                }
 handle_type:
                slen = mono_metadata_decode_value (p, &p);
-               n = g_memdup (p, slen + 1);
+               n = (char *)g_memdup (p, slen + 1);
                n [slen] = 0;
                t = mono_reflection_type_from_name (n, image);
                if (!t) {
@@ -8331,7 +8331,7 @@ handle_type:
                                if (etype == 0x51)
                                        /* See Partition II, Appendix B3 */
                                        etype = MONO_TYPE_OBJECT;
-                               simple_type.type = etype;
+                               simple_type.type = (MonoTypeEnum)etype;
                                tklass = mono_class_from_mono_type (&simple_type);
                        }
                        goto handle_enum;
@@ -8339,7 +8339,7 @@ handle_type:
                        char *n;
                        MonoType *t;
                        slen = mono_metadata_decode_value (p, &p);
-                       n = g_memdup (p, slen + 1);
+                       n = (char *)g_memdup (p, slen + 1);
                        n [slen] = 0;
                        t = mono_reflection_type_from_name (n, image);
                        if (!t) {
@@ -8353,7 +8353,7 @@ handle_type:
                        subc = mono_class_from_mono_type (t);
                } else if (subt >= MONO_TYPE_BOOLEAN && subt <= MONO_TYPE_R8) {
                        MonoType simple_type = {{0}};
-                       simple_type.type = subt;
+                       simple_type.type = (MonoTypeEnum)subt;
                        subc = mono_class_from_mono_type (&simple_type);
                } else {
                        g_error ("Unknown type 0x%02x for object type encoding in custom attr", subt);
@@ -8431,7 +8431,7 @@ handle_type:
                        case MONO_TYPE_STRING:
                        case MONO_TYPE_SZARRAY:
                                for (i = 0; i < alen; i++) {
-                                       MonoObject *item = load_cattr_value (image, &tklass->byval_arg, p, &p, error);
+                                       MonoObject *item = (MonoObject *)load_cattr_value (image, &tklass->byval_arg, p, &p, error);
                                        if (!mono_error_ok (error))
                                                return NULL;
                                        mono_array_setref (arr, i, item);
@@ -8607,7 +8607,7 @@ create_custom_attr (MonoImage *image, MonoMethod *method, const guchar *data, gu
                memset (params, 0, sizeof (void*) * sig->param_count);
        } else {
                /* Allocate using GC so it gets GC tracking */
-               params = mono_gc_alloc_fixed (sig->param_count * sizeof (void*), MONO_GC_DESCRIPTOR_NULL, MONO_ROOT_SOURCE_REFLECTION, "custom attribute parameters");
+               params = (void **)mono_gc_alloc_fixed (sig->param_count * sizeof (void*), MONO_GC_DESCRIPTOR_NULL, MONO_ROOT_SOURCE_REFLECTION, "custom attribute parameters");
        }
 
        /* skip prolog */
@@ -8637,7 +8637,7 @@ create_custom_attr (MonoImage *image, MonoMethod *method, const guchar *data, gu
                        gint type_len;
                        char *type_name;
                        type_len = mono_metadata_decode_blob_size (named, &named);
-                       type_name = g_malloc (type_len + 1);
+                       type_name = (char *)g_malloc (type_len + 1);
                        memcpy (type_name, named, type_len);
                        type_name [type_len] = 0;
                        named += type_len;
@@ -8645,7 +8645,7 @@ create_custom_attr (MonoImage *image, MonoMethod *method, const guchar *data, gu
                        g_free (type_name);
                }
                name_len = mono_metadata_decode_blob_size (named, &named);
-               name = g_malloc (name_len + 1);
+               name = (char *)g_malloc (name_len + 1);
                memcpy (name, named, name_len);
                name [name_len] = 0;
                named += name_len;
@@ -8777,8 +8777,8 @@ mono_reflection_create_custom_attr_data_args (MonoImage *image, MonoMethod *meth
                        return;
                }
 
-               obj = type_is_reference (mono_method_signature (method)->params [i]) ? 
-                       val : mono_value_box (domain, mono_class_from_mono_type (mono_method_signature (method)->params [i]), val);
+               obj = (MonoObject *)(type_is_reference (mono_method_signature (method)->params [i]) ?
+                       val : mono_value_box (domain, mono_class_from_mono_type (mono_method_signature (method)->params [i]), val));
                mono_array_setref (typedargs, i, obj);
 
                if (!type_is_reference (mono_method_signature (method)->params [i]))
@@ -8808,7 +8808,7 @@ mono_reflection_create_custom_attr_data_args (MonoImage *image, MonoMethod *meth
                        if (ADDP_IS_GREATER_OR_OVF ((const guchar*)named, type_len, data + len))
                                goto fail;
 
-                       type_name = g_malloc (type_len + 1);
+                       type_name = (char *)g_malloc (type_len + 1);
                        memcpy (type_name, named, type_len);
                        type_name [type_len] = 0;
                        named += type_len;
@@ -8818,7 +8818,7 @@ mono_reflection_create_custom_attr_data_args (MonoImage *image, MonoMethod *meth
                name_len = mono_metadata_decode_blob_size (named, &named);
                if (ADDP_IS_GREATER_OR_OVF ((const guchar*)named, name_len, data + len))
                        goto fail;
-               name = g_malloc (name_len + 1);
+               name = (char *)g_malloc (name_len + 1);
                memcpy (name, named, name_len);
                name [name_len] = 0;
                named += name_len;
@@ -8843,7 +8843,7 @@ mono_reflection_create_custom_attr_data_args (MonoImage *image, MonoMethod *meth
                                return;
                        }
 
-                       obj = type_is_reference (field->type) ? val : mono_value_box (domain, mono_class_from_mono_type (field->type), val);
+                       obj = (MonoObject *)(type_is_reference (field->type) ? val : mono_value_box (domain, mono_class_from_mono_type (field->type), val));
                        mono_array_setref (namedargs, j, obj);
                        if (!type_is_reference (field->type))
                                g_free (val);
@@ -8872,7 +8872,7 @@ mono_reflection_create_custom_attr_data_args (MonoImage *image, MonoMethod *meth
                                return;
                        }
 
-                       obj = type_is_reference (prop_type) ? val : mono_value_box (domain, mono_class_from_mono_type (prop_type), val);
+                       obj = (MonoObject *)(type_is_reference (prop_type) ? val : mono_value_box (domain, mono_class_from_mono_type (prop_type), val));
                        mono_array_setref (namedargs, j, obj);
                        if (!type_is_reference (prop_type))
                                g_free (val);
@@ -8913,7 +8913,7 @@ mono_reflection_resolve_custom_attribute_data (MonoReflectionMethod *ref_method,
        if (!mono_class_init (method->klass))
                mono_raise_exception (mono_class_get_exception_for_failure (method->klass));
 
-       mono_reflection_create_custom_attr_data_args (image, method, data, len, &typedargs, &namedargs, &arginfo, &error);
+       mono_reflection_create_custom_attr_data_args (image, method, (const guchar *)data, len, &typedargs, &namedargs, &arginfo, &error);
        if (!mono_error_ok (&error))
                mono_error_raise_exception (&error);
        if (mono_loader_get_last_error ())
@@ -9064,7 +9064,7 @@ mono_custom_attrs_from_index (MonoImage *image, guint32 idx)
        len = g_list_length (list);
        if (!len)
                return NULL;
-       ainfo = g_malloc0 (MONO_SIZEOF_CUSTOM_ATTR_INFO + sizeof (MonoCustomAttrEntry) * len);
+       ainfo = (MonoCustomAttrInfo *)g_malloc0 (MONO_SIZEOF_CUSTOM_ATTR_INFO + sizeof (MonoCustomAttrEntry) * len);
        ainfo->num_attrs = len;
        ainfo->image = image;
        for (i = len, tmp = list; i != 0; --i, tmp = tmp->next) {
@@ -9257,7 +9257,7 @@ mono_custom_attrs_from_param (MonoMethod *method, guint32 param)
                MonoCustomAttrInfo *res, *ainfo;
                int size;
 
-               aux = g_hash_table_lookup (((MonoDynamicImage*)method->klass->image)->method_aux_hash, method);
+               aux = (MonoReflectionMethodAux *)g_hash_table_lookup (((MonoDynamicImage*)method->klass->image)->method_aux_hash, method);
                if (!aux || !aux->param_cattr)
                        return NULL;
 
@@ -9266,7 +9266,7 @@ mono_custom_attrs_from_param (MonoMethod *method, guint32 param)
                if (!ainfo)
                        return NULL;
                size = MONO_SIZEOF_CUSTOM_ATTR_INFO + sizeof (MonoCustomAttrEntry) * ainfo->num_attrs;
-               res = g_malloc0 (size);
+               res = (MonoCustomAttrInfo *)g_malloc0 (size);
                memcpy (res, ainfo, size);
                return res;
        }
@@ -9678,7 +9678,7 @@ mono_reflection_type_get_handle (MonoReflectionType* ref)
                count = mono_array_length (gclass->type_arguments);
                types = g_new0 (MonoType*, count);
                for (i = 0; i < count; ++i) {
-                       MonoReflectionType *t = mono_array_get (gclass->type_arguments, gpointer, i);
+                       MonoReflectionType *t = (MonoReflectionType *)mono_array_get (gclass->type_arguments, gpointer, i);
                        types [i] = mono_reflection_type_get_handle (t);
                        if (!types[i]) {
                                g_free (types);
@@ -9742,7 +9742,7 @@ parameters_to_signature (MonoImage *image, MonoArray *parameters) {
 
        count = parameters? mono_array_length (parameters): 0;
 
-       sig = image_g_malloc0 (image, MONO_SIZEOF_METHOD_SIGNATURE + sizeof (MonoType*) * count);
+       sig = (MonoMethodSignature *)image_g_malloc0 (image, MONO_SIZEOF_METHOD_SIGNATURE + sizeof (MonoType*) * count);
        sig->param_count = count;
        sig->sentinelpos = -1; /* FIXME */
        for (i = 0; i < count; ++i)
@@ -9932,7 +9932,7 @@ encode_cattr_value (MonoAssembly *assembly, char *buffer, char *p, char **retbuf
        if ((p-buffer) + 10 >= *buflen) {
                char *newbuf;
                *buflen *= 2;
-               newbuf = g_realloc (buffer, *buflen);
+               newbuf = (char *)g_realloc (buffer, *buflen);
                p = newbuf + (p-buffer);
                buffer = newbuf;
        }
@@ -9988,7 +9988,7 @@ handle_enum:
                        char *newbuf;
                        *buflen *= 2;
                        *buflen += slen;
-                       newbuf = g_realloc (buffer, *buflen);
+                       newbuf = (char *)g_realloc (buffer, *buflen);
                        p = newbuf + (p-buffer);
                        buffer = newbuf;
                }
@@ -10012,7 +10012,7 @@ handle_type:
                        char *newbuf;
                        *buflen *= 2;
                        *buflen += slen;
-                       newbuf = g_realloc (buffer, *buflen);
+                       newbuf = (char *)g_realloc (buffer, *buflen);
                        p = newbuf + (p-buffer);
                        buffer = newbuf;
                }
@@ -10114,7 +10114,7 @@ handle_type:
                        char *newbuf;
                        *buflen *= 2;
                        *buflen += slen;
-                       newbuf = g_realloc (buffer, *buflen);
+                       newbuf = (char *)g_realloc (buffer, *buflen);
                        p = newbuf + (p-buffer);
                        buffer = newbuf;
                }
@@ -10186,7 +10186,7 @@ encode_named_val (MonoReflectionAssembly *assembly, char *buffer, char *p, char
                char *newbuf;
                *buflen *= 2;
                *buflen += len;
-               newbuf = g_realloc (buffer, *buflen);
+               newbuf = (char *)g_realloc (buffer, *buflen);
                p = newbuf + (p-buffer);
                buffer = newbuf;
        }
@@ -10233,7 +10233,7 @@ mono_reflection_get_custom_attrs_blob (MonoReflectionAssembly *assembly, MonoObj
 
        g_assert (mono_array_length (ctorArgs) == sig->param_count);
        buflen = 256;
-       p = buffer = g_malloc (buflen);
+       p = buffer = (char *)g_malloc (buflen);
        /* write the prolog */
        *p++ = 1;
        *p++ = 0;
@@ -10254,7 +10254,7 @@ mono_reflection_get_custom_attrs_blob (MonoReflectionAssembly *assembly, MonoObj
                        MonoType *ptype;
                        char *pname;
 
-                       prop = mono_array_get (properties, gpointer, i);
+                       prop = (MonoObject *)mono_array_get (properties, gpointer, i);
                        get_prop_name_and_type (prop, &pname, &ptype);
                        *p++ = 0x54; /* PROPERTY signature */
                        encode_named_val (assembly, buffer, p, &buffer, &p, &buflen, ptype, pname, (MonoObject*)mono_array_get (propValues, gpointer, i));
@@ -10268,7 +10268,7 @@ mono_reflection_get_custom_attrs_blob (MonoReflectionAssembly *assembly, MonoObj
                        MonoType *ftype;
                        char *fname;
 
-                       field = mono_array_get (fields, gpointer, i);
+                       field = (MonoObject *)mono_array_get (fields, gpointer, i);
                        get_field_name_and_type (field, &fname, &ftype);
                        *p++ = 0x53; /* FIELD signature */
                        encode_named_val (assembly, buffer, p, &buffer, &p, &buflen, ftype, fname, (MonoObject*)mono_array_get (fieldValues, gpointer, i));
@@ -10329,7 +10329,7 @@ mono_reflection_setup_internal_class (MonoReflectionTypeBuilder *tb)
                return;
        }
 
-       klass = mono_image_alloc0 (&tb->module->dynamic_image->image, sizeof (MonoClass));
+       klass = (MonoClass *)mono_image_alloc0 (&tb->module->dynamic_image->image, sizeof (MonoClass));
 
        klass->image = &tb->module->dynamic_image->image;
 
@@ -10446,16 +10446,16 @@ mono_reflection_create_generic_class (MonoReflectionTypeBuilder *tb)
 
        g_assert (tb->generic_container && (tb->generic_container->owner.klass == klass));
 
-       klass->generic_container = mono_image_alloc0 (klass->image, sizeof (MonoGenericContainer));
+       klass->generic_container = (MonoGenericContainer *)mono_image_alloc0 (klass->image, sizeof (MonoGenericContainer));
 
        klass->generic_container->owner.klass = klass;
        klass->generic_container->type_argc = count;
-       klass->generic_container->type_params = mono_image_alloc0 (klass->image, sizeof (MonoGenericParamFull) * count);
+       klass->generic_container->type_params = (MonoGenericParamFull *)mono_image_alloc0 (klass->image, sizeof (MonoGenericParamFull) * count);
 
        klass->is_generic = 1;
 
        for (i = 0; i < count; i++) {
-               MonoReflectionGenericParam *gparam = mono_array_get (tb->generic_params, gpointer, i);
+               MonoReflectionGenericParam *gparam = (MonoReflectionGenericParam *)mono_array_get (tb->generic_params, gpointer, i);
                MonoGenericParamFull *param = (MonoGenericParamFull *) mono_reflection_type_get_handle ((MonoReflectionType*)gparam)->data.generic_param;
                klass->generic_container->type_params [i] = *param;
                /*Make sure we are a diferent type instance */
@@ -10526,11 +10526,11 @@ mono_marshal_spec_from_builder (MonoImage *image, MonoAssembly *assembly,
        MonoMarshalSpec *res;
 
        res = image_g_new0 (image, MonoMarshalSpec, 1);
-       res->native = minfo->type;
+       res->native = (MonoMarshalNative)minfo->type;
 
        switch (minfo->type) {
        case MONO_NATIVE_LPARRAY:
-               res->data.array_data.elem_type = minfo->eltype;
+               res->data.array_data.elem_type = (MonoMarshalNative)minfo->eltype;
                if (minfo->has_size) {
                        res->data.array_data.param_num = minfo->param_num;
                        res->data.array_data.num_elem = minfo->count;
@@ -10715,9 +10715,9 @@ reflection_methodbuilder_to_mono_method (MonoClass *klass,
                        }
                }
 
-               header = image_g_malloc0 (image, MONO_SIZEOF_METHOD_HEADER + num_locals * sizeof (MonoType*));
+               header = (MonoMethodHeader *)image_g_malloc0 (image, MONO_SIZEOF_METHOD_HEADER + num_locals * sizeof (MonoType*));
                header->code_size = code_size;
-               header->code = image_g_malloc (image, code_size);
+               header->code = (const unsigned char *)image_g_malloc (image, code_size);
                memcpy ((char*)header->code, code, code_size);
                header->max_stack = max_stack;
                header->init_locals = rmb->init_locals;
@@ -10816,7 +10816,8 @@ reflection_methodbuilder_to_mono_method (MonoClass *klass,
 
                                if (pb->attrs & PARAM_ATTRIBUTE_HAS_DEFAULT) {
                                        MonoDynamicImage *assembly;
-                                       guint32 idx, def_type, len;
+                                       guint32 idx, len;
+                                       MonoTypeEnum def_type;
                                        char *p;
                                        const char *p2;
 
@@ -10830,7 +10831,7 @@ reflection_methodbuilder_to_mono_method (MonoClass *klass,
                                        p = assembly->blob.data + idx;
                                        len = mono_metadata_decode_blob_size (p, &p2);
                                        len += p2 - p;
-                                       method_aux->param_defaults [i] = image_g_malloc (image, len);
+                                       method_aux->param_defaults [i] = (uint8_t *)image_g_malloc (image, len);
                                        method_aux->param_default_types [i] = def_type;
                                        memcpy ((gpointer)method_aux->param_defaults [i], p, len);
                                }
@@ -11061,7 +11062,7 @@ mono_reflection_bind_generic_method_parameters (MonoReflectionMethod *rmethod, M
 
        type_argv = g_new0 (MonoType *, count);
        for (i = 0; i < count; i++) {
-               MonoReflectionType *garg = mono_array_get (types, gpointer, i);
+               MonoReflectionType *garg = (MonoReflectionType *)mono_array_get (types, gpointer, i);
                type_argv [i] = mono_reflection_type_get_handle (garg);
        }
        ginst = mono_metadata_get_generic_inst (count, type_argv);
@@ -11206,7 +11207,7 @@ mono_reflection_generic_class_initialize (MonoReflectionGenericClass *type, Mono
        dgclass->field_generic_types = mono_image_set_new0 (gclass->owner, MonoType*, dgclass->count_fields);
 
        for (i = 0; i < dgclass->count_fields; i++) {
-               MonoObject *obj = mono_array_get (fields, gpointer, i);
+               MonoObject *obj = (MonoObject *)mono_array_get (fields, gpointer, i);
                MonoClassField *field, *inflated_field = NULL;
 
                if (!strcmp (obj->vtable->klass->name, "FieldBuilder"))
@@ -11289,7 +11290,7 @@ fix_partial_generic_class (MonoClass *klass)
 
        if (klass->method.count != gklass->method.count) {
                klass->method.count = gklass->method.count;
-               klass->methods = mono_image_alloc (klass->image, sizeof (MonoMethod*) * (klass->method.count + 1));
+               klass->methods = (MonoMethod **)mono_image_alloc (klass->image, sizeof (MonoMethod*) * (klass->method.count + 1));
 
                for (i = 0; i < klass->method.count; i++) {
                        MonoError error;
@@ -11301,7 +11302,7 @@ fix_partial_generic_class (MonoClass *klass)
 
        if (klass->interface_count && klass->interface_count != gklass->interface_count) {
                klass->interface_count = gklass->interface_count;
-               klass->interfaces = mono_image_alloc (klass->image, sizeof (MonoClass*) * gklass->interface_count);
+               klass->interfaces = (MonoClass **)mono_image_alloc (klass->image, sizeof (MonoClass*) * gklass->interface_count);
                klass->interfaces_packed = NULL; /*make setup_interface_offsets happy*/
 
                for (i = 0; i < gklass->interface_count; ++i) {
@@ -11344,7 +11345,7 @@ ensure_generic_class_runtime_vtable (MonoClass *klass)
 static void
 ensure_runtime_vtable (MonoClass *klass)
 {
-       MonoReflectionTypeBuilder *tb = mono_class_get_ref_info (klass);
+       MonoReflectionTypeBuilder *tb = (MonoReflectionTypeBuilder *)mono_class_get_ref_info (klass);
        int i, num, j;
 
        if (!image_is_dynamic (klass->image) || (!tb && !klass->generic_class) || klass->wastypebuilder)
@@ -11356,7 +11357,7 @@ ensure_runtime_vtable (MonoClass *klass)
                num = tb->ctors? mono_array_length (tb->ctors): 0;
                num += tb->num_methods;
                klass->method.count = num;
-               klass->methods = mono_image_alloc (klass->image, sizeof (MonoMethod*) * num);
+               klass->methods = (MonoMethod **)mono_image_alloc (klass->image, sizeof (MonoMethod*) * num);
                num = tb->ctors? mono_array_length (tb->ctors): 0;
                for (i = 0; i < num; ++i)
                        klass->methods [i] = ctorbuilder_to_mono_method (klass, mono_array_get (tb->ctors, MonoReflectionCtorBuilder*, i));
@@ -11367,7 +11368,7 @@ ensure_runtime_vtable (MonoClass *klass)
        
                if (tb->interfaces) {
                        klass->interface_count = mono_array_length (tb->interfaces);
-                       klass->interfaces = mono_image_alloc (klass->image, sizeof (MonoClass*) * klass->interface_count);
+                       klass->interfaces = (MonoClass **)mono_image_alloc (klass->image, sizeof (MonoClass*) * klass->interface_count);
                        for (i = 0; i < klass->interface_count; ++i) {
                                MonoType *iface = mono_type_array_get_and_resolve (tb->interfaces, i);
                                klass->interfaces [i] = mono_class_from_mono_type (iface);
@@ -11500,7 +11501,7 @@ mono_reflection_get_dynamic_overrides (MonoClass *klass, MonoMethod ***overrides
 static void
 typebuilder_setup_fields (MonoClass *klass, MonoError *error)
 {
-       MonoReflectionTypeBuilder *tb = mono_class_get_ref_info (klass);
+       MonoReflectionTypeBuilder *tb = (MonoReflectionTypeBuilder *)mono_class_get_ref_info (klass);
        MonoReflectionFieldBuilder *fb;
        MonoClassField *field;
        MonoImage *image = klass->image;
@@ -11542,7 +11543,7 @@ typebuilder_setup_fields (MonoClass *klass, MonoError *error)
 
        for (i = 0; i < klass->field.count; ++i) {
                MonoArray *rva_data;
-               fb = mono_array_get (tb->fields, gpointer, i);
+               fb = (MonoReflectionFieldBuilder *)mono_array_get (tb->fields, gpointer, i);
                field = &klass->fields [i];
                field->name = mono_string_to_utf8_image (image, fb->name, error);
                if (!mono_error_ok (error))
@@ -11557,7 +11558,7 @@ typebuilder_setup_fields (MonoClass *klass, MonoError *error)
                if ((fb->attrs & FIELD_ATTRIBUTE_HAS_FIELD_RVA) && (rva_data = fb->rva_data)) {
                        char *base = mono_array_addr (rva_data, char, 0);
                        size_t size = mono_array_length (rva_data);
-                       char *data = mono_image_alloc (klass->image, size);
+                       char *data = (char *)mono_image_alloc (klass->image, size);
                        memcpy (data, base, size);
                        klass->ext->field_def_values [i].data = data;
                }
@@ -11578,7 +11579,7 @@ typebuilder_setup_fields (MonoClass *klass, MonoError *error)
                        p = assembly->blob.data + idx;
                        len = mono_metadata_decode_blob_size (p, &p2);
                        len += p2 - p;
-                       klass->ext->field_def_values [i].data = mono_image_alloc (image, len);
+                       klass->ext->field_def_values [i].data = (const char *)mono_image_alloc (image, len);
                        memcpy ((gpointer)klass->ext->field_def_values [i].data, p, len);
                }
        }
@@ -11590,7 +11591,7 @@ typebuilder_setup_fields (MonoClass *klass, MonoError *error)
 static void
 typebuilder_setup_properties (MonoClass *klass, MonoError *error)
 {
-       MonoReflectionTypeBuilder *tb = mono_class_get_ref_info (klass);
+       MonoReflectionTypeBuilder *tb = (MonoReflectionTypeBuilder *)mono_class_get_ref_info (klass);
        MonoReflectionPropertyBuilder *pb;
        MonoImage *image = klass->image;
        MonoProperty *properties;
@@ -11631,7 +11632,7 @@ typebuilder_setup_properties (MonoClass *klass, MonoError *error)
                        p = assembly->blob.data + idx;
                        len = mono_metadata_decode_blob_size (p, &p2);
                        len += p2 - p;
-                       klass->ext->prop_def_values [i].data = mono_image_alloc (image, len);
+                       klass->ext->prop_def_values [i].data = (const char *)mono_image_alloc (image, len);
                        memcpy ((gpointer)klass->ext->prop_def_values [i].data, p, len);
                }
        }
@@ -11674,7 +11675,7 @@ mono_reflection_event_builder_get_event_info (MonoReflectionTypeBuilder *tb, Mon
 static void
 typebuilder_setup_events (MonoClass *klass, MonoError *error)
 {
-       MonoReflectionTypeBuilder *tb = mono_class_get_ref_info (klass);
+       MonoReflectionTypeBuilder *tb = (MonoReflectionTypeBuilder *)mono_class_get_ref_info (klass);
        MonoReflectionEventBuilder *eb;
        MonoImage *image = klass->image;
        MonoEvent *events;
@@ -11766,7 +11767,7 @@ mono_reflection_create_runtime_class (MonoReflectionTypeBuilder *tb)
        check_array_for_usertypes (tb->interfaces);
        if (tb->fields) {
                for (i = 0; i < mono_array_length (tb->fields); ++i) {
-                       MonoReflectionFieldBuilder *fb = mono_array_get (tb->fields, gpointer, i);
+                       MonoReflectionFieldBuilder *fb = (MonoReflectionFieldBuilder *)mono_array_get (tb->fields, gpointer, i);
                        if (fb) {
                                RESOLVE_TYPE (fb->type);
                                check_array_for_usertypes (fb->modreq);
@@ -11778,7 +11779,7 @@ mono_reflection_create_runtime_class (MonoReflectionTypeBuilder *tb)
        }
        if (tb->methods) {
                for (i = 0; i < mono_array_length (tb->methods); ++i) {
-                       MonoReflectionMethodBuilder *mb = mono_array_get (tb->methods, gpointer, i);
+                       MonoReflectionMethodBuilder *mb = (MonoReflectionMethodBuilder *)mono_array_get (tb->methods, gpointer, i);
                        if (mb) {
                                RESOLVE_TYPE (mb->rtype);
                                check_array_for_usertypes (mb->return_modreq);
@@ -11795,7 +11796,7 @@ mono_reflection_create_runtime_class (MonoReflectionTypeBuilder *tb)
        }
        if (tb->ctors) {
                for (i = 0; i < mono_array_length (tb->ctors); ++i) {
-                       MonoReflectionCtorBuilder *mb = mono_array_get (tb->ctors, gpointer, i);
+                       MonoReflectionCtorBuilder *mb = (MonoReflectionCtorBuilder *)mono_array_get (tb->ctors, gpointer, i);
                        if (mb) {
                                check_array_for_usertypes (mb->parameters);
                                if (mb->param_modreq)
@@ -11944,7 +11945,7 @@ mono_reflection_initialize_generic_parameter (MonoReflectionGenericParam *gparam
                if (!gparam->mbuilder->generic_container) {
                        MonoReflectionTypeBuilder *tb = (MonoReflectionTypeBuilder *)gparam->mbuilder->type;
                        MonoClass *klass = mono_class_from_mono_type (mono_reflection_type_get_handle ((MonoReflectionType*)tb));
-                       gparam->mbuilder->generic_container = mono_image_alloc0 (klass->image, sizeof (MonoGenericContainer));
+                       gparam->mbuilder->generic_container = (MonoGenericContainer *)mono_image_alloc0 (klass->image, sizeof (MonoGenericContainer));
                        gparam->mbuilder->generic_container->is_method = TRUE;
                        /* 
                         * Cannot set owner.method, since the MonoMethod is not created yet.
@@ -11957,7 +11958,7 @@ mono_reflection_initialize_generic_parameter (MonoReflectionGenericParam *gparam
        } else if (gparam->tbuilder) {
                if (!gparam->tbuilder->generic_container) {
                        MonoClass *klass = mono_class_from_mono_type (mono_reflection_type_get_handle ((MonoReflectionType*)gparam->tbuilder));
-                       gparam->tbuilder->generic_container = mono_image_alloc0 (klass->image, sizeof (MonoGenericContainer));
+                       gparam->tbuilder->generic_container = (MonoGenericContainer *)mono_image_alloc0 (klass->image, sizeof (MonoGenericContainer));
                        gparam->tbuilder->generic_container->owner.klass = klass;
                }
                param->param.owner = gparam->tbuilder->generic_container;
@@ -12042,7 +12043,7 @@ static MonoReferenceQueue *dynamic_method_queue;
 static void
 free_dynamic_method (void *dynamic_method)
 {
-       DynamicMethodReleaseData *data = dynamic_method;
+       DynamicMethodReleaseData *data = (DynamicMethodReleaseData *)dynamic_method;
        MonoDomain *domain = data->domain;
        MonoMethod *method = data->handle;
        guint32 dis_link;
@@ -12197,7 +12198,7 @@ mono_reflection_lookup_signature (MonoImage *image, MonoMethod *method, guint32
 
        mono_error_init (error);
 
-       sig = g_hash_table_lookup (((MonoDynamicImage*)image)->vararg_aux_hash, GUINT_TO_POINTER (token));
+       sig = (MonoMethodSignature *)g_hash_table_lookup (((MonoDynamicImage*)image)->vararg_aux_hash, GUINT_TO_POINTER (token));
        if (sig)
                return sig;
 
@@ -12246,7 +12247,7 @@ static void
 ensure_complete_type (MonoClass *klass)
 {
        if (image_is_dynamic (klass->image) && !klass->wastypebuilder && mono_class_get_ref_info (klass)) {
-               MonoReflectionTypeBuilder *tb = mono_class_get_ref_info (klass);
+               MonoReflectionTypeBuilder *tb = (MonoReflectionTypeBuilder *)mono_class_get_ref_info (klass);
 
                mono_domain_try_type_resolve (mono_domain_get (), NULL, (MonoObject*)tb);
 
@@ -12295,7 +12296,7 @@ resolve_object (MonoImage *image, MonoObject *obj, MonoClass **handle_class, Mon
                result = ((MonoReflectionMethod*)obj)->method;
                if (context) {
                        MonoError error;
-                       result = mono_class_inflate_generic_method_checked (result, context, &error);
+                       result = mono_class_inflate_generic_method_checked ((MonoMethod *)result, context, &error);
                        g_assert (mono_error_ok (&error)); /* FIXME don't swallow the error */
                }
                *handle_class = mono_defaults.methodhandle_class;
@@ -12321,7 +12322,7 @@ resolve_object (MonoImage *image, MonoObject *obj, MonoClass **handle_class, Mon
                }
                if (context) {
                        MonoError error;
-                       result = mono_class_inflate_generic_method_checked (result, context, &error);
+                       result = mono_class_inflate_generic_method_checked ((MonoMethod *)result, context, &error);
                        g_assert (mono_error_ok (&error)); /* FIXME don't swallow the error */
                }
                *handle_class = mono_defaults.methodhandle_class;
@@ -12337,7 +12338,7 @@ resolve_object (MonoImage *image, MonoObject *obj, MonoClass **handle_class, Mon
                }
                if (context) {
                        MonoError error;
-                       result = mono_class_inflate_generic_method_checked (result, context, &error);
+                       result = mono_class_inflate_generic_method_checked ((MonoMethod *)result, context, &error);
                        g_assert (mono_error_ok (&error)); /* FIXME don't swallow the error */
                }
                *handle_class = mono_defaults.methodhandle_class;
@@ -12493,7 +12494,7 @@ resolve_object (MonoImage *image, MonoObject *obj, MonoClass **handle_class, Mon
                        result = mono_reflection_method_on_tb_inst_get_handle (m);
                        if (context) {
                                MonoError error;
-                               result = mono_class_inflate_generic_method_checked (result, context, &error);
+                               result = mono_class_inflate_generic_method_checked ((MonoMethod *)result, context, &error);
                                g_assert (mono_error_ok (&error)); /* FIXME don't swallow the error */
                        }
                } else {
index 7f069a24f823a02cc1dd62c422358ec3aa0e4820..cbe8b3add942c42519b415dfbec92474e5ae30f1 100644 (file)
@@ -266,7 +266,7 @@ mono_marshal_remoting_find_in_cache (MonoMethod *method, int wrapper_type)
 
        mono_marshal_lock_internal ();
        if (mono_method_get_wrapper_cache (method)->remoting_invoke_cache)
-               wrps = g_hash_table_lookup (mono_method_get_wrapper_cache (method)->remoting_invoke_cache, method);
+               wrps = (MonoRemotingMethods *)g_hash_table_lookup (mono_method_get_wrapper_cache (method)->remoting_invoke_cache, method);
 
        if (wrps) {
                switch (wrapper_type) {
@@ -297,7 +297,7 @@ mono_remoting_mb_create_and_cache (MonoMethod *key, MonoMethodBuilder *mb,
        cache = get_cache_full (&mono_method_get_wrapper_cache (key)->remoting_invoke_cache, mono_aligned_addr_hash, NULL, NULL, g_free);
 
        mono_marshal_lock_internal ();
-       wrps = g_hash_table_lookup (cache, key);
+       wrps = (MonoRemotingMethods *)g_hash_table_lookup (cache, key);
        if (!wrps) {
                wrps = g_new0 (MonoRemotingMethods, 1);
                g_hash_table_insert (cache, key, wrps);
@@ -361,7 +361,7 @@ mono_remoting_wrapper (MonoMethod *method, gpointer *params)
                                } else {
                                        /* runtime_invoke expects a boxed instance */
                                        if (mono_class_is_nullable (mono_class_from_mono_type (sig->params [i])))
-                                               mparams[i] = mono_nullable_box (params [i], klass);
+                                               mparams[i] = mono_nullable_box ((guint8 *)params [i], klass);
                                        else
                                                mparams[i] = params [i];
                                }
@@ -469,7 +469,7 @@ mono_marshal_xdomain_copy_out_value (MonoObject *src, MonoObject *dst)
                if (mt == MONO_MARSHAL_COPY) {
                        int i, len = mono_array_length ((MonoArray *)dst);
                        for (i = 0; i < len; i++) {
-                               MonoObject *item = mono_array_get ((MonoArray *)src, gpointer, i);
+                               MonoObject *item = (MonoObject *)mono_array_get ((MonoArray *)src, gpointer, i);
                                mono_array_setref ((MonoArray *)dst, i, mono_marshal_xdomain_copy_value (item));
                        }
                } else {
@@ -564,7 +564,7 @@ mono_marshal_check_domain_image (gint32 domain_id, MonoImage *image)
        
        mono_domain_assemblies_lock (domain);
        for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
-               ass = tmp->data;
+               ass = (MonoAssembly *)tmp->data;
                if (ass->image == image)
                        break;
        }
@@ -629,7 +629,7 @@ mono_marshal_get_xappdomain_dispatch (MonoMethod *method, int *marshal_types, in
 
        /* try */
 
-       main_clause = mono_image_alloc0 (method->klass->image, sizeof (MonoExceptionClause));
+       main_clause = (MonoExceptionClause *)mono_image_alloc0 (method->klass->image, sizeof (MonoExceptionClause));
        main_clause->try_offset = mono_mb_get_label (mb);
 
        /* Clean the call context */
@@ -880,7 +880,7 @@ mono_marshal_get_xappdomain_invoke (MonoMethod *method)
 
        /* Count the number of parameters that need to be serialized */
 
-       marshal_types = alloca (sizeof (int) * sig->param_count);
+       marshal_types = (int *)alloca (sizeof (int) * sig->param_count);
        complex_count = complex_out_count = 0;
        for (i = 0; i < sig->param_count; i++) {
                MonoType *ptype = sig->params[i];
@@ -2006,7 +2006,7 @@ mono_marshal_xdomain_copy_value (MonoObject *val)
                if (mt == MONO_MARSHAL_COPY) {
                        int i, len = mono_array_length (acopy);
                        for (i = 0; i < len; i++) {
-                               MonoObject *item = mono_array_get (acopy, gpointer, i);
+                               MonoObject *item = (MonoObject *)mono_array_get (acopy, gpointer, i);
                                mono_array_setref (acopy, i, mono_marshal_xdomain_copy_value (item));
                        }
                }
index 6ec8cbe1ea8b8f90b88af1a1bebc0d65115a2ef6..de9ec6a79c993c20b6f1f3f08893461f1226d722 100644 (file)
@@ -332,7 +332,7 @@ mono_security_core_clr_check_override (MonoClass *klass, MonoMethod *override, M
 static gboolean
 get_caller_no_reflection_related (MonoMethod *m, gint32 no, gint32 ilo, gboolean managed, gpointer data)
 {
-       MonoMethod **dest = data;
+       MonoMethod **dest = (MonoMethod **)data;
        const char *ns;
 
        /* skip unmanaged frames */
@@ -436,7 +436,7 @@ typedef struct {
 static gboolean
 get_caller_of_elevated_trust_code (MonoMethod *m, gint32 no, gint32 ilo, gboolean managed, gpointer data)
 {
-       ElevatedTrustCookie *cookie = data;
+       ElevatedTrustCookie *cookie = (ElevatedTrustCookie *)data;
 
        /* skip unmanaged frames and wrappers */
        if (!managed || (m->wrapper_type != MONO_WRAPPER_NONE))
@@ -917,7 +917,7 @@ mono_security_core_clr_level_from_cinfo (MonoCustomAttrInfo *cinfo, MonoImage *i
        if (cinfo && mono_custom_attrs_has_attr (cinfo, security_critical_attribute ()))
                level = MONO_SECURITY_CORE_CLR_CRITICAL;
 
-       return level;
+       return (MonoSecurityCoreCLRLevel)level;
 }
 
 /*
index b8b1bcdb6f45dc7115067857bf3362efe2c8cd13..b6b594071296138a7fed75f03e6d122a98c82767 100644 (file)
@@ -372,7 +372,7 @@ mono_seq_point_data_init (SeqPointData *data, int entry_capacity)
 {
        data->entry_count = 0;
        data->entry_capacity = entry_capacity;
-       data->entries = g_malloc (sizeof (SeqPointDataEntry) * entry_capacity);
+       data->entries = (SeqPointDataEntry *)g_malloc (sizeof (SeqPointDataEntry) * entry_capacity);
 }
 
 void
@@ -402,7 +402,7 @@ mono_seq_point_data_read (SeqPointData *data, char *path)
        fsize = ftell(f);
        fseek(f, 0, SEEK_SET);
 
-       buffer_orig = buffer = g_malloc(fsize + 1);
+       buffer_orig = buffer = (guint8 *)g_malloc (fsize + 1);
        fread(buffer_orig, fsize, 1, f);
        fclose(f);
 
@@ -438,7 +438,7 @@ mono_seq_point_data_write (SeqPointData *data, char *path)
        // Add size of entry_count and native_base_offsets
        size += 4 + data->entry_count * 4;
 
-       buffer_orig = buffer = g_malloc (size);
+       buffer_orig = buffer = (guint8 *)g_malloc (size);
 
        encode_var_int (buffer, &buffer, data->entry_count);
 
index babdea43c861f9efa0580747ec19822f0a90ff0f..3f72f3f338a59069bf0323c4d7f47e035d394e4c 100644 (file)
@@ -28,7 +28,7 @@ typedef struct {
 } SeqPoint;
 
 typedef struct MonoSeqPointInfo {
-       int dummy[0];
+       int dummy [1];
 } MonoSeqPointInfo;
 
 typedef struct {
index 67e6a05bf30af7889765dfbd9699b322dcbe02eb..5e4fa165ab0efc72fd2d09482953ab52b8ee1289 100644 (file)
@@ -151,8 +151,8 @@ sgen_bridge_processing_stw_step (void)
 static gboolean
 is_bridge_object_dead (GCObject *obj, void *data)
 {
-       SgenHashTable *table = data;
-       unsigned char *value = sgen_hash_table_lookup (table, obj);
+       SgenHashTable *table = (SgenHashTable *)data;
+       unsigned char *value = (unsigned char *)sgen_hash_table_lookup (table, obj);
        if (!value)
                return FALSE;
        return !*value;
@@ -216,8 +216,8 @@ free_callback_data (SgenBridgeProcessor *processor)
 static int
 compare_xrefs (const void *a_ptr, const void *b_ptr)
 {
-       const MonoGCBridgeXRef *a = a_ptr;
-       const MonoGCBridgeXRef *b = b_ptr;
+       const MonoGCBridgeXRef *a = (const MonoGCBridgeXRef *)a_ptr;
+       const MonoGCBridgeXRef *b = (const MonoGCBridgeXRef *)b_ptr;
 
        if (a->src_scc_index < b->src_scc_index)
                return -1;
@@ -309,7 +309,7 @@ sgen_compare_bridge_processor_results (SgenBridgeProcessor *a, SgenBridgeProcess
                gboolean new_entry;
 
                g_assert (scc->num_objs > 0);
-               a_scc_index_ptr = sgen_hash_table_lookup (&obj_to_a_scc, scc->objs [0]);
+               a_scc_index_ptr = (int *)sgen_hash_table_lookup (&obj_to_a_scc, scc->objs [0]);
                g_assert (a_scc_index_ptr);
                a_scc_index = *a_scc_index_ptr;
 
@@ -319,7 +319,7 @@ sgen_compare_bridge_processor_results (SgenBridgeProcessor *a, SgenBridgeProcess
                g_assert (a_scc->num_objs == scc->num_objs);
 
                for (j = 1; j < scc->num_objs; ++j) {
-                       a_scc_index_ptr = sgen_hash_table_lookup (&obj_to_a_scc, scc->objs [j]);
+                       a_scc_index_ptr = (int *)sgen_hash_table_lookup (&obj_to_a_scc, scc->objs [j]);
                        g_assert (a_scc_index_ptr);
                        g_assert (*a_scc_index_ptr == a_scc_index);
                }
@@ -339,8 +339,8 @@ sgen_compare_bridge_processor_results (SgenBridgeProcessor *a, SgenBridgeProcess
         */
 
        xrefs_alloc_size = a->num_xrefs * sizeof (MonoGCBridgeXRef);
-       a_xrefs = sgen_alloc_internal_dynamic (xrefs_alloc_size, INTERNAL_MEM_BRIDGE_DEBUG, TRUE);
-       b_xrefs = sgen_alloc_internal_dynamic (xrefs_alloc_size, INTERNAL_MEM_BRIDGE_DEBUG, TRUE);
+       a_xrefs = (MonoGCBridgeXRef *)sgen_alloc_internal_dynamic (xrefs_alloc_size, INTERNAL_MEM_BRIDGE_DEBUG, TRUE);
+       b_xrefs = (MonoGCBridgeXRef *)sgen_alloc_internal_dynamic (xrefs_alloc_size, INTERNAL_MEM_BRIDGE_DEBUG, TRUE);
 
        memcpy (a_xrefs, a->api_xrefs, xrefs_alloc_size);
        for (i = 0; i < b->num_xrefs; ++i) {
@@ -349,11 +349,11 @@ sgen_compare_bridge_processor_results (SgenBridgeProcessor *a, SgenBridgeProcess
 
                g_assert (xref->src_scc_index != xref->dst_scc_index);
 
-               scc_index_ptr = sgen_hash_table_lookup (&b_scc_to_a_scc, GINT_TO_POINTER (xref->src_scc_index));
+               scc_index_ptr = (int *)sgen_hash_table_lookup (&b_scc_to_a_scc, GINT_TO_POINTER (xref->src_scc_index));
                g_assert (scc_index_ptr);
                b_xrefs [i].src_scc_index = *scc_index_ptr;
 
-               scc_index_ptr = sgen_hash_table_lookup (&b_scc_to_a_scc, GINT_TO_POINTER (xref->dst_scc_index));
+               scc_index_ptr = (int *)sgen_hash_table_lookup (&b_scc_to_a_scc, GINT_TO_POINTER (xref->dst_scc_index));
                g_assert (scc_index_ptr);
                b_xrefs [i].dst_scc_index = *scc_index_ptr;
        }
index d1e92469b744e4f4d865a6e70e05f39199c663c2..71906968539f8ebb845ab1f53f5de001d4b8b222 100644 (file)
@@ -401,7 +401,7 @@ sgen_client_binary_protocol_block_free (gpointer addr, size_t size)
 }
 
 static void G_GNUC_UNUSED
-sgen_client_binary_protocol_block_set_state (gpointer addr, size_t size, int old, int new)
+sgen_client_binary_protocol_block_set_state (gpointer addr, size_t size, int old, int new_)
 {
 }
 
index 456fe45c7ee19efb176f231af0837f2e035419ae..f6ae431afde262f5a525b75c5a8505e8ef23090d 100644 (file)
@@ -403,7 +403,7 @@ sgen_client_array_fill_range (char *start, size_t size)
        o = (MonoArray*)start;
        o->obj.vtable = (MonoVTable*)get_array_fill_vtable ();
        /* Mark this as not a real object */
-       o->obj.synchronisation = GINT_TO_POINTER (-1);
+       o->obj.synchronisation = (MonoThreadsSync *)GINT_TO_POINTER (-1);
        o->bounds = NULL;
        o->max_length = (mono_array_size_t)(size - MONO_SIZEOF_MONO_ARRAY);
 
@@ -519,7 +519,7 @@ mono_gc_register_for_finalization (MonoObject *obj, void *user_data)
 static gboolean
 object_in_domain_predicate (MonoObject *obj, void *user_data)
 {
-       MonoDomain *domain = user_data;
+       MonoDomain *domain = (MonoDomain *)user_data;
        if (mono_object_domain (obj) == domain) {
                SGEN_LOG (5, "Unregistering finalizer for object: %p (%s)", obj, sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (obj)));
                return TRUE;
@@ -717,7 +717,7 @@ mono_gc_ephemeron_array_add (MonoObject *obj)
 
        LOCK_GC;
 
-       node = sgen_alloc_internal (INTERNAL_MEM_EPHEMERON_LINK);
+       node = (EphemeronLinkNode *)sgen_alloc_internal (INTERNAL_MEM_EPHEMERON_LINK);
        if (!node) {
                UNLOCK_GC;
                return FALSE;
@@ -973,7 +973,7 @@ mono_gc_alloc_fixed (size_t size, MonoGCDescriptor descr, MonoGCRootSource sourc
        void *res = calloc (1, size);
        if (!res)
                return NULL;
-       if (!mono_gc_register_root (res, size, descr, source, msg)) {
+       if (!mono_gc_register_root ((char *)res, size, descr, source, msg)) {
                free (res);
                res = NULL;
        }
@@ -983,7 +983,7 @@ mono_gc_alloc_fixed (size_t size, MonoGCDescriptor descr, MonoGCRootSource sourc
 void
 mono_gc_free_fixed (void* addr)
 {
-       mono_gc_deregister_root (addr);
+       mono_gc_deregister_root ((char *)addr);
        free (addr);
 }
 
@@ -1168,7 +1168,7 @@ create_allocator (int atype, gboolean slowpath)
 
                mono_mb_patch_short_branch (mb, pos);
 
-               clause = mono_image_alloc0 (mono_defaults.corlib, sizeof (MonoExceptionClause));
+               clause = (MonoExceptionClause *)mono_image_alloc0 (mono_defaults.corlib, sizeof (MonoExceptionClause));
                clause->try_offset = mono_mb_get_label (mb);
 
                /* vtable->klass->sizes.element_size */
@@ -1602,7 +1602,7 @@ sgen_client_cardtable_scan_object (GCObject *obj, mword block_obj_size, guint8 *
                MonoArray *arr = (MonoArray*)obj;
                guint8 *card_data, *card_base;
                guint8 *card_data_end;
-               char *obj_start = sgen_card_table_align_pointer (obj);
+               char *obj_start = (char *)sgen_card_table_align_pointer (obj);
                mword bounds_size;
                mword obj_size = sgen_mono_array_size (vt, arr, &bounds_size, sgen_vtable_get_descriptor (vt));
                /* We don't want to scan the bounds entries at the end of multidimensional arrays */
@@ -1675,13 +1675,14 @@ LOOP_HEAD:
 
                                HEAVY_STAT (++los_array_cards);
                                for (; elem < card_end; elem += SIZEOF_VOID_P) {
-                                       gpointer new, old = *(gpointer*)elem;
+                                       GCObject *new_;
+                                       gpointer old = *(gpointer*)elem;
                                        if ((mod_union && old) || G_UNLIKELY (sgen_ptr_in_nursery (old))) {
                                                HEAVY_STAT (++los_array_remsets);
                                                copy_func ((GCObject**)elem, ctx.queue);
-                                               new = *(gpointer*)elem;
-                                               if (G_UNLIKELY (sgen_ptr_in_nursery (new)))
-                                                       sgen_add_to_global_remset (elem, new);
+                                               new_ = *(GCObject **)elem;
+                                               if (G_UNLIKELY (sgen_ptr_in_nursery (new_)))
+                                                       sgen_add_to_global_remset (elem, new_);
                                        }
                                }
                        }
@@ -1951,7 +1952,7 @@ precisely_report_roots_from (GCRootReport *report, void** start_root, void** end
                }
                return;
        case ROOT_DESC_COMPLEX: {
-               gsize *bitmap_data = sgen_get_complex_descriptor_bitmap (desc);
+               gsize *bitmap_data = (gsize *)sgen_get_complex_descriptor_bitmap (desc);
                gsize bwords = (*bitmap_data) - 1;
                void **start_run = start_root;
                bitmap_data++;
@@ -1989,7 +1990,7 @@ report_registered_roots_by_type (int root_type)
        void **start_root;
        RootRecord *root;
        report.count = 0;
-       SGEN_HASH_TABLE_FOREACH (&roots_hash [root_type], start_root, root) {
+       SGEN_HASH_TABLE_FOREACH (&roots_hash [root_type], void **, start_root, RootRecord *, root) {
                SGEN_LOG (6, "Precise root scan %p-%p (desc: %p)", start_root, root->end_root, (void*)root->root_desc);
                precisely_report_roots_from (&report, start_root, (void**)root->end_root, root->root_desc);
        } SGEN_HASH_TABLE_FOREACH_END;
@@ -2112,7 +2113,7 @@ collect_references (HeapWalkInfo *hwi, GCObject *obj, size_t size)
 static void
 walk_references (GCObject *start, size_t size, void *data)
 {
-       HeapWalkInfo *hwi = data;
+       HeapWalkInfo *hwi = (HeapWalkInfo *)data;
        hwi->called = 0;
        hwi->count = 0;
        collect_references (hwi, start, size);
@@ -2320,13 +2321,13 @@ static void *scan_area_arg_start, *scan_area_arg_end;
 void
 mono_gc_conservatively_scan_area (void *start, void *end)
 {
-       sgen_conservatively_pin_objects_from (start, end, scan_area_arg_start, scan_area_arg_end, PIN_TYPE_STACK);
+       sgen_conservatively_pin_objects_from ((void **)start, (void **)end, scan_area_arg_start, scan_area_arg_end, PIN_TYPE_STACK);
 }
 
 void*
 mono_gc_scan_object (void *obj, void *gc_data)
 {
-       ScanCopyContext *ctx = gc_data;
+       ScanCopyContext *ctx = (ScanCopyContext *)gc_data;
        ctx->ops->copy_or_mark_object ((GCObject**)&obj, ctx->queue);
        return obj;
 }
@@ -2365,13 +2366,13 @@ sgen_client_scan_thread_data (void *start_nursery, void *end_nursery, gboolean p
                g_assert (info->client_info.suspend_done);
                SGEN_LOG (3, "Scanning thread %p, range: %p-%p, size: %zd, pinned=%zd", info, info->client_info.stack_start, info->client_info.stack_end, (char*)info->client_info.stack_end - (char*)info->client_info.stack_start, sgen_get_pinned_count ());
                if (mono_gc_get_gc_callbacks ()->thread_mark_func && !conservative_stack_mark) {
-                       mono_gc_get_gc_callbacks ()->thread_mark_func (info->client_info.runtime_data, aligned_stack_start, info->client_info.stack_end, precise, &ctx);
+                       mono_gc_get_gc_callbacks ()->thread_mark_func (info->client_info.runtime_data, (guint8 *)aligned_stack_start, (guint8 *)info->client_info.stack_end, precise, &ctx);
                } else if (!precise) {
                        if (!conservative_stack_mark) {
                                fprintf (stderr, "Precise stack mark not supported - disabling.\n");
                                conservative_stack_mark = TRUE;
                        }
-                       sgen_conservatively_pin_objects_from (aligned_stack_start, info->client_info.stack_end, start_nursery, end_nursery, PIN_TYPE_STACK);
+                       sgen_conservatively_pin_objects_from ((void **)aligned_stack_start, (void **)info->client_info.stack_end, start_nursery, end_nursery, PIN_TYPE_STACK);
                }
 
                if (!precise) {
@@ -2387,7 +2388,7 @@ sgen_client_scan_thread_data (void *start_nursery, void *end_nursery, gboolean p
                                // We force a spill of all registers into the stack and pass a chunk of data into sgen.
                                MonoThreadUnwindState *state = &info->client_info.info.thread_saved_state [SELF_SUSPEND_STATE_INDEX];
                                if (state && state->gc_stackdata) {
-                                       sgen_conservatively_pin_objects_from (state->gc_stackdata, (void**)((char*)state->gc_stackdata + state->gc_stackdata_size),
+                                       sgen_conservatively_pin_objects_from ((void **)state->gc_stackdata, (void**)((char*)state->gc_stackdata + state->gc_stackdata_size),
                                                start_nursery, end_nursery, PIN_TYPE_STACK);
                                }
                        }
@@ -2604,7 +2605,7 @@ sgen_client_metadata_for_object (GCObject *obj)
 gboolean
 mono_gchandle_is_in_domain (guint32 gchandle, MonoDomain *domain)
 {
-       MonoDomain *gchandle_domain = sgen_gchandle_get_metadata (gchandle);
+       MonoDomain *gchandle_domain = (MonoDomain *)sgen_gchandle_get_metadata (gchandle);
        return domain->domain_id == gchandle_domain->domain_id;
 }
 
@@ -2623,14 +2624,14 @@ mono_gchandle_free_domain (MonoDomain *unloading)
 static gpointer
 null_link_if_in_domain (gpointer hidden, GCHandleType handle_type, int max_generation, gpointer user)
 {
-       MonoDomain *unloading_domain = user;
+       MonoDomain *unloading_domain = (MonoDomain *)user;
        MonoDomain *obj_domain;
        gboolean is_weak = MONO_GC_HANDLE_TYPE_IS_WEAK (handle_type);
        if (MONO_GC_HANDLE_IS_OBJECT_POINTER (hidden)) {
-               MonoObject *obj = MONO_GC_REVEAL_POINTER (hidden, is_weak);
+               MonoObject *obj = (MonoObject *)MONO_GC_REVEAL_POINTER (hidden, is_weak);
                obj_domain = mono_object_domain (obj);
        } else {
-               obj_domain = MONO_GC_REVEAL_POINTER (hidden, is_weak);
+               obj_domain = (MonoDomain *)MONO_GC_REVEAL_POINTER (hidden, is_weak);
        }
        if (unloading_domain->domain_id == obj_domain->domain_id)
                return NULL;
@@ -2642,7 +2643,7 @@ sgen_null_links_for_domain (MonoDomain *domain)
 {
        guint type;
        for (type = HANDLE_TYPE_MIN; type < HANDLE_TYPE_MAX; ++type)
-               sgen_gchandle_iterate (type, GENERATION_OLD, null_link_if_in_domain, domain);
+               sgen_gchandle_iterate ((GCHandleType)type, GENERATION_OLD, null_link_if_in_domain, domain);
 }
 
 void
@@ -2834,7 +2835,7 @@ sgen_client_init (void)
        cb.thread_detach = sgen_thread_detach;
        cb.thread_unregister = sgen_thread_unregister;
        cb.thread_attach = sgen_thread_attach;
-       cb.mono_method_is_critical = (gpointer)is_critical_method;
+       cb.mono_method_is_critical = (gboolean (*)(void *))is_critical_method;
        cb.mono_thread_in_critical_region = thread_in_critical_region;
 
        mono_threads_init (&cb, sizeof (SgenThreadInfo));
index 65981ccc665f6708c3786cb94674375572d5367a..20fdb460adde86c416d941f2625f335516b3e1bb 100644 (file)
@@ -199,7 +199,7 @@ dyn_array_ensure_capacity (DynArray *da, int capacity, int elem_size)
        while (capacity > da->capacity)
                da->capacity *= 2;
 
-       new_data = sgen_alloc_internal_dynamic (elem_size * da->capacity, INTERNAL_MEM_BRIDGE_DATA, TRUE);
+       new_data = (char *)sgen_alloc_internal_dynamic (elem_size * da->capacity, INTERNAL_MEM_BRIDGE_DATA, TRUE);
        memcpy (new_data, da->data, elem_size * da->size);
        if (old_capacity > 0)
                sgen_free_internal_dynamic (da->data, elem_size * old_capacity, INTERNAL_MEM_BRIDGE_DATA);
@@ -276,7 +276,7 @@ dyn_array_int_empty (DynIntArray *da)
 static void
 dyn_array_int_add (DynIntArray *da, int x)
 {
-       int *p = dyn_array_add (&da->array, sizeof (int));
+       int *p = (int *)dyn_array_add (&da->array, sizeof (int));
        *p = x;
 }
 
@@ -374,13 +374,13 @@ dyn_array_ptr_add (DynPtrArray *da, void *ptr)
                void *ptr0 = da->array.data;
                void **p0;
                dyn_array_init (&da->array);
-               p0 = dyn_array_add (&da->array, sizeof (void*));
+               p0 = (void **)dyn_array_add (&da->array, sizeof (void*));
                *p0 = ptr0;
-               p = dyn_array_add (&da->array, sizeof (void*));
+               p = (void **)dyn_array_add (&da->array, sizeof (void*));
        } else
 #endif
        {
-               p = dyn_array_add (&da->array, sizeof (void*));
+               p = (void **)dyn_array_add (&da->array, sizeof (void*));
        }
        *p = ptr;
 }
@@ -431,7 +431,7 @@ dyn_array_scc_size (DynSCCArray *da)
 static SCC*
 dyn_array_scc_add (DynSCCArray *da)
 {
-       return dyn_array_add (&da->array, sizeof (SCC));
+       return (SCC *)dyn_array_add (&da->array, sizeof (SCC));
 }
 
 static SCC*
@@ -497,7 +497,7 @@ class_kind (MonoClass *klass)
 static HashEntry*
 get_hash_entry (MonoObject *obj, gboolean *existing)
 {
-       HashEntry *entry = sgen_hash_table_lookup (&hash_table, obj);
+       HashEntry *entry = (HashEntry *)sgen_hash_table_lookup (&hash_table, obj);
        HashEntry new_entry;
 
        if (entry) {
@@ -515,7 +515,7 @@ get_hash_entry (MonoObject *obj, gboolean *existing)
 
        sgen_hash_table_replace (&hash_table, obj, &new_entry, NULL);
 
-       return sgen_hash_table_lookup (&hash_table, obj);
+       return (HashEntry *)sgen_hash_table_lookup (&hash_table, obj);
 }
 
 static void
@@ -532,7 +532,7 @@ free_data (void)
        int total_srcs = 0;
        int max_srcs = 0;
 
-       SGEN_HASH_TABLE_FOREACH (&hash_table, obj, entry) {
+       SGEN_HASH_TABLE_FOREACH (&hash_table, MonoObject *, obj, HashEntry *, entry) {
                int entry_size = dyn_array_ptr_size (&entry->srcs);
                total_srcs += entry_size;
                if (entry_size > max_srcs)
@@ -647,10 +647,10 @@ dfs1 (HashEntry *obj_entry)
                char *start;
                ++dfs1_passes;
 
-               obj_entry = dyn_array_ptr_pop (&dfs_stack);
+               obj_entry = (HashEntry *)dyn_array_ptr_pop (&dfs_stack);
                if (obj_entry) {
                        /* obj_entry needs to be expanded */
-                       src = dyn_array_ptr_pop (&dfs_stack);
+                       src = (HashEntry *)dyn_array_ptr_pop (&dfs_stack);
 
                        if (src)
                                g_assert (!src->v.dfs1.forwarded_to);
@@ -686,8 +686,8 @@ dfs1 (HashEntry *obj_entry)
                                 */
 #ifdef OPTIMIZATION_FORWARD
                                if (!obj_entry->is_bridge && num_links == 1) {
-                                       HashEntry *dst_entry = dyn_array_ptr_pop (&dfs_stack);
-                                       HashEntry *obj_entry_again = dyn_array_ptr_pop (&dfs_stack);
+                                       HashEntry *dst_entry = (HashEntry *)dyn_array_ptr_pop (&dfs_stack);
+                                       HashEntry *obj_entry_again = (HashEntry *)dyn_array_ptr_pop (&dfs_stack);
                                        g_assert (obj_entry_again == obj_entry);
                                        g_assert (!dst_entry->v.dfs1.forwarded_to);
                                        if (obj_entry != dst_entry) {
@@ -709,7 +709,7 @@ dfs1 (HashEntry *obj_entry)
                } else {
                        /* obj_entry needs to be finished */
 
-                       obj_entry = dyn_array_ptr_pop (&dfs_stack);
+                       obj_entry = (HashEntry *)dyn_array_ptr_pop (&dfs_stack);
 
                        //g_print ("finish %s\n", sgen_safe_name (obj_entry->obj));
                        register_finishing_time (obj_entry, ++current_time);
@@ -838,7 +838,7 @@ dfs2 (HashEntry *entry)
        dyn_array_ptr_push (&dfs_stack, entry);
 
        do {
-               entry = dyn_array_ptr_pop (&dfs_stack);
+               entry = (HashEntry *)dyn_array_ptr_pop (&dfs_stack);
                ++dfs2_passes;
 
                if (entry->v.dfs2.scc_index >= 0) {
@@ -910,7 +910,7 @@ dump_graph (void)
        MonoObject *obj;
        HashEntry *entry;
        size_t prefix_len = strlen (dump_prefix);
-       char *filename = alloca(prefix_len + 64);
+       char *filename = (char *)alloca (prefix_len + 64);
        FILE *file;
        int edge_id = 0;
 
@@ -931,7 +931,7 @@ dump_graph (void)
                        "</attributes>\n");
 
        fprintf (file, "<nodes>\n");
-       SGEN_HASH_TABLE_FOREACH (&hash_table, obj, entry) {
+       SGEN_HASH_TABLE_FOREACH (&hash_table, MonoObject *, obj, HashEntry *, entry) {
                MonoVTable *vt = SGEN_LOAD_VTABLE (obj);
                fprintf (file, "<node id=\"%p\"><attvalues><attvalue for=\"0\" value=\"%s.%s\"/><attvalue for=\"1\" value=\"%s\"/></attvalues></node>\n",
                                obj, vt->klass->name_space, vt->klass->name, entry->is_bridge ? "true" : "false");
@@ -939,10 +939,10 @@ dump_graph (void)
        fprintf (file, "</nodes>\n");
 
        fprintf (file, "<edges>\n");
-       SGEN_HASH_TABLE_FOREACH (&hash_table, obj, entry) {
+       SGEN_HASH_TABLE_FOREACH (&hash_table, MonoObject *, obj, HashEntry *, entry) {
                int i;
                for (i = 0; i < dyn_array_ptr_size (&entry->srcs); ++i) {
-                       HashEntry *src = dyn_array_ptr_get (&entry->srcs, i);
+                       HashEntry *src = (HashEntry *)dyn_array_ptr_get (&entry->srcs, i);
                        fprintf (file, "<edge id=\"%d\" source=\"%p\" target=\"%p\"/>\n", edge_id++, sgen_hash_table_key_for_value_pointer (src), obj);
                }
        } SGEN_HASH_TABLE_FOREACH_END;
@@ -1017,13 +1017,13 @@ processing_stw_step (void)
        */
        bridge_count = dyn_array_ptr_size (&registered_bridges);
        for (i = 0; i < bridge_count ; ++i)
-               register_bridge_object (dyn_array_ptr_get (&registered_bridges, i));
+               register_bridge_object ((MonoObject *)dyn_array_ptr_get (&registered_bridges, i));
 
        for (i = 0; i < bridge_count; ++i)
-               dfs1 (get_hash_entry (dyn_array_ptr_get (&registered_bridges, i), NULL));
+               dfs1 (get_hash_entry ((MonoObject *)dyn_array_ptr_get (&registered_bridges, i), NULL));
 
        /* Remove all forwarded objects. */
-       SGEN_HASH_TABLE_FOREACH (&hash_table, obj, entry) {
+       SGEN_HASH_TABLE_FOREACH (&hash_table, MonoObject *, obj, HashEntry *, entry) {
                if (entry->v.dfs1.forwarded_to) {
                        g_assert (dyn_array_ptr_size (&entry->srcs) == 0);
                        SGEN_HASH_TABLE_FOREACH_REMOVE (TRUE);
@@ -1066,10 +1066,10 @@ processing_build_callback_data (int generation)
 
        /* alloc and fill array of all entries */
 
-       all_entries = sgen_alloc_internal_dynamic (sizeof (HashEntry*) * hash_table.num_entries, INTERNAL_MEM_BRIDGE_DATA, TRUE);
+       all_entries = (HashEntry **)sgen_alloc_internal_dynamic (sizeof (HashEntry*) * hash_table.num_entries, INTERNAL_MEM_BRIDGE_DATA, TRUE);
 
        j = 0;
-       SGEN_HASH_TABLE_FOREACH (&hash_table, obj, entry) {
+       SGEN_HASH_TABLE_FOREACH (&hash_table, MonoObject *, obj, HashEntry *, entry) {
                g_assert (entry->v.dfs1.finishing_time > 0);
                all_entries [j++] = entry;
                fist_pass_links += dyn_array_ptr_size (&entry->srcs);
@@ -1080,7 +1080,7 @@ processing_build_callback_data (int generation)
        /* sort array according to decreasing finishing time */
        qsort_hash_entries (all_entries, hash_table.num_entries);
 
-       SGEN_HASH_TABLE_FOREACH (&hash_table, obj, entry) {
+       SGEN_HASH_TABLE_FOREACH (&hash_table, MonoObject *, obj, HashEntry *, entry) {
                entry->v.dfs2.scc_index = -1;
        } SGEN_HASH_TABLE_FOREACH_END;
 
@@ -1231,7 +1231,7 @@ processing_build_callback_data (int generation)
                max_sccs_links = MAX (max_sccs_links, dyn_array_int_size (&scc->XREFS));
        }
 
-       api_sccs = sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeSCC*) * num_sccs, INTERNAL_MEM_BRIDGE_DATA, TRUE);
+       api_sccs = (MonoGCBridgeSCC **)sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeSCC*) * num_sccs, INTERNAL_MEM_BRIDGE_DATA, TRUE);
        num_xrefs = 0;
        j = 0;
        for (i = 0; i < dyn_array_scc_size (&sccs); ++i) {
@@ -1239,7 +1239,7 @@ processing_build_callback_data (int generation)
                if (!scc->num_bridge_entries)
                        continue;
 
-               api_sccs [j] = sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeSCC) + sizeof (MonoObject*) * scc->num_bridge_entries, INTERNAL_MEM_BRIDGE_DATA, TRUE);
+               api_sccs [j] = (MonoGCBridgeSCC *)sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeSCC) + sizeof (MonoObject*) * scc->num_bridge_entries, INTERNAL_MEM_BRIDGE_DATA, TRUE);
                api_sccs [j]->is_alive = FALSE;
                api_sccs [j]->num_objs = scc->num_bridge_entries;
                scc->num_bridge_entries = 0;
@@ -1248,14 +1248,14 @@ processing_build_callback_data (int generation)
                num_xrefs += dyn_array_int_size (&scc->XREFS);
        }
 
-       SGEN_HASH_TABLE_FOREACH (&hash_table, obj, entry) {
+       SGEN_HASH_TABLE_FOREACH (&hash_table, MonoObject *, obj, HashEntry *, entry) {
                if (entry->is_bridge) {
                        SCC *scc = dyn_array_scc_get_ptr (&sccs, entry->v.dfs2.scc_index);
                        api_sccs [scc->api_index]->objs [scc->num_bridge_entries++] = sgen_hash_table_key_for_value_pointer (entry);
                }
        } SGEN_HASH_TABLE_FOREACH_END;
 
-       api_xrefs = sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeXRef) * num_xrefs, INTERNAL_MEM_BRIDGE_DATA, TRUE);
+       api_xrefs = (MonoGCBridgeXRef *)sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeXRef) * num_xrefs, INTERNAL_MEM_BRIDGE_DATA, TRUE);
        j = 0;
        for (i = 0; i < dyn_array_scc_size (&sccs); ++i) {
                int k;
@@ -1364,7 +1364,7 @@ describe_pointer (GCObject *obj)
                }
        }
 
-       entry = sgen_hash_table_lookup (&hash_table, obj);
+       entry = (HashEntry *)sgen_hash_table_lookup (&hash_table, obj);
        if (!entry)
                return;
 
index 63b39f4946ab644eb84cc1b6ea2cae9cfb4f0485..83f991d5b867ce64bd230021fe7a96381fc09158 100644 (file)
@@ -147,7 +147,7 @@ dyn_array_ensure_capacity (DynArray *da, int capacity, int elem_size)
        while (capacity > da->capacity)
                da->capacity *= 2;
 
-       new_data = sgen_alloc_internal_dynamic (elem_size * da->capacity, INTERNAL_MEM_BRIDGE_DATA, TRUE);
+       new_data = (char *)sgen_alloc_internal_dynamic (elem_size * da->capacity, INTERNAL_MEM_BRIDGE_DATA, TRUE);
        memcpy (new_data, da->data, elem_size * da->size);
        sgen_free_internal_dynamic (da->data, elem_size * old_capacity, INTERNAL_MEM_BRIDGE_DATA);
        da->data = new_data;
@@ -193,7 +193,7 @@ dyn_array_int_set_size (DynIntArray *da, int size)
 static void
 dyn_array_int_add (DynIntArray *da, int x)
 {
-       int *p = dyn_array_add (&da->array, sizeof (int));
+       int *p = (int *)dyn_array_add (&da->array, sizeof (int));
        *p = x;
 }
 
@@ -258,7 +258,7 @@ dyn_array_ptr_get (DynPtrArray *da, int x)
 static void
 dyn_array_ptr_add (DynPtrArray *da, void *ptr)
 {
-       void **p = dyn_array_add (&da->array, sizeof (void*));
+       void **p = (void **)dyn_array_add (&da->array, sizeof (void*));
        *p = ptr;
 }
 
@@ -298,7 +298,7 @@ dyn_array_scc_size (DynSCCArray *da)
 static SCC*
 dyn_array_scc_add (DynSCCArray *da)
 {
-       return dyn_array_add (&da->array, sizeof (SCC));
+       return (SCC *)dyn_array_add (&da->array, sizeof (SCC));
 }
 
 static SCC*
@@ -408,7 +408,7 @@ class_kind (MonoClass *klass)
 static HashEntry*
 get_hash_entry (GCObject *obj, gboolean *existing)
 {
-       HashEntry *entry = sgen_hash_table_lookup (&hash_table, obj);
+       HashEntry *entry = (HashEntry *)sgen_hash_table_lookup (&hash_table, obj);
        HashEntry new_entry;
 
        if (entry) {
@@ -428,7 +428,7 @@ get_hash_entry (GCObject *obj, gboolean *existing)
 
        sgen_hash_table_replace (&hash_table, obj, &new_entry, NULL);
 
-       return sgen_hash_table_lookup (&hash_table, obj);
+       return (HashEntry *)sgen_hash_table_lookup (&hash_table, obj);
 }
 
 static void
@@ -445,7 +445,7 @@ free_data (void)
        int total_srcs = 0;
        int max_srcs = 0;
 
-       SGEN_HASH_TABLE_FOREACH (&hash_table, obj, entry) {
+       SGEN_HASH_TABLE_FOREACH (&hash_table, GCObject *, obj, HashEntry *, entry) {
                int entry_size = dyn_array_ptr_size (&entry->srcs);
                total_srcs += entry_size;
                if (entry_size > max_srcs)
@@ -516,11 +516,11 @@ dfs1 (HashEntry *obj_entry)
                GCObject *obj;
                ++dfs1_passes;
 
-               obj_entry = dyn_array_ptr_pop (&dfs_stack);
+               obj_entry = (HashEntry *)dyn_array_ptr_pop (&dfs_stack);
                if (obj_entry) {
                        char *start;
                        mword desc;
-                       src = dyn_array_ptr_pop (&dfs_stack);
+                       src = (HashEntry *)dyn_array_ptr_pop (&dfs_stack);
 
                        obj = obj_entry->obj;
                        desc = sgen_obj_get_descriptor_safe (obj);
@@ -544,7 +544,7 @@ dfs1 (HashEntry *obj_entry)
                        start = (char*)obj;
 #include "sgen/sgen-scan-object.h"
                } else {
-                       obj_entry = dyn_array_ptr_pop (&dfs_stack);
+                       obj_entry = (HashEntry *)dyn_array_ptr_pop (&dfs_stack);
 
                        //g_print ("finish %s\n", sgen_safe_name (obj_entry->obj));
                        register_finishing_time (obj_entry, current_time++);
@@ -592,7 +592,7 @@ dfs2 (HashEntry *entry)
        dyn_array_ptr_push (&dfs_stack, entry);
 
        do {
-               entry = dyn_array_ptr_pop (&dfs_stack);
+               entry = (HashEntry *)dyn_array_ptr_pop (&dfs_stack);
                ++dfs2_passes;
 
                if (entry->scc_index >= 0) {
@@ -663,10 +663,10 @@ processing_stw_step (void)
        */
        bridge_count = dyn_array_ptr_size (&registered_bridges);
        for (i = 0; i < bridge_count ; ++i)
-               register_bridge_object (dyn_array_ptr_get (&registered_bridges, i));
+               register_bridge_object ((GCObject *)dyn_array_ptr_get (&registered_bridges, i));
 
        for (i = 0; i < bridge_count; ++i)
-               dfs1 (get_hash_entry (dyn_array_ptr_get (&registered_bridges, i), NULL));
+               dfs1 (get_hash_entry ((GCObject *)dyn_array_ptr_get (&registered_bridges, i), NULL));
 
        SGEN_TV_GETTIME (atv);
        step_2 = SGEN_TV_ELAPSED (btv, atv);
@@ -700,10 +700,10 @@ processing_build_callback_data (int generation)
 
        /* alloc and fill array of all entries */
 
-       all_entries = sgen_alloc_internal_dynamic (sizeof (HashEntry*) * hash_table.num_entries, INTERNAL_MEM_BRIDGE_DATA, TRUE);
+       all_entries = (HashEntry **)sgen_alloc_internal_dynamic (sizeof (HashEntry*) * hash_table.num_entries, INTERNAL_MEM_BRIDGE_DATA, TRUE);
 
        j = 0;
-       SGEN_HASH_TABLE_FOREACH (&hash_table, obj, entry) {
+       SGEN_HASH_TABLE_FOREACH (&hash_table, GCObject *, obj, HashEntry *, entry) {
                g_assert (entry->finishing_time >= 0);
                all_entries [j++] = entry;
                fist_pass_links += dyn_array_ptr_size (&entry->srcs);
@@ -795,7 +795,7 @@ processing_build_callback_data (int generation)
                max_sccs_links = MAX (max_sccs_links, dyn_array_int_size (&scc->xrefs));
        }
 
-       api_sccs = sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeSCC*) * num_sccs, INTERNAL_MEM_BRIDGE_DATA, TRUE);
+       api_sccs = (MonoGCBridgeSCC **)sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeSCC*) * num_sccs, INTERNAL_MEM_BRIDGE_DATA, TRUE);
        num_xrefs = 0;
        j = 0;
        for (i = 0; i < dyn_array_scc_size (&sccs); ++i) {
@@ -803,7 +803,7 @@ processing_build_callback_data (int generation)
                if (!scc->num_bridge_entries)
                        continue;
 
-               api_sccs [j] = sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeSCC) + sizeof (MonoObject*) * scc->num_bridge_entries, INTERNAL_MEM_BRIDGE_DATA, TRUE);
+               api_sccs [j] = (MonoGCBridgeSCC *)sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeSCC) + sizeof (MonoObject*) * scc->num_bridge_entries, INTERNAL_MEM_BRIDGE_DATA, TRUE);
                api_sccs [j]->is_alive = FALSE;
                api_sccs [j]->num_objs = scc->num_bridge_entries;
                scc->num_bridge_entries = 0;
@@ -812,14 +812,14 @@ processing_build_callback_data (int generation)
                num_xrefs += dyn_array_int_size (&scc->xrefs);
        }
 
-       SGEN_HASH_TABLE_FOREACH (&hash_table, obj, entry) {
+       SGEN_HASH_TABLE_FOREACH (&hash_table, GCObject *, obj, HashEntry *, entry) {
                if (entry->is_bridge) {
                        SCC *scc = dyn_array_scc_get_ptr (&sccs, entry->scc_index);
                        api_sccs [scc->api_index]->objs [scc->num_bridge_entries++] = (MonoObject*)entry->obj;
                }
        } SGEN_HASH_TABLE_FOREACH_END;
 
-       api_xrefs = sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeXRef) * num_xrefs, INTERNAL_MEM_BRIDGE_DATA, TRUE);
+       api_xrefs = (MonoGCBridgeXRef *)sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeXRef) * num_xrefs, INTERNAL_MEM_BRIDGE_DATA, TRUE);
        j = 0;
        for (i = 0; i < dyn_array_scc_size (&sccs); ++i) {
                int k;
@@ -923,7 +923,7 @@ describe_pointer (GCObject *obj)
                }
        }
 
-       entry = sgen_hash_table_lookup (&hash_table, obj);
+       entry = (HashEntry *)sgen_hash_table_lookup (&hash_table, obj);
        if (!entry)
                return;
 
index dbf2eddb1c707311e2d3b846efe4402158b02691..2a8b7ad10f4420ca8d2a0cec1f3e1de393044337 100644 (file)
@@ -246,7 +246,7 @@ sgen_os_init (void)
                g_error ("failed sigaction");
        }
 
-       sinfo.sa_handler = (void*) restart_handler;
+       sinfo.sa_handler = (void (*)(int))restart_handler;
        if (sigaction (restart_signal_num, &sinfo, NULL) != 0) {
                g_error ("failed sigaction");
        }
index 1d23bc6373246f80d1ce5a0e4fb18764e587dad5..651dbb59de190cef0863ee60ba3ca6f95bad872b 100644 (file)
@@ -103,7 +103,7 @@ is_ip_in_managed_allocator (MonoDomain *domain, gpointer ip)
         * missing methods (#13951). To work around this, we disable the AOT fallback. For this to work, the JIT needs
         * to register the jit info for all GC critical methods after they are JITted/loaded.
         */
-       ji = mono_jit_info_table_find_internal (domain, ip, FALSE, FALSE);
+       ji = mono_jit_info_table_find_internal (domain, (char *)ip, FALSE, FALSE);
        if (!ji)
                return FALSE;
 
@@ -367,7 +367,7 @@ update_sgen_info (SgenThreadInfo *info)
        char *stack_start;
 
        /* Once we remove the old suspend code, we should move sgen to directly access the state in MonoThread */
-       info->client_info.stopped_domain = mono_thread_info_tls_get (info, TLS_KEY_DOMAIN);
+       info->client_info.stopped_domain = (MonoDomain *)mono_thread_info_tls_get (info, TLS_KEY_DOMAIN);
        info->client_info.stopped_ip = (gpointer) MONO_CONTEXT_GET_IP (&mono_thread_info_get_suspend_state (info)->ctx);
        stack_start = (char*)MONO_CONTEXT_GET_SP (&mono_thread_info_get_suspend_state (info)->ctx) - REDZONE_SIZE;
 
index 10cf234c4268382f35a2c94a62a99c4100346aea..e6bd1f17aa7082cdddc7f8a486aabed036c08946 100644 (file)
@@ -88,7 +88,7 @@ dyn_array_ensure_capacity (DynArray *da, int capacity, int elem_size)
        while (capacity > da->capacity)
                da->capacity *= 2;
 
-       new_data = sgen_alloc_internal_dynamic (elem_size * da->capacity, INTERNAL_MEM_BRIDGE_DATA, TRUE);
+       new_data = (char *)sgen_alloc_internal_dynamic (elem_size * da->capacity, INTERNAL_MEM_BRIDGE_DATA, TRUE);
        if (da->data) {
                memcpy (new_data, da->data, elem_size * da->size);
                sgen_free_internal_dynamic (da->data, elem_size * old_capacity, INTERNAL_MEM_BRIDGE_DATA);
@@ -137,7 +137,7 @@ dyn_array_ptr_get (DynPtrArray *da, int x)
 static void
 dyn_array_ptr_add (DynPtrArray *da, void *ptr)
 {
-       void **p = dyn_array_add (&da->array, sizeof (void*));
+       void **p = (void **)dyn_array_add (&da->array, sizeof (void*));
        *p = ptr;
 }
 
@@ -276,7 +276,7 @@ static int object_data_count;
 static ObjectBucket*
 new_object_bucket (void)
 {
-       ObjectBucket *res = sgen_alloc_internal (INTERNAL_MEM_TARJAN_OBJ_BUCKET);
+       ObjectBucket *res = (ObjectBucket *)sgen_alloc_internal (INTERNAL_MEM_TARJAN_OBJ_BUCKET);
        res->next_data = &res->data [0];
        return res;
 }
@@ -340,7 +340,7 @@ static int color_data_count;
 static ColorBucket*
 new_color_bucket (void)
 {
-       ColorBucket *res = sgen_alloc_internal (INTERNAL_MEM_TARJAN_OBJ_BUCKET);
+       ColorBucket *res = (ColorBucket *)sgen_alloc_internal (INTERNAL_MEM_TARJAN_OBJ_BUCKET);
        res->next_data = &res->data [0];
        return res;
 }
@@ -724,7 +724,7 @@ reduce_color (void)
        if (size == 0)
                color = NULL;
        else if (size == 1) {
-               color = dyn_array_ptr_get (&color_merge_array, 0);
+               color = (ColorData *)dyn_array_ptr_get (&color_merge_array, 0);
        } else
                color = new_color (FALSE);
 
@@ -740,7 +740,7 @@ create_scc (ScanData *data)
        ColorData *color_data = NULL;
 
        for (i = dyn_array_ptr_size (&loop_stack) - 1; i >= 0; --i) {
-               ScanData *other = dyn_array_ptr_get (&loop_stack, i);
+               ScanData *other = (ScanData *)dyn_array_ptr_get (&loop_stack, i);
                found_bridge |= other->is_bridge;
                if (found_bridge || other == data)
                        break;
@@ -769,7 +769,7 @@ create_scc (ScanData *data)
        }
 
        while (dyn_array_ptr_size (&loop_stack) > 0) {
-               ScanData *other = dyn_array_ptr_pop (&loop_stack);
+               ScanData *other = (ScanData *)dyn_array_ptr_pop (&loop_stack);
 
 #if DUMP_GRAPH
                printf ("\tmember %s (%p) index %d low-index %d color %p state %d\n", safe_name_bridge (other->obj), other->obj, other->index, other->low_index, other->color, other->state);
@@ -797,7 +797,7 @@ create_scc (ScanData *data)
        g_assert (found);
 
        for (i = 0; i < dyn_array_ptr_size (&color_merge_array); ++i) {
-               ColorData *cd  = dyn_array_ptr_get (&color_merge_array, i);
+               ColorData *cd  = (ColorData *)dyn_array_ptr_get (&color_merge_array, i);
                g_assert (cd->visited);
                cd->visited = FALSE;
        }
@@ -814,7 +814,7 @@ dfs (void)
        dyn_array_ptr_set_size (&color_merge_array, 0);
 
        while (dyn_array_ptr_size (&scan_stack) > 0) {
-               ScanData *data = dyn_array_ptr_pop (&scan_stack);
+               ScanData *data = (ScanData *)dyn_array_ptr_pop (&scan_stack);
 
                /**
                 * Ignore finished objects on stack, they happen due to loops. For example:
@@ -963,12 +963,12 @@ processing_stw_step (void)
 
        bridge_count = dyn_array_ptr_size (&registered_bridges);
        for (i = 0; i < bridge_count ; ++i)
-               register_bridge_object (dyn_array_ptr_get (&registered_bridges, i));
+               register_bridge_object ((GCObject *)dyn_array_ptr_get (&registered_bridges, i));
 
        setup_time = step_timer (&curtime);
 
        for (i = 0; i < bridge_count; ++i) {
-               ScanData *sd = find_data (dyn_array_ptr_get (&registered_bridges, i));
+               ScanData *sd = find_data ((GCObject *)dyn_array_ptr_get (&registered_bridges, i));
                if (sd->state == INITIAL) {
                        dyn_array_ptr_push (&scan_stack, sd);
                        dfs ();
@@ -999,7 +999,7 @@ gather_xrefs (ColorData *color)
 {
        int i;
        for (i = 0; i < dyn_array_ptr_size (&color->other_colors); ++i) {
-               ColorData *src = dyn_array_ptr_get (&color->other_colors, i);
+               ColorData *src = (ColorData *)dyn_array_ptr_get (&color->other_colors, i);
                if (src->visited)
                        continue;
                src->visited = TRUE;
@@ -1015,7 +1015,7 @@ reset_xrefs (ColorData *color)
 {
        int i;
        for (i = 0; i < dyn_array_ptr_size (&color->other_colors); ++i) {
-               ColorData *src = dyn_array_ptr_get (&color->other_colors, i);
+               ColorData *src = (ColorData *)dyn_array_ptr_get (&color->other_colors, i);
                if (!src->visited)
                        continue;
                src->visited = FALSE;
@@ -1049,7 +1049,7 @@ processing_build_callback_data (int generation)
 #endif
 
        /* This is a straightforward translation from colors to the bridge callback format. */
-       api_sccs = sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeSCC*) * num_colors_with_bridges, INTERNAL_MEM_BRIDGE_DATA, TRUE);
+       api_sccs = (MonoGCBridgeSCC **)sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeSCC*) * num_colors_with_bridges, INTERNAL_MEM_BRIDGE_DATA, TRUE);
        api_index = xref_count = 0;
 
        for (cur = root_color_bucket; cur; cur = cur->next) {
@@ -1059,14 +1059,14 @@ processing_build_callback_data (int generation)
                        if (!bridges)
                                continue;
 
-                       api_sccs [api_index] = sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeSCC) + sizeof (MonoObject*) * bridges, INTERNAL_MEM_BRIDGE_DATA, TRUE);
+                       api_sccs [api_index] = (MonoGCBridgeSCC *)sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeSCC) + sizeof (MonoObject*) * bridges, INTERNAL_MEM_BRIDGE_DATA, TRUE);
                        api_sccs [api_index]->is_alive = FALSE;
                        api_sccs [api_index]->num_objs = bridges;
 
                        cd->api_index = api_index;
 
                        for (j = 0; j < bridges; ++j)
-                               api_sccs [api_index]->objs [j] = dyn_array_ptr_get (&cd->bridges, j);
+                               api_sccs [api_index]->objs [j] = (MonoObject *)dyn_array_ptr_get (&cd->bridges, j);
                        api_index++;
                }
        }
@@ -1095,7 +1095,7 @@ processing_build_callback_data (int generation)
        dump_color_table (" after xref pass", TRUE);
 #endif
 
-       api_xrefs = sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeXRef) * xref_count, INTERNAL_MEM_BRIDGE_DATA, TRUE);
+       api_xrefs = (MonoGCBridgeXRef *)sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeXRef) * xref_count, INTERNAL_MEM_BRIDGE_DATA, TRUE);
        api_index = 0;
        for (cur = root_color_bucket; cur; cur = cur->next) {
                ColorData *src;
@@ -1105,7 +1105,7 @@ processing_build_callback_data (int generation)
                                continue;
 
                        for (j = 0; j < dyn_array_ptr_size (&src->other_colors); ++j) {
-                               ColorData *dest = dyn_array_ptr_get (&src->other_colors, j);
+                               ColorData *dest = (ColorData *)dyn_array_ptr_get (&src->other_colors, j);
                                g_assert (dyn_array_ptr_size (&dest->bridges)); /* We flattened the color graph, so this must never happen. */
 
                                api_xrefs [api_index].src_scc_index = src->api_index;
index 9622c7599dd75da07b8c5e65794f240bbaf00923..d9afbfa868dc9efe8a6a2eb0a31c151bb82215e2 100644 (file)
@@ -142,7 +142,7 @@ ensure_toggleref_capacity (int capacity)
 {
        if (!toggleref_array) {
                toggleref_array_capacity = 32;
-               toggleref_array = sgen_alloc_internal_dynamic (
+               toggleref_array = (MonoGCToggleRef *)sgen_alloc_internal_dynamic (
                        toggleref_array_capacity * sizeof (MonoGCToggleRef),
                        INTERNAL_MEM_TOGGLEREF_DATA,
                        TRUE);
@@ -153,7 +153,7 @@ ensure_toggleref_capacity (int capacity)
                while (toggleref_array_capacity < toggleref_array_size + capacity)
                        toggleref_array_capacity *= 2;
 
-               tmp = sgen_alloc_internal_dynamic (
+               tmp = (MonoGCToggleRef *)sgen_alloc_internal_dynamic (
                        toggleref_array_capacity * sizeof (MonoGCToggleRef),
                        INTERNAL_MEM_TOGGLEREF_DATA,
                        TRUE);
@@ -210,7 +210,7 @@ static MonoToggleRefStatus
 test_toggleref_callback (MonoObject *obj)
 {
        static MonoClassField *mono_toggleref_test_field;
-       int status = MONO_TOGGLE_REF_DROP;
+       MonoToggleRefStatus status = MONO_TOGGLE_REF_DROP;
 
        if (!mono_toggleref_test_field) {
                mono_toggleref_test_field = mono_class_get_field_from_name (mono_object_get_class (obj), "__test");
index aaab2b1affb5e52d17adb661961cd3a42637daca..55c766fbe09c6ba032ac26563c4d43d73a6f9943 100644 (file)
@@ -648,19 +648,19 @@ ves_icall_System_Net_Sockets_Socket_Socket_internal (MonoObject *this_obj, gint3
        
        *error = 0;
        
-       sock_family=convert_family(family);
+       sock_family = convert_family ((MonoAddressFamily)family);
        if(sock_family==-1) {
                *error = WSAEAFNOSUPPORT;
                return(NULL);
        }
 
-       sock_proto=convert_proto(proto);
+       sock_proto = convert_proto ((MonoProtocolType)proto);
        if(sock_proto==-1) {
                *error = WSAEPROTONOSUPPORT;
                return(NULL);
        }
        
-       sock_type=convert_type(type);
+       sock_type = convert_type ((MonoSocketType)type);
        if(sock_type==-1) {
                *error = WSAESOCKTNOSUPPORT;
                return(NULL);
@@ -967,12 +967,12 @@ ves_icall_System_Net_Sockets_Socket_LocalEndPoint_internal (SOCKET sock, gint32
        
        *error = 0;
        
-       salen = get_sockaddr_size (convert_family (af));
+       salen = get_sockaddr_size (convert_family ((MonoAddressFamily)af));
        if (salen == 0) {
                *error = WSAEAFNOSUPPORT;
                return NULL;
        }
-       sa = (salen <= 128) ? alloca (salen) : g_malloc0 (salen);
+       sa = (salen <= 128) ? (gchar *)alloca (salen) : (gchar *)g_malloc0 (salen);
 
        MONO_PREPARE_BLOCKING;
 
@@ -1005,12 +1005,12 @@ ves_icall_System_Net_Sockets_Socket_RemoteEndPoint_internal (SOCKET sock, gint32
        
        *error = 0;
        
-       salen = get_sockaddr_size (convert_family (af));
+       salen = get_sockaddr_size (convert_family ((MonoAddressFamily)af));
        if (salen == 0) {
                *error = WSAEAFNOSUPPORT;
                return NULL;
        }
-       sa = (salen <= 128) ? alloca (salen) : g_malloc0 (salen);
+       sa = (salen <= 128) ? (gchar *)alloca (salen) : (gchar *)g_malloc0 (salen);
        /* Note: linux returns just 2 for AF_UNIX. Always. */
 
        MONO_PREPARE_BLOCKING;
@@ -1060,7 +1060,7 @@ create_sockaddr_from_object(MonoObject *saddr_obj, socklen_t *sa_size, gint32 *e
                mono_raise_exception (mono_exception_from_name(mono_get_corlib (), "System", "SystemException"));
        }
        
-       family = convert_family (mono_array_get (data, guint8, 0) + (mono_array_get (data, guint8, 1) << 8));
+       family = convert_family ((MonoAddressFamily)(mono_array_get (data, guint8, 0) + (mono_array_get (data, guint8, 1) << 8)));
        if (family == AF_INET) {
                struct sockaddr_in *sa;
                guint16 port;
@@ -1233,7 +1233,7 @@ ves_icall_System_Net_Sockets_Socket_Poll_internal (SOCKET sock, gint mode,
                }
 
                if (ret == -1 && errno == EINTR) {
-                       if (mono_thread_test_state (thread, ThreadState_AbortRequested | ThreadState_StopRequested)) {
+                       if (mono_thread_test_state (thread, (MonoThreadState)(ThreadState_AbortRequested | ThreadState_StopRequested))) {
                                g_free (pfds);
                                return FALSE;
                        }
@@ -1335,8 +1335,8 @@ ves_icall_System_Net_Sockets_Socket_Disconnect_internal (SOCKET sock, MonoBoolea
         * pointers to functions in managed objects that still works
         * on 64bit platforms.
         */
-       ret = WSAIoctl (sock, SIO_GET_EXTENSION_FUNCTION_POINTER, (void *)&disco_guid, sizeof(GUID),
-                       (void *)&_wapi_disconnectex, sizeof(void *), &output_bytes, NULL, NULL);
+       ret = WSAIoctl (sock, SIO_GET_EXTENSION_FUNCTION_POINTER, (gchar *)&disco_guid, sizeof(GUID),
+                       (gchar *)&_wapi_disconnectex, sizeof(void *), &output_bytes, NULL, NULL);
 
        MONO_FINISH_BLOCKING;
 
@@ -1356,8 +1356,8 @@ ves_icall_System_Net_Sockets_Socket_Disconnect_internal (SOCKET sock, MonoBoolea
                 * For an explanation of why this is done, you can read
                 * the article at http://www.codeproject.com/internet/jbsocketserver3.asp
                 */
-               ret = WSAIoctl (sock, SIO_GET_EXTENSION_FUNCTION_POINTER, (void *)&trans_guid, sizeof(GUID),
-                               (void *)&_wapi_transmitfile, sizeof(void *), &output_bytes, NULL, NULL);
+               ret = WSAIoctl (sock, SIO_GET_EXTENSION_FUNCTION_POINTER, (gchar *)&trans_guid, sizeof(GUID),
+                               (gchar *)&_wapi_transmitfile, sizeof(void *), &output_bytes, NULL, NULL);
 
                MONO_FINISH_BLOCKING;
 
@@ -1820,7 +1820,7 @@ ves_icall_System_Net_Sockets_Socket_Select_internal (MonoArray **sockets, gint32
                }
 
                if (ret == -1 && errno == EINTR) {
-                       if (mono_thread_test_state (thread, ThreadState_AbortRequested | ThreadState_StopRequested)) {
+                       if (mono_thread_test_state (thread, (MonoThreadState)(ThreadState_AbortRequested | ThreadState_StopRequested))) {
                                g_free (pfds);
                                *sockets = NULL;
                                return;
@@ -1924,7 +1924,7 @@ ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal (SOCKET sock, g
 #endif
        {
 
-               ret = convert_sockopt_level_and_name (level, name, &system_level, &system_name);
+               ret = convert_sockopt_level_and_name ((MonoSocketOptionLevel)level, (MonoSocketOptionName)name, &system_level, &system_name);
        }
 
        if(ret==-1) {
@@ -2054,7 +2054,7 @@ ves_icall_System_Net_Sockets_Socket_GetSocketOption_arr_internal (SOCKET sock, g
        
        *error = 0;
        
-       ret=convert_sockopt_level_and_name(level, name, &system_level,
+       ret=convert_sockopt_level_and_name((MonoSocketOptionLevel)level, (MonoSocketOptionName)name, &system_level,
                                           &system_name);
        if(ret==-1) {
                *error = WSAENOPROTOOPT;
@@ -2170,7 +2170,7 @@ ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal (SOCKET sock, gint3
        sol_ipv6 = mono_networking_get_ipv6_protocol ();
        sol_ip = mono_networking_get_ip_protocol ();
 
-       ret=convert_sockopt_level_and_name(level, name, &system_level,
+       ret=convert_sockopt_level_and_name((MonoSocketOptionLevel)level, (MonoSocketOptionName)name, &system_level,
                                           &system_name);
 
 #if !defined(SO_EXCLUSIVEADDRUSE) && defined(SO_REUSEADDR)
@@ -2221,7 +2221,7 @@ ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal (SOCKET sock, gint3
                                 *      Get group address
                                 */
                                field = mono_class_get_field_from_name (obj_val->vtable->klass, "group");
-                               address = *(gpointer *)(((char *)obj_val) + field->offset);
+                               address = *(MonoObject **)(((char *)obj_val) + field->offset);
                                
                                if(address) {
                                        mreq6.ipv6mr_multiaddr = ipaddress_to_struct_in6_addr (address);
@@ -2260,7 +2260,7 @@ ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal (SOCKET sock, gint3
                                 * those :-(
                                 */
                                field = mono_class_get_field_from_name (obj_val->vtable->klass, "group");
-                               address = *(gpointer *)(((char *)obj_val) + field->offset);
+                               address = *(MonoObject **)(((char *)obj_val) + field->offset);
 
                                /* address might not be defined and if so, set the address to ADDR_ANY.
                                 */
@@ -2269,7 +2269,7 @@ ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal (SOCKET sock, gint3
                                }
 
                                field = mono_class_get_field_from_name (obj_val->vtable->klass, "local");
-                               address = *(gpointer *)(((char *)obj_val) + field->offset);
+                               address = *(MonoObject **)(((char *)obj_val) + field->offset);
 
 #ifdef HAVE_STRUCT_IP_MREQN
                                if(address) {
index f7ae6246f2fe1b0464f342c08562fd32e3a350c7..4adae56791b40af7ffab900966b10c267a908000 100644 (file)
@@ -74,7 +74,7 @@ poll_register_fd (gint fd, gint events, gboolean is_new)
                poll_fds_capacity *= 2;
                g_assert (poll_fds_size <= poll_fds_capacity);
 
-               poll_fds = g_renew (mono_pollfd, poll_fds, poll_fds_capacity);
+               poll_fds = (mono_pollfd *)g_renew (mono_pollfd, poll_fds, poll_fds_capacity);
        }
 
        POLL_INIT_FD (&poll_fds [poll_fds_size - 1], fd, poll_event);
index 2b9aaaca6daa875df779116e5ba7fcc38809deaa..3c931eb7b3d1fee75441268c0ff174c930029ce9 100644 (file)
@@ -203,12 +203,12 @@ static void
 filter_jobs_for_domain (gpointer key, gpointer value, gpointer user_data)
 {
        FilterSockaresForDomainData *data;
-       MonoMList *list = value, *element;
+       MonoMList *list = (MonoMList *)value, *element;
        MonoDomain *domain;
        MonoGHashTable *states;
 
        g_assert (user_data);
-       data = user_data;
+       data = (FilterSockaresForDomainData *)user_data;
        domain = data->domain;
        states = data->states;
 
@@ -259,7 +259,7 @@ wait_callback (gint fd, gint events, gpointer user_data)
                gint operations;
 
                g_assert (user_data);
-               states = user_data;
+               states = (MonoGHashTable *)user_data;
 
                mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_IO_THREADPOOL, "io threadpool: cal fd %3d, events = %2s | %2s | %3s",
                        fd, (events & EVENT_IN) ? "RD" : "..", (events & EVENT_OUT) ? "WR" : "..", (events & EVENT_ERR) ? "ERR" : "...");
@@ -508,7 +508,7 @@ initialize (void)
 
        mono_coop_mutex_init (&threadpool_io->updates_lock);
        mono_coop_cond_init (&threadpool_io->updates_cond);
-       mono_gc_register_root ((void*)&threadpool_io->updates [0], sizeof (threadpool_io->updates), MONO_GC_DESCRIPTOR_NULL, MONO_ROOT_SOURCE_THREAD_POOL, "i/o thread pool updates list");
+       mono_gc_register_root ((char *)&threadpool_io->updates [0], sizeof (threadpool_io->updates), MONO_GC_DESCRIPTOR_NULL, MONO_ROOT_SOURCE_THREAD_POOL, "i/o thread pool updates list");
 
        threadpool_io->updates_size = 0;
 
index 4a09348252f2db7a8b2349d00125f3e092bc663b..17936001106381195303b13ea8c3ed9b0dc88863 100644 (file)
@@ -49,6 +49,8 @@
 #define MONITOR_INTERVAL 100 // ms
 #define MONITOR_MINIMAL_LIFETIME 60 * 1000 // ms
 
+#define WORKER_CREATION_MAX_PER_SEC 10
+
 /* The exponent to apply to the gain. 1.0 means to use linear gain,
  * higher values will enhance large moves and damp small ones.
  * default: 2.0 */
@@ -132,6 +134,10 @@ typedef struct {
        MonoCoopCond parked_threads_cond;
        MonoCoopMutex active_threads_lock; /* protect access to working_threads and parked_threads */
 
+       guint32 worker_creation_current_second;
+       guint32 worker_creation_current_count;
+       MonoCoopMutex worker_creation_lock;
+
        gint32 heuristic_completions;
        guint32 heuristic_sample_start;
        guint32 heuristic_last_dequeue; // ms
@@ -255,6 +261,9 @@ initialize (void)
        threadpool->working_threads = g_ptr_array_new ();
        mono_coop_mutex_init (&threadpool->active_threads_lock);
 
+       threadpool->worker_creation_current_second = -1;
+       mono_coop_mutex_init (&threadpool->worker_creation_lock);
+
        threadpool->heuristic_adjustment_interval = 10;
        mono_coop_mutex_init (&threadpool->heuristic_lock);
 
@@ -295,7 +304,12 @@ initialize (void)
        threads_count = mono_cpu_count () * threads_per_cpu;
 
        threadpool->limit_worker_min = threadpool->limit_io_min = threads_count;
+
+#if defined (PLATFORM_ANDROID) || defined (HOST_IOS)
+       threadpool->limit_worker_max = threadpool->limit_io_max = CLAMP (threads_count * 100, MIN (threads_count, 200), MAX (threads_count, 200));
+#else
        threadpool->limit_worker_max = threadpool->limit_io_max = threads_count * 100;
+#endif
 
        threadpool->counters._.max_working = threadpool->limit_worker_min;
 
@@ -403,7 +417,7 @@ domain_get (MonoDomain *domain, gboolean create)
        g_assert (domain);
 
        for (i = 0; i < threadpool->domains->len; ++i) {
-               tpdomain = g_ptr_array_index (threadpool->domains, i);
+               tpdomain = (ThreadPoolDomain *)g_ptr_array_index (threadpool->domains, i);
                if (tpdomain->domain == domain)
                        return tpdomain;
        }
@@ -430,7 +444,7 @@ domain_any_has_request (void)
        guint i;
 
        for (i = 0; i < threadpool->domains->len; ++i) {
-               ThreadPoolDomain *tmp = g_ptr_array_index (threadpool->domains, i);
+               ThreadPoolDomain *tmp = (ThreadPoolDomain *)g_ptr_array_index (threadpool->domains, i);
                if (tmp->outstanding_request > 0)
                        return TRUE;
        }
@@ -458,7 +472,7 @@ domain_get_next (ThreadPoolDomain *current)
                        g_assert (current_idx >= 0);
                }
                for (i = current_idx + 1; i < len + current_idx + 1; ++i) {
-                       ThreadPoolDomain *tmp = g_ptr_array_index (threadpool->domains, i % len);
+                       ThreadPoolDomain *tmp = (ThreadPoolDomain *)g_ptr_array_index (threadpool->domains, i % len);
                        if (tmp->outstanding_request > 0) {
                                tpdomain = tmp;
                                break;
@@ -508,7 +522,7 @@ worker_park (void)
                if (interrupted)
                        goto done;
 
-               if (mono_coop_cond_timedwait (&threadpool->parked_threads_cond, &threadpool->active_threads_lock, rand_next (rand_handle, 5 * 1000, 60 * 1000)) != 0)
+               if (mono_coop_cond_timedwait (&threadpool->parked_threads_cond, &threadpool->active_threads_lock, rand_next ((void **)rand_handle, 5 * 1000, 60 * 1000)) != 0)
                        timeout = TRUE;
 
                mono_thread_info_uninstall_interrupt (&interrupted);
@@ -636,7 +650,7 @@ worker_thread (gpointer data)
                        else if (res && *(MonoBoolean*) mono_object_unbox (res) == FALSE)
                                retire = TRUE;
 
-                       mono_thread_clr_state (thread , ~ThreadState_Background);
+                       mono_thread_clr_state (thread, (MonoThreadState)~ThreadState_Background);
                        if (!mono_thread_test_state (thread , ThreadState_Background))
                                ves_icall_System_Threading_Thread_SetState (thread, ThreadState_Background);
 
@@ -680,29 +694,56 @@ worker_try_create (void)
 {
        ThreadPoolCounter counter;
        MonoInternalThread *thread;
+       gint32 now;
+
+       mono_coop_mutex_lock (&threadpool->worker_creation_lock);
 
        mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] try create worker", mono_native_thread_id_get ());
 
+       if ((now = mono_100ns_ticks () / 10 / 1000 / 1000) == 0) {
+               g_warning ("failed to get 100ns ticks");
+       } else {
+               if (threadpool->worker_creation_current_second != now) {
+                       threadpool->worker_creation_current_second = now;
+                       threadpool->worker_creation_current_count = 0;
+               } else {
+                       g_assert (threadpool->worker_creation_current_count <= WORKER_CREATION_MAX_PER_SEC);
+                       if (threadpool->worker_creation_current_count == WORKER_CREATION_MAX_PER_SEC) {
+                               mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] try create worker, failed: maximum number of worker created per second reached, current count = %d",
+                                       mono_native_thread_id_get (), threadpool->worker_creation_current_count);
+                               mono_coop_mutex_unlock (&threadpool->worker_creation_lock);
+                               return FALSE;
+                       }
+               }
+       }
+
        COUNTER_ATOMIC (counter, {
-               if (counter._.working >= counter._.max_working)
+               if (counter._.working >= counter._.max_working) {
+                       mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] try create worker, failed: maximum number of working threads reached",
+                               mono_native_thread_id_get ());
+                       mono_coop_mutex_unlock (&threadpool->worker_creation_lock);
                        return FALSE;
+               }
                counter._.working ++;
                counter._.active ++;
        });
 
        if ((thread = mono_thread_create_internal (mono_get_root_domain (), worker_thread, NULL, TRUE, 0)) != NULL) {
-               mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] try create worker, created %p",
-                       mono_native_thread_id_get (), thread->tid);
+               threadpool->worker_creation_current_count += 1;
+
+               mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] try create worker, created %p, now = %d count = %d", mono_native_thread_id_get (), thread->tid, now, threadpool->worker_creation_current_count);
+               mono_coop_mutex_unlock (&threadpool->worker_creation_lock);
                return TRUE;
        }
 
-       mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] try create worker, failed", mono_native_thread_id_get ());
+       mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] try create worker, failed: could not create thread", mono_native_thread_id_get ());
 
        COUNTER_ATOMIC (counter, {
                counter._.working --;
                counter._.active --;
        });
 
+       mono_coop_mutex_unlock (&threadpool->worker_creation_lock);
        return FALSE;
 }
 
@@ -871,7 +912,7 @@ monitor_thread (void)
 
                mono_coop_mutex_lock (&threadpool->active_threads_lock);
                for (i = 0; i < threadpool->working_threads->len; ++i) {
-                       thread = g_ptr_array_index (threadpool->working_threads, i);
+                       thread = (MonoInternalThread *)g_ptr_array_index (threadpool->working_threads, i);
                        if ((thread->state & ThreadState_WaitSleepJoin) == 0) {
                                all_waitsleepjoin = FALSE;
                                break;
@@ -881,8 +922,18 @@ monitor_thread (void)
 
                if (all_waitsleepjoin) {
                        ThreadPoolCounter counter;
-                       COUNTER_ATOMIC (counter, { counter._.max_working ++; });
-                       hill_climbing_force_change (counter._.max_working, TRANSITION_STARVATION);
+                       gboolean limit_worker_max_reached = FALSE;
+
+                       COUNTER_ATOMIC (counter, {
+                               if (counter._.max_working >= threadpool->limit_worker_max) {
+                                       limit_worker_max_reached = TRUE;
+                                       break;
+                               }
+                               counter._.max_working ++;
+                       });
+
+                       if (!limit_worker_max_reached)
+                               hill_climbing_force_change (counter._.max_working, TRANSITION_STARVATION);
                }
 
                threadpool->cpu_usage = mono_cpu_usage (threadpool->cpu_usage_state);
@@ -1421,12 +1472,16 @@ mono_threadpool_ms_resume (void)
 void
 ves_icall_System_Threading_ThreadPool_GetAvailableThreadsNative (gint32 *worker_threads, gint32 *completion_port_threads)
 {
+       ThreadPoolCounter counter;
+
        if (!worker_threads || !completion_port_threads)
                return;
 
        mono_lazy_initialize (&status, initialize);
 
-       *worker_threads = threadpool->limit_worker_max;
+       counter.as_gint64 = COUNTER_READ ();
+
+       *worker_threads = MAX (0, threadpool->limit_worker_max - counter._.active);
        *completion_port_threads = threadpool->limit_io_max;
 }
 
@@ -1464,8 +1519,8 @@ ves_icall_System_Threading_ThreadPool_SetMinThreadsNative (gint32 worker_threads
        if (completion_port_threads <= 0 || completion_port_threads > threadpool->limit_io_max)
                return FALSE;
 
-       threadpool->limit_worker_max = worker_threads;
-       threadpool->limit_io_max = completion_port_threads;
+       threadpool->limit_worker_min = worker_threads;
+       threadpool->limit_io_min = completion_port_threads;
 
        return TRUE;
 }
index e947f15ed8cd72969154328168c7c20f51deb8d2..9e7e8ff34afb56be69e98da5a2b6e534c1fe04fc 100644 (file)
@@ -549,7 +549,7 @@ get_current_thread_ptr_for_domain (MonoDomain *domain, MonoInternalThread *threa
        mono_domain_unlock (domain);
        g_assert (offset);
 
-       return get_thread_static_data (thread, offset);
+       return (MonoThread **)get_thread_static_data (thread, offset);
 }
 
 static void
@@ -903,7 +903,7 @@ mono_thread_create_internal (MonoDomain *domain, gpointer func, gpointer arg, gb
        MONO_OBJECT_SETREF (thread, internal_thread, internal);
 
        start_info = g_new0 (StartInfo, 1);
-       start_info->func = func;
+       start_info->func = (guint32 (*)(void *))func;
        start_info->obj = thread;
        start_info->start_arg = arg;
 
@@ -1078,7 +1078,7 @@ ves_icall_System_Threading_Thread_ConstructInternalThread (MonoThread *this_obj)
 
        internal->state = ThreadState_Unstarted;
 
-       InterlockedCompareExchangePointer ((gpointer)&this_obj->internal_thread, internal, NULL);
+       InterlockedCompareExchangePointer ((volatile gpointer *)&this_obj->internal_thread, internal, NULL);
 }
 
 HANDLE
@@ -1918,7 +1918,7 @@ MonoObject*
 ves_icall_System_Threading_Interlocked_CompareExchange_T (MonoObject **location, MonoObject *value, MonoObject *comparand)
 {
        MonoObject *res;
-       res = InterlockedCompareExchangePointer ((gpointer *)location, value, comparand);
+       res = (MonoObject *)InterlockedCompareExchangePointer ((volatile gpointer *)location, value, comparand);
        mono_gc_wbarrier_generic_nostore (location);
        return res;
 }
@@ -1927,7 +1927,7 @@ MonoObject*
 ves_icall_System_Threading_Interlocked_Exchange_T (MonoObject **location, MonoObject *value)
 {
        MonoObject *res;
-       res = InterlockedExchangePointer ((gpointer *)location, value);
+       res = (MonoObject *)InterlockedExchangePointer ((volatile gpointer *)location, value);
        mono_gc_wbarrier_generic_nostore (location);
        return res;
 }
@@ -1976,9 +1976,9 @@ ves_icall_System_Threading_Thread_MemoryBarrier (void)
 }
 
 void
-ves_icall_System_Threading_Thread_ClrState (MonoInternalThread* this, guint32 state)
+ves_icall_System_Threading_Thread_ClrState (MonoInternalThread* this_obj, guint32 state)
 {
-       mono_thread_clr_state (thisstate);
+       mono_thread_clr_state (this_obj, (MonoThreadState)state);
 
        if (state & ThreadState_Background) {
                /* If the thread changes the background mode, the main thread has to
@@ -1990,9 +1990,9 @@ ves_icall_System_Threading_Thread_ClrState (MonoInternalThread* this, guint32 st
 }
 
 void
-ves_icall_System_Threading_Thread_SetState (MonoInternalThread* this, guint32 state)
+ves_icall_System_Threading_Thread_SetState (MonoInternalThread* this_obj, guint32 state)
 {
-       mono_thread_set_state (thisstate);
+       mono_thread_set_state (this_obj, (MonoThreadState)state);
        
        if (state & ThreadState_Background) {
                /* If the thread changes the background mode, the main thread has to
@@ -2004,15 +2004,15 @@ ves_icall_System_Threading_Thread_SetState (MonoInternalThread* this, guint32 st
 }
 
 guint32
-ves_icall_System_Threading_Thread_GetState (MonoInternalThread* this)
+ves_icall_System_Threading_Thread_GetState (MonoInternalThread* this_obj)
 {
        guint32 state;
 
-       LOCK_THREAD (this);
+       LOCK_THREAD (this_obj);
        
-       state = this->state;
+       state = this_obj->state;
 
-       UNLOCK_THREAD (this);
+       UNLOCK_THREAD (this_obj);
        
        return state;
 }
@@ -2020,7 +2020,7 @@ ves_icall_System_Threading_Thread_GetState (MonoInternalThread* this)
 void ves_icall_System_Threading_Thread_Interrupt_internal (MonoThread *this_obj)
 {
        MonoInternalThread *current;
-       gboolean throw;
+       gboolean throw_;
        MonoInternalThread *thread = this_obj->internal_thread;
 
        LOCK_THREAD (thread);
@@ -2028,11 +2028,11 @@ void ves_icall_System_Threading_Thread_Interrupt_internal (MonoThread *this_obj)
        current = mono_thread_internal_current ();
 
        thread->thread_interrupt_requested = TRUE;
-       throw = current != thread && (thread->state & ThreadState_WaitSleepJoin);
+       throw_ = current != thread && (thread->state & ThreadState_WaitSleepJoin);
 
        UNLOCK_THREAD (thread);
        
-       if (throw) {
+       if (throw_) {
                abort_thread_internal (thread, TRUE, FALSE);
        }
 }
@@ -2040,18 +2040,18 @@ void ves_icall_System_Threading_Thread_Interrupt_internal (MonoThread *this_obj)
 void mono_thread_current_check_pending_interrupt ()
 {
        MonoInternalThread *thread = mono_thread_internal_current ();
-       gboolean throw = FALSE;
+       gboolean throw_ = FALSE;
 
        LOCK_THREAD (thread);
        
        if (thread->thread_interrupt_requested) {
-               throw = TRUE;
+               throw_ = TRUE;
                thread->thread_interrupt_requested = FALSE;
        }
        
        UNLOCK_THREAD (thread);
 
-       if (throw) {
+       if (throw_) {
                mono_raise_exception (mono_get_exception_thread_interrupted ());
        }
 }
@@ -2381,19 +2381,19 @@ ves_icall_System_Threading_Thread_VolatileReadFloat (void *ptr)
 gint8
 ves_icall_System_Threading_Volatile_Read1 (void *ptr)
 {
-       return InterlockedRead8 (ptr);
+       return InterlockedRead8 ((volatile gint8 *)ptr);
 }
 
 gint16
 ves_icall_System_Threading_Volatile_Read2 (void *ptr)
 {
-       return InterlockedRead16 (ptr);
+       return InterlockedRead16 ((volatile gint16 *)ptr);
 }
 
 gint32
 ves_icall_System_Threading_Volatile_Read4 (void *ptr)
 {
-       return InterlockedRead (ptr);
+       return InterlockedRead ((volatile gint32 *)ptr);
 }
 
 gint64
@@ -2408,13 +2408,13 @@ ves_icall_System_Threading_Volatile_Read8 (void *ptr)
                return val;
        }
 #endif
-       return InterlockedRead64 (ptr);
+       return InterlockedRead64 ((volatile gint64 *)ptr);
 }
 
 void *
 ves_icall_System_Threading_Volatile_ReadIntPtr (void *ptr)
 {
-       return InterlockedReadPointer (ptr);
+       return InterlockedReadPointer ((volatile gpointer *)ptr);
 }
 
 double
@@ -2432,7 +2432,7 @@ ves_icall_System_Threading_Volatile_ReadDouble (void *ptr)
        }
 #endif
 
-       u.ival = InterlockedRead64 (ptr);
+       u.ival = InterlockedRead64 ((volatile gint64 *)ptr);
 
        return u.fval;
 }
@@ -2442,7 +2442,7 @@ ves_icall_System_Threading_Volatile_ReadFloat (void *ptr)
 {
        IntFloatUnion u;
 
-       u.ival = InterlockedRead (ptr);
+       u.ival = InterlockedRead ((volatile gint32 *)ptr);
 
        return u.fval;
 }
@@ -2450,7 +2450,7 @@ ves_icall_System_Threading_Volatile_ReadFloat (void *ptr)
 MonoObject*
 ves_icall_System_Threading_Volatile_Read_T (void *ptr)
 {
-       return InterlockedReadPointer (ptr);
+       return (MonoObject *)InterlockedReadPointer ((volatile gpointer *)ptr);
 }
 
 void
@@ -2504,19 +2504,19 @@ ves_icall_System_Threading_Thread_VolatileWriteFloat (void *ptr, float value)
 void
 ves_icall_System_Threading_Volatile_Write1 (void *ptr, gint8 value)
 {
-       InterlockedWrite8 (ptr, value);
+       InterlockedWrite8 ((volatile gint8 *)ptr, value);
 }
 
 void
 ves_icall_System_Threading_Volatile_Write2 (void *ptr, gint16 value)
 {
-       InterlockedWrite16 (ptr, value);
+       InterlockedWrite16 ((volatile gint16 *)ptr, value);
 }
 
 void
 ves_icall_System_Threading_Volatile_Write4 (void *ptr, gint32 value)
 {
-       InterlockedWrite (ptr, value);
+       InterlockedWrite ((volatile gint32 *)ptr, value);
 }
 
 void
@@ -2531,13 +2531,13 @@ ves_icall_System_Threading_Volatile_Write8 (void *ptr, gint64 value)
        }
 #endif
 
-       InterlockedWrite64 (ptr, value);
+       InterlockedWrite64 ((volatile gint64 *)ptr, value);
 }
 
 void
 ves_icall_System_Threading_Volatile_WriteIntPtr (void *ptr, void *value)
 {
-       InterlockedWritePointer (ptr, value);
+       InterlockedWritePointer ((volatile gpointer *)ptr, value);
 }
 
 void
@@ -2556,7 +2556,7 @@ ves_icall_System_Threading_Volatile_WriteDouble (void *ptr, double value)
 
        u.fval = value;
 
-       InterlockedWrite64 (ptr, u.ival);
+       InterlockedWrite64 ((volatile gint64 *)ptr, u.ival);
 }
 
 void
@@ -2566,7 +2566,7 @@ ves_icall_System_Threading_Volatile_WriteFloat (void *ptr, float value)
 
        u.fval = value;
 
-       InterlockedWrite (ptr, u.ival);
+       InterlockedWrite ((volatile gint32 *)ptr, u.ival);
 }
 
 void
@@ -2873,7 +2873,7 @@ remove_and_abort_threads (gpointer key, gpointer value, gpointer user)
 {
        struct wait_data *wait=(struct wait_data *)user;
        MonoNativeThreadId self = mono_native_thread_id_get ();
-       MonoInternalThread *thread = value;
+       MonoInternalThread *thread = (MonoInternalThread *)value;
        HANDLE handle;
 
        if (wait->num >= MAXIMUM_WAIT_OBJECTS)
@@ -3176,7 +3176,7 @@ static gboolean thread_dump_requested;
 static gboolean
 collect_frame (MonoStackFrameInfo *frame, MonoContext *ctx, gpointer data)
 {
-       ThreadDumpUserData *ud = data;
+       ThreadDumpUserData *ud = (ThreadDumpUserData *)data;
 
        if (ud->nframes < ud->max_frames) {
                memcpy (&ud->frames [ud->nframes], frame, sizeof (MonoStackFrameInfo));
@@ -3190,7 +3190,7 @@ collect_frame (MonoStackFrameInfo *frame, MonoContext *ctx, gpointer data)
 static SuspendThreadResult
 get_thread_dump (MonoThreadInfo *info, gpointer ud)
 {
-       ThreadDumpUserData *user_data = ud;
+       ThreadDumpUserData *user_data = (ThreadDumpUserData *)ud;
        MonoInternalThread *thread = user_data->thread;
 
 #if 0
@@ -3218,8 +3218,8 @@ typedef struct {
 static void
 collect_thread (gpointer key, gpointer value, gpointer user)
 {
-       CollectThreadsUserData *ud = user;
-       MonoInternalThread *thread = value;
+       CollectThreadsUserData *ud = (CollectThreadsUserData *)user;
+       MonoInternalThread *thread = (MonoInternalThread *)value;
 
        if (ud->nthreads < ud->max_threads)
                ud->threads [ud->nthreads ++] = thread;
@@ -3447,7 +3447,7 @@ ref_stack_new (gint initial_size)
 static void
 ref_stack_destroy (gpointer ptr)
 {
-       RefStack *rs = ptr;
+       RefStack *rs = (RefStack *)ptr;
 
        if (rs != NULL) {
                g_free (rs->refs);
@@ -3461,7 +3461,7 @@ ref_stack_push (RefStack *rs, gpointer ptr)
        g_assert (rs != NULL);
 
        if (rs->bottom >= rs->allocated) {
-               rs->refs = g_realloc (rs->refs, rs->allocated * 2 * sizeof (gpointer) + 1);
+               rs->refs = (void **)g_realloc (rs->refs, rs->allocated * 2 * sizeof (gpointer) + 1);
                rs->allocated <<= 1;
                rs->refs [rs->allocated] = NULL;
        }
@@ -3510,7 +3510,7 @@ mono_thread_push_appdomain_ref (MonoDomain *domain)
                SPIN_LOCK (thread->lock_thread_id);
                if (thread->appdomain_refs == NULL)
                        thread->appdomain_refs = ref_stack_new (16);
-               ref_stack_push (thread->appdomain_refs, domain);
+               ref_stack_push ((RefStack *)thread->appdomain_refs, domain);
                SPIN_UNLOCK (thread->lock_thread_id);
        }
 }
@@ -3523,7 +3523,7 @@ mono_thread_pop_appdomain_ref (void)
        if (thread) {
                /* printf ("POP REF: %"G_GSIZE_FORMAT" -> %s.\n", (gsize)thread->tid, ((MonoDomain*)(thread->appdomain_refs->data))->friendly_name); */
                SPIN_LOCK (thread->lock_thread_id);
-               ref_stack_pop (thread->appdomain_refs);
+               ref_stack_pop ((RefStack *)thread->appdomain_refs);
                SPIN_UNLOCK (thread->lock_thread_id);
        }
 }
@@ -3533,7 +3533,7 @@ mono_thread_internal_has_appdomain_ref (MonoInternalThread *thread, MonoDomain *
 {
        gboolean res;
        SPIN_LOCK (thread->lock_thread_id);
-       res = ref_stack_find (thread->appdomain_refs, domain);
+       res = ref_stack_find ((RefStack *)thread->appdomain_refs, domain);
        SPIN_UNLOCK (thread->lock_thread_id);
        return res;
 }
@@ -3704,10 +3704,10 @@ static MonoBitSet *context_reference_bitmaps [NUM_STATIC_DATA_IDX];
 static void
 mark_slots (void *addr, MonoBitSet **bitmaps, MonoGCMarkFunc mark_func, void *gc_data)
 {
-       gpointer *static_data = addr;
+       gpointer *static_data = (gpointer *)addr;
 
        for (int i = 0; i < NUM_STATIC_DATA_IDX; ++i) {
-               void **ptr = static_data [i];
+               void **ptr = (void **)static_data [i];
 
                if (!ptr)
                        continue;
@@ -3757,7 +3757,7 @@ mono_alloc_static_data (gpointer **static_data_ptr, guint32 offset, gboolean thr
                                ctx_desc = mono_gc_make_root_descr_user (mark_ctx_slots);
                }
 
-               static_data = mono_gc_alloc_fixed (static_data_size [0], threadlocal ? tls_desc : ctx_desc,
+               static_data = (void **)mono_gc_alloc_fixed (static_data_size [0], threadlocal ? tls_desc : ctx_desc,
                        threadlocal ? MONO_ROOT_SOURCE_THREAD_STATIC : MONO_ROOT_SOURCE_CONTEXT_STATIC,
                        threadlocal ? "managed thread-static variables" : "managed context-static variables");
                *static_data_ptr = static_data;
@@ -3877,7 +3877,7 @@ context_adjust_static_data (MonoAppContext *ctx)
 static void 
 alloc_thread_static_data_helper (gpointer key, gpointer value, gpointer user)
 {
-       MonoInternalThread *thread = value;
+       MonoInternalThread *thread = (MonoInternalThread *)value;
        guint32 offset = GPOINTER_TO_UINT (user);
 
        mono_alloc_static_data (&(thread->static_data), offset, TRUE);
@@ -4031,8 +4031,8 @@ typedef struct {
 static void 
 free_thread_static_data_helper (gpointer key, gpointer value, gpointer user)
 {
-       MonoInternalThread *thread = value;
-       OffsetSize *data = user;
+       MonoInternalThread *thread = (MonoInternalThread *)value;
+       OffsetSize *data = (OffsetSize *)user;
        int idx = ACCESS_SPECIAL_STATIC_OFFSET (data->offset, index);
        int off = ACCESS_SPECIAL_STATIC_OFFSET (data->offset, offset);
        char *ptr;
@@ -4057,7 +4057,7 @@ free_context_static_data_helper (gpointer key, gpointer value, gpointer user)
                return TRUE; // Remove this key/value pair
        }
 
-       OffsetSize *data = user;
+       OffsetSize *data = (OffsetSize *)user;
        int idx = ACCESS_SPECIAL_STATIC_OFFSET (data->offset, index);
        int off = ACCESS_SPECIAL_STATIC_OFFSET (data->offset, offset);
        char *ptr;
@@ -4114,7 +4114,7 @@ do_free_special_slot (guint32 offset, guint32 size)
 static void
 do_free_special (gpointer key, gpointer value, gpointer data)
 {
-       MonoClassField *field = key;
+       MonoClassField *field = (MonoClassField *)key;
        guint32 offset = GPOINTER_TO_UINT (value);
        gint32 align;
        guint32 size;
@@ -4523,7 +4523,7 @@ mono_jit_info_match (MonoJitInfo *ji, gpointer ip)
 static gboolean
 last_managed (MonoStackFrameInfo *frame, MonoContext *ctx, gpointer data)
 {
-       MonoJitInfo **dest = data;
+       MonoJitInfo **dest = (MonoJitInfo **)data;
        *dest = frame->ji;
        return TRUE;
 }
@@ -4547,7 +4547,7 @@ typedef struct {
 static SuspendThreadResult
 abort_thread_critical (MonoThreadInfo *info, gpointer ud)
 {
-       AbortThreadData *data = ud;
+       AbortThreadData *data = (AbortThreadData *)ud;
        MonoInternalThread *thread = data->thread;
        MonoJitInfo *ji = NULL;
        gboolean protected_wrapper;
@@ -4627,7 +4627,7 @@ typedef struct{
 static SuspendThreadResult
 suspend_thread_critical (MonoThreadInfo *info, gpointer ud)
 {
-       SuspendThreadData *data = ud;
+       SuspendThreadData *data = (SuspendThreadData *)ud;
        MonoInternalThread *thread = data->thread;
        MonoJitInfo *ji = NULL;
        gboolean protected_wrapper;
@@ -4645,7 +4645,7 @@ suspend_thread_critical (MonoThreadInfo *info, gpointer ud)
                if (InterlockedCompareExchange (&thread->interruption_requested, 1, 0) == 0)
                        InterlockedIncrement (&thread_interruption_requested);
                if (data->interrupt)
-                       data->interrupt_token = mono_thread_info_prepare_interrupt (thread->thread_info);
+                       data->interrupt_token = mono_thread_info_prepare_interrupt ((MonoThreadInfo *)thread->thread_info);
                
                if (mono_thread_notify_pending_exc_fn && !running_managed)
                        /* The JIT will notify the thread about the interruption */
@@ -4701,7 +4701,7 @@ self_suspend_internal (MonoInternalThread *thread)
 mono_bool
 mono_thread_is_foreign (MonoThread *thread)
 {
-       MonoThreadInfo *info = thread->internal_thread->thread_info;
+       MonoThreadInfo *info = (MonoThreadInfo *)thread->internal_thread->thread_info;
        return info->runtime_thread == FALSE;
 }
 
index 5a4a9a02c0dedc4814c76282467001b67a328345..e9af9516a1b4652f3e43ca9b3dd254addad43a0f 100644 (file)
@@ -409,10 +409,10 @@ mono_type_is_enum_type (MonoType *type)
  * 
  */
 static gboolean
-mono_type_is_value_type (MonoType *type, const char *namespace, const char *name)
+mono_type_is_value_type (MonoType *type, const char *namespace_, const char *name)
 {
        return type->type == MONO_TYPE_VALUETYPE &&
-               !strcmp (namespace, type->data.klass->name_space) &&
+               !strcmp (namespace_, type->data.klass->name_space) &&
                !strcmp (name, type->data.klass->name);
 }
 
@@ -941,7 +941,7 @@ verifier_load_field (VerifyContext *ctx, int token, MonoClass **out_klass, const
        MonoClass *klass = NULL;
 
        if (ctx->method->wrapper_type != MONO_WRAPPER_NONE) {
-               field = mono_method_get_wrapper_data (ctx->method, (guint32)token);
+               field = (MonoClassField *)mono_method_get_wrapper_data (ctx->method, (guint32)token);
                klass = field ? field->parent : NULL;
        } else {
                if (!IS_FIELD_DEF_OR_REF (token) || !token_bounds_check (ctx->image, token)) {
@@ -978,7 +978,7 @@ verifier_load_method (VerifyContext *ctx, int token, const char *opcode) {
 
 
        if (ctx->method->wrapper_type != MONO_WRAPPER_NONE) {
-               method = mono_method_get_wrapper_data (ctx->method, (guint32)token);
+               method = (MonoMethod *)mono_method_get_wrapper_data (ctx->method, (guint32)token);
        } else {
                MonoError error;
                if (!IS_METHOD_DEF_OR_REF_OR_SPEC (token) || !token_bounds_check (ctx->image, token)) {
@@ -1006,7 +1006,7 @@ verifier_load_type (VerifyContext *ctx, int token, const char *opcode) {
        MonoType* type;
        
        if (ctx->method->wrapper_type != MONO_WRAPPER_NONE) {
-               MonoClass *klass = mono_method_get_wrapper_data (ctx->method, (guint32)token);
+               MonoClass *klass = (MonoClass *)mono_method_get_wrapper_data (ctx->method, (guint32)token);
                type = klass ? &klass->byval_arg : NULL;
        } else {
                MonoError error;
@@ -1175,7 +1175,7 @@ mono_free_verify_list (GSList *list)
        GSList *tmp;
 
        for (tmp = list; tmp; tmp = tmp->next) {
-               info = tmp->data;
+               info = (MonoVerifyInfoExtended *)tmp->data;
                g_free (info->info.message);
                g_free (info);
        }
@@ -2444,11 +2444,11 @@ recursive_boxed_constraint_type_check (VerifyContext *ctx, MonoType *type, MonoC
 
        if (mono_type_is_generic_argument (constraint_type)) {
                MonoGenericParam *param = get_generic_param (ctx, constraint_type);
-               MonoClass **class;
+               MonoClass **klass;
                if (!param)
                        return FALSE;
-               for (class = mono_generic_param_info (param)->constraints; class && *class; ++class) {
-                       if (recursive_boxed_constraint_type_check (ctx, type, *class, recursion_level - 1))
+               for (klass = mono_generic_param_info (param)->constraints; klass && *klass; ++klass) {
+                       if (recursive_boxed_constraint_type_check (ctx, type, *klass, recursion_level - 1))
                                return TRUE;
                }
        }
@@ -2476,13 +2476,13 @@ is_compatible_boxed_valuetype (VerifyContext *ctx, MonoType *type, MonoType *can
 
        if (mono_type_is_generic_argument (candidate)) {
                MonoGenericParam *param = get_generic_param (ctx, candidate);
-               MonoClass **class;
+               MonoClass **klass;
                if (!param)
                        return FALSE;
 
-               for (class = mono_generic_param_info (param)->constraints; class && *class; ++class) {
+               for (klass = mono_generic_param_info (param)->constraints; klass && *klass; ++klass) {
                        /*256 should be enough since there can't be more than 255 generic arguments.*/
-                       if (recursive_boxed_constraint_type_check (ctx, type, *class, 256))
+                       if (recursive_boxed_constraint_type_check (ctx, type, *klass, 256))
                                return TRUE;
                }
        }
@@ -3148,7 +3148,7 @@ do_ret (VerifyContext *ctx)
  * TODO handle calling .ctor outside one or calling the .ctor for other class but super  
  */
 static void
-do_invoke_method (VerifyContext *ctx, int method_token, gboolean virtual)
+do_invoke_method (VerifyContext *ctx, int method_token, gboolean virtual_)
 {
        MonoError error;
        int param_count, i;
@@ -3158,10 +3158,10 @@ do_invoke_method (VerifyContext *ctx, int method_token, gboolean virtual)
        gboolean virt_check_this = FALSE;
        gboolean constrained = ctx->prefix_set & PREFIX_CONSTRAINED;
 
-       if (!(method = verifier_load_method (ctx, method_token, virtual ? "callvirt" : "call")))
+       if (!(method = verifier_load_method (ctx, method_token, virtual_ ? "callvirt" : "call")))
                return;
 
-       if (virtual) {
+       if (virtual_) {
                CLEAR_PREFIX (ctx, PREFIX_CONSTRAINED);
 
                if (method->klass->valuetype) // && !constrained ???
@@ -3209,10 +3209,10 @@ do_invoke_method (VerifyContext *ctx, int method_token, gboolean virtual)
                }
 
                if (stack_slot_is_managed_mutability_pointer (value))
-                       CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Cannot use a readonly pointer as argument of %s at 0x%04x", virtual ? "callvirt" : "call",  ctx->ip_offset));
+                       CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Cannot use a readonly pointer as argument of %s at 0x%04x", virtual_ ? "callvirt" : "call",  ctx->ip_offset));
 
                if ((ctx->prefix_set & PREFIX_TAIL) && stack_slot_is_managed_pointer (value)) {
-                       ADD_VERIFY_ERROR (ctx, g_strdup_printf ("Cannot  pass a byref argument to a tail %s at 0x%04x", virtual ? "callvirt" : "call",  ctx->ip_offset));
+                       ADD_VERIFY_ERROR (ctx, g_strdup_printf ("Cannot  pass a byref argument to a tail %s at 0x%04x", virtual_ ? "callvirt" : "call",  ctx->ip_offset));
                        return;
                }
        }
@@ -3244,7 +3244,7 @@ do_invoke_method (VerifyContext *ctx, int method_token, gboolean virtual)
                if (virt_check_this && !stack_slot_is_this_pointer (value) && !(method->klass->valuetype || stack_slot_is_boxed_value (value)))
                        CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Cannot use the call opcode with a non-final virtual method on an object different than the 'this' pointer at 0x%04x", ctx->ip_offset));
 
-               if (constrained && virtual) {
+               if (constrained && virtual_) {
                        if (!stack_slot_is_managed_pointer (value))
                                CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Object is not a managed pointer for a constrained call at 0x%04x", ctx->ip_offset));
                        if (!mono_metadata_type_equal_full (mono_type_get_type_byval (value->type), mono_type_get_underlying_type (ctx->constrained_type), TRUE))
@@ -3255,10 +3255,10 @@ do_invoke_method (VerifyContext *ctx, int method_token, gboolean virtual)
                        if (stack_slot_is_managed_pointer (value) && !mono_class_from_mono_type (value->type)->valuetype)
                                CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Cannot call a reference type using a managed pointer to the this arg at 0x%04x", ctx->ip_offset));
        
-                       if (!virtual && mono_class_from_mono_type (value->type)->valuetype && !method->klass->valuetype && !stack_slot_is_boxed_value (value))
+                       if (!virtual_ && mono_class_from_mono_type (value->type)->valuetype && !method->klass->valuetype && !stack_slot_is_boxed_value (value))
                                CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Cannot call a valuetype baseclass at 0x%04x", ctx->ip_offset));
        
-                       if (virtual && mono_class_from_mono_type (value->type)->valuetype && !stack_slot_is_boxed_value (value))
+                       if (virtual_ && mono_class_from_mono_type (value->type)->valuetype && !stack_slot_is_boxed_value (value))
                                CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Cannot use a valuetype with callvirt at 0x%04x", ctx->ip_offset));
        
                        if (method->klass->valuetype && (stack_slot_is_boxed_value (value) || !stack_slot_is_managed_pointer (value)))
@@ -3627,7 +3627,7 @@ do_load_token (VerifyContext *ctx, int token)
 
        if (ctx->method->wrapper_type != MONO_WRAPPER_NONE) {
                handle = mono_method_get_wrapper_data (ctx->method, token);
-               handle_class = mono_method_get_wrapper_data (ctx->method, token + 1);
+               handle_class = (MonoClass *)mono_method_get_wrapper_data (ctx->method, token + 1);
                if (handle_class == mono_defaults.typehandle_class)
                        handle = &((MonoClass*)handle)->byval_arg;
        } else {
@@ -4353,19 +4353,19 @@ do_switch (VerifyContext *ctx, int count, const unsigned char *data)
 }
 
 static void
-do_load_function_ptr (VerifyContext *ctx, guint32 token, gboolean virtual)
+do_load_function_ptr (VerifyContext *ctx, guint32 token, gboolean virtual_)
 {
        ILStackDesc *top;
        MonoMethod *method;
 
-       if (virtual && !check_underflow (ctx, 1))
+       if (virtual_ && !check_underflow (ctx, 1))
                return;
 
-       if (!virtual && !check_overflow (ctx))
+       if (!virtual_ && !check_overflow (ctx))
                return;
 
        if (ctx->method->wrapper_type != MONO_WRAPPER_NONE) {
-               method = mono_method_get_wrapper_data (ctx->method, (guint32)token);
+               method = (MonoMethod *)mono_method_get_wrapper_data (ctx->method, (guint32)token);
                if (!method) {
                        ADD_VERIFY_ERROR2 (ctx, g_strdup_printf ("Invalid token %x for ldftn  at 0x%04x", token, ctx->ip_offset), MONO_EXCEPTION_BAD_IMAGE);
                        return;
@@ -4376,14 +4376,14 @@ do_load_function_ptr (VerifyContext *ctx, guint32 token, gboolean virtual)
                        return;
                }
 
-               if (!(method = verifier_load_method (ctx, token, virtual ? "ldvirtfrn" : "ldftn")))
+               if (!(method = verifier_load_method (ctx, token, virtual_ ? "ldvirtfrn" : "ldftn")))
                        return;
        }
 
        if (mono_method_is_constructor (method))
                CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Cannot use ldftn with a constructor at 0x%04x", ctx->ip_offset));
 
-       if (virtual) {
+       if (virtual_) {
                ILStackDesc *top = stack_pop (ctx);
        
                if (stack_slot_get_type (top) != TYPE_COMPLEX || top->type->type == MONO_TYPE_VALUETYPE)
@@ -4886,7 +4886,7 @@ mono_method_verify (MonoMethod *method, int level)
        memset(ctx.code, 0, sizeof (ILCodeDesc) * ctx.header->code_size);
 
        ctx.num_locals = ctx.header->num_locals;
-       ctx.locals = g_memdup (ctx.header->locals, sizeof (MonoType*) * ctx.header->num_locals);
+       ctx.locals = (MonoType **)g_memdup (ctx.header->locals, sizeof (MonoType*) * ctx.header->num_locals);
        _MEM_ALLOC (sizeof (MonoType*) * ctx.header->num_locals);
 
        if (ctx.num_locals > 0 && !ctx.header->init_locals)
@@ -5988,7 +5988,7 @@ cleanup:
        g_slist_free (ctx.funptrs);
 
        for (tmp = ctx.exception_types; tmp; tmp = tmp->next)
-               mono_metadata_free_type (tmp->data);
+               mono_metadata_free_type ((MonoType *)tmp->data);
        g_slist_free (ctx.exception_types);
 
        for (i = 0; i < ctx.num_locals; ++i) {
@@ -6137,15 +6137,15 @@ verify_class_for_overlapping_reference_fields (MonoClass *klass)
 static guint
 field_hash (gconstpointer key)
 {
-       const MonoClassField *field = key;
+       const MonoClassField *field = (const MonoClassField *)key;
        return g_str_hash (field->name) ^ mono_metadata_type_hash (field->type); /**/
 }
 
 static gboolean
 field_equals (gconstpointer _a, gconstpointer _b)
 {
-       const MonoClassField *a = _a;
-       const MonoClassField *b = _b;
+       const MonoClassField *a = (const MonoClassField *)_a;
+       const MonoClassField *b = (const MonoClassField *)_b;
        return !strcmp (a->name, b->name) && mono_metadata_type_equal (a->type, b->type);
 }
 
index 45d5394a6679a188dd8435e8311e12ae11523d4e..fddbef9d9cb64556dc4f726d1adfb3a5a9260bce 100644 (file)
@@ -62,8 +62,8 @@ static int verbose_level;
                (r)->next = NULL;\
        } while (0)
 
-#define MONO_NEGATED_RELATION(r) ((~(r))&MONO_ANY_RELATION)
-#define MONO_SYMMETRIC_RELATION(r) (((r)&MONO_EQ_RELATION)|(((r)&MONO_LT_RELATION)<<1)|((r&MONO_GT_RELATION)>>1))
+#define MONO_NEGATED_RELATION(r) ((MonoValueRelation)((~(r))&MONO_ANY_RELATION))
+#define MONO_SYMMETRIC_RELATION(r) ((MonoValueRelation)(((r)&MONO_EQ_RELATION)|(((r)&MONO_LT_RELATION)<<1)|((r&MONO_GT_RELATION)>>1)))
 
 
 
@@ -905,7 +905,7 @@ evaluate_relation_with_target_variable (MonoVariableRelationsEvaluationArea *are
                        
                        current_context = father_context;
                        while (current_context != last_context) {
-                               current_context->status |= recursive_status;
+                               current_context->status = (MonoRelationsEvaluationStatus)(current_context->status | recursive_status);
                                current_context = current_context->father;
                        }
                } else {
@@ -1029,7 +1029,7 @@ add_non_null (MonoVariableRelationsEvaluationArea *area, MonoCompile *cfg, int r
 {
        MonoAdditionalVariableRelation *rel;
 
-       rel = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoAdditionalVariableRelation));
+       rel = (MonoAdditionalVariableRelation *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoAdditionalVariableRelation));
        rel->variable = reg;
        rel->relation.relation = MONO_GT_RELATION;
        rel->relation.related_value.type = MONO_CONSTANT_SUMMARIZED_VALUE;
@@ -1106,7 +1106,7 @@ process_block (MonoCompile *cfg, MonoBasicBlock *bb, MonoVariableRelationsEvalua
 
                        /* We can derive additional relations from the bounds check */
                        if (ins->opcode != OP_NOP) {
-                               rel = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoAdditionalVariableRelation));
+                               rel = (MonoAdditionalVariableRelation *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoAdditionalVariableRelation));
                                rel->variable = index_var;
                                rel->relation.relation = MONO_LT_RELATION;
                                rel->relation.related_value.type = MONO_VARIABLE_SUMMARIZED_VALUE;
@@ -1117,7 +1117,7 @@ process_block (MonoCompile *cfg, MonoBasicBlock *bb, MonoVariableRelationsEvalua
 
                                check_relations = g_slist_append_mempool (cfg->mempool, check_relations, rel);
 
-                               rel = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoAdditionalVariableRelation));
+                               rel = (MonoAdditionalVariableRelation *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoAdditionalVariableRelation));
                                rel->variable = index_var;
                                rel->relation.relation = MONO_GE_RELATION;
                                rel->relation.related_value.type = MONO_CONSTANT_SUMMARIZED_VALUE;
@@ -1193,7 +1193,7 @@ process_block (MonoCompile *cfg, MonoBasicBlock *bb, MonoVariableRelationsEvalua
        }
 
        for (l = check_relations; l; l = l->next)
-               remove_change_from_evaluation_area (l->data);
+               remove_change_from_evaluation_area ((MonoAdditionalVariableRelation *)l->data);
        
        remove_change_from_evaluation_area (&(additional_relations.relation1));
        remove_change_from_evaluation_area (&(additional_relations.relation2));
@@ -1224,10 +1224,10 @@ type_to_value_kind (MonoType *type)
                return MONO_UNSIGNED_INTEGER_VALUE_SIZE_4;
                break;
        case MONO_TYPE_I:
-               return SIZEOF_VOID_P;
+               return (MonoIntegerValueKind)SIZEOF_VOID_P;
                break;
        case MONO_TYPE_U:
-               return (MONO_UNSIGNED_VALUE_FLAG|SIZEOF_VOID_P);
+               return (MonoIntegerValueKind)(MONO_UNSIGNED_VALUE_FLAG | SIZEOF_VOID_P);
                break;
        case MONO_TYPE_I8:
                return MONO_INTEGER_VALUE_SIZE_8;
@@ -1275,7 +1275,7 @@ mono_perform_abc_removal (MonoCompile *cfg)
                mono_mempool_alloc (cfg->mempool, sizeof (MonoRelationsEvaluationContext) * (cfg->next_vreg));
        area.variable_value_kind = (MonoIntegerValueKind *)
                mono_mempool_alloc (cfg->mempool, sizeof (MonoIntegerValueKind) * (cfg->next_vreg));
-       area.defs = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * cfg->next_vreg);
+       area.defs = (MonoInst **)mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * cfg->next_vreg);
        for (i = 0; i < cfg->next_vreg; i++) {
                area.variable_value_kind [i] = MONO_UNKNOWN_INTEGER_VALUE;
                area.relations [i].relation = MONO_EQ_RELATION;
index c260dae2c7abcf706b005ef0fc5f7e10ea103c50..f40070aeb38b9f2212c5f674aa1f346923938158 100644 (file)
@@ -40,7 +40,7 @@ is_long_stack_size (int type)
 static gboolean
 lower_load (MonoCompile *cfg, MonoInst *load, MonoInst *ldaddr)
 {
-       MonoInst *var = ldaddr->inst_p0;
+       MonoInst *var = (MonoInst *)ldaddr->inst_p0;
        MonoType *type = &var->klass->byval_arg;
        int replaced_op = mono_type_to_load_membase (cfg, type);
 
@@ -70,7 +70,7 @@ lower_load (MonoCompile *cfg, MonoInst *load, MonoInst *ldaddr)
 static gboolean
 lower_store (MonoCompile *cfg, MonoInst *store, MonoInst *ldaddr)
 {
-       MonoInst *var = ldaddr->inst_p0;
+       MonoInst *var = (MonoInst *)ldaddr->inst_p0;
        MonoType *type = &var->klass->byval_arg;
        int replaced_op = mono_type_to_store_membase (cfg, type);
 
@@ -101,7 +101,7 @@ lower_store (MonoCompile *cfg, MonoInst *store, MonoInst *ldaddr)
 static gboolean
 lower_store_imm (MonoCompile *cfg, MonoInst *store, MonoInst *ldaddr)
 {
-       MonoInst *var = ldaddr->inst_p0;
+       MonoInst *var = (MonoInst *)ldaddr->inst_p0;
        MonoType *type = &var->klass->byval_arg;
        int store_op = mono_type_to_store_membase (cfg, type);
        if (store_op == OP_STOREV_MEMBASE || store_op == OP_STOREX_MEMBASE)
@@ -195,7 +195,7 @@ handle_instruction:
                        case OP_LOADR8_MEMBASE:
                                if (ins->inst_offset != 0)
                                        continue;
-                               tmp = g_hash_table_lookup (addr_loads, GINT_TO_POINTER (ins->sreg1));
+                               tmp = (MonoInst *)g_hash_table_lookup (addr_loads, GINT_TO_POINTER (ins->sreg1));
                                if (tmp) {
                                        if (cfg->verbose_level > 2) { printf ("Found candidate load:"); mono_print_ins (ins); }
                                        if (lower_load (cfg, ins, tmp)) {
@@ -216,7 +216,7 @@ handle_instruction:
                        case OP_STOREV_MEMBASE:
                                if (ins->inst_offset != 0)
                                        continue;
-                               tmp = g_hash_table_lookup (addr_loads, GINT_TO_POINTER (ins->dreg));
+                               tmp = (MonoInst *)g_hash_table_lookup (addr_loads, GINT_TO_POINTER (ins->dreg));
                                if (tmp) {
                                        if (cfg->verbose_level > 2) { printf ("Found candidate store:"); mono_print_ins (ins); }
                                        if (lower_store (cfg, ins, tmp)) {
@@ -232,7 +232,7 @@ handle_instruction:
                        case OP_STOREI8_MEMBASE_IMM:
                                if (ins->inst_offset != 0)
                                        continue;
-                               tmp = g_hash_table_lookup (addr_loads, GINT_TO_POINTER (ins->dreg));
+                               tmp = (MonoInst *)g_hash_table_lookup (addr_loads, GINT_TO_POINTER (ins->dreg));
                                if (tmp) {
                                        if (cfg->verbose_level > 2) { printf ("Found candidate store-imm:"); mono_print_ins (ins); }
                                        needs_dce |= lower_store_imm (cfg, ins, tmp);
@@ -240,7 +240,7 @@ handle_instruction:
                                break;
                        case OP_CHECK_THIS:
                        case OP_NOT_NULL:
-                               tmp = g_hash_table_lookup (addr_loads, GINT_TO_POINTER (ins->sreg1));
+                               tmp = (MonoInst *)g_hash_table_lookup (addr_loads, GINT_TO_POINTER (ins->sreg1));
                                if (tmp) {
                                        if (cfg->verbose_level > 2) { printf ("Found null check over local: "); mono_print_ins (ins); }
                                        NULLIFY_INS (ins);
index 175b89303e86306b1956e18707757ecd3f06ff59..20a63a6c9279df4832735a4c1d4ca29de7fef459 100644 (file)
@@ -1858,7 +1858,7 @@ arch_emit_imt_thunk (MonoAotCompile *acfg, int offset, int *tramp_size)
 
        const int kSizeOfMove = 7;
 #if defined(__default_codegen__)
-       code = buf = g_malloc (256);
+       code = buf = (guint8 *)g_malloc (256);
 #elif defined(__native_client_codegen__)
        buf_alloc = g_malloc (256 + kNaClAlignment + kSizeOfMove);
        buf = ((guint)buf_alloc + kNaClAlignment) & ~kNaClAlignmentMask;
@@ -2252,7 +2252,7 @@ stream_init (MonoDynamicStream *sh)
 {
        sh->index = 0;
        sh->alloc_size = 4096;
-       sh->data = g_malloc (4096);
+       sh->data = (char *)g_malloc (4096);
 
        /* So offsets are > 0 */
        sh->data [0] = 0;
@@ -2272,7 +2272,7 @@ make_room_in_stream (MonoDynamicStream *stream, int size)
                        stream->alloc_size *= 2;
        }
        
-       stream->data = g_realloc (stream->data, stream->alloc_size);
+       stream->data = (char *)g_realloc (stream->data, stream->alloc_size);
 }
 
 static guint32
@@ -2342,7 +2342,7 @@ emit_offset_table (MonoAotCompile *acfg, const char *symbol, int noffsets, int g
        index_offsets = g_new0 (guint32, ngroups);
 
        buf_size = noffsets * 4;
-       p = buf = g_malloc0 (buf_size);
+       p = buf = (guint8 *)g_malloc0 (buf_size);
 
        current_offset = 0;
        for (i = 0; i < noffsets; ++i) {
@@ -2367,7 +2367,7 @@ emit_offset_table (MonoAotCompile *acfg, const char *symbol, int noffsets, int g
                index_entry_size = 4;
 
        buf_size = (data_p - data_buf) + (ngroups * 4) + 16;
-       p = buf = g_malloc0 (buf_size);
+       p = buf = (guint8 *)g_malloc0 (buf_size);
 
        /* Emit the header */
        encode_int (noffsets, p, &p);
@@ -2427,7 +2427,7 @@ find_typespec_for_class (MonoAotCompile *acfg, MonoClass *klass)
 
        /* FIXME: Search referenced images as well */
        if (!acfg->typespec_classes) {
-               acfg->typespec_classes = mono_mempool_alloc0 (acfg->mempool, sizeof (MonoClass*) * len);
+               acfg->typespec_classes = (MonoClass **)mono_mempool_alloc0 (acfg->mempool, sizeof (MonoClass*) * len);
                for (i = 0; i < len; ++i) {
                        MonoError error;
                        acfg->typespec_classes [i] = mono_class_get_and_inflate_typespec_checked (acfg->image, MONO_TOKEN_TYPE_SPEC | (i + 1), NULL, &error);
@@ -2569,7 +2569,7 @@ encode_klass_ref (MonoAotCompile *acfg, MonoClass *klass, guint8 *buf, guint8 **
                guint8 *buf2, *p;
 
                if (!offset) {
-                       buf2 = g_malloc (1024);
+                       buf2 = (guint8 *)g_malloc (1024);
                        p = buf2;
 
                        encode_klass_ref_inner (acfg, klass, p, &p);
@@ -2927,7 +2927,7 @@ encode_method_ref (MonoAotCompile *acfg, MonoMethod *method, guint8 *buf, guint8
                 * encode that.
                 * Obtain the token from information recorded by the JIT.
                 */
-               ji = g_hash_table_lookup (acfg->token_info_hash, method);
+               ji = (MonoJumpInfoToken *)g_hash_table_lookup (acfg->token_info_hash, method);
                if (ji) {
                        image_index = get_image_index (acfg, ji->image);
                        g_assert (image_index < MAX_IMAGE_INDEX);
@@ -2964,7 +2964,7 @@ encode_method_ref (MonoAotCompile *acfg, MonoMethod *method, guint8 *buf, guint8
        } else if (token == 0) {
                /* This might be a method of a constructed type like int[,].Set */
                /* Obtain the token from information recorded by the JIT */
-               ji = g_hash_table_lookup (acfg->token_info_hash, method);
+               ji = (MonoJumpInfoToken *)g_hash_table_lookup (acfg->token_info_hash, method);
                if (ji) {
                        image_index = get_image_index (acfg, ji->image);
                        g_assert (image_index < MAX_IMAGE_INDEX);
@@ -3101,7 +3101,7 @@ get_plt_entry (MonoAotCompile *acfg, MonoJumpInfo *patch_info)
 
        if (!acfg->patch_to_plt_entry [patch_info->type])
                acfg->patch_to_plt_entry [patch_info->type] = g_hash_table_new (mono_patch_info_hash, mono_patch_info_equal);
-       res = g_hash_table_lookup (acfg->patch_to_plt_entry [patch_info->type], patch_info);
+       res = (MonoPltEntry *)g_hash_table_lookup (acfg->patch_to_plt_entry [patch_info->type], patch_info);
 
        if (!acfg->llvm && patch_info->type == MONO_PATCH_INFO_METHOD && (patch_info->data.method->iflags & METHOD_IMPL_ATTRIBUTE_SYNCHRONIZED)) {
                /* 
@@ -3118,7 +3118,7 @@ get_plt_entry (MonoAotCompile *acfg, MonoJumpInfo *patch_info)
 
                new_ji = mono_patch_info_dup_mp (acfg->mempool, patch_info);
 
-               res = mono_mempool_alloc0 (acfg->mempool, sizeof (MonoPltEntry));
+               res = (MonoPltEntry *)mono_mempool_alloc0 (acfg->mempool, sizeof (MonoPltEntry));
                res->plt_offset = acfg->plt_offset;
                res->ji = new_ji;
                res->symbol = get_plt_symbol (acfg, res->plt_offset, patch_info);
@@ -3270,8 +3270,8 @@ add_extra_method (MonoAotCompile *acfg, MonoMethod *method)
 static void
 add_jit_icall_wrapper (gpointer key, gpointer value, gpointer user_data)
 {
-       MonoAotCompile *acfg = user_data;
-       MonoJitICallInfo *callinfo = value;
+       MonoAotCompile *acfg = (MonoAotCompile *)user_data;
+       MonoJitICallInfo *callinfo = (MonoJitICallInfo *)value;
        MonoMethod *wrapper;
        char *name;
 
@@ -3297,9 +3297,9 @@ get_runtime_invoke_sig (MonoMethodSignature *sig)
 }
 
 static MonoMethod*
-get_runtime_invoke (MonoAotCompile *acfg, MonoMethod *method, gboolean virtual)
+get_runtime_invoke (MonoAotCompile *acfg, MonoMethod *method, gboolean virtual_)
 {
-       return mono_marshal_get_runtime_invoke (method, virtual, acfg->aot_opts.llvm_only && mono_method_needs_static_rgctx_invoke (method, TRUE));
+       return mono_marshal_get_runtime_invoke (method, virtual_, acfg->aot_opts.llvm_only && mono_method_needs_static_rgctx_invoke (method, TRUE));
 }
 
 static gboolean
@@ -3863,7 +3863,7 @@ add_wrappers (MonoAotCompile *acfg)
 
                                /* From load_cattr_value () in reflection.c */
                                slen = mono_metadata_decode_value (p, &p);
-                               n = g_memdup (p, slen + 1);
+                               n = (char *)g_memdup (p, slen + 1);
                                n [slen] = 0;
                                t = mono_reflection_type_from_name (n, acfg->image);
                                g_assert (t);
@@ -3890,7 +3890,7 @@ add_wrappers (MonoAotCompile *acfg)
                                        named += 1;
 
                                        name_len = mono_metadata_decode_blob_size (named, &named);
-                                       name = g_malloc (name_len + 1);
+                                       name = (char *)g_malloc (name_len + 1);
                                        memcpy (name, named, name_len);
                                        name [name_len] = 0;
                                        named += name_len;
@@ -3901,7 +3901,7 @@ add_wrappers (MonoAotCompile *acfg)
                                        /* load_cattr_value (), string case */
                                        g_assert (*named != (char)0xff);
                                        slen = mono_metadata_decode_value (named, &named);
-                                       export_name = g_malloc (slen + 1);
+                                       export_name = (char *)g_malloc (slen + 1);
                                        memcpy (export_name, named, slen);
                                        export_name [slen] = 0;
                                        named += slen;
@@ -4453,7 +4453,7 @@ add_generic_instances (MonoAotCompile *acfg)
 
        /* Add types of args/locals */
        for (i = 0; i < acfg->methods->len; ++i) {
-               method = g_ptr_array_index (acfg->methods, i);
+               method = (MonoMethod *)g_ptr_array_index (acfg->methods, i);
                add_types_from_method_header (acfg, method);
        }
 
@@ -4630,7 +4630,7 @@ static gboolean
 is_direct_callable (MonoAotCompile *acfg, MonoMethod *method, MonoJumpInfo *patch_info)
 {
        if ((patch_info->type == MONO_PATCH_INFO_METHOD) && (patch_info->data.method->klass->image == acfg->image)) {
-               MonoCompile *callee_cfg = g_hash_table_lookup (acfg->method_to_cfg, patch_info->data.method);
+               MonoCompile *callee_cfg = (MonoCompile *)g_hash_table_lookup (acfg->method_to_cfg, patch_info->data.method);
                if (callee_cfg) {
                        gboolean direct_callable = TRUE;
 
@@ -4682,7 +4682,7 @@ get_pinvoke_import (MonoAotCompile *acfg, MonoMethod *method)
        guint32 im_cols [MONO_IMPLMAP_SIZE];
        char *import;
 
-       import = g_hash_table_lookup (acfg->method_to_pinvoke_import, method);
+       import = (char *)g_hash_table_lookup (acfg->method_to_pinvoke_import, method);
        if (import != NULL)
                return import;
 
@@ -4742,7 +4742,7 @@ compute_line_numbers (MonoMethod *method, int code_size, MonoDebugMethodJitInfo
        ln_array = g_new0 (MonoDebugLineNumberEntry, debug_info->num_line_numbers);
        memcpy (ln_array, debug_info->line_numbers, debug_info->num_line_numbers * sizeof (MonoDebugLineNumberEntry));
 
-       qsort (ln_array, debug_info->num_line_numbers, sizeof (MonoDebugLineNumberEntry), (gpointer)compare_lne);
+       qsort (ln_array, debug_info->num_line_numbers, sizeof (MonoDebugLineNumberEntry), (int (*)(const void *, const void *))compare_lne);
 
        native_to_il_offset = g_new0 (int, code_size + 1);
 
@@ -4863,7 +4863,7 @@ emit_and_reloc_code (MonoAotCompile *acfg, MonoMethod *method, guint8 *code, gui
        for (i = 0; i < code_len; i += INST_LEN) {
                patch_info = NULL;
                for (pindex = start_index; pindex < patches->len; ++pindex) {
-                       patch_info = g_ptr_array_index (patches, pindex);
+                       patch_info = (MonoJumpInfo *)g_ptr_array_index (patches, pindex);
                        if (patch_info->ip.i >= i)
                                break;
                }
@@ -4897,7 +4897,7 @@ emit_and_reloc_code (MonoAotCompile *acfg, MonoMethod *method, guint8 *code, gui
                        }
                        case MONO_PATCH_INFO_OBJC_SELECTOR_REF: {
                                int code_size, index;
-                               char *selector = (void*)patch_info->data.target;
+                               char *selector = (char *)patch_info->data.target;
 
                                if (!acfg->objc_selector_to_index)
                                        acfg->objc_selector_to_index = g_hash_table_new (g_str_hash, g_str_equal);
@@ -4929,7 +4929,7 @@ emit_and_reloc_code (MonoAotCompile *acfg, MonoMethod *method, guint8 *code, gui
                                external_call = FALSE;
                                if ((patch_info->type == MONO_PATCH_INFO_METHOD) && (patch_info->data.method->klass->image == acfg->image)) {
                                        if (!got_only && is_direct_callable (acfg, method, patch_info)) {
-                                               MonoCompile *callee_cfg = g_hash_table_lookup (acfg->method_to_cfg, patch_info->data.method);
+                                               MonoCompile *callee_cfg = (MonoCompile *)g_hash_table_lookup (acfg->method_to_cfg, patch_info->data.method);
                                                //printf ("DIRECT: %s %s\n", method ? mono_method_full_name (method, TRUE) : "", mono_method_full_name (callee_cfg->method, TRUE));
                                                direct_call = TRUE;
                                                direct_call_target = callee_cfg->asm_symbol;
@@ -5012,7 +5012,7 @@ emit_and_reloc_code (MonoAotCompile *acfg, MonoMethod *method, guint8 *code, gui
                        /* Find next patch */
                        patch_info = NULL;
                        for (pindex = start_index; pindex < patches->len; ++pindex) {
-                               patch_info = g_ptr_array_index (patches, pindex);
+                               patch_info = (MonoJumpInfo *)g_ptr_array_index (patches, pindex);
                                if (patch_info->ip.i >= i)
                                        break;
                        }
@@ -5103,7 +5103,7 @@ get_debug_sym (MonoMethod *method, const char *prefix, GHashTable *cache)
 #endif
 
        len = strlen (name1);
-       name2 = malloc (strlen (prefix) + len + 16);
+       name2 = (char *)malloc (strlen (prefix) + len + 16);
        memcpy (name2, prefix, strlen (prefix));
        j = strlen (prefix);
        for (i = 0; i < len; ++i) {
@@ -5126,7 +5126,7 @@ get_debug_sym (MonoMethod *method, const char *prefix, GHashTable *cache)
 
        count = 0;
        while (TRUE) {
-               cached_method = g_hash_table_lookup (cache, name2);
+               cached_method = (MonoMethod *)g_hash_table_lookup (cache, name2);
                if (!(cached_method && cached_method != method))
                        break;
                sprintf (name2 + j, "_%d", count);
@@ -5181,7 +5181,7 @@ emit_method_code (MonoAotCompile *acfg, MonoCompile *cfg)
                emit_label (acfg, debug_sym);
        }
 
-       export_name = g_hash_table_lookup (acfg->export_names, method);
+       export_name = (char *)g_hash_table_lookup (acfg->export_names, method);
        if (export_name) {
                /* Emit a global symbol for the method */
                emit_global_inner (acfg, export_name, TRUE);
@@ -5293,7 +5293,7 @@ encode_patch (MonoAotCompile *acfg, MonoJumpInfo *patch_info, guint8 *buf, guint
 
                ex_class =
                        mono_class_from_name (mono_defaults.exception_class->image,
-                                                                 "System", patch_info->data.target);
+                                                                 "System", (const char *)patch_info->data.target);
                g_assert (ex_class);
                encode_klass_ref (acfg, ex_class, p, &p);
                break;
@@ -5339,7 +5339,7 @@ encode_patch (MonoAotCompile *acfg, MonoJumpInfo *patch_info, guint8 *buf, guint
                 */
                offset = GPOINTER_TO_UINT (g_hash_table_lookup (acfg->method_blob_hash, entry->method));
                if (!offset) {
-                       buf2 = g_malloc (1024);
+                       buf2 = (guint8 *)g_malloc (1024);
                        p2 = buf2;
 
                        encode_method_ref (acfg, entry->method, p2, &p2);
@@ -5380,15 +5380,15 @@ encode_patch (MonoAotCompile *acfg, MonoJumpInfo *patch_info, guint8 *buf, guint
                encode_method_ref (acfg, info->method, p, &p);
                encode_value (info->num_entries, p, &p);
                for (i = 0; i < info->num_entries; ++i) {
-                       MonoRuntimeGenericContextInfoTemplate *template = &info->entries [i];
+                       MonoRuntimeGenericContextInfoTemplate *template_ = &info->entries [i];
 
-                       encode_value (template->info_type, p, &p);
-                       switch (mini_rgctx_info_type_to_patch_info_type (template->info_type)) {
+                       encode_value (template_->info_type, p, &p);
+                       switch (mini_rgctx_info_type_to_patch_info_type (template_->info_type)) {
                        case MONO_PATCH_INFO_CLASS:
-                               encode_klass_ref (acfg, mono_class_from_mono_type (template->data), p, &p);
+                               encode_klass_ref (acfg, mono_class_from_mono_type ((MonoType *)template_->data), p, &p);
                                break;
                        case MONO_PATCH_INFO_FIELD:
-                               encode_field_info (acfg, template->data, p, &p);
+                               encode_field_info (acfg, (MonoClassField *)template_->data, p, &p);
                                break;
                        default:
                                g_assert_not_reached ();
@@ -5398,7 +5398,7 @@ encode_patch (MonoAotCompile *acfg, MonoJumpInfo *patch_info, guint8 *buf, guint
                break;
        }
        case MONO_PATCH_INFO_LDSTR_LIT: {
-               const char *s = patch_info->data.target;
+               const char *s = (const char *)patch_info->data.target;
                int len = strlen (s);
 
                encode_value (len, p, &p);
@@ -5430,7 +5430,7 @@ encode_patch_list (MonoAotCompile *acfg, GPtrArray *patches, int n_patches, gboo
        encode_value (n_patches, p, &p);
 
        for (pindex = 0; pindex < patches->len; ++pindex) {
-               patch_info = g_ptr_array_index (patches, pindex);
+               patch_info = (MonoJumpInfo *)g_ptr_array_index (patches, pindex);
 
                if (patch_info->type == MONO_PATCH_INFO_NONE || patch_info->type == MONO_PATCH_INFO_BB)
                        /* Nothing to do */
@@ -5471,7 +5471,7 @@ emit_method_info (MonoAotCompile *acfg, MonoCompile *cfg)
        /**********************/
 
        buf_size = (patches->len < 1000) ? 40960 : 40960 + (patches->len * 64);
-       p = buf = g_malloc (buf_size);
+       p = buf = (guint8 *)g_malloc (buf_size);
 
        if (mono_class_get_cctor (method->klass))
                encode_klass_ref (acfg, method->klass, p, &p);
@@ -5483,7 +5483,7 @@ emit_method_info (MonoAotCompile *acfg, MonoCompile *cfg)
 
        n_patches = 0;
        for (pindex = 0; pindex < patches->len; ++pindex) {
-               patch_info = g_ptr_array_index (patches, pindex);
+               patch_info = (MonoJumpInfo *)g_ptr_array_index (patches, pindex);
                
                if ((patch_info->type == MONO_PATCH_INFO_GOT_OFFSET) ||
                        (patch_info->type == MONO_PATCH_INFO_NONE)) {
@@ -5590,7 +5590,7 @@ emit_exception_debug_info (MonoAotCompile *acfg, MonoCompile *cfg, gboolean stor
 
        buf_size = header->num_clauses * 256 + debug_info_size + 2048 + seq_points_size + cfg->gc_map_size;
 
-       p = buf = g_malloc (buf_size);
+       p = buf = (guint8 *)g_malloc (buf_size);
 
        use_unwind_ops = cfg->unwind_ops != NULL;
 
@@ -5691,7 +5691,7 @@ emit_exception_debug_info (MonoAotCompile *acfg, MonoCompile *cfg, gboolean stor
                                        guint8 *buf2, *p2;
                                        int len;
 
-                                       buf2 = g_malloc (4096);
+                                       buf2 = (guint8 *)g_malloc (4096);
                                        p2 = buf2;
                                        encode_klass_ref (acfg, ei->data.catch_class, p2, &p2);
                                        len = p2 - buf2;
@@ -5762,7 +5762,7 @@ emit_exception_debug_info (MonoAotCompile *acfg, MonoCompile *cfg, gboolean stor
                 * Need to encode jinfo->method too, since it is not equal to 'method'
                 * when using generic sharing.
                 */
-               buf2 = g_malloc (4096);
+               buf2 = (guint8 *)g_malloc (4096);
                p2 = buf2;
                encode_method_ref (acfg, jinfo->d.method, p2, &p2);
                len = p2 - buf2;
@@ -5826,7 +5826,7 @@ emit_klass_info (MonoAotCompile *acfg, guint32 token)
 
                buf_size = 16;
 
-               p = buf = g_malloc (buf_size);
+               p = buf = (guint8 *)g_malloc (buf_size);
 
                /* Mark as unusable */
                encode_value (-1, p, &p);
@@ -5838,7 +5838,7 @@ emit_klass_info (MonoAotCompile *acfg, guint32 token)
        }
                
        buf_size = 10240 + (klass->vtable_size * 16);
-       p = buf = g_malloc (buf_size);
+       p = buf = (guint8 *)g_malloc (buf_size);
 
        g_assert (klass);
 
@@ -5976,7 +5976,7 @@ emit_plt (MonoAotCompile *acfg)
                         */
                        continue;
 
-               plt_entry = g_hash_table_lookup (acfg->plt_offset_to_entry, GUINT_TO_POINTER (i));
+               plt_entry = (MonoPltEntry *)g_hash_table_lookup (acfg->plt_offset_to_entry, GUINT_TO_POINTER (i));
 
                debug_sym = plt_entry->debug_sym;
 
@@ -6030,7 +6030,7 @@ emit_plt (MonoAotCompile *acfg)
                        if (i == 0)
                                continue;
 
-                       plt_entry = g_hash_table_lookup (acfg->plt_offset_to_entry, GUINT_TO_POINTER (i));
+                       plt_entry = (MonoPltEntry *)g_hash_table_lookup (acfg->plt_offset_to_entry, GUINT_TO_POINTER (i));
 
                        /* Skip plt entries not actually called by LLVM code */
                        if (!plt_entry->llvm_used)
@@ -6139,7 +6139,7 @@ emit_trampoline_full (MonoAotCompile *acfg, int got_offset, MonoTrampInfo *info,
        g_ptr_array_sort (patches, compare_patches);
 
        buf_size = patches->len * 128 + 128;
-       buf = g_malloc (buf_size);
+       buf = (guint8 *)g_malloc (buf_size);
        p = buf;
 
        encode_patch_list (acfg, patches, patches->len, FALSE, got_offset, p, &p);
@@ -6195,7 +6195,7 @@ emit_trampolines (MonoAotCompile *acfg)
        char symbol [256];
        char end_symbol [256];
        int i, tramp_got_offset;
-       MonoAotTrampoline ntype;
+       int ntype;
 #ifdef MONO_ARCH_HAVE_FULL_AOT_TRAMPOLINES
        int tramp_type;
 #endif
@@ -6227,7 +6227,7 @@ emit_trampolines (MonoAotCompile *acfg)
                        if (tramp_type == MONO_TRAMPOLINE_HANDLER_BLOCK_GUARD)
                                continue;
 #endif
-                       mono_arch_create_generic_trampoline (tramp_type, &info, acfg->aot_opts.use_trampolines_page? 2: TRUE);
+                       mono_arch_create_generic_trampoline ((MonoTrampolineType)tramp_type, &info, acfg->aot_opts.use_trampolines_page? 2: TRUE);
                        emit_trampoline (acfg, acfg->got_offset, info);
                }
 
@@ -6266,7 +6266,7 @@ emit_trampolines (MonoAotCompile *acfg)
                        GSList *l = mono_arch_get_trampolines (TRUE);
 
                        while (l) {
-                               MonoTrampInfo *info = l->data;
+                               MonoTrampInfo *info = (MonoTrampInfo *)l->data;
 
                                emit_trampoline (acfg, acfg->got_offset, info);
                                l = l->next;
@@ -6297,7 +6297,7 @@ emit_trampolines (MonoAotCompile *acfg)
                        /* delegate_invoke_impl trampolines */
                        l = mono_arch_get_delegate_invoke_impls ();
                        while (l) {
-                               MonoTrampInfo *info = l->data;
+                               MonoTrampInfo *info = (MonoTrampInfo *)l->data;
 
                                emit_trampoline (acfg, acfg->got_offset, info);
                                l = l->next;
@@ -6478,7 +6478,7 @@ add_readonly_value (MonoAotOptions *opts, const char *val)
                exit (1);
        }
        rdv = g_new0 (ReadOnlyValue, 1);
-       rdv->name = g_malloc0 (tval - val + 1);
+       rdv->name = (char *)g_malloc0 (tval - val + 1);
        memcpy (rdv->name, val, tval - val);
        tval++;
        fval++;
@@ -6594,7 +6594,7 @@ mono_aot_parse_options (const char *aot_options, MonoAotOptions *opts)
 
        args = mono_aot_split_options (aot_options ? aot_options : "");
        for (int i = 0; i < args->len; ++i) {
-               const char *arg = g_ptr_array_index (args, i);
+               const char *arg = (const char *)g_ptr_array_index (args, i);
 
                if (str_begins_with (arg, "outfile=")) {
                        opts->outfile = g_strdup (arg + strlen ("outfile="));
@@ -6746,10 +6746,10 @@ add_token_info_hash (gpointer key, gpointer value, gpointer user_data)
 {
        MonoMethod *method = (MonoMethod*)key;
        MonoJumpInfoToken *ji = (MonoJumpInfoToken*)value;
-       MonoAotCompile *acfg = user_data;
+       MonoAotCompile *acfg = (MonoAotCompile *)user_data;
        MonoJumpInfoToken *new_ji;
 
-       new_ji = mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfoToken));
+       new_ji = (MonoJumpInfoToken *)mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfoToken));
        new_ji->image = ji->image;
        new_ji->token = ji->token;
        g_hash_table_insert (acfg->token_info_hash, method, new_ji);
@@ -6924,13 +6924,13 @@ compile_method (MonoAotCompile *acfg, MonoMethod *method)
         */
        flags = JIT_FLAG_AOT;
        if (mono_aot_mode_is_full (&acfg->aot_opts))
-               flags |= JIT_FLAG_FULL_AOT;
+               flags = (JitFlags)(flags | JIT_FLAG_FULL_AOT);
        if (acfg->llvm)
-               flags |= JIT_FLAG_LLVM;
+               flags = (JitFlags)(flags | JIT_FLAG_LLVM);
        if (acfg->aot_opts.llvm_only)
-               flags |= JIT_FLAG_LLVM_ONLY | JIT_FLAG_EXPLICIT_NULL_CHECKS;
+               flags = (JitFlags)(flags | JIT_FLAG_LLVM_ONLY | JIT_FLAG_EXPLICIT_NULL_CHECKS);
        if (acfg->aot_opts.no_direct_calls)
-               flags |= JIT_FLAG_NO_DIRECT_ICALLS;
+               flags = (JitFlags)(flags | JIT_FLAG_NO_DIRECT_ICALLS);
        cfg = mini_method_compile (method, acfg->opts, mono_get_root_domain (), flags, 0, index);
        mono_loader_clear_error ();
 
@@ -7146,7 +7146,7 @@ compile_method (MonoAotCompile *acfg, MonoMethod *method)
 
                unwind_ops = NULL;
                for (l = cfg->unwind_ops; l; l = l->next) {
-                       op = mono_mempool_alloc (acfg->mempool, sizeof (MonoUnwindOp));
+                       op = (MonoUnwindOp *)mono_mempool_alloc (acfg->mempool, sizeof (MonoUnwindOp));
                        memcpy (op, l->data, sizeof (MonoUnwindOp));
                        unwind_ops = g_slist_prepend_mempool (acfg->mempool, unwind_ops, op);
                }
@@ -7160,17 +7160,17 @@ compile_method (MonoAotCompile *acfg, MonoMethod *method)
                int i;
                
                sig = mono_method_signature (method);
-               args = mono_mempool_alloc (acfg->mempool, sizeof (MonoInst*) * (sig->param_count + sig->hasthis));
+               args = (MonoInst **)mono_mempool_alloc (acfg->mempool, sizeof (MonoInst*) * (sig->param_count + sig->hasthis));
                for (i = 0; i < sig->param_count + sig->hasthis; ++i) {
-                       args [i] = mono_mempool_alloc (acfg->mempool, sizeof (MonoInst));
+                       args [i] = (MonoInst *)mono_mempool_alloc (acfg->mempool, sizeof (MonoInst));
                        memcpy (args [i], cfg->args [i], sizeof (MonoInst));
                }
                cfg->args = args;
 
                header = mono_method_get_header (method);
-               locals = mono_mempool_alloc (acfg->mempool, sizeof (MonoInst*) * header->num_locals);
+               locals = (MonoInst **)mono_mempool_alloc (acfg->mempool, sizeof (MonoInst*) * header->num_locals);
                for (i = 0; i < header->num_locals; ++i) {
-                       locals [i] = mono_mempool_alloc (acfg->mempool, sizeof (MonoInst));
+                       locals [i] = (MonoInst *)mono_mempool_alloc (acfg->mempool, sizeof (MonoInst));
                        memcpy (locals [i], cfg->locals [i], sizeof (MonoInst));
                }
                cfg->locals = locals;
@@ -7218,15 +7218,15 @@ compile_method (MonoAotCompile *acfg, MonoMethod *method)
 static void
 compile_thread_main (gpointer *user_data)
 {
-       MonoDomain *domain = user_data [0];
-       MonoAotCompile *acfg = user_data [1];
-       GPtrArray *methods = user_data [2];
+       MonoDomain *domain = (MonoDomain *)user_data [0];
+       MonoAotCompile *acfg = (MonoAotCompile *)user_data [1];
+       GPtrArray *methods = (GPtrArray *)user_data [2];
        int i;
 
        mono_thread_attach (domain);
 
        for (i = 0; i < methods->len; ++i)
-               compile_method (acfg, g_ptr_array_index (methods, i));
+               compile_method (acfg, (MonoMethod *)g_ptr_array_index (methods, i));
 }
 
 static void
@@ -7370,9 +7370,9 @@ mono_aot_get_direct_call_symbol (MonoJumpInfoType type, gconstpointer data)
        if (llvm_acfg->aot_opts.direct_icalls) {
                if (type == MONO_PATCH_INFO_JIT_ICALL_ADDR) {
                        /* Call to a C function implementing a jit icall */
-                       sym = mono_lookup_jit_icall_symbol (data);
+                       sym = mono_lookup_jit_icall_symbol ((const char *)data);
                } else if (type == MONO_PATCH_INFO_ICALL_ADDR) {
-                       MonoMethod *method = (gpointer)data;
+                       MonoMethod *method = (MonoMethod *)data;
                        if (!(method->flags & METHOD_ATTRIBUTE_PINVOKE_IMPL))
                                sym = mono_lookup_icall_symbol (method);
                }
@@ -7385,7 +7385,7 @@ mono_aot_get_direct_call_symbol (MonoJumpInfoType type, gconstpointer data)
 char*
 mono_aot_get_plt_symbol (MonoJumpInfoType type, gconstpointer data)
 {
-       MonoJumpInfo *ji = mono_mempool_alloc (llvm_acfg->mempool, sizeof (MonoJumpInfo));
+       MonoJumpInfo *ji = (MonoJumpInfo *)mono_mempool_alloc (llvm_acfg->mempool, sizeof (MonoJumpInfo));
        MonoPltEntry *plt_entry;
        const char *sym = NULL;
 
@@ -7398,9 +7398,9 @@ mono_aot_get_plt_symbol (MonoJumpInfoType type, gconstpointer data)
        if (llvm_acfg->aot_opts.direct_icalls) {
                if (type == MONO_PATCH_INFO_JIT_ICALL_ADDR) {
                        /* Call to a C function implementing a jit icall */
-                       sym = mono_lookup_jit_icall_symbol (data);
+                       sym = mono_lookup_jit_icall_symbol ((const char *)data);
                } else if (type == MONO_PATCH_INFO_ICALL_ADDR) {
-                       MonoMethod *method = (gpointer)data;
+                       MonoMethod *method = (MonoMethod *)data;
                        if (!(method->flags & METHOD_ATTRIBUTE_PINVOKE_IMPL))
                                sym = mono_lookup_icall_symbol (method);
                }
@@ -7890,7 +7890,7 @@ mono_aot_method_hash (MonoMethod *method)
                ginst = ((MonoMethodInflated*)method)->context.method_inst;
 
        hashes_count = sig->param_count + 5 + (class_ginst ? class_ginst->type_argc : 0) + (ginst ? ginst->type_argc : 0);
-       hashes_start = g_malloc0 (hashes_count * sizeof (guint32));
+       hashes_start = (guint32 *)g_malloc0 (hashes_count * sizeof (guint32));
        hashes = hashes_start;
 
        /* Some wrappers are assigned to random classes */
@@ -8041,14 +8041,14 @@ emit_extra_methods (MonoAotCompile *acfg)
        /* Emit method info */
        nmethods = 0;
        for (i = 0; i < acfg->extra_methods->len; ++i) {
-               MonoMethod *method = g_ptr_array_index (acfg->extra_methods, i);
-               MonoCompile *cfg = g_hash_table_lookup (acfg->method_to_cfg, method);
+               MonoMethod *method = (MonoMethod *)g_ptr_array_index (acfg->extra_methods, i);
+               MonoCompile *cfg = (MonoCompile *)g_hash_table_lookup (acfg->method_to_cfg, method);
 
                if (!cfg)
                        continue;
 
                buf_size = 10240;
-               p = buf = g_malloc (buf_size);
+               p = buf = (guint8 *)g_malloc (buf_size);
 
                nmethods ++;
 
@@ -8073,8 +8073,8 @@ emit_extra_methods (MonoAotCompile *acfg)
        chain_lengths = g_new0 (int, table_size);
        max_chain_length = 0;
        for (i = 0; i < acfg->extra_methods->len; ++i) {
-               MonoMethod *method = g_ptr_array_index (acfg->extra_methods, i);
-               MonoCompile *cfg = g_hash_table_lookup (acfg->method_to_cfg, method);
+               MonoMethod *method = (MonoMethod *)g_ptr_array_index (acfg->extra_methods, i);
+               MonoCompile *cfg = (MonoCompile *)g_hash_table_lookup (acfg->method_to_cfg, method);
                guint32 key, value;
 
                if (!cfg)
@@ -8089,11 +8089,11 @@ emit_extra_methods (MonoAotCompile *acfg)
                chain_lengths [hash] ++;
                max_chain_length = MAX (max_chain_length, chain_lengths [hash]);
 
-               new_entry = mono_mempool_alloc0 (acfg->mempool, sizeof (HashEntry));
+               new_entry = (HashEntry *)mono_mempool_alloc0 (acfg->mempool, sizeof (HashEntry));
                new_entry->key = key;
                new_entry->value = value;
 
-               entry = g_ptr_array_index (table, hash);
+               entry = (HashEntry *)g_ptr_array_index (table, hash);
                if (entry == NULL) {
                        new_entry->index = hash;
                        g_ptr_array_index (table, hash) = new_entry;
@@ -8110,11 +8110,11 @@ emit_extra_methods (MonoAotCompile *acfg)
        //printf ("MAX: %d\n", max_chain_length);
 
        buf_size = table->len * 12 + 4;
-       p = buf = g_malloc (buf_size);
+       p = buf = (guint8 *)g_malloc (buf_size);
        encode_int (table_size, p, &p);
 
        for (i = 0; i < table->len; ++i) {
-               HashEntry *entry = g_ptr_array_index (table, i);
+               HashEntry *entry = (HashEntry *)g_ptr_array_index (table, i);
 
                if (entry == NULL) {
                        encode_int (0, p, &p);
@@ -8148,10 +8148,10 @@ emit_extra_methods (MonoAotCompile *acfg)
         * This is used by mono_aot_find_jit_info ().
         */
        buf_size = acfg->extra_methods->len * 8 + 4;
-       p = buf = g_malloc (buf_size);
+       p = buf = (guint8 *)g_malloc (buf_size);
        encode_int (acfg->extra_methods->len, p, &p);
        for (i = 0; i < acfg->extra_methods->len; ++i) {
-               MonoMethod *method = g_ptr_array_index (acfg->extra_methods, i);
+               MonoMethod *method = (MonoMethod *)g_ptr_array_index (acfg->extra_methods, i);
 
                encode_int (get_method_index (acfg, method), p, &p);
                encode_int (info_offsets [i], p, &p);
@@ -8307,7 +8307,7 @@ emit_class_name_table (MonoAotCompile *acfg)
                new_entry = g_new0 (ClassNameTableEntry, 1);
                new_entry->token = token;
 
-               entry = g_ptr_array_index (table, hash);
+               entry = (ClassNameTableEntry *)g_ptr_array_index (table, hash);
                if (entry == NULL) {
                        new_entry->index = hash;
                        g_ptr_array_index (table, hash) = new_entry;
@@ -8323,14 +8323,14 @@ emit_class_name_table (MonoAotCompile *acfg)
 
        /* Emit the table */
        buf_size = table->len * 4 + 4;
-       p = buf = g_malloc0 (buf_size);
+       p = buf = (guint8 *)g_malloc0 (buf_size);
 
        /* FIXME: Optimize memory usage */
        g_assert (table_size < 65000);
        encode_int16 (table_size, p, &p);
        g_assert (table->len < 65000);
        for (i = 0; i < table->len; ++i) {
-               ClassNameTableEntry *entry = g_ptr_array_index (table, i);
+               ClassNameTableEntry *entry = (ClassNameTableEntry *)g_ptr_array_index (table, i);
 
                if (entry == NULL) {
                        encode_int16 (0, p, &p);
@@ -8375,7 +8375,7 @@ emit_image_table (MonoAotCompile *acfg)
                buf_size += strlen (image->assembly_name) + strlen (image->guid) + (aname->culture ? strlen (aname->culture) : 1) + strlen ((char*)aname->public_key_token) + 4;
        }
 
-       buf = p = g_malloc0 (buf_size);
+       buf = p = (guint8 *)g_malloc0 (buf_size);
        encode_int (acfg->image_table->len, p, &p);
        for (i = 0; i < acfg->image_table->len; i++) {
                MonoImage *image = (MonoImage*)g_ptr_array_index (acfg->image_table, i);
@@ -8426,7 +8426,7 @@ emit_got_info (MonoAotCompile *acfg, gboolean llvm)
                acfg->plt_got_offset_base = acfg->got_offset;
                first_plt_got_patch = info->got_patches->len;
                for (i = 1; i < acfg->plt_offset; ++i) {
-                       MonoPltEntry *plt_entry = g_hash_table_lookup (acfg->plt_offset_to_entry, GUINT_TO_POINTER (i));
+                       MonoPltEntry *plt_entry = (MonoPltEntry *)g_hash_table_lookup (acfg->plt_offset_to_entry, GUINT_TO_POINTER (i));
 
                        g_ptr_array_add (info->got_patches, plt_entry->ji);
 
@@ -8449,16 +8449,16 @@ emit_got_info (MonoAotCompile *acfg, gboolean llvm)
 
        /* Encode info required to decode shared GOT entries */
        buf_size = info->got_patches->len * 128;
-       p = buf = mono_mempool_alloc (acfg->mempool, buf_size);
-       got_info_offsets = mono_mempool_alloc (acfg->mempool, info->got_patches->len * sizeof (guint32));
+       p = buf = (guint8 *)mono_mempool_alloc (acfg->mempool, buf_size);
+       got_info_offsets = (guint32 *)mono_mempool_alloc (acfg->mempool, info->got_patches->len * sizeof (guint32));
        if (!llvm) {
-               acfg->plt_got_info_offsets = mono_mempool_alloc (acfg->mempool, acfg->plt_offset * sizeof (guint32));
+               acfg->plt_got_info_offsets = (guint32 *)mono_mempool_alloc (acfg->mempool, acfg->plt_offset * sizeof (guint32));
                /* Unused */
                if (acfg->plt_offset)
                        acfg->plt_got_info_offsets [0] = 0;
        }
        for (i = 0; i < info->got_patches->len; ++i) {
-               MonoJumpInfo *ji = g_ptr_array_index (info->got_patches, i);
+               MonoJumpInfo *ji = (MonoJumpInfo *)g_ptr_array_index (info->got_patches, i);
                guint8 *p2;
 
                p = buf;
@@ -8544,7 +8544,7 @@ emit_globals (MonoAotCompile *acfg)
        for (i = 0; i < table_size; ++i)
                g_ptr_array_add (table, NULL);
        for (i = 0; i < acfg->globals->len; ++i) {
-               char *name = g_ptr_array_index (acfg->globals, i);
+               char *name = (char *)g_ptr_array_index (acfg->globals, i);
 
                hash = mono_metadata_str_hash (name) % table_size;
 
@@ -8552,7 +8552,7 @@ emit_globals (MonoAotCompile *acfg)
                new_entry = g_new0 (GlobalsTableEntry, 1);
                new_entry->value = i;
 
-               entry = g_ptr_array_index (table, hash);
+               entry = (GlobalsTableEntry *)g_ptr_array_index (table, hash);
                if (entry == NULL) {
                        new_entry->index = hash;
                        g_ptr_array_index (table, hash) = new_entry;
@@ -8576,7 +8576,7 @@ emit_globals (MonoAotCompile *acfg)
        g_assert (table_size < 65000);
        emit_int16 (acfg, table_size);
        for (i = 0; i < table->len; ++i) {
-               GlobalsTableEntry *entry = g_ptr_array_index (table, i);
+               GlobalsTableEntry *entry = (GlobalsTableEntry *)g_ptr_array_index (table, i);
 
                if (entry == NULL) {
                        emit_int16 (acfg, 0);
@@ -8592,7 +8592,7 @@ emit_globals (MonoAotCompile *acfg)
 
        /* Emit the names */
        for (i = 0; i < acfg->globals->len; ++i) {
-               char *name = g_ptr_array_index (acfg->globals, i);
+               char *name = (char *)g_ptr_array_index (acfg->globals, i);
 
                sprintf (symbol, "name_%d", i);
                emit_section_change (acfg, RODATA_SECT, 1);
@@ -8614,7 +8614,7 @@ emit_globals (MonoAotCompile *acfg)
        emit_pointer (acfg, symbol);
 
        for (i = 0; i < acfg->globals->len; ++i) {
-               char *name = g_ptr_array_index (acfg->globals, i);
+               char *name = (char *)g_ptr_array_index (acfg->globals, i);
 
                sprintf (symbol, "name_%d", i);
                emit_pointer (acfg, symbol);
@@ -8940,7 +8940,7 @@ emit_dwarf_info (MonoAotCompile *acfg)
 
                sprintf (symbol2, "%sme_%x", acfg->temp_prefix, i);
 
-               mono_dwarf_writer_emit_method (acfg->dwarf, cfg, cfg->method, cfg->asm_symbol, symbol2, cfg->asm_debug_symbol, cfg->jit_info->code_start, cfg->jit_info->code_size, cfg->args, cfg->locals, cfg->unwind_ops, mono_debug_find_method (cfg->jit_info->d.method, mono_domain_get ()));
+               mono_dwarf_writer_emit_method (acfg->dwarf, cfg, cfg->method, cfg->asm_symbol, symbol2, cfg->asm_debug_symbol, (guint8 *)cfg->jit_info->code_start, cfg->jit_info->code_size, cfg->args, cfg->locals, cfg->unwind_ops, mono_debug_find_method (cfg->jit_info->d.method, mono_domain_get ()));
        }
 #endif
 }
@@ -9053,7 +9053,7 @@ compile_methods (MonoAotCompile *acfg)
                methods = g_new0 (MonoMethod*, methods_len);
                //memcpy (methods, g_ptr_array_index (acfg->methods, 0), sizeof (MonoMethod*) * methods_len);
                for (i = 0; i < methods_len; ++i)
-                       methods [i] = g_ptr_array_index (acfg->methods, i);
+                       methods [i] = (MonoMethod *)g_ptr_array_index (acfg->methods, i);
                i = 0;
                while (i < methods_len) {
                        frag = g_ptr_array_new ();
@@ -9069,7 +9069,7 @@ compile_methods (MonoAotCompile *acfg)
                        user_data [1] = acfg;
                        user_data [2] = frag;
                        
-                       handle = mono_threads_create_thread ((gpointer)compile_thread_main, user_data, 0, 0, NULL);
+                       handle = mono_threads_create_thread ((LPTHREAD_START_ROUTINE)compile_thread_main, user_data, 0, 0, NULL);
                        g_ptr_array_add (threads, handle);
                }
                g_free (methods);
@@ -9084,7 +9084,7 @@ compile_methods (MonoAotCompile *acfg)
        /* Compile methods added by compile_method () or all methods if nthreads == 0 */
        for (i = methods_len; i < acfg->methods->len; ++i) {
                /* This can new methods to acfg->methods */
-               compile_method (acfg, g_ptr_array_index (acfg->methods, i));
+               compile_method (acfg, (MonoMethod *)g_ptr_array_index (acfg->methods, i));
        }
 }
 
@@ -9548,44 +9548,44 @@ add_preinit_got_slots (MonoAotCompile *acfg)
         * during method initialization etc.
         */
 
-       ji = mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfo));
+       ji = (MonoJumpInfo *)mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfo));
        ji->type = MONO_PATCH_INFO_IMAGE;
        ji->data.image = acfg->image;
        get_got_offset (acfg, FALSE, ji);
        get_got_offset (acfg, TRUE, ji);
 
-       ji = mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfo));
+       ji = (MonoJumpInfo *)mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfo));
        ji->type = MONO_PATCH_INFO_MSCORLIB_GOT_ADDR;
        get_got_offset (acfg, FALSE, ji);
        get_got_offset (acfg, TRUE, ji);
 
-       ji = mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfo));
+       ji = (MonoJumpInfo *)mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfo));
        ji->type = MONO_PATCH_INFO_GC_CARD_TABLE_ADDR;
        get_got_offset (acfg, FALSE, ji);
        get_got_offset (acfg, TRUE, ji);
 
-       ji = mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfo));
+       ji = (MonoJumpInfo *)mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfo));
        ji->type = MONO_PATCH_INFO_GC_NURSERY_START;
        get_got_offset (acfg, FALSE, ji);
        get_got_offset (acfg, TRUE, ji);
 
-       ji = mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfo));
+       ji = (MonoJumpInfo *)mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfo));
        ji->type = MONO_PATCH_INFO_JIT_TLS_ID;
        get_got_offset (acfg, FALSE, ji);
        get_got_offset (acfg, TRUE, ji);
 
-       ji = mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfo));
+       ji = (MonoJumpInfo *)mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfo));
        ji->type = MONO_PATCH_INFO_AOT_MODULE;
        get_got_offset (acfg, FALSE, ji);
        get_got_offset (acfg, TRUE, ji);
 
-       ji = mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfo));
+       ji = (MonoJumpInfo *)mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfo));
        ji->type = MONO_PATCH_INFO_GC_NURSERY_BITS;
        get_got_offset (acfg, FALSE, ji);
        get_got_offset (acfg, TRUE, ji);
 
        for (i = 0; i < sizeof (preinited_jit_icalls) / sizeof (char*); ++i) {
-               ji = mono_mempool_alloc0 (acfg->mempool, sizeof (MonoAotCompile));
+               ji = (MonoJumpInfo *)mono_mempool_alloc0 (acfg->mempool, sizeof (MonoAotCompile));
                ji->type = MONO_PATCH_INFO_INTERNAL_METHOD;
                ji->data.name = preinited_jit_icalls [i];
                get_got_offset (acfg, FALSE, ji);
@@ -9664,13 +9664,13 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
                        aot_printerrf (acfg, "The soft-debug AOT option requires the --debug option.\n");
                        return 1;
                }
-               acfg->flags |= MONO_AOT_FILE_FLAG_DEBUG;
+               acfg->flags = (MonoAotFileFlags)(acfg->flags | MONO_AOT_FILE_FLAG_DEBUG);
        }
 
        if (mono_use_llvm || acfg->aot_opts.llvm) {
                acfg->llvm = TRUE;
                acfg->aot_opts.asm_writer = TRUE;
-               acfg->flags |= MONO_AOT_FILE_FLAG_WITH_LLVM;
+               acfg->flags = (MonoAotFileFlags)(acfg->flags | MONO_AOT_FILE_FLAG_WITH_LLVM);
 
                if (acfg->aot_opts.soft_debug) {
                        aot_printerrf (acfg, "The 'soft-debug' option is not supported when compiling with LLVM.\n");
@@ -9699,10 +9699,10 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
        }
 
        if (mono_aot_mode_is_full (&acfg->aot_opts))
-               acfg->flags |= MONO_AOT_FILE_FLAG_FULL_AOT;
+               acfg->flags = (MonoAotFileFlags)(acfg->flags | MONO_AOT_FILE_FLAG_FULL_AOT);
 
        if (mono_threads_is_coop_enabled ())
-               acfg->flags |= MONO_AOT_FILE_FLAG_SAFEPOINTS;
+               acfg->flags = (MonoAotFileFlags)(acfg->flags | MONO_AOT_FILE_FLAG_SAFEPOINTS);
 
        if (acfg->aot_opts.instances_logfile_path) {
                acfg->instances_logfile = fopen (acfg->aot_opts.instances_logfile_path, "w");
@@ -9729,9 +9729,9 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
        arch_init (acfg);
 
        if (acfg->llvm && acfg->thumb_mixed)
-               acfg->flags |= MONO_AOT_FILE_FLAG_LLVM_THUMB;
+               acfg->flags = (MonoAotFileFlags)(acfg->flags | MONO_AOT_FILE_FLAG_LLVM_THUMB);
        if (acfg->aot_opts.llvm_only)
-               acfg->flags |= MONO_AOT_FILE_FLAG_LLVM_ONLY;
+               acfg->flags = (MonoAotFileFlags)(acfg->flags | MONO_AOT_FILE_FLAG_LLVM_ONLY);
 
        acfg->assembly_name_sym = g_strdup (acfg->image->assembly->aname.name);
        /* Get rid of characters which cannot occur in symbols */
index 082a0704023f1ce5dc945abda108c5654ecc15de..57d53d55ea46660388b2a34240834d7ac73ba785 100644 (file)
@@ -520,7 +520,7 @@ decode_klass_ref (MonoAotModule *module, guint8 *buf, guint8 **endbuf)
                        }
 
                        t = g_new0 (MonoType, 1);
-                       t->type = type;
+                       t->type = (MonoTypeEnum)type;
                        if (is_not_anonymous) {
                                t->data.generic_param = mono_generic_container_get_param (container, num);
                        } else {
@@ -599,7 +599,7 @@ decode_type (MonoAotModule *module, guint8 *buf, guint8 **endbuf)
        guint8 *p = buf;
        MonoType *t;
 
-       t = g_malloc0 (sizeof (MonoType));
+       t = (MonoType *)g_malloc0 (sizeof (MonoType));
 
        while (TRUE) {
                if (*p == MONO_TYPE_PINNED) {
@@ -613,7 +613,7 @@ decode_type (MonoAotModule *module, guint8 *buf, guint8 **endbuf)
                }
        }
 
-       t->type = *p;
+       t->type = (MonoTypeEnum)*p;
        ++p;
 
        switch (t->type) {
@@ -682,13 +682,13 @@ decode_type (MonoAotModule *module, guint8 *buf, guint8 **endbuf)
                array->numsizes = decode_value (p, &p);
 
                if (array->numsizes)
-                       array->sizes = g_malloc0 (sizeof (int) * array->numsizes);
+                       array->sizes = (int *)g_malloc0 (sizeof (int) * array->numsizes);
                for (i = 0; i < array->numsizes; ++i)
                        array->sizes [i] = decode_value (p, &p);
 
                array->numlobounds = decode_value (p, &p);
                if (array->numlobounds)
-                       array->lobounds = g_malloc0 (sizeof (int) * array->numlobounds);
+                       array->lobounds = (int *)g_malloc0 (sizeof (int) * array->numlobounds);
                for (i = 0; i < array->numlobounds; ++i)
                        array->lobounds [i] = decode_value (p, &p);
                t->data.array = array;
@@ -734,7 +734,7 @@ decode_signature_with_target (MonoAotModule *module, MonoMethodSignature *target
        param_count = decode_value (p, &p);
        if (target && param_count != target->param_count)
                return NULL;
-       sig = g_malloc0 (MONO_SIZEOF_METHOD_SIGNATURE + param_count * sizeof (MonoType *));
+       sig = (MonoMethodSignature *)g_malloc0 (MONO_SIZEOF_METHOD_SIGNATURE + param_count * sizeof (MonoType *));
        sig->param_count = param_count;
        sig->sentinelpos = -1;
        sig->hasthis = hasthis;
@@ -1138,7 +1138,7 @@ decode_method_ref_with_target (MonoAotModule *module, MethodRef *ref, MonoMethod
                                        return FALSE;
 
                                if (wrapper_type == MONO_WRAPPER_DELEGATE_INVOKE) {
-                                       subtype = decode_value (p, &p);
+                                       subtype = (WrapperSubtype)decode_value (p, &p);
                                        info = mono_marshal_get_wrapper_info (target);
                                        if (info) {
                                                if (info->subtype != subtype)
@@ -1602,7 +1602,7 @@ find_symbol (MonoDl *module, gpointer *globals, const char *name, gpointer *valu
 #endif
 
                /* The first entry points to the hash */
-               table = globals [0];
+               table = (guint16 *)globals [0];
                globals ++;
 
                table_size = table [0];
@@ -1663,7 +1663,7 @@ check_usable (MonoAssembly *assembly, MonoAotFileInfo *info, char **out_msg)
        }
 
        build_info = mono_get_runtime_build_info ();
-       if (strlen (info->runtime_version) > 0 && strcmp (info->runtime_version, build_info)) {
+       if (strlen ((const char *)info->runtime_version) > 0 && strcmp (info->runtime_version, build_info)) {
                msg = g_strdup_printf ("compiled against runtime version '%s' while this runtime has version '%s'", info->runtime_version, build_info);
                usable = FALSE;
        }
@@ -1710,7 +1710,7 @@ check_usable (MonoAssembly *assembly, MonoAotFileInfo *info, char **out_msg)
                usable = FALSE;
        }
 
-       blob = info->blob;
+       blob = (guint8 *)info->blob;
 
        if (info->gc_name_index != -1) {
                char *gc_name = (char*)&blob [info->gc_name_index];
@@ -1804,7 +1804,7 @@ init_amodule_got (MonoAotModule *amodule)
                        amodule->shared_got [i] = amodule->assembly->image;
                } else if (ji->type == MONO_PATCH_INFO_MSCORLIB_GOT_ADDR) {
                        if (mono_defaults.corlib) {
-                               MonoAotModule *mscorlib_amodule = mono_defaults.corlib->aot_module;
+                               MonoAotModule *mscorlib_amodule = (MonoAotModule *)mono_defaults.corlib->aot_module;
 
                                if (mscorlib_amodule)
                                        amodule->shared_got [i] = mscorlib_amodule->got;
@@ -1861,7 +1861,7 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
 
        mono_aot_lock ();
        if (static_aot_modules)
-               info = g_hash_table_lookup (static_aot_modules, assembly->aname.name);
+               info = (MonoAotFileInfo *)g_hash_table_lookup (static_aot_modules, assembly->aname.name);
        else
                info = NULL;
        mono_aot_unlock ();
@@ -1872,7 +1872,7 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
                /* Statically linked AOT module */
                aot_name = g_strdup_printf ("%s", assembly->aname.name);
                mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_AOT, "Found statically linked AOT module '%s'.\n", aot_name);
-               globals = info->globals;
+               globals = (void **)info->globals;
        } else {
                if (enable_aot_cache)
                        sofile = aot_cache_load_module (assembly, &aot_name);
@@ -1945,7 +1945,7 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
        g_assert (info->long_align == align_int64);
        g_assert (info->generic_tramp_num == MONO_TRAMPOLINE_NUM);
 
-       blob = info->blob;
+       blob = (guint8 *)info->blob;
 
        amodule = g_new0 (MonoAotModule, 1);
        amodule->aot_name = aot_name;
@@ -1953,8 +1953,8 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
 
        memcpy (&amodule->info, info, sizeof (*info));
 
-       amodule->got = amodule->info.jit_got;
-       amodule->llvm_got = amodule->info.llvm_got;
+       amodule->got = (void **)amodule->info.jit_got;
+       amodule->llvm_got = (void **)amodule->info.llvm_got;
        amodule->globals = globals;
        amodule->sofile = sofile;
        amodule->method_to_code = g_hash_table_new (mono_aligned_addr_hash, NULL);
@@ -1969,7 +1969,7 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
                guint32 table_len, i;
                char *table = NULL;
 
-               table = info->image_table;
+               table = (char *)info->image_table;
                g_assert (table);
 
                table_len = *(guint32*)table;
@@ -1991,7 +1991,7 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
                        memcpy (aname->public_key_token, table, strlen (table) + 1);
                        table += strlen (table) + 1;                    
 
-                       table = ALIGN_PTR_TO (table, 8);
+                       table = (char *)ALIGN_PTR_TO (table, 8);
                        aname->flags = *(guint32*)table;
                        table += 4;
                        aname->major = *(guint32*)table;
@@ -2005,38 +2005,38 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
                }
        }
 
-       amodule->jit_code_start = info->jit_code_start;
-       amodule->jit_code_end = info->jit_code_end;
-       amodule->method_info_offsets = info->method_info_offsets;
-       amodule->ex_info_offsets = info->ex_info_offsets;
-       amodule->class_info_offsets = info->class_info_offsets;
-       amodule->class_name_table = info->class_name_table;
-       amodule->extra_method_table = info->extra_method_table;
-       amodule->extra_method_info_offsets = info->extra_method_info_offsets;
-       amodule->unbox_trampolines = info->unbox_trampolines;
-       amodule->unbox_trampolines_end = info->unbox_trampolines_end;
-       amodule->unbox_trampoline_addresses = info->unbox_trampoline_addresses;
-       amodule->unwind_info = info->unwind_info;
+       amodule->jit_code_start = (guint8 *)info->jit_code_start;
+       amodule->jit_code_end = (guint8 *)info->jit_code_end;
+       amodule->method_info_offsets = (guint32 *)info->method_info_offsets;
+       amodule->ex_info_offsets = (guint32 *)info->ex_info_offsets;
+       amodule->class_info_offsets = (guint32 *)info->class_info_offsets;
+       amodule->class_name_table = (guint16 *)info->class_name_table;
+       amodule->extra_method_table = (guint32 *)info->extra_method_table;
+       amodule->extra_method_info_offsets = (guint32 *)info->extra_method_info_offsets;
+       amodule->unbox_trampolines = (guint32 *)info->unbox_trampolines;
+       amodule->unbox_trampolines_end = (guint32 *)info->unbox_trampolines_end;
+       amodule->unbox_trampoline_addresses = (guint32 *)info->unbox_trampoline_addresses;
+       amodule->unwind_info = (guint8 *)info->unwind_info;
        amodule->mem_begin = amodule->jit_code_start;
-       amodule->mem_end = info->mem_end;
-       amodule->plt = info->plt;
-       amodule->plt_end = info->plt_end;
-       amodule->mono_eh_frame = info->mono_eh_frame;
-       amodule->trampolines [MONO_AOT_TRAMP_SPECIFIC] = info->specific_trampolines;
-       amodule->trampolines [MONO_AOT_TRAMP_STATIC_RGCTX] = info->static_rgctx_trampolines;
-       amodule->trampolines [MONO_AOT_TRAMP_IMT_THUNK] = info->imt_thunks;
-       amodule->trampolines [MONO_AOT_TRAMP_GSHAREDVT_ARG] = info->gsharedvt_arg_trampolines;
+       amodule->mem_end = (guint8 *)info->mem_end;
+       amodule->plt = (guint8 *)info->plt;
+       amodule->plt_end = (guint8 *)info->plt_end;
+       amodule->mono_eh_frame = (guint8 *)info->mono_eh_frame;
+       amodule->trampolines [MONO_AOT_TRAMP_SPECIFIC] = (guint8 *)info->specific_trampolines;
+       amodule->trampolines [MONO_AOT_TRAMP_STATIC_RGCTX] = (guint8 *)info->static_rgctx_trampolines;
+       amodule->trampolines [MONO_AOT_TRAMP_IMT_THUNK] = (guint8 *)info->imt_thunks;
+       amodule->trampolines [MONO_AOT_TRAMP_GSHAREDVT_ARG] = (guint8 *)info->gsharedvt_arg_trampolines;
 
        if (!strcmp (assembly->aname.name, "mscorlib"))
                mscorlib_aot_module = amodule;
 
        /* Compute method addresses */
-       amodule->methods = g_malloc0 (amodule->info.nmethods * sizeof (gpointer));
+       amodule->methods = (void **)g_malloc0 (amodule->info.nmethods * sizeof (gpointer));
        for (i = 0; i < amodule->info.nmethods; ++i) {
                void *addr = NULL;
 
                if (amodule->info.llvm_get_method) {
-                       gpointer (*get_method) (int) = amodule->info.llvm_get_method;
+                       gpointer (*get_method) (int) = (gpointer (*)(int))amodule->info.llvm_get_method;
 
                        addr = get_method (i);
                }
@@ -2163,14 +2163,14 @@ mono_aot_register_module (gpointer *aot_info)
 {
        gpointer *globals;
        char *aname;
-       MonoAotFileInfo *info = (gpointer)aot_info;
+       MonoAotFileInfo *info = (MonoAotFileInfo *)aot_info;
 
        g_assert (info->version == MONO_AOT_FILE_VERSION);
 
-       globals = info->globals;
+       globals = (void **)info->globals;
        g_assert (globals);
 
-       aname = info->assembly_name;
+       aname = (char *)info->assembly_name;
 
        /* This could be called before startup */
        if (aot_modules)
@@ -2262,7 +2262,7 @@ mono_aot_get_method_from_vt_slot (MonoDomain *domain, MonoVTable *vtable, int sl
 {
        int i;
        MonoClass *klass = vtable->klass;
-       MonoAotModule *amodule = klass->image->aot_module;
+       MonoAotModule *amodule = (MonoAotModule *)klass->image->aot_module;
        guint8 *info, *p;
        MonoCachedClassInfo class_info;
        gboolean err;
@@ -2297,7 +2297,7 @@ mono_aot_get_method_from_vt_slot (MonoDomain *domain, MonoVTable *vtable, int sl
 gboolean
 mono_aot_get_cached_class_info (MonoClass *klass, MonoCachedClassInfo *res)
 {
-       MonoAotModule *amodule = klass->image->aot_module;
+       MonoAotModule *amodule = (MonoAotModule *)klass->image->aot_module;
        guint8 *p;
        gboolean err;
 
@@ -2326,7 +2326,7 @@ mono_aot_get_cached_class_info (MonoClass *klass, MonoCachedClassInfo *res)
 gboolean
 mono_aot_get_class_from_name (MonoImage *image, const char *name_space, const char *name, MonoClass **klass)
 {
-       MonoAotModule *amodule = image->aot_module;
+       MonoAotModule *amodule = (MonoAotModule *)image->aot_module;
        guint16 *table, *entry;
        guint16 table_size;
        guint32 hash;
@@ -2347,9 +2347,9 @@ mono_aot_get_class_from_name (MonoImage *image, const char *name_space, const ch
        /* First look in the cache */
        if (!amodule->name_cache)
                amodule->name_cache = g_hash_table_new (g_str_hash, g_str_equal);
-       nspace_table = g_hash_table_lookup (amodule->name_cache, name_space);
+       nspace_table = (GHashTable *)g_hash_table_lookup (amodule->name_cache, name_space);
        if (nspace_table) {
-               *klass = g_hash_table_lookup (nspace_table, name);
+               *klass = (MonoClass *)g_hash_table_lookup (nspace_table, name);
                if (*klass) {
                        amodule_unlock (amodule);
                        return TRUE;
@@ -2400,7 +2400,7 @@ mono_aot_get_class_from_name (MonoImage *image, const char *name_space, const ch
                                /* Add to cache */
                                if (*klass) {
                                        amodule_lock (amodule);
-                                       nspace_table = g_hash_table_lookup (amodule->name_cache, name_space);
+                                       nspace_table = (GHashTable *)g_hash_table_lookup (amodule->name_cache, name_space);
                                        if (!nspace_table) {
                                                nspace_table = g_hash_table_new (g_str_hash, g_str_equal);
                                                g_hash_table_insert (amodule->name_cache, (char*)name_space2, nspace_table);
@@ -2433,10 +2433,10 @@ compute_llvm_code_range (MonoAotModule *amodule, guint8 **code_start, guint8 **c
        gint32 *table;
 
        if (amodule->info.llvm_get_method) {
-               gpointer (*get_method) (int) = amodule->info.llvm_get_method;
+               gpointer (*get_method) (int) = (gpointer (*)(int))amodule->info.llvm_get_method;
 
-               *code_start = get_method (-1);
-               *code_end = get_method (-2);
+               *code_start = (guint8 *)get_method (-1);
+               *code_end = (guint8 *)get_method (-2);
 
                g_assert (*code_end > *code_start);
                return;
@@ -2453,14 +2453,14 @@ compute_llvm_code_range (MonoAotModule *amodule, guint8 **code_start, guint8 **c
        g_assert (version == 3);
        p ++;
        p ++;
-       p = ALIGN_PTR_TO (p, 4);
+       p = (guint8 *)ALIGN_PTR_TO (p, 4);
 
        fde_count = *(guint32*)p;
        p += 4;
        table = (gint32*)p;
 
        if (fde_count > 0) {
-               *code_start = amodule->methods [table [0]];
+               *code_start = (guint8 *)amodule->methods [table [0]];
                *code_end = (guint8*)amodule->methods [table [(fde_count - 1) * 2]] + table [fde_count * 2];
        } else {
                *code_start = NULL;
@@ -2513,7 +2513,7 @@ decode_llvm_mono_eh_frame (MonoAotModule *amodule, MonoDomain *domain,
        MonoLLVMFDEInfo info;
 
        if (!amodule->mono_eh_frame) {
-               jinfo = mono_domain_alloc0_lock_free (domain, mono_jit_info_size (flags, num_clauses, 0));
+               jinfo = (MonoJitInfo *)mono_domain_alloc0_lock_free (domain, mono_jit_info_size (flags, num_clauses, 0));
                mono_jit_info_init (jinfo, method, code, code_len, flags, num_clauses, 0);
                memcpy (jinfo->clauses, clauses, num_clauses * sizeof (MonoJitExceptionInfo));
                return jinfo;
@@ -2531,7 +2531,7 @@ decode_llvm_mono_eh_frame (MonoAotModule *amodule, MonoDomain *domain,
        p ++;
        /* func_encoding = *p; */
        p ++;
-       p = ALIGN_PTR_TO (p, 4);
+       p = (guint8 *)ALIGN_PTR_TO (p, 4);
 
        fde_count = *(guint32*)p;
        p += 4;
@@ -2548,12 +2548,12 @@ decode_llvm_mono_eh_frame (MonoAotModule *amodule, MonoDomain *domain,
 
                /* The table contains method index/fde offset pairs */
                g_assert (table [(pos * 2)] != -1);
-               code1 = amodule->methods [table [(pos * 2)]];
+               code1 = (guint8 *)amodule->methods [table [(pos * 2)]];
                if (pos + 1 == fde_count) {
                        code2 = amodule->llvm_code_end;
                } else {
                        g_assert (table [(pos + 1) * 2] != -1);
-                       code2 = amodule->methods [table [(pos + 1) * 2]];
+                       code2 = (guint8 *)amodule->methods [table [(pos + 1) * 2]];
                }
 
                if (code < code1)
@@ -2564,13 +2564,13 @@ decode_llvm_mono_eh_frame (MonoAotModule *amodule, MonoDomain *domain,
                        break;
        }
 
-       code_start = amodule->methods [table [(pos * 2)]];
+       code_start = (guint8 *)amodule->methods [table [(pos * 2)]];
        if (pos + 1 == fde_count) {
                /* The +1 entry in the table contains the length of the last method */
                int len = table [(pos + 1) * 2];
                code_end = code_start + len;
        } else {
-               code_end = amodule->methods [table [(pos + 1) * 2]];
+               code_end = (guint8 *)amodule->methods [table [(pos + 1) * 2]];
        }
        if (!code_len)
                code_len = code_end - code_start;
@@ -2608,7 +2608,7 @@ decode_llvm_mono_eh_frame (MonoAotModule *amodule, MonoDomain *domain,
         * allocate a new JI.
         */
        jinfo = 
-               mono_domain_alloc0_lock_free (domain, mono_jit_info_size (flags, ei_len + nested_len, 0));
+               (MonoJitInfo *)mono_domain_alloc0_lock_free (domain, mono_jit_info_size (flags, ei_len + nested_len, 0));
        mono_jit_info_init (jinfo, method, code, code_len, flags, ei_len + nested_len, 0);
 
        jinfo->unwind_info = mono_cache_unwind_info (info.unw_info, info.unw_info_len);
@@ -2635,7 +2635,7 @@ decode_llvm_mono_eh_frame (MonoAotModule *amodule, MonoDomain *domain,
                jei->handler_start = ei [i].handler_start;
                jei->clause_index = clause_index;
 
-               if (is_thumb_code (amodule, jei->try_start)) {
+               if (is_thumb_code (amodule, (guint8 *)jei->try_start)) {
                        jei->try_start = (void*)((mgreg_t)jei->try_start & ~1);
                        jei->try_end = (void*)((mgreg_t)jei->try_end & ~1);
                        /* Make sure we transition to thumb when a handler starts */
@@ -2723,18 +2723,18 @@ decode_exception_debug_info (MonoAotModule *amodule, MonoDomain *domain,
                unwind_info = decode_value (p, &p);
        }
        if (has_generic_jit_info)
-               flags |= JIT_INFO_HAS_GENERIC_JIT_INFO;
+               flags = (MonoJitInfoFlags)(flags | JIT_INFO_HAS_GENERIC_JIT_INFO);
 
        if (has_try_block_holes) {
                num_holes = decode_value (p, &p);
-               flags |= JIT_INFO_HAS_TRY_BLOCK_HOLES;
+               flags = (MonoJitInfoFlags)(flags | JIT_INFO_HAS_TRY_BLOCK_HOLES);
                try_holes_info_size = sizeof (MonoTryBlockHoleTableJitInfo) + num_holes * sizeof (MonoTryBlockHoleJitInfo);
        } else {
                num_holes = try_holes_info_size = 0;
        }
 
        if (has_arch_eh_jit_info) {
-               flags |= JIT_INFO_HAS_ARCH_EH_INFO;
+               flags = (MonoJitInfoFlags)(flags | JIT_INFO_HAS_ARCH_EH_INFO);
                /* Overwrite the original code_len which includes alignment padding */
                code_len = decode_value (p, &p);
        }
@@ -2791,7 +2791,7 @@ decode_exception_debug_info (MonoAotModule *amodule, MonoDomain *domain,
                g_free (nesting);
        } else {
                len = mono_jit_info_size (flags, num_clauses, num_holes);
-               jinfo = alloc0_jit_info_data (domain, len, async);
+               jinfo = (MonoJitInfo *)alloc0_jit_info_data (domain, len, async);
                mono_jit_info_init (jinfo, method, code, code_len, flags, num_clauses, num_holes);
 
                for (i = 0; i < jinfo->num_clauses; ++i) {
@@ -2876,7 +2876,7 @@ decode_exception_debug_info (MonoAotModule *amodule, MonoDomain *domain,
 
                gi->nlocs = decode_value (p, &p);
                if (gi->nlocs) {
-                       gi->locations = alloc0_jit_info_data (domain, gi->nlocs * sizeof (MonoDwarfLocListEntry), async);
+                       gi->locations = (MonoDwarfLocListEntry *)alloc0_jit_info_data (domain, gi->nlocs * sizeof (MonoDwarfLocListEntry), async);
                        for (i = 0; i < gi->nlocs; ++i) {
                                MonoDwarfLocListEntry *entry = &gi->locations [i];
 
@@ -2969,12 +2969,12 @@ mono_aot_get_unwind_info (MonoJitInfo *ji, guint32 *unwind_info_len)
 {
        MonoAotModule *amodule;
        guint8 *p;
-       guint8 *code = ji->code_start;
+       guint8 *code = (guint8 *)ji->code_start;
 
        if (ji->async)
-               amodule = ji->d.aot_info;
+               amodule = (MonoAotModule *)ji->d.aot_info;
        else
-               amodule = jinfo_get_method (ji)->klass->image->aot_module;
+               amodule = (MonoAotModule *)jinfo_get_method (ji)->klass->image->aot_module;
        g_assert (amodule);
        g_assert (ji->from_aot);
 
@@ -2982,7 +2982,7 @@ mono_aot_get_unwind_info (MonoJitInfo *ji, guint32 *unwind_info_len)
                /* ji belongs to a different aot module than amodule */
                mono_aot_lock ();
                g_assert (ji_to_amodule);
-               amodule = g_hash_table_lookup (ji_to_amodule, ji);
+               amodule = (MonoAotModule *)g_hash_table_lookup (ji_to_amodule, ji);
                g_assert (amodule);
                g_assert (amodule_contains_code_addr (amodule, code));
                mono_aot_unlock ();
@@ -3063,7 +3063,7 @@ mono_aot_find_jit_info (MonoDomain *domain, MonoImage *image, gpointer addr)
        int pos, left, right, code_len;
        int method_index, table_len;
        guint32 token;
-       MonoAotModule *amodule = image->aot_module;
+       MonoAotModule *amodule = (MonoAotModule *)image->aot_module;
        MonoMethod *method = NULL;
        MonoJitInfo *jinfo;
        guint8 *code, *ex_info, *p;
@@ -3083,7 +3083,7 @@ mono_aot_find_jit_info (MonoDomain *domain, MonoImage *image, gpointer addr)
                /* FIXME: */
                return NULL;
 
-       if (!amodule_contains_code_addr (amodule, addr))
+       if (!amodule_contains_code_addr (amodule, (guint8 *)addr))
                return NULL;
 
        async = mono_thread_info_is_async_context ();
@@ -3119,20 +3119,20 @@ mono_aot_find_jit_info (MonoDomain *domain, MonoImage *image, gpointer addr)
        /* Binary search in the sorted_methods table */
        methods = amodule->sorted_methods;
        methods_len = amodule->sorted_methods_len;
-       code = addr;
+       code = (guint8 *)addr;
        left = 0;
        right = methods_len;
        while (TRUE) {
                pos = (left + right) / 2;
 
-               code1 = methods [pos];
+               code1 = (guint8 *)methods [pos];
                if (pos + 1 == methods_len) {
                        if (code1 >= amodule->jit_code_start && code1 < amodule->jit_code_end)
                                code2 = amodule->jit_code_end;
                        else
                                code2 = amodule->llvm_code_end;
                } else {
-                       code2 = methods [pos + 1];
+                       code2 = (guint8 *)methods [pos + 1];
                }
 
                if (code < code1)
@@ -3162,7 +3162,7 @@ mono_aot_find_jit_info (MonoDomain *domain, MonoImage *image, gpointer addr)
                }
        }
 
-       code = amodule->methods [method_index];
+       code = (guint8 *)amodule->methods [method_index];
        ex_info = &amodule->blob [mono_aot_get_offset (amodule->ex_info_offsets, method_index)];
 
        if (pos == methods_len - 1) {
@@ -3180,7 +3180,7 @@ mono_aot_find_jit_info (MonoDomain *domain, MonoImage *image, gpointer addr)
        if (!async) {
                if (amodule->extra_methods) {
                        amodule_lock (amodule);
-                       method = g_hash_table_lookup (amodule->extra_methods, GUINT_TO_POINTER (method_index));
+                       method = (MonoMethod *)g_hash_table_lookup (amodule->extra_methods, GUINT_TO_POINTER (method_index));
                        amodule_unlock (amodule);
                } else {
                        method = NULL;
@@ -3248,7 +3248,7 @@ mono_aot_find_jit_info (MonoDomain *domain, MonoImage *image, gpointer addr)
                                len = old_table[0].method_index;
                        else
                                len = 1;
-                       new_table = alloc0_jit_info_data (domain, (len + 1) * sizeof (JitInfoMap), async);
+                       new_table = (JitInfoMap *)alloc0_jit_info_data (domain, (len + 1) * sizeof (JitInfoMap), async);
                        if (old_table)
                                memcpy (new_table, old_table, len * sizeof (JitInfoMap));
                        new_table [0].method_index = len + 1;
@@ -3256,7 +3256,7 @@ mono_aot_find_jit_info (MonoDomain *domain, MonoImage *image, gpointer addr)
                        new_table [len].jinfo = jinfo;
                        /* Publish it */
                        mono_memory_barrier ();
-                       if (InterlockedCompareExchangePointer ((gpointer)&amodule->async_jit_info_table, new_table, old_table) == old_table)
+                       if (InterlockedCompareExchangePointer ((volatile gpointer *)&amodule->async_jit_info_table, new_table, old_table) == old_table)
                                break;
                }
        } else {
@@ -3329,7 +3329,7 @@ decode_patch (MonoAotModule *aot_module, MonoMemPool *mp, MonoJumpInfo *ji, guin
                        goto cleanup;
                break;
        case MONO_PATCH_INFO_DELEGATE_TRAMPOLINE:
-               ji->data.del_tramp = mono_mempool_alloc0 (mp, sizeof (MonoDelegateClassMethodPair));
+               ji->data.del_tramp = (MonoDelegateClassMethodPair *)mono_mempool_alloc0 (mp, sizeof (MonoDelegateClassMethodPair));
                ji->data.del_tramp->klass = decode_klass_ref (aot_module, p, &p);
                if (!ji->data.del_tramp->klass)
                        goto cleanup;
@@ -3353,9 +3353,9 @@ decode_patch (MonoAotModule *aot_module, MonoMemPool *mp, MonoJumpInfo *ji, guin
                        goto cleanup;
                break;
        case MONO_PATCH_INFO_SWITCH:
-               ji->data.table = mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoBBTable));
+               ji->data.table = (MonoJumpInfoBBTable *)mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoBBTable));
                ji->data.table->table_size = decode_value (p, &p);
-               table = mono_domain_alloc (mono_domain_get (), sizeof (gpointer) * ji->data.table->table_size);
+               table = (void **)mono_domain_alloc (mono_domain_get (), sizeof (gpointer) * ji->data.table->table_size);
                ji->data.table->table = (MonoBasicBlock**)table;
                for (i = 0; i < ji->data.table->table_size; i++)
                        table [i] = (gpointer)(gssize)decode_value (p, &p);
@@ -3431,13 +3431,13 @@ decode_patch (MonoAotModule *aot_module, MonoMemPool *mp, MonoJumpInfo *ji, guin
                offset = decode_value (p, &p);
                val = decode_value (p, &p);
 
-               entry = mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoRgctxEntry));
+               entry = (MonoJumpInfoRgctxEntry *)mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoRgctxEntry));
                p2 = aot_module->blob + offset;
                entry->method = decode_resolve_method_ref (aot_module, p2, &p2);
                entry->in_mrgctx = ((val & 1) > 0) ? TRUE : FALSE;
-               entry->info_type = (val >> 1) & 0xff;
-               entry->data = mono_mempool_alloc0 (mp, sizeof (MonoJumpInfo));
-               entry->data->type = (val >> 9) & 0xff;
+               entry->info_type = (MonoRgctxInfoType)((val >> 1) & 0xff);
+               entry->data = (MonoJumpInfo *)mono_mempool_alloc0 (mp, sizeof (MonoJumpInfo));
+               entry->data->type = (MonoJumpInfoType)((val >> 9) & 0xff);
                
                res = decode_patch (aot_module, mp, entry->data, p, &p);
                if (!res)
@@ -3456,7 +3456,7 @@ decode_patch (MonoAotModule *aot_module, MonoMemPool *mp, MonoJumpInfo *ji, guin
                ji->data.target = GINT_TO_POINTER (decode_value (p, &p));
                break;
        case MONO_PATCH_INFO_GSHAREDVT_CALL: {
-               MonoJumpInfoGSharedVtCall *info = mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoGSharedVtCall));
+               MonoJumpInfoGSharedVtCall *info = (MonoJumpInfoGSharedVtCall *)mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoGSharedVtCall));
                info->sig = decode_signature (aot_module, p, &p);
                g_assert (info->sig);
                info->method = decode_resolve_method_ref (aot_module, p, &p);
@@ -3466,29 +3466,29 @@ decode_patch (MonoAotModule *aot_module, MonoMemPool *mp, MonoJumpInfo *ji, guin
                break;
        }
        case MONO_PATCH_INFO_GSHAREDVT_METHOD: {
-               MonoGSharedVtMethodInfo *info = mono_mempool_alloc0 (mp, sizeof (MonoGSharedVtMethodInfo));
+               MonoGSharedVtMethodInfo *info = (MonoGSharedVtMethodInfo *)mono_mempool_alloc0 (mp, sizeof (MonoGSharedVtMethodInfo));
                int i;
                
                info->method = decode_resolve_method_ref (aot_module, p, &p);
                g_assert (info->method);
                info->num_entries = decode_value (p, &p);
                info->count_entries = info->num_entries;
-               info->entries = mono_mempool_alloc0 (mp, sizeof (MonoRuntimeGenericContextInfoTemplate) * info->num_entries);
+               info->entries = (MonoRuntimeGenericContextInfoTemplate *)mono_mempool_alloc0 (mp, sizeof (MonoRuntimeGenericContextInfoTemplate) * info->num_entries);
                for (i = 0; i < info->num_entries; ++i) {
-                       MonoRuntimeGenericContextInfoTemplate *template = &info->entries [i];
+                       MonoRuntimeGenericContextInfoTemplate *template_ = &info->entries [i];
 
-                       template->info_type = decode_value (p, &p);
-                       switch (mini_rgctx_info_type_to_patch_info_type (template->info_type)) {
+                       template_->info_type = (MonoRgctxInfoType)decode_value (p, &p);
+                       switch (mini_rgctx_info_type_to_patch_info_type (template_->info_type)) {
                        case MONO_PATCH_INFO_CLASS: {
                                MonoClass *klass = decode_klass_ref (aot_module, p, &p);
                                if (!klass)
                                        goto cleanup;
-                               template->data = &klass->byval_arg;
+                               template_->data = &klass->byval_arg;
                                break;
                        }
                        case MONO_PATCH_INFO_FIELD:
-                               template->data = decode_field_info (aot_module, p, &p);
-                               if (!template->data)
+                               template_->data = decode_field_info (aot_module, p, &p);
+                               if (!template_->data)
                                        goto cleanup;
                                break;
                        default:
@@ -3503,7 +3503,7 @@ decode_patch (MonoAotModule *aot_module, MonoMemPool *mp, MonoJumpInfo *ji, guin
                int len = decode_value (p, &p);
                char *s;
 
-               s = mono_mempool_alloc0 (mp, len + 1);
+               s = (char *)mono_mempool_alloc0 (mp, len + 1);
                memcpy (s, p, len + 1);
                p += len + 1;
 
@@ -3511,7 +3511,7 @@ decode_patch (MonoAotModule *aot_module, MonoMemPool *mp, MonoJumpInfo *ji, guin
                break;
        }
        case MONO_PATCH_INFO_VIRT_METHOD: {
-               MonoJumpInfoVirtMethod *info = mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoVirtMethod));
+               MonoJumpInfoVirtMethod *info = (MonoJumpInfoVirtMethod *)mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoVirtMethod));
 
                info->klass = decode_klass_ref (aot_module, p, &p);
                g_assert (info->klass);
@@ -3557,18 +3557,18 @@ decode_patches (MonoAotModule *amodule, MonoMemPool *mp, int n_patches, gboolean
 
        if (llvm) {
                got = amodule->llvm_got;
-               got_info_offsets = amodule->info.llvm_got_info_offsets;
+               got_info_offsets = (guint32 *)amodule->info.llvm_got_info_offsets;
        } else {
                got = amodule->got;
-               got_info_offsets = amodule->info.got_info_offsets;
+               got_info_offsets = (guint32 *)amodule->info.got_info_offsets;
        }
 
-       patches = mono_mempool_alloc0 (mp, sizeof (MonoJumpInfo) * n_patches);
+       patches = (MonoJumpInfo *)mono_mempool_alloc0 (mp, sizeof (MonoJumpInfo) * n_patches);
        for (i = 0; i < n_patches; ++i) {
                guint8 *p = amodule->blob + mono_aot_get_offset (got_info_offsets, got_offsets [i]);
 
                ji = &patches [i];
-               ji->type = decode_value (p, &p);
+               ji->type = (MonoJumpInfoType)decode_value (p, &p);
 
                /* See load_method () for SFLDA */
                if (got && got [got_offsets [i]] && ji->type != MONO_PATCH_INFO_SFLDA) {
@@ -3594,7 +3594,7 @@ load_patch_info (MonoAotModule *amodule, MonoMemPool *mp, int n_patches,
 
        p = buf;
 
-       *got_slots = g_malloc (sizeof (guint32) * n_patches);
+       *got_slots = (guint32 *)g_malloc (sizeof (guint32) * n_patches);
        for (pindex = 0; pindex < n_patches; ++pindex) {
                (*got_slots)[pindex] = decode_value (p, &p);
        }
@@ -3625,7 +3625,7 @@ register_jump_target_got_slot (MonoDomain *domain, MonoMethod *method, gpointer
        mono_domain_lock (domain);
        if (!info->jump_target_got_slot_hash)
                info->jump_target_got_slot_hash = g_hash_table_new (NULL, NULL);
-       list = g_hash_table_lookup (info->jump_target_got_slot_hash, method);
+       list = (GSList *)g_hash_table_lookup (info->jump_target_got_slot_hash, method);
        list = g_slist_prepend (list, got_slot);
        g_hash_table_insert (info->jump_target_got_slot_hash, method, list);
        mono_domain_unlock (domain);
@@ -3665,8 +3665,8 @@ load_method (MonoDomain *domain, MonoAotModule *amodule, MonoImage *image, MonoM
                /*
                 * Obtain the method address by calling a generated function in the LLVM module.
                 */
-               gpointer (*get_method) (int) = amodule->info.llvm_get_method;
-               code = get_method (method_index);
+               gpointer (*get_method) (int) = (gpointer (*)(int))amodule->info.llvm_get_method;
+               code = (guint8 *)get_method (method_index);
        }
 
        if (!code) {
@@ -3683,7 +3683,7 @@ load_method (MonoDomain *domain, MonoAotModule *amodule, MonoImage *image, MonoM
                        }
                        return NULL;
                }
-               code = amodule->methods [method_index];
+               code = (guint8 *)amodule->methods [method_index];
        }
 
        info = &amodule->blob [mono_aot_get_offset (amodule->method_info_offsets, method_index)];
@@ -3810,7 +3810,7 @@ find_aot_method_in_amodule (MonoAotModule *amodule, MonoMethod *method, guint32
                amodule_lock (amodule);
                if (!amodule->method_ref_to_method)
                        amodule->method_ref_to_method = g_hash_table_new (NULL, NULL);
-               m = g_hash_table_lookup (amodule->method_ref_to_method, p);
+               m = (MonoMethod *)g_hash_table_lookup (amodule->method_ref_to_method, p);
                amodule_unlock (amodule);
                if (!m) {
                        m = decode_resolve_method_ref_with_target (amodule, method, p, &p);
@@ -3878,8 +3878,8 @@ find_aot_method (MonoMethod *method, MonoAotModule **out_amodule)
        guint32 hash = mono_aot_method_hash (method);
 
        /* Try the method's module first */
-       *out_amodule = method->klass->image->aot_module;
-       index = find_aot_method_in_amodule (method->klass->image->aot_module, method, hash);
+       *out_amodule = (MonoAotModule *)method->klass->image->aot_module;
+       index = find_aot_method_in_amodule ((MonoAotModule *)method->klass->image->aot_module, method, hash);
        if (index != 0xffffff)
                return index;
 
@@ -3898,7 +3898,7 @@ find_aot_method (MonoMethod *method, MonoAotModule **out_amodule)
 
        index = 0xffffff;
        for (i = 0; i < modules->len; ++i) {
-               MonoAotModule *amodule = g_ptr_array_index (modules, i);
+               MonoAotModule *amodule = (MonoAotModule *)g_ptr_array_index (modules, i);
 
                if (amodule != method->klass->image->aot_module)
                        index = find_aot_method_in_amodule (amodule, method, hash);
@@ -3932,7 +3932,7 @@ init_llvm_method (MonoAotModule *amodule, guint32 method_index, MonoMethod *meth
        MonoJitInfo *jinfo = NULL;
        guint8 *code, *info;
 
-       code = amodule->methods [method_index];
+       code = (guint8 *)amodule->methods [method_index];
        info = &amodule->blob [mono_aot_get_offset (amodule->method_info_offsets, method_index)];
 
        p = info;
@@ -4029,7 +4029,7 @@ init_llvm_method (MonoAotModule *amodule, guint32 method_index, MonoMethod *meth
 void
 mono_aot_init_llvm_method (gpointer aot_module, guint32 method_index)
 {
-       MonoAotModule *amodule = aot_module;
+       MonoAotModule *amodule = (MonoAotModule *)aot_module;
        gboolean res;
 
        // FIXME: Handle failure
@@ -4038,20 +4038,20 @@ mono_aot_init_llvm_method (gpointer aot_module, guint32 method_index)
 }
 
 void
-mono_aot_init_gshared_method_this (gpointer aot_module, guint32 method_index, MonoObject *this)
+mono_aot_init_gshared_method_this (gpointer aot_module, guint32 method_index, MonoObject *this_obj)
 {
-       MonoAotModule *amodule = aot_module;
+       MonoAotModule *amodule = (MonoAotModule *)aot_module;
        gboolean res;
        MonoClass *klass;
        MonoGenericContext *context;
        MonoMethod *method;
 
        // FIXME:
-       g_assert (this);
-       klass = this->vtable->klass;
+       g_assert (this_obj);
+       klass = this_obj->vtable->klass;
 
        amodule_lock (amodule);
-       method = g_hash_table_lookup (amodule->extra_methods, GUINT_TO_POINTER (method_index));
+       method = (MonoMethod *)g_hash_table_lookup (amodule->extra_methods, GUINT_TO_POINTER (method_index));
        amodule_unlock (amodule);
 
        g_assert (method);
@@ -4065,7 +4065,7 @@ mono_aot_init_gshared_method_this (gpointer aot_module, guint32 method_index, Mo
 void
 mono_aot_init_gshared_method_rgctx  (gpointer aot_module, guint32 method_index, MonoMethodRuntimeGenericContext *rgctx)
 {
-       MonoAotModule *amodule = aot_module;
+       MonoAotModule *amodule = (MonoAotModule *)aot_module;
        gboolean res;
        MonoGenericContext context = { NULL, NULL };
        MonoClass *klass = rgctx->class_vtable->klass;
@@ -4093,7 +4093,7 @@ mono_aot_get_method (MonoDomain *domain, MonoMethod *method)
        MonoClass *klass = method->klass;
        MonoMethod *orig_method = method;
        guint32 method_index;
-       MonoAotModule *amodule = klass->image->aot_module;
+       MonoAotModule *amodule = (MonoAotModule *)klass->image->aot_module;
        guint8 *code;
        gboolean cache_result = FALSE;
 
@@ -4106,7 +4106,7 @@ mono_aot_get_method (MonoDomain *domain, MonoMethod *method)
                if (!mscorlib_aot_loaded) {
                        mscorlib_aot_loaded = TRUE;
                        load_aot_module (klass->image->assembly, NULL);
-                       amodule = klass->image->aot_module;
+                       amodule = (MonoAotModule *)klass->image->aot_module;
                }
        }
 
@@ -4153,7 +4153,7 @@ mono_aot_get_method (MonoDomain *domain, MonoMethod *method)
        } else if (method->is_inflated || !method->token) {
                /* This hash table is used to avoid the slower search in the extra_method_table in the AOT image */
                amodule_lock (amodule);
-               code = g_hash_table_lookup (amodule->method_to_code, method);
+               code = (guint8 *)g_hash_table_lookup (amodule->method_to_code, method);
                amodule_unlock (amodule);
                if (code)
                        return code;
@@ -4168,7 +4168,7 @@ mono_aot_get_method (MonoDomain *domain, MonoMethod *method)
                if (method_index == 0xffffff && method->wrapper_type == MONO_WRAPPER_MANAGED_TO_MANAGED && method->klass->rank && strstr (method->name, "System.Collections.Generic")) {
                        MonoMethod *m = mono_aot_get_array_helper_from_wrapper (method);
 
-                       code = mono_aot_get_method (domain, m);
+                       code = (guint8 *)mono_aot_get_method (domain, m);
                        if (code)
                                return code;
                }
@@ -4202,7 +4202,7 @@ mono_aot_get_method (MonoDomain *domain, MonoMethod *method)
                         * Get the code for the <object> instantiation which should be emitted into
                         * the mscorlib aot image by the AOT compiler.
                         */
-                       code = mono_aot_get_method (domain, m);
+                       code = (guint8 *)mono_aot_get_method (domain, m);
                        if (code)
                                return code;
                }
@@ -4240,7 +4240,7 @@ mono_aot_get_method (MonoDomain *domain, MonoMethod *method)
                         * Get the code for the <object> instantiation which should be emitted into
                         * the mscorlib aot image by the AOT compiler.
                         */
-                       code = mono_aot_get_method (domain, m);
+                       code = (guint8 *)mono_aot_get_method (domain, m);
                        if (code)
                                return code;
                }
@@ -4258,7 +4258,7 @@ mono_aot_get_method (MonoDomain *domain, MonoMethod *method)
 
                                        m = mono_marshal_get_array_accessor_wrapper (m);
                                        if (m != method) {
-                                               code = mono_aot_get_method (domain, m);
+                                               code = (guint8 *)mono_aot_get_method (domain, m);
                                                if (code)
                                                        return code;
                                        }
@@ -4307,7 +4307,7 @@ mono_aot_get_method (MonoDomain *domain, MonoMethod *method)
                method_index = mono_metadata_token_index (method->token) - 1;
        }
 
-       code = load_method (domain, amodule, klass->image, method, method->token, method_index);
+       code = (guint8 *)load_method (domain, amodule, klass->image, method, method->token, method_index);
        if (code && cache_result) {
                amodule_lock (amodule);
                g_hash_table_insert (amodule->method_to_code, orig_method, code);
@@ -4323,7 +4323,7 @@ mono_aot_get_method (MonoDomain *domain, MonoMethod *method)
 gpointer
 mono_aot_get_method_from_token (MonoDomain *domain, MonoImage *image, guint32 token)
 {
-       MonoAotModule *aot_module = image->aot_module;
+       MonoAotModule *aot_module = (MonoAotModule *)image->aot_module;
        int method_index;
 
        if (!aot_module)
@@ -4446,7 +4446,7 @@ mono_aot_plt_resolve (gpointer aot_module, guint32 plt_info_offset, guint8 *code
 
        p = &module->blob [plt_info_offset];
 
-       ji.type = decode_value (p, &p);
+       ji.type = (MonoJumpInfoType)decode_value (p, &p);
 
        mp = mono_mempool_new ();
        res = decode_patch (module, mp, &ji, p, &p);
@@ -4468,10 +4468,10 @@ mono_aot_plt_resolve (gpointer aot_module, guint32 plt_info_offset, guint8 *code
         */
        if (mono_aot_only && ji.type == MONO_PATCH_INFO_METHOD && !ji.data.method->is_generic && !mono_method_check_context_used (ji.data.method) && !(ji.data.method->iflags & METHOD_IMPL_ATTRIBUTE_SYNCHRONIZED) &&
                !mono_method_needs_static_rgctx_invoke (ji.data.method, FALSE) && !using_gsharedvt) {
-               target = mono_jit_compile_method (ji.data.method);
+               target = (guint8 *)mono_jit_compile_method (ji.data.method);
                no_ftnptr = TRUE;
        } else {
-               target = mono_resolve_patch_target (NULL, mono_domain_get (), NULL, &ji, TRUE);
+               target = (guint8 *)mono_resolve_patch_target (NULL, mono_domain_get (), NULL, &ji, TRUE);
        }
 
        /*
@@ -4492,7 +4492,7 @@ mono_aot_plt_resolve (gpointer aot_module, guint32 plt_info_offset, guint8 *code
 #ifdef PPC_USES_FUNCTION_DESCRIPTOR
                g_assert (((gpointer*)target) [2] != 0);
 #endif
-               target = mono_create_ftnptr (mono_domain_get (), target);
+               target = (guint8 *)mono_create_ftnptr (mono_domain_get (), target);
        }
 
        mono_mempool_destroy (mp);
@@ -4689,7 +4689,7 @@ load_function_full (MonoAotModule *amodule, const char *name, MonoTrampInfo **ou
                uw_info_len = decode_value (uw_info, &uw_info);
 
                tinfo = g_new0 (MonoTrampInfo, 1);
-               tinfo->code = code;
+               tinfo->code = (guint8 *)code;
                tinfo->code_size = code_size;
                tinfo->uw_info = uw_info;
                tinfo->uw_info_len = uw_info_len;
@@ -4733,7 +4733,7 @@ load_function_full (MonoAotModule *amodule, const char *name, MonoTrampInfo **ou
                                } else if (!strcmp (ji->data.name, "mono_throw_exception")) {
                                        target = mono_get_throw_exception ();
                                } else if (strstr (ji->data.name, "trampoline_func_") == ji->data.name) {
-                                       int tramp_type2 = atoi (ji->data.name + strlen ("trampoline_func_"));
+                                       MonoTrampolineType tramp_type2 = (MonoTrampolineType)atoi (ji->data.name + strlen ("trampoline_func_"));
                                        target = (gpointer)mono_get_trampoline_func (tramp_type2);
                                } else if (strstr (ji->data.name, "specific_trampoline_lazy_fetch_") == ji->data.name) {
                                        /* atoll is needed because the the offset is unsigned */
@@ -4743,7 +4743,7 @@ load_function_full (MonoAotModule *amodule, const char *name, MonoTrampInfo **ou
                                        res = sscanf (ji->data.name, "specific_trampoline_lazy_fetch_%u", &slot);
                                        g_assert (res == 1);
                                        target = mono_create_specific_trampoline (GUINT_TO_POINTER (slot), MONO_TRAMPOLINE_RGCTX_LAZY_FETCH, mono_get_root_domain (), NULL);
-                                       target = mono_create_ftnptr_malloc (target);
+                                       target = mono_create_ftnptr_malloc ((guint8 *)target);
                                } else if (!strcmp (ji->data.name, "mono_thread_get_and_clear_pending_exception")) {
                                        target = mono_thread_get_and_clear_pending_exception;
                                } else if (!strcmp (ji->data.name, "debugger_agent_single_step_from_context")) {
@@ -4764,7 +4764,7 @@ load_function_full (MonoAotModule *amodule, const char *name, MonoTrampInfo **ou
                                /* Hopefully the code doesn't have patches which need method or 
                                 * domain to be set.
                                 */
-                               target = mono_resolve_patch_target (NULL, NULL, code, ji, FALSE);
+                               target = mono_resolve_patch_target (NULL, NULL, (guint8 *)code, ji, FALSE);
                                g_assert (target);
                        }
 
@@ -4793,7 +4793,7 @@ get_mscorlib_aot_module (void)
 
        image = mono_defaults.corlib;
        if (image)
-               amodule = image->aot_module;
+               amodule = (MonoAotModule *)image->aot_module;
        else
                amodule = mscorlib_aot_module;
        g_assert (amodule);
@@ -4820,7 +4820,7 @@ mono_aot_get_trampoline_full (const char *name, MonoTrampInfo **out_tinfo)
                return no_trampolines;
        }
 
-       return mono_create_ftnptr_malloc (load_function_full (amodule, name, out_tinfo));
+       return mono_create_ftnptr_malloc ((guint8 *)load_function_full (amodule, name, out_tinfo));
 }
 
 gpointer
@@ -5154,14 +5154,14 @@ mono_aot_create_specific_trampoline (MonoImage *image, gpointer arg1, MonoTrampo
                g_free (symbol);
        }
 
-       tramp = generic_trampolines [tramp_type];
+       tramp = (guint8 *)generic_trampolines [tramp_type];
        g_assert (tramp);
 
        if (USE_PAGE_TRAMPOLINES) {
-               code = get_new_specific_trampoline_from_page (tramp, arg1);
+               code = (guint8 *)get_new_specific_trampoline_from_page (tramp, arg1);
                tramp_size = 8;
        } else {
-               code = get_numerous_trampoline (MONO_AOT_TRAMP_SPECIFIC, 2, &amodule, &got_offset, &tramp_size);
+               code = (guint8 *)get_numerous_trampoline (MONO_AOT_TRAMP_SPECIFIC, 2, &amodule, &got_offset, &tramp_size);
 
                amodule->got [got_offset] = tramp;
                amodule->got [got_offset + 1] = arg1;
@@ -5181,9 +5181,9 @@ mono_aot_get_static_rgctx_trampoline (gpointer ctx, gpointer addr)
        guint32 got_offset;
 
        if (USE_PAGE_TRAMPOLINES) {
-               code = get_new_rgctx_trampoline_from_page (addr, ctx);
+               code = (guint8 *)get_new_rgctx_trampoline_from_page (addr, ctx);
        } else {
-               code = get_numerous_trampoline (MONO_AOT_TRAMP_STATIC_RGCTX, 2, &amodule, &got_offset, NULL);
+               code = (guint8 *)get_numerous_trampoline (MONO_AOT_TRAMP_STATIC_RGCTX, 2, &amodule, &got_offset, NULL);
 
                amodule->got [got_offset] = ctx;
                amodule->got [got_offset + 1] = addr; 
@@ -5216,12 +5216,12 @@ mono_aot_get_unbox_trampoline (MonoMethod *method)
                }
                g_assert (method_index != 0xffffff);
        } else {
-               amodule = method->klass->image->aot_module;
+               amodule = (MonoAotModule *)method->klass->image->aot_module;
                g_assert (amodule);
        }
 
        if (amodule->info.llvm_get_unbox_tramp) {
-               gpointer (*get_tramp) (int) = amodule->info.llvm_get_unbox_tramp;
+               gpointer (*get_tramp) (int) = (gpointer (*)(int))amodule->info.llvm_get_unbox_tramp;
                code = get_tramp (method_index);
 
                if (code)
@@ -5250,7 +5250,7 @@ mono_aot_get_unbox_trampoline (MonoMethod *method)
        code = get_call_table_entry (amodule->unbox_trampoline_addresses, entry_index);
        g_assert (code);
 
-       tinfo = mono_tramp_info_create (NULL, code, 0, NULL, NULL);
+       tinfo = mono_tramp_info_create (NULL, (guint8 *)code, 0, NULL, NULL);
 
        symbol_addr = read_unwind_info (amodule, tinfo, "unbox_trampoline_p");
        if (!symbol_addr) {
@@ -5270,7 +5270,7 @@ mono_aot_get_lazy_fetch_trampoline (guint32 slot)
 {
        char *symbol;
        gpointer code;
-       MonoAotModule *amodule = mono_defaults.corlib->aot_module;
+       MonoAotModule *amodule = (MonoAotModule *)mono_defaults.corlib->aot_module;
        guint32 index = MONO_RGCTX_SLOT_INDEX (slot);
        static int count = 0;
 
@@ -5284,7 +5284,7 @@ mono_aot_get_lazy_fetch_trampoline (guint32 slot)
                 */
                if (!addr)
                        addr = load_function (amodule, "rgctx_fetch_trampoline_general");
-               info = mono_domain_alloc0 (mono_get_root_domain (), sizeof (gpointer) * 2);
+               info = (void **)mono_domain_alloc0 (mono_get_root_domain (), sizeof (gpointer) * 2);
                info [0] = GUINT_TO_POINTER (slot);
                info [1] = mono_create_specific_trampoline (GUINT_TO_POINTER (slot), MONO_TRAMPOLINE_RGCTX_LAZY_FETCH, mono_get_root_domain (), NULL);
                code = mono_aot_get_static_rgctx_trampoline (info, addr);
@@ -5292,7 +5292,7 @@ mono_aot_get_lazy_fetch_trampoline (guint32 slot)
        }
 
        symbol = mono_get_rgctx_fetch_trampoline_name (slot);
-       code = load_function (mono_defaults.corlib->aot_module, symbol);
+       code = load_function ((MonoAotModule *)mono_defaults.corlib->aot_module, symbol);
        g_free (symbol);
        /* The caller expects an ftnptr */
        return mono_create_ftnptr (mono_domain_get (), code);
@@ -5325,7 +5325,7 @@ mono_aot_get_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckItem
        }
 
        /* Save the entries into an array */
-       buf = mono_domain_alloc (domain, (real_count + 1) * 2 * sizeof (gpointer));
+       buf = (void **)mono_domain_alloc (domain, (real_count + 1) * 2 * sizeof (gpointer));
        index = 0;
        for (i = 0; i < count; ++i) {
                MonoIMTCheckItem *item = imt_entries [i];               
@@ -5337,7 +5337,7 @@ mono_aot_get_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckItem
 
                buf [(index * 2)] = item->key;
                if (item->has_target_code) {
-                       gpointer *p = mono_domain_alloc (domain, sizeof (gpointer));
+                       gpointer *p = (gpointer *)mono_domain_alloc (domain, sizeof (gpointer));
                        *p = item->value.target_code;
                        buf [(index * 2) + 1] = p;
                } else {
@@ -5367,9 +5367,9 @@ mono_aot_get_gsharedvt_arg_trampoline (gpointer arg, gpointer addr)
        guint32 got_offset;
 
        if (USE_PAGE_TRAMPOLINES) {
-               code = get_new_gsharedvt_arg_trampoline_from_page (addr, arg);
+               code = (guint8 *)get_new_gsharedvt_arg_trampoline_from_page (addr, arg);
        } else {
-               code = get_numerous_trampoline (MONO_AOT_TRAMP_GSHAREDVT_ARG, 2, &amodule, &got_offset, NULL);
+               code = (guint8 *)get_numerous_trampoline (MONO_AOT_TRAMP_GSHAREDVT_ARG, 2, &amodule, &got_offset, NULL);
 
                amodule->got [got_offset] = arg;
                amodule->got [got_offset + 1] = addr; 
index a6d4915ee3697032916385ff1f2e81d0e5f6ba34..aeb11a0ff0e7ab327bac24441a82e0854a51cec2 100644 (file)
@@ -85,7 +85,7 @@ mono_branch_optimize_exception_target (MonoCompile *cfg, MonoBasicBlock *bb, con
                                                MONO_INST_NEW (cfg, jump, OP_BR);
 
                                                /* Allocate memory for our branch target */
-                                               jump->inst_i1 = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoInst));
+                                               jump->inst_i1 = (MonoInst *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoInst));
                                                jump->inst_true_bb = targetbb;
 
                                                if (cfg->verbose_level > 2) 
@@ -851,7 +851,7 @@ replace_out_block_in_code (MonoBasicBlock *bb, MonoBasicBlock *orig, MonoBasicBl
                                        ins->inst_false_bb = repl;
                        } else if (MONO_IS_JUMP_TABLE (ins)) {
                                int i;
-                               MonoJumpInfoBBTable *table = MONO_JUMP_TABLE_FROM_INS (ins);
+                               MonoJumpInfoBBTable *table = (MonoJumpInfoBBTable *)MONO_JUMP_TABLE_FROM_INS (ins);
                                for (i = 0; i < table->table_size; i++ ) {
                                        if (table->table [i] == orig)
                                                table->table [i] = repl;
@@ -995,7 +995,7 @@ mono_merge_basic_blocks (MonoCompile *cfg, MonoBasicBlock *bb, MonoBasicBlock *b
                for (inst = bb->code; inst != NULL; inst = inst->next) {
                        if (MONO_IS_JUMP_TABLE (inst)) {
                                int i;
-                               MonoJumpInfoBBTable *table = MONO_JUMP_TABLE_FROM_INS (inst);
+                               MonoJumpInfoBBTable *table = (MonoJumpInfoBBTable *)MONO_JUMP_TABLE_FROM_INS (inst);
                                for (i = 0; i < table->table_size; i++ ) {
                                        /* Might be already NULL from a previous merge */
                                        if (table->table [i])
@@ -1137,7 +1137,7 @@ mono_remove_critical_edges (MonoCompile *cfg)
                                 * overwrite the sreg1 of the ins.
                                 */
                                if ((in_bb->out_count > 1) || (in_bb->out_count == 1 && in_bb->last_ins && in_bb->last_ins->opcode == OP_BR_REG)) {
-                                       MonoBasicBlock *new_bb = mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoBasicBlock));
+                                       MonoBasicBlock *new_bb = (MonoBasicBlock *)mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoBasicBlock));
                                        new_bb->block_num = cfg->num_bblocks++;
 //                                     new_bb->real_offset = bb->real_offset;
                                        new_bb->region = bb->region;
@@ -1161,7 +1161,7 @@ mono_remove_critical_edges (MonoCompile *cfg)
                                                        /* We cannot add any inst to the entry BB, so we must */
                                                        /* put a new BB in the middle to hold the OP_BR */
                                                        MonoInst *jump;
-                                                       MonoBasicBlock *new_bb_after_entry = mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoBasicBlock));
+                                                       MonoBasicBlock *new_bb_after_entry = (MonoBasicBlock *)mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoBasicBlock));
                                                        new_bb_after_entry->block_num = cfg->num_bblocks++;
 //                                                     new_bb_after_entry->real_offset = bb->real_offset;
                                                        new_bb_after_entry->region = bb->region;
@@ -1190,10 +1190,10 @@ mono_remove_critical_edges (MonoCompile *cfg)
                                        previous_bb = new_bb;
                                        
                                        /* Setup in_bb and out_bb */
-                                       new_bb->in_bb = mono_mempool_alloc ((cfg)->mempool, sizeof (MonoBasicBlock*));
+                                       new_bb->in_bb = (MonoBasicBlock **)mono_mempool_alloc ((cfg)->mempool, sizeof (MonoBasicBlock*));
                                        new_bb->in_bb [0] = in_bb;
                                        new_bb->in_count = 1;
-                                       new_bb->out_bb = mono_mempool_alloc ((cfg)->mempool, sizeof (MonoBasicBlock*));
+                                       new_bb->out_bb = (MonoBasicBlock **)mono_mempool_alloc ((cfg)->mempool, sizeof (MonoBasicBlock*));
                                        new_bb->out_bb [0] = bb;
                                        new_bb->out_count = 1;
                                        
index 92ff7d8ce1f1fdeaa03cf1e759b33b5e0b1dcf2f..8ee0457a5647100e15bc48df186fd318859b5129 100644 (file)
@@ -451,7 +451,7 @@ mono_debug_serialize_debug_info (MonoCompile *cfg, guint8 **out_buf, guint32 *bu
        }
 
        size = ((jit->num_params + jit->num_locals + 1) * 10) + (jit->num_line_numbers * 10) + 64;
-       p = buf = g_malloc (size);
+       p = buf = (guint8 *)g_malloc (size);
        encode_value (jit->epilogue_begin, p, &p);
        encode_value (jit->prologue_end, p, &p);
        encode_value (jit->code_size, p, &p);
@@ -650,7 +650,7 @@ void
 mono_debug_print_vars (gpointer ip, gboolean only_arguments)
 {
        MonoDomain *domain = mono_domain_get ();
-       MonoJitInfo *ji = mono_jit_info_table_find (domain, ip);
+       MonoJitInfo *ji = mono_jit_info_table_find (domain, (char *)ip);
        MonoDebugMethodJitInfo *jit;
        int i;
 
@@ -730,7 +730,7 @@ mono_debugger_method_has_breakpoint (MonoMethod *method)
                return 0;
 
        for (i = 0; i < breakpoints->len; i++) {
-               MiniDebugBreakpointInfo *info = g_ptr_array_index (breakpoints, i);
+               MiniDebugBreakpointInfo *info = (MiniDebugBreakpointInfo *)g_ptr_array_index (breakpoints, i);
 
                if (!mono_method_desc_full_match (info->desc, method))
                        continue;
index 68e91c69713543f8adc162ff4a146becdd23ffb9..a8e6b3920eb370ed43e229f6f4ce9d1317dffe39 100644 (file)
@@ -818,7 +818,7 @@ parse_address (char *address, char **host, int *port)
        if (pos == NULL || pos == address)
                return 1;
 
-       *host = g_malloc (pos - address + 1);
+       *host = (char *)g_malloc (pos - address + 1);
        strncpy (*host, address, pos - address);
        (*host) [pos - address] = '\0';
 
@@ -973,7 +973,7 @@ mono_debugger_agent_init (void)
        mono_coop_cond_init (&debugger_thread_exited_cond);
 
        mono_profiler_install ((MonoProfiler*)&debugger_profiler, runtime_shutdown);
-       mono_profiler_set_events (MONO_PROFILE_APPDOMAIN_EVENTS | MONO_PROFILE_THREADS | MONO_PROFILE_ASSEMBLY_EVENTS | MONO_PROFILE_JIT_COMPILATION | MONO_PROFILE_METHOD_EVENTS);
+       mono_profiler_set_events ((MonoProfileFlags)(MONO_PROFILE_APPDOMAIN_EVENTS | MONO_PROFILE_THREADS | MONO_PROFILE_ASSEMBLY_EVENTS | MONO_PROFILE_JIT_COMPILATION | MONO_PROFILE_METHOD_EVENTS));
        mono_profiler_install_runtime_initialized (runtime_initialized);
        mono_profiler_install_appdomain (NULL, appdomain_load, appdomain_start_unload, appdomain_unload);
        mono_profiler_install_thread (thread_startup, thread_end);
@@ -1071,7 +1071,7 @@ finish_agent_init (gboolean on_startup)
                argv [2] = agent_config.address;
                argv [3] = NULL;
 
-               res = g_spawn_async_with_pipes (NULL, argv, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+               res = g_spawn_async_with_pipes (NULL, argv, NULL, (GSpawnFlags)0, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
                if (!res) {
                        fprintf (stderr, "Failed to execute '%s'.\n", agent_config.launch);
                        exit (1);
@@ -1665,7 +1665,7 @@ decode_string (guint8 *buf, guint8 **endbuf, guint8 *limit)
                return NULL;
        }
 
-       s = g_malloc (len + 1);
+       s = (char *)g_malloc (len + 1);
        g_assert (s);
 
        memcpy (s, buf, len);
@@ -1683,7 +1683,7 @@ decode_string (guint8 *buf, guint8 **endbuf, guint8 *limit)
 static inline void
 buffer_init (Buffer *buf, int size)
 {
-       buf->buf = g_malloc (size);
+       buf->buf = (guint8 *)g_malloc (size);
        buf->p = buf->buf;
        buf->end = buf->buf + size;
 }
@@ -1699,7 +1699,7 @@ buffer_make_room (Buffer *buf, int size)
 {
        if (buf->end - buf->p < size) {
                int new_size = buf->end - buf->buf + size + 32;
-               guint8 *p = g_realloc (buf->buf, new_size);
+               guint8 *p = (guint8 *)g_realloc (buf->buf, new_size);
                size = buf->p - buf->buf;
                buf->buf = p;
                buf->p = p + size;
@@ -1908,7 +1908,7 @@ static MonoGHashTable *suspended_objs;
 static void
 free_objref (gpointer value)
 {
-       ObjRef *o = value;
+       ObjRef *o = (ObjRef *)value;
 
        mono_gchandle_free (o->handle);
 
@@ -1964,9 +1964,9 @@ get_objref (MonoObject *obj)
                 */
                hash = mono_object_hash (obj);
 
-               reflist = g_hash_table_lookup (obj_to_objref, GINT_TO_POINTER (hash));
+               reflist = (GSList *)g_hash_table_lookup (obj_to_objref, GINT_TO_POINTER (hash));
                for (l = reflist; l; l = l->next) {
-                       ref = l->data;
+                       ref = (ObjRef *)l->data;
                        if (ref && mono_gchandle_get_target (ref->handle) == obj) {
                                mono_loader_unlock ();
                                return ref;
@@ -1974,7 +1974,7 @@ get_objref (MonoObject *obj)
                }
        } else {
                /* Use a hash table with masked pointers to internalize object references */
-               ref = g_hash_table_lookup (obj_to_objref, GINT_TO_POINTER (~((gsize)obj)));
+               ref = (ObjRef *)g_hash_table_lookup (obj_to_objref, GINT_TO_POINTER (~((gsize)obj)));
                /* ref might refer to a different object with the same addr which was GCd */
                if (ref && mono_gchandle_get_target (ref->handle) == obj) {
                        mono_loader_unlock ();
@@ -2032,7 +2032,7 @@ get_object_allow_null (int objid, MonoObject **obj)
 
        if (objid == 0) {
                *obj = NULL;
-               return 0;
+               return ERR_NONE;
        }
 
        if (!objrefs)
@@ -2040,14 +2040,14 @@ get_object_allow_null (int objid, MonoObject **obj)
 
        mono_loader_lock ();
 
-       ref = g_hash_table_lookup (objrefs, GINT_TO_POINTER (objid));
+       ref = (ObjRef *)g_hash_table_lookup (objrefs, GINT_TO_POINTER (objid));
 
        if (ref) {
                *obj = mono_gchandle_get_target (ref->handle);
                mono_loader_unlock ();
                if (!(*obj))
                        return ERR_INVALID_OBJECT;
-               return 0;
+               return ERR_NONE;
        } else {
                mono_loader_unlock ();
                return ERR_INVALID_OBJECT;
@@ -2057,13 +2057,13 @@ get_object_allow_null (int objid, MonoObject **obj)
 static ErrorCode
 get_object (int objid, MonoObject **obj)
 {
-       int err = get_object_allow_null (objid, obj);
+       ErrorCode err = get_object_allow_null (objid, obj);
 
-       if (err)
+       if (err != ERR_NONE)
                return err;
        if (!(*obj))
                return ERR_INVALID_OBJECT;
-       return 0;
+       return ERR_NONE;
 }
 
 static inline int
@@ -2159,7 +2159,7 @@ ids_cleanup (void)
 void
 mono_debugger_agent_free_domain_info (MonoDomain *domain)
 {
-       AgentDomainInfo *info = domain_jit_info (domain)->agent_info;
+       AgentDomainInfo *info = (AgentDomainInfo *)domain_jit_info (domain)->agent_info;
        int i, j;
        GHashTableIter iter;
        GPtrArray *file_names;
@@ -2201,7 +2201,7 @@ mono_debugger_agent_free_domain_info (MonoDomain *domain)
        for (i = 0; i < ID_NUM; ++i) {
                if (ids [i]) {
                        for (j = 0; j < ids [i]->len; ++j) {
-                               Id *id = g_ptr_array_index (ids [i], j);
+                               Id *id = (Id *)g_ptr_array_index (ids [i], j);
                                if (id->domain == domain)
                                        id->domain = NULL;
                        }
@@ -2221,9 +2221,10 @@ get_agent_domain_info (MonoDomain *domain)
 
        mono_domain_lock (domain);
 
-       info = domain_jit_info (domain)->agent_info;
+       info = (AgentDomainInfo *)domain_jit_info (domain)->agent_info;
        if (!info) {
-               info = domain_jit_info (domain)->agent_info = g_new0 (AgentDomainInfo, 1);
+               info = g_new0 (AgentDomainInfo, 1);
+               domain_jit_info (domain)->agent_info = info;
                info->loaded_classes = g_hash_table_new (mono_aligned_addr_hash, NULL);
                info->source_files = g_hash_table_new (mono_aligned_addr_hash, NULL);
                info->source_file_to_class = g_hash_table_new (g_str_hash, g_str_equal);
@@ -2251,7 +2252,7 @@ get_id (MonoDomain *domain, IdType type, gpointer val)
        if (info->val_to_id [type] == NULL)
                info->val_to_id [type] = g_hash_table_new (mono_aligned_addr_hash, NULL);
 
-       id = g_hash_table_lookup (info->val_to_id [type], val);
+       id = (Id *)g_hash_table_lookup (info->val_to_id [type], val);
        if (id) {
                dbg_unlock ();
                return id->id;
@@ -2272,13 +2273,13 @@ get_id (MonoDomain *domain, IdType type, gpointer val)
 }
 
 static inline gpointer
-decode_ptr_id (guint8 *buf, guint8 **endbuf, guint8 *limit, IdType type, MonoDomain **domain, int *err)
+decode_ptr_id (guint8 *buf, guint8 **endbuf, guint8 *limit, IdType type, MonoDomain **domain, ErrorCode *err)
 {
        Id *res;
 
        int id = decode_id (buf, endbuf, limit);
 
-       *err = 0;
+       *err = ERR_NONE;
        if (domain)
                *domain = NULL;
 
@@ -2289,7 +2290,7 @@ decode_ptr_id (guint8 *buf, guint8 **endbuf, guint8 *limit, IdType type, MonoDom
        dbg_lock ();
        g_assert (id > 0 && id <= ids [type]->len);
 
-       res = g_ptr_array_index (ids [type], GPOINTER_TO_INT (id - 1));
+       res = (Id *)g_ptr_array_index (ids [type], GPOINTER_TO_INT (id - 1));
        dbg_unlock ();
 
        if (res->domain == NULL) {
@@ -2314,11 +2315,11 @@ buffer_add_ptr_id (Buffer *buf, MonoDomain *domain, IdType type, gpointer val)
 }
 
 static inline MonoClass*
-decode_typeid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, int *err)
+decode_typeid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, ErrorCode *err)
 {
        MonoClass *klass;
 
-       klass = decode_ptr_id (buf, endbuf, limit, ID_TYPE, domain, err);
+       klass = (MonoClass *)decode_ptr_id (buf, endbuf, limit, ID_TYPE, domain, err);
        if (G_UNLIKELY (log_level >= 2) && klass) {
                char *s;
 
@@ -2330,23 +2331,23 @@ decode_typeid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain,
 }
 
 static inline MonoAssembly*
-decode_assemblyid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, int *err)
+decode_assemblyid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, ErrorCode *err)
 {
-       return decode_ptr_id (buf, endbuf, limit, ID_ASSEMBLY, domain, err);
+       return (MonoAssembly *)decode_ptr_id (buf, endbuf, limit, ID_ASSEMBLY, domain, err);
 }
 
 static inline MonoImage*
-decode_moduleid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, int *err)
+decode_moduleid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, ErrorCode *err)
 {
-       return decode_ptr_id (buf, endbuf, limit, ID_MODULE, domain, err);
+       return (MonoImage *)decode_ptr_id (buf, endbuf, limit, ID_MODULE, domain, err);
 }
 
 static inline MonoMethod*
-decode_methodid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, int *err)
+decode_methodid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, ErrorCode *err)
 {
        MonoMethod *m;
 
-       m = decode_ptr_id (buf, endbuf, limit, ID_METHOD, domain, err);
+       m = (MonoMethod *)decode_ptr_id (buf, endbuf, limit, ID_METHOD, domain, err);
        if (G_UNLIKELY (log_level >= 2) && m) {
                char *s;
 
@@ -2358,21 +2359,21 @@ decode_methodid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domai
 }
 
 static inline MonoClassField*
-decode_fieldid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, int *err)
+decode_fieldid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, ErrorCode *err)
 {
-       return decode_ptr_id (buf, endbuf, limit, ID_FIELD, domain, err);
+       return (MonoClassField *)decode_ptr_id (buf, endbuf, limit, ID_FIELD, domain, err);
 }
 
 static inline MonoDomain*
-decode_domainid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, int *err)
+decode_domainid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, ErrorCode *err)
 {
-       return decode_ptr_id (buf, endbuf, limit, ID_DOMAIN, domain, err);
+       return (MonoDomain *)decode_ptr_id (buf, endbuf, limit, ID_DOMAIN, domain, err);
 }
 
 static inline MonoProperty*
-decode_propertyid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, int *err)
+decode_propertyid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, ErrorCode *err)
 {
-       return decode_ptr_id (buf, endbuf, limit, ID_PROPERTY, domain, err);
+       return (MonoProperty *)decode_ptr_id (buf, endbuf, limit, ID_PROPERTY, domain, err);
 }
 
 static inline void
@@ -2455,7 +2456,7 @@ save_thread_context (MonoContext *ctx)
 {
        DebuggerTlsData *tls;
 
-       tls = mono_native_tls_get_value (debugger_tls_id);
+       tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
        g_assert (tls);
 
        if (ctx)
@@ -2499,7 +2500,7 @@ typedef struct
 static gboolean
 get_last_frame (StackFrameInfo *info, MonoContext *ctx, gpointer user_data)
 {
-       GetLastFrameUserData *data = user_data;
+       GetLastFrameUserData *data = (GetLastFrameUserData *)user_data;
 
        if (info->type == FRAME_TYPE_MANAGED_TO_NATIVE || info->type == FRAME_TYPE_TRAMPOLINE)
                return FALSE;
@@ -2612,7 +2613,7 @@ thread_interrupt (DebuggerTlsData *tls, MonoThreadInfo *info, MonoJitInfo *ji)
 static void
 reset_native_thread_suspend_state (gpointer key, gpointer value, gpointer user_data)
 {
-       DebuggerTlsData *tls = value;
+       DebuggerTlsData *tls = (DebuggerTlsData *)value;
 
        if (!tls->really_suspended && tls->suspended) {
                tls->suspended = FALSE;
@@ -2634,13 +2635,13 @@ typedef struct {
 static SuspendThreadResult
 debugger_interrupt_critical (MonoThreadInfo *info, gpointer user_data)
 {
-       InterruptData *data = user_data;
+       InterruptData *data = (InterruptData *)user_data;
        MonoJitInfo *ji;
 
        data->valid_info = TRUE;
        ji = mono_jit_info_table_find_internal (
-                       mono_thread_info_get_suspend_state (info)->unwind_data [MONO_UNWIND_DATA_DOMAIN],
-                       MONO_CONTEXT_GET_IP (&mono_thread_info_get_suspend_state (info)->ctx),
+                       (MonoDomain *)mono_thread_info_get_suspend_state (info)->unwind_data [MONO_UNWIND_DATA_DOMAIN],
+                       (char *)MONO_CONTEXT_GET_IP (&mono_thread_info_get_suspend_state (info)->ctx),
                        TRUE,
                        TRUE);
 
@@ -2657,8 +2658,8 @@ debugger_interrupt_critical (MonoThreadInfo *info, gpointer user_data)
 static void
 notify_thread (gpointer key, gpointer value, gpointer user_data)
 {
-       MonoInternalThread *thread = key;
-       DebuggerTlsData *tls = value;
+       MonoInternalThread *thread = (MonoInternalThread *)key;
+       DebuggerTlsData *tls = (DebuggerTlsData *)value;
        MonoNativeThreadId tid = MONO_UINT_TO_NATIVE_THREAD_ID (thread->tid);
 
        if (mono_native_thread_id_equals (mono_native_thread_id_get (), tid) || tls->terminated)
@@ -2683,7 +2684,7 @@ notify_thread (gpointer key, gpointer value, gpointer user_data)
 static void
 process_suspend (DebuggerTlsData *tls, MonoContext *ctx)
 {
-       guint8 *ip = MONO_CONTEXT_GET_IP (ctx);
+       guint8 *ip = (guint8 *)MONO_CONTEXT_GET_IP (ctx);
        MonoJitInfo *ji;
        MonoMethod *method;
 
@@ -2817,7 +2818,7 @@ resume_thread (MonoInternalThread *thread)
 
        mono_loader_lock ();
 
-       tls = mono_g_hash_table_lookup (thread_to_tls, thread);
+       tls = (DebuggerTlsData *)mono_g_hash_table_lookup (thread_to_tls, thread);
        g_assert (tls);
 
        mono_coop_mutex_lock (&suspend_mutex);
@@ -2858,7 +2859,7 @@ static void
 invalidate_frames (DebuggerTlsData *tls)
 {
        if (!tls)
-               tls = mono_native_tls_get_value (debugger_tls_id);
+               tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
        g_assert (tls);
 
        free_frames (tls->frames, tls->frame_count);
@@ -2892,7 +2893,7 @@ suspend_current (void)
                return;
        }
 
-       tls = mono_native_tls_get_value (debugger_tls_id);
+       tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
        g_assert (tls);
 
        mono_coop_mutex_lock (&suspend_mutex);
@@ -2938,7 +2939,7 @@ suspend_current (void)
 static void
 count_thread (gpointer key, gpointer value, gpointer user_data)
 {
-       DebuggerTlsData *tls = value;
+       DebuggerTlsData *tls = (DebuggerTlsData *)value;
 
        if (!tls->suspended && !tls->terminated)
                *(int*)user_data = *(int*)user_data + 1;
@@ -3016,7 +3017,7 @@ typedef struct {
 static gboolean
 process_frame (StackFrameInfo *info, MonoContext *ctx, gpointer user_data)
 {
-       ComputeFramesUserData *ud = user_data;
+       ComputeFramesUserData *ud = (ComputeFramesUserData *)user_data;
        StackFrame *frame;
        MonoMethod *method, *actual_method, *api_method;
        SeqPoint sp;
@@ -3091,7 +3092,7 @@ process_frame (StackFrameInfo *info, MonoContext *ctx, gpointer user_data)
 static gboolean
 process_filter_frame (StackFrameInfo *info, MonoContext *ctx, gpointer user_data)
 {
-       ComputeFramesUserData *ud = user_data;
+       ComputeFramesUserData *ud = (ComputeFramesUserData *)user_data;
 
        /*
         * 'tls->filter_ctx' is the location of the throw site.
@@ -3114,7 +3115,7 @@ static StackFrame**
 compute_frame_info_from (MonoInternalThread *thread, DebuggerTlsData *tls, MonoThreadUnwindState *state, int *out_nframes)
 {
        ComputeFramesUserData user_data;
-       MonoUnwindOptions opts = MONO_UNWIND_DEFAULT|MONO_UNWIND_REG_LOCATIONS;
+       MonoUnwindOptions opts = (MonoUnwindOptions)(MONO_UNWIND_DEFAULT | MONO_UNWIND_REG_LOCATIONS);
        StackFrame **res;
        int i, nframes;
        GSList *l;
@@ -3128,7 +3129,7 @@ compute_frame_info_from (MonoInternalThread *thread, DebuggerTlsData *tls, MonoT
        res = g_new0 (StackFrame*, nframes);
        l = user_data.frames;
        for (i = 0; i < nframes; ++i) {
-               res [i] = l->data;
+               res [i] = (StackFrame *)l->data;
                l = l->next;
        }
        *out_nframes = nframes;
@@ -3143,7 +3144,7 @@ compute_frame_info (MonoInternalThread *thread, DebuggerTlsData *tls)
        GSList *tmp;
        int i, findex, new_frame_count;
        StackFrame **new_frames, *f;
-       MonoUnwindOptions opts = MONO_UNWIND_DEFAULT|MONO_UNWIND_REG_LOCATIONS;
+       MonoUnwindOptions opts = (MonoUnwindOptions)(MONO_UNWIND_DEFAULT | MONO_UNWIND_REG_LOCATIONS);
 
        // FIXME: Locking on tls
        if (tls->frames && tls->frames_up_to_date)
@@ -3184,7 +3185,7 @@ compute_frame_info (MonoInternalThread *thread, DebuggerTlsData *tls)
        new_frames = g_new0 (StackFrame*, new_frame_count);
        findex = 0;
        for (tmp = user_data.frames; tmp; tmp = tmp->next) {
-               f = tmp->data;
+               f = (StackFrame *)tmp->data;
 
                /* 
                 * Reuse the id for already existing stack frames, so invokes don't invalidate
@@ -3222,7 +3223,7 @@ static void
 emit_appdomain_load (gpointer key, gpointer value, gpointer user_data)
 {
        process_profiler_event (EVENT_KIND_APPDOMAIN_CREATE, value);
-       g_hash_table_foreach (get_agent_domain_info (value)->loaded_classes, emit_type_load, NULL);
+       g_hash_table_foreach (get_agent_domain_info ((MonoDomain *)value)->loaded_classes, emit_type_load, NULL);
 }
 
 /*
@@ -3383,7 +3384,7 @@ create_event_list (EventKind event, GPtrArray *reqs, MonoJitInfo *ji, EventInfo
                return NULL;
 
        for (i = 0; i < reqs->len; ++i) {
-               EventRequest *req = g_ptr_array_index (reqs, i);
+               EventRequest *req = (EventRequest *)g_ptr_array_index (reqs, i);
                if (req->event_kind == event) {
                        gboolean filtered = FALSE;
 
@@ -3439,7 +3440,7 @@ create_event_list (EventKind event, GPtrArray *reqs, MonoJitInfo *ji, EventInfo
                                                if (minfo) {
                                                        mono_debug_get_seq_points (minfo, &source_file, &source_file_list, NULL, NULL, NULL);
                                                        for (i = 0; i < source_file_list->len; ++i) {
-                                                               sinfo = g_ptr_array_index (source_file_list, i);
+                                                               sinfo = (MonoDebugSourceInfo *)g_ptr_array_index (source_file_list, i);
                                                                /*
                                                                 * Do a case-insesitive match by converting the file name to
                                                                 * lowercase.
@@ -3619,7 +3620,7 @@ process_event (EventKind event, gpointer arg, gint32 il_offset, MonoContext *ctx
                        thread = mono_thread_current ();
 
                if (event == EVENT_KIND_VM_START && arg != NULL)
-                       thread = arg;
+                       thread = (MonoThread *)arg;
 
                buffer_add_objid (&buf, (MonoObject*)thread); // thread
 
@@ -3629,32 +3630,32 @@ process_event (EventKind event, gpointer arg, gint32 il_offset, MonoContext *ctx
                        break;
                case EVENT_KIND_APPDOMAIN_CREATE:
                case EVENT_KIND_APPDOMAIN_UNLOAD:
-                       buffer_add_domainid (&buf, arg);
+                       buffer_add_domainid (&buf, (MonoDomain *)arg);
                        break;
                case EVENT_KIND_METHOD_ENTRY:
                case EVENT_KIND_METHOD_EXIT:
-                       buffer_add_methodid (&buf, domain, arg);
+                       buffer_add_methodid (&buf, domain, (MonoMethod *)arg);
                        break;
                case EVENT_KIND_ASSEMBLY_LOAD:
-                       buffer_add_assemblyid (&buf, domain, arg);
+                       buffer_add_assemblyid (&buf, domain, (MonoAssembly *)arg);
                        break;
                case EVENT_KIND_ASSEMBLY_UNLOAD: {
                        DebuggerTlsData *tls;
 
                        /* The domain the assembly belonged to is not equal to the current domain */
-                       tls = mono_native_tls_get_value (debugger_tls_id);
+                       tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
                        g_assert (tls);
                        g_assert (tls->domain_unloading);
 
-                       buffer_add_assemblyid (&buf, tls->domain_unloading, arg);
+                       buffer_add_assemblyid (&buf, tls->domain_unloading, (MonoAssembly *)arg);
                        break;
                }
                case EVENT_KIND_TYPE_LOAD:
-                       buffer_add_typeid (&buf, domain, arg);
+                       buffer_add_typeid (&buf, domain, (MonoClass *)arg);
                        break;
                case EVENT_KIND_BREAKPOINT:
                case EVENT_KIND_STEP:
-                       buffer_add_methodid (&buf, domain, arg);
+                       buffer_add_methodid (&buf, domain, (MonoMethod *)arg);
                        buffer_add_long (&buf, il_offset);
                        break;
                case EVENT_KIND_VM_START:
@@ -3665,7 +3666,7 @@ process_event (EventKind event, gpointer arg, gint32 il_offset, MonoContext *ctx
                                buffer_add_int (&buf, mono_environment_exitcode_get ());
                        break;
                case EVENT_KIND_EXCEPTION: {
-                       EventInfo *ei = arg;
+                       EventInfo *ei = (EventInfo *)arg;
                        buffer_add_objid (&buf, ei->exc);
                        /*
                         * We are not yet suspending, so get_objref () will not keep this object alive. So we need to do it
@@ -3677,7 +3678,7 @@ process_event (EventKind event, gpointer arg, gint32 il_offset, MonoContext *ctx
                case EVENT_KIND_USER_BREAK:
                        break;
                case EVENT_KIND_USER_LOG: {
-                       EventInfo *ei = arg;
+                       EventInfo *ei = (EventInfo *)arg;
                        buffer_add_int (&buf, ei->level);
                        buffer_add_string (&buf, ei->category ? ei->category : "");
                        buffer_add_string (&buf, ei->message ? ei->message : "");
@@ -3759,7 +3760,7 @@ process_profiler_event (EventKind event, gpointer arg)
        EventInfo ei, *ei_arg = NULL;
 
        if (event == EVENT_KIND_TYPE_LOAD) {
-               ei.klass = arg;
+               ei.klass = (MonoClass *)arg;
                ei_arg = &ei;
        }
 
@@ -3799,7 +3800,7 @@ thread_startup (MonoProfiler *prof, uintptr_t tid)
        g_assert (mono_native_thread_id_equals (MONO_UINT_TO_NATIVE_THREAD_ID (tid), MONO_UINT_TO_NATIVE_THREAD_ID (thread->tid)));
 
        mono_loader_lock ();
-       old_thread = mono_g_hash_table_lookup (tid_to_thread, GUINT_TO_POINTER (tid));
+       old_thread = (MonoInternalThread *)mono_g_hash_table_lookup (tid_to_thread, GUINT_TO_POINTER (tid));
        mono_loader_unlock ();
        if (old_thread) {
                if (thread == old_thread) {
@@ -3823,7 +3824,7 @@ thread_startup (MonoProfiler *prof, uintptr_t tid)
                }
        }
 
-       tls = mono_native_tls_get_value (debugger_tls_id);
+       tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
        g_assert (!tls);
        // FIXME: Free this somewhere
        tls = g_new0 (DebuggerTlsData, 1);
@@ -3854,10 +3855,10 @@ thread_end (MonoProfiler *prof, uintptr_t tid)
        DebuggerTlsData *tls = NULL;
 
        mono_loader_lock ();
-       thread = mono_g_hash_table_lookup (tid_to_thread, GUINT_TO_POINTER (tid));
+       thread = (MonoInternalThread *)mono_g_hash_table_lookup (tid_to_thread, GUINT_TO_POINTER (tid));
        if (thread) {
                mono_g_hash_table_remove (tid_to_thread_obj, GUINT_TO_POINTER (tid));
-               tls = mono_g_hash_table_lookup (thread_to_tls, thread);
+               tls = (DebuggerTlsData *)mono_g_hash_table_lookup (thread_to_tls, thread);
                if (tls) {
                        /* FIXME: Maybe we need to free this instead, but some code can't handle that */
                        tls->terminated = TRUE;
@@ -3909,7 +3910,7 @@ appdomain_start_unload (MonoProfiler *prof, MonoDomain *domain)
         * Remember the currently unloading appdomain as it is needed to generate
         * proper ids for unloading assemblies.
         */
-       tls = mono_native_tls_get_value (debugger_tls_id);
+       tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
        g_assert (tls);
        tls->domain_unloading = domain;
 }
@@ -3922,7 +3923,7 @@ appdomain_unload (MonoProfiler *prof, MonoDomain *domain)
        if (is_debugger_thread ())
                return;
 
-       tls = mono_native_tls_get_value (debugger_tls_id);
+       tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
        g_assert (tls);
        tls->domain_unloading = NULL;
 
@@ -3945,7 +3946,7 @@ appdomain_unload (MonoProfiler *prof, MonoDomain *domain)
 static void
 invalidate_each_thread (gpointer key, gpointer value, gpointer user_data)
 {
-       invalidate_frames (value);
+       invalidate_frames ((DebuggerTlsData *)value);
 }
 
 static void
@@ -4024,7 +4025,7 @@ jit_end (MonoProfiler *prof, MonoMethod *method, MonoJitInfo *jinfo, int result)
                // FIXME: Maybe store this in TLS so the thread of the event is correct ?
                dbg_lock ();
                if (pending_assembly_loads->len > 0) {
-                       assembly = g_ptr_array_index (pending_assembly_loads, 0);
+                       assembly = (MonoAssembly *)g_ptr_array_index (pending_assembly_loads, 0);
                        g_ptr_array_remove_index (pending_assembly_loads, 0);
                }
                dbg_unlock ();
@@ -4261,14 +4262,14 @@ add_pending_breakpoints (MonoMethod *method, MonoJitInfo *ji)
        mono_loader_lock ();
 
        for (i = 0; i < breakpoints->len; ++i) {
-               MonoBreakpoint *bp = g_ptr_array_index (breakpoints, i);
+               MonoBreakpoint *bp = (MonoBreakpoint *)g_ptr_array_index (breakpoints, i);
                gboolean found = FALSE;
 
                if (!bp_matches_method (bp, method))
                        continue;
 
                for (j = 0; j < bp->children->len; ++j) {
-                       BreakpointInstance *inst = g_ptr_array_index (bp->children, j);
+                       BreakpointInstance *inst = (BreakpointInstance *)g_ptr_array_index (bp->children, j);
 
                        if (inst->ji == ji)
                                found = TRUE;
@@ -4282,9 +4283,9 @@ add_pending_breakpoints (MonoMethod *method, MonoJitInfo *ji)
                                declaring = mono_method_get_declaring_generic_method (jmethod);
 
                        mono_domain_lock (domain);
-                       seq_points = g_hash_table_lookup (domain_jit_info (domain)->seq_points, jmethod);
+                       seq_points = (MonoSeqPointInfo *)g_hash_table_lookup (domain_jit_info (domain)->seq_points, jmethod);
                        if (!seq_points && declaring)
-                               seq_points = g_hash_table_lookup (domain_jit_info (domain)->seq_points, declaring);
+                               seq_points = (MonoSeqPointInfo *)g_hash_table_lookup (domain_jit_info (domain)->seq_points, declaring);
                        mono_domain_unlock (domain);
                        if (!seq_points)
                                /* Could be AOT code */
@@ -4312,7 +4313,7 @@ set_bp_in_method (MonoDomain *domain, MonoMethod *method, MonoSeqPointInfo *seq_
                /* Might be AOTed code */
                code = mono_aot_get_method (domain, method);
                g_assert (code);
-               ji = mono_jit_info_table_find (domain, code);
+               ji = mono_jit_info_table_find (domain, (char *)code);
                g_assert (ji);
        }
        g_assert (code);
@@ -4384,9 +4385,9 @@ set_breakpoint (MonoMethod *method, long il_offset, EventRequest *req, MonoError
        }
 
        for (i = 0; i < methods->len; ++i) {
-               m = g_ptr_array_index (methods, i);
-               domain = g_ptr_array_index (method_domains, i);
-               seq_points = g_ptr_array_index (method_seq_points, i);
+               m = (MonoMethod *)g_ptr_array_index (methods, i);
+               domain = (MonoDomain *)g_ptr_array_index (method_domains, i);
+               seq_points = (MonoSeqPointInfo *)g_ptr_array_index (method_seq_points, i);
                set_bp_in_method (domain, m, seq_points, bp, error);
        }
 
@@ -4412,7 +4413,7 @@ clear_breakpoint (MonoBreakpoint *bp)
 
        // FIXME: locking, races
        for (i = 0; i < bp->children->len; ++i) {
-               BreakpointInstance *inst = g_ptr_array_index (bp->children, i);
+               BreakpointInstance *inst = (BreakpointInstance *)g_ptr_array_index (bp->children, i);
 
                remove_breakpoint (inst);
 
@@ -4435,10 +4436,10 @@ breakpoints_cleanup (void)
        mono_loader_lock ();
        i = 0;
        while (i < event_requests->len) {
-               EventRequest *req = g_ptr_array_index (event_requests, i);
+               EventRequest *req = (EventRequest *)g_ptr_array_index (event_requests, i);
 
                if (req->event_kind == EVENT_KIND_BREAKPOINT) {
-                       clear_breakpoint (req->info);
+                       clear_breakpoint ((MonoBreakpoint *)req->info);
                        g_ptr_array_remove_index_fast (event_requests, i);
                        g_free (req);
                } else {
@@ -4474,11 +4475,11 @@ clear_breakpoints_for_domain (MonoDomain *domain)
 
        mono_loader_lock ();
        for (i = 0; i < breakpoints->len; ++i) {
-               MonoBreakpoint *bp = g_ptr_array_index (breakpoints, i);
+               MonoBreakpoint *bp = (MonoBreakpoint *)g_ptr_array_index (breakpoints, i);
 
                j = 0;
                while (j < bp->children->len) {
-                       BreakpointInstance *inst = g_ptr_array_index (bp->children, j);
+                       BreakpointInstance *inst = (BreakpointInstance *)g_ptr_array_index (bp->children, j);
 
                        if (inst->domain == domain) {
                                remove_breakpoint (inst);
@@ -4591,7 +4592,7 @@ process_breakpoint_inner (DebuggerTlsData *tls, gboolean from_signal)
 
        // FIXME: Speed this up
 
-       ip = MONO_CONTEXT_GET_IP (ctx);
+       ip = (guint8 *)MONO_CONTEXT_GET_IP (ctx);
        ji = mini_jit_info_table_find (mono_domain_get (), (char*)ip, NULL);
        g_assert (ji && !ji->is_trampoline);
        method = jinfo_get_method (ji);
@@ -4629,13 +4630,13 @@ process_breakpoint_inner (DebuggerTlsData *tls, gboolean from_signal)
 
        bp = NULL;
        for (i = 0; i < breakpoints->len; ++i) {
-               bp = g_ptr_array_index (breakpoints, i);
+               bp = (MonoBreakpoint *)g_ptr_array_index (breakpoints, i);
 
                if (!bp->method)
                        continue;
 
                for (j = 0; j < bp->children->len; ++j) {
-                       inst = g_ptr_array_index (bp->children, j);
+                       inst = (BreakpointInstance *)g_ptr_array_index (bp->children, j);
                        if (inst->ji == ji && inst->il_offset == sp.il_offset && inst->native_offset == sp.native_offset) {
                                if (bp->req->event_kind == EVENT_KIND_STEP) {
                                        g_ptr_array_add (ss_reqs_orig, bp->req);
@@ -4655,8 +4656,8 @@ process_breakpoint_inner (DebuggerTlsData *tls, gboolean from_signal)
 
        /* Process single step requests */
        for (i = 0; i < ss_reqs_orig->len; ++i) {
-               EventRequest *req = g_ptr_array_index (ss_reqs_orig, i);
-               SingleStepReq *ss_req = req->info;
+               EventRequest *req = (EventRequest *)g_ptr_array_index (ss_reqs_orig, i);
+               SingleStepReq *ss_req = (SingleStepReq *)req->info;
                gboolean hit;
 
                if (mono_thread_internal_current () != ss_req->thread)
@@ -4702,7 +4703,7 @@ process_signal_event (void (*func) (DebuggerTlsData*, gboolean))
        MonoThreadUnwindState orig_restore_state;
        MonoContext ctx;
 
-       tls = mono_native_tls_get_value (debugger_tls_id);
+       tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
        /* Have to save/restore the restore_ctx as we can be called recursively during invokes etc. */
        memcpy (&orig_restore_state, &tls->restore_state, sizeof (MonoThreadUnwindState));
        mono_thread_state_init_from_monoctx (&tls->restore_state, &tls->handler_ctx);
@@ -4730,7 +4731,7 @@ resume_from_signal_handler (void *sigctx, void *func)
 
        /* Save the original context in TLS */
        // FIXME: This might not work on an altstack ?
-       tls = mono_native_tls_get_value (debugger_tls_id);
+       tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
        if (!tls)
                fprintf (stderr, "Thread %p is not attached to the JIT.\n", (gpointer)mono_native_thread_id_get ());
        g_assert (tls);
@@ -4789,7 +4790,7 @@ mono_debugger_agent_user_break (void)
 
                /* Obtain a context */
                MONO_CONTEXT_SET_IP (&ctx, NULL);
-               mono_walk_stack_with_ctx (user_break_cb, NULL, 0, &ctx);
+               mono_walk_stack_with_ctx (user_break_cb, NULL, (MonoUnwindOptions)0, &ctx);
                g_assert (MONO_CONTEXT_GET_IP (&ctx) != NULL);
 
                mono_loader_lock ();
@@ -4832,7 +4833,7 @@ process_single_step_inner (DebuggerTlsData *tls, gboolean from_signal)
        SeqPoint sp;
        MonoSeqPointInfo *info;
 
-       ip = MONO_CONTEXT_GET_IP (ctx);
+       ip = (guint8 *)MONO_CONTEXT_GET_IP (ctx);
 
        /* Skip the instruction causing the single step */
        if (from_signal)
@@ -4955,7 +4956,7 @@ debugger_agent_single_step_from_context (MonoContext *ctx)
        DebuggerTlsData *tls;
        MonoThreadUnwindState orig_restore_state;
 
-       tls = mono_native_tls_get_value (debugger_tls_id);
+       tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
        /* Fastpath during invokes, see in process_suspend () */
        if (tls && suspend_count && suspend_count - tls->resume_count == 0)
                return;
@@ -4986,10 +4987,10 @@ debugger_agent_breakpoint_from_context (MonoContext *ctx)
        if (is_debugger_thread ())
                return;
 
-       orig_ip = MONO_CONTEXT_GET_IP (ctx);
+       orig_ip = (guint8 *)MONO_CONTEXT_GET_IP (ctx);
        MONO_CONTEXT_SET_IP (ctx, orig_ip - 1);
 
-       tls = mono_native_tls_get_value (debugger_tls_id);
+       tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
        g_assert (tls);
        memcpy (&orig_restore_state, &tls->restore_state, sizeof (MonoThreadUnwindState));
        mono_thread_state_init_from_monoctx (&tls->restore_state, ctx);
@@ -5047,7 +5048,7 @@ ss_stop (SingleStepReq *ss_req)
                GSList *l;
 
                for (l = ss_req->bps; l; l = l->next) {
-                       clear_breakpoint (l->data);
+                       clear_breakpoint ((MonoBreakpoint *)l->data);
                }
                g_slist_free (ss_req->bps);
                ss_req->bps = NULL;
@@ -5276,7 +5277,7 @@ ss_create (MonoInternalThread *thread, StepSize size, StepDepth depth, StepFilte
        req->info = ss_req;
 
        mono_loader_lock ();
-       tls = mono_g_hash_table_lookup (thread_to_tls, thread);
+       tls = (DebuggerTlsData *)mono_g_hash_table_lookup (thread_to_tls, thread);
        mono_loader_unlock ();
        g_assert (tls);
        g_assert (tls->context.valid);
@@ -5302,7 +5303,10 @@ ss_create (MonoInternalThread *thread, StepSize size, StepDepth depth, StepFilte
                 */
 
                /* Find the the jit info for the catch context */
-               res = mono_find_jit_info_ext (tls->catch_state.unwind_data [MONO_UNWIND_DATA_DOMAIN], ((MonoThreadInfo*)thread->thread_info)->jit_data, NULL, &tls->catch_state.ctx, &new_ctx, NULL, &lmf, NULL, &frame);
+               res = mono_find_jit_info_ext (
+                       (MonoDomain *)tls->catch_state.unwind_data [MONO_UNWIND_DATA_DOMAIN],
+                       (MonoJitTlsData *)((MonoThreadInfo*)thread->thread_info)->jit_data,
+                       NULL, &tls->catch_state.ctx, &new_ctx, NULL, &lmf, NULL, &frame);
                g_assert (res);
                g_assert (frame.type == FRAME_TYPE_MANAGED);
 
@@ -5373,7 +5377,7 @@ ss_create (MonoInternalThread *thread, StepSize size, StepDepth depth, StepFilte
        if (frames)
                free_frames (frames, nframes);
 
-       return 0;
+       return ERR_NONE;
 }
 
 static void
@@ -5397,8 +5401,8 @@ ss_clear_for_assembly (SingleStepReq *req, MonoAssembly *assembly)
        while (found) {
                found = FALSE;
                for (l = ss_req->bps; l; l = l->next) {
-                       if (breakpoint_matches_assembly (l->data, assembly)) {
-                               clear_breakpoint (l->data);
+                       if (breakpoint_matches_assembly ((MonoBreakpoint *)l->data, assembly)) {
+                               clear_breakpoint ((MonoBreakpoint *)l->data);
                                ss_req->bps = g_slist_delete_link (ss_req->bps, l);
                                found = TRUE;
                                break;
@@ -5477,7 +5481,7 @@ mono_debugger_agent_handle_exception (MonoException *exc, MonoContext *throw_ctx
                MonoInternalThread *thread = mono_thread_internal_current ();
 
                mono_loader_lock ();
-               tls = mono_g_hash_table_lookup (thread_to_tls, thread);
+               tls = (DebuggerTlsData *)mono_g_hash_table_lookup (thread_to_tls, thread);
                mono_loader_unlock ();
 
                if (tls && tls->abort_requested)
@@ -5506,7 +5510,7 @@ mono_debugger_agent_handle_exception (MonoException *exc, MonoContext *throw_ctx
                gboolean found = FALSE;
 
                for (l = agent_config.onthrow; l; l = l->next) {
-                       char *ex_type = l->data;
+                       char *ex_type = (char *)l->data;
                        char *f = mono_type_full_name (&exc->object.vtable->klass->byval_arg);
 
                        if (!strcmp (ex_type, "") || !strcmp (ex_type, f))
@@ -5531,9 +5535,9 @@ mono_debugger_agent_handle_exception (MonoException *exc, MonoContext *throw_ctx
        if (!inited)
                return;
 
-       ji = mini_jit_info_table_find (mono_domain_get (), MONO_CONTEXT_GET_IP (throw_ctx), NULL);
+       ji = mini_jit_info_table_find (mono_domain_get (), (char *)MONO_CONTEXT_GET_IP (throw_ctx), NULL);
        if (catch_ctx)
-               catch_ji = mini_jit_info_table_find (mono_domain_get (), MONO_CONTEXT_GET_IP (catch_ctx), NULL);
+               catch_ji = mini_jit_info_table_find (mono_domain_get (), (char *)MONO_CONTEXT_GET_IP (catch_ctx), NULL);
        else
                catch_ji = NULL;
 
@@ -5544,7 +5548,7 @@ mono_debugger_agent_handle_exception (MonoException *exc, MonoContext *throw_ctx
 
        /* Treat exceptions which are caught in non-user code as unhandled */
        for (i = 0; i < event_requests->len; ++i) {
-               EventRequest *req = g_ptr_array_index (event_requests, i);
+               EventRequest *req = (EventRequest *)g_ptr_array_index (event_requests, i);
                if (req->event_kind != EVENT_KIND_EXCEPTION)
                        continue;
 
@@ -5591,7 +5595,7 @@ mono_debugger_agent_begin_exception_filter (MonoException *exc, MonoContext *ctx
        if (!inited)
                return;
 
-       tls = mono_native_tls_get_value (debugger_tls_id);
+       tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
        if (!tls)
                return;
 
@@ -5630,7 +5634,7 @@ mono_debugger_agent_end_exception_filter (MonoException *exc, MonoContext *ctx,
        if (!inited)
                return;
 
-       tls = mono_native_tls_get_value (debugger_tls_id);
+       tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
        if (!tls)
                return;
 
@@ -5860,14 +5864,14 @@ decode_vtype (MonoType *t, MonoDomain *domain, guint8 *addr, guint8 *buf, guint8
        int nfields;
        gpointer iter = NULL;
        MonoDomain *d;
-       int err;
+       ErrorCode err;
 
        is_enum = decode_byte (buf, &buf, limit);
        /* Enums are sent as a normal vtype */
        if (is_enum)
                return ERR_NOT_IMPLEMENTED;
        klass = decode_typeid (buf, &buf, limit, &d, &err);
-       if (err)
+       if (err != ERR_NONE)
                return err;
 
        if (t && klass != mono_class_from_mono_type (t)) {
@@ -5886,7 +5890,7 @@ decode_vtype (MonoType *t, MonoDomain *domain, guint8 *addr, guint8 *buf, guint8
                if (mono_field_is_deleted (f))
                        continue;
                err = decode_value (f->type, domain, (guint8*)addr + f->offset - sizeof (MonoObject), buf, &buf, limit);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
                nfields --;
        }
@@ -5894,13 +5898,13 @@ decode_vtype (MonoType *t, MonoDomain *domain, guint8 *addr, guint8 *buf, guint8
 
        *endbuf = buf;
 
-       return 0;
+       return ERR_NONE;
 }
 
 static ErrorCode
 decode_value_internal (MonoType *t, int type, MonoDomain *domain, guint8 *addr, guint8 *buf, guint8 **endbuf, guint8 *limit)
 {
-       int err;
+       ErrorCode err;
 
        if (type != t->type && !MONO_TYPE_IS_REFERENCE (t) &&
                !(t->type == MONO_TYPE_I && type == MONO_TYPE_VALUETYPE) &&
@@ -5974,11 +5978,11 @@ decode_value_internal (MonoType *t, int type, MonoDomain *domain, guint8 *addr,
                if (type == MONO_TYPE_OBJECT) {
                        /* Boxed vtype */
                        int objid = decode_objid (buf, &buf, limit);
-                       int err;
+                       ErrorCode err;
                        MonoObject *obj;
 
                        err = get_object (objid, (MonoObject**)&obj);
-                       if (err)
+                       if (err != ERR_NONE)
                                return err;
                        if (!obj)
                                return ERR_INVALID_ARGUMENT;
@@ -5989,7 +5993,7 @@ decode_value_internal (MonoType *t, int type, MonoDomain *domain, guint8 *addr,
                        memcpy (addr, mono_object_unbox (obj), mono_class_value_size (obj->vtable->klass, NULL));
                } else {
                        err = decode_vtype (t, domain, addr, buf, &buf, limit);
-                       if (err)
+                       if (err != ERR_NONE)
                                return err;
                }
                break;
@@ -5998,11 +6002,11 @@ decode_value_internal (MonoType *t, int type, MonoDomain *domain, guint8 *addr,
                if (MONO_TYPE_IS_REFERENCE (t)) {
                        if (type == MONO_TYPE_OBJECT) {
                                int objid = decode_objid (buf, &buf, limit);
-                               int err;
+                               ErrorCode err;
                                MonoObject *obj;
 
                                err = get_object (objid, (MonoObject**)&obj);
-                               if (err)
+                               if (err != ERR_NONE)
                                        return err;
 
                                if (obj) {
@@ -6035,17 +6039,17 @@ decode_value_internal (MonoType *t, int type, MonoDomain *domain, guint8 *addr,
                                if (is_enum)
                                        return ERR_NOT_IMPLEMENTED;
                                klass = decode_typeid (buf, &buf, limit, &d, &err);
-                               if (err)
+                               if (err != ERR_NONE)
                                        return err;
 
                                /* Decode the vtype into a temporary buffer, then box it. */
                                vtype_buf_size = mono_class_value_size (klass, NULL);
-                               vtype_buf = g_malloc0 (vtype_buf_size);
+                               vtype_buf = (guint8 *)g_malloc0 (vtype_buf_size);
                                g_assert (vtype_buf);
 
                                buf = buf2;
                                err = decode_vtype (NULL, domain, vtype_buf, buf, &buf, limit);
-                               if (err) {
+                               if (err != ERR_NONE) {
                                        g_free (vtype_buf);
                                        return err;
                                }
@@ -6065,13 +6069,13 @@ decode_value_internal (MonoType *t, int type, MonoDomain *domain, guint8 *addr,
 
        *endbuf = buf;
 
-       return 0;
+       return ERR_NONE;
 }
 
 static ErrorCode
 decode_value (MonoType *t, MonoDomain *domain, guint8 *addr, guint8 *buf, guint8 **endbuf, guint8 *limit)
 {
-       int err;
+       ErrorCode err;
        int type = decode_byte (buf, &buf, limit);
 
        if (t->type == MONO_TYPE_GENERICINST && mono_class_is_nullable (mono_class_from_mono_type (t))) {
@@ -6082,16 +6086,16 @@ decode_value (MonoType *t, MonoDomain *domain, guint8 *addr, guint8 *buf, guint8
                 * First try decoding it as a Nullable`1
                 */
                err = decode_value_internal (t, type, domain, addr, buf, endbuf, limit);
-               if (!err)
+               if (err == ERR_NONE)
                        return err;
 
                /*
                 * Then try decoding as a primitive value or null.
                 */
                if (targ->type == type) {
-                       nullable_buf = g_malloc (mono_class_instance_size (mono_class_from_mono_type (targ)));
+                       nullable_buf = (guint8 *)g_malloc (mono_class_instance_size (mono_class_from_mono_type (targ)));
                        err = decode_value_internal (targ, type, domain, nullable_buf, buf, endbuf, limit);
-                       if (err) {
+                       if (err != ERR_NONE) {
                                g_free (nullable_buf);
                                return err;
                        }
@@ -6127,7 +6131,7 @@ add_var (Buffer *buf, MonoDebugMethodJitInfo *jit, MonoType *t, MonoDebugVarInfo
                buffer_add_value_full (buf, t, &reg_val, domain, as_vtype, NULL);
                break;
        case MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET:
-               addr = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+               addr = (guint8 *)mono_arch_context_get_int_reg (ctx, reg);
                addr += (gint32)var->offset;
 
                //printf ("[R%d+%d] = %p\n", reg, var->offset, addr);
@@ -6140,10 +6144,10 @@ add_var (Buffer *buf, MonoDebugMethodJitInfo *jit, MonoType *t, MonoDebugVarInfo
        case MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET_INDIR:
        case MONO_DEBUG_VAR_ADDRESS_MODE_VTADDR:
                /* Same as regoffset, but with an indirection */
-               addr = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+               addr = (guint8 *)mono_arch_context_get_int_reg (ctx, reg);
                addr += (gint32)var->offset;
 
-               gaddr = *(gpointer*)addr;
+               gaddr = (guint8 *)*(gpointer*)addr;
                g_assert (gaddr);
                buffer_add_value_full (buf, t, gaddr, domain, as_vtype, NULL);
                break;
@@ -6162,11 +6166,11 @@ add_var (Buffer *buf, MonoDebugMethodJitInfo *jit, MonoType *t, MonoDebugVarInfo
                flags = info_var->index & MONO_DEBUG_VAR_ADDRESS_MODE_FLAGS;
                reg = info_var->index & ~MONO_DEBUG_VAR_ADDRESS_MODE_FLAGS;
                if (flags == MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET) {
-                       addr = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+                       addr = (guint8 *)mono_arch_context_get_int_reg (ctx, reg);
                        addr += (gint32)info_var->offset;
-                       info = *(gpointer*)addr;
+                       info = (MonoGSharedVtMethodRuntimeInfo *)*(gpointer*)addr;
                } else if (flags == MONO_DEBUG_VAR_ADDRESS_MODE_REGISTER) {
-                       info = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+                       info = (MonoGSharedVtMethodRuntimeInfo *)mono_arch_context_get_int_reg (ctx, reg);
                } else {
                        g_assert_not_reached ();
                }
@@ -6175,11 +6179,11 @@ add_var (Buffer *buf, MonoDebugMethodJitInfo *jit, MonoType *t, MonoDebugVarInfo
                flags = locals_var->index & MONO_DEBUG_VAR_ADDRESS_MODE_FLAGS;
                reg = locals_var->index & ~MONO_DEBUG_VAR_ADDRESS_MODE_FLAGS;
                if (flags == MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET) {
-                       addr = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+                       addr = (guint8 *)mono_arch_context_get_int_reg (ctx, reg);
                        addr += (gint32)locals_var->offset;
-                       locals = *(gpointer*)addr;
+                       locals = (guint8 *)*(gpointer*)addr;
                } else if (flags == MONO_DEBUG_VAR_ADDRESS_MODE_REGISTER) {
-                       locals = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+                       locals = (guint8 *)mono_arch_context_get_int_reg (ctx, reg);
                } else {
                        g_assert_not_reached ();
                }
@@ -6218,7 +6222,7 @@ set_var (MonoType *t, MonoDebugVarInfo *var, MonoContext *ctx, MonoDomain *domai
                gboolean is_signed = FALSE;
 
                if (t->byref) {
-                       addr = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+                       addr = (guint8 *)mono_arch_context_get_int_reg (ctx, reg);
 
                        if (addr) {
                                // FIXME: Write barriers
@@ -6267,7 +6271,7 @@ set_var (MonoType *t, MonoDebugVarInfo *var, MonoContext *ctx, MonoDomain *domai
                break;
        }
        case MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET:
-               addr = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+               addr = (guint8 *)mono_arch_context_get_int_reg (ctx, reg);
                addr += (gint32)var->offset;
 
                //printf ("[R%d+%d] = %p\n", reg, var->offset, addr);
@@ -6284,10 +6288,10 @@ set_var (MonoType *t, MonoDebugVarInfo *var, MonoContext *ctx, MonoDomain *domai
                break;
        case MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET_INDIR:
                /* Same as regoffset, but with an indirection */
-               addr = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+               addr = (guint8 *)mono_arch_context_get_int_reg (ctx, reg);
                addr += (gint32)var->offset;
 
-               gaddr = *(gpointer*)addr;
+               gaddr = (guint8 *)*(gpointer*)addr;
                g_assert (gaddr);
                // FIXME: Write barriers
                mono_gc_memmove_atomic (gaddr, val, size);
@@ -6307,17 +6311,17 @@ clear_event_request (int req_id, int etype)
 
        mono_loader_lock ();
        for (i = 0; i < event_requests->len; ++i) {
-               EventRequest *req = g_ptr_array_index (event_requests, i);
+               EventRequest *req = (EventRequest *)g_ptr_array_index (event_requests, i);
 
                if (req->id == req_id && req->event_kind == etype) {
                        if (req->event_kind == EVENT_KIND_BREAKPOINT)
-                               clear_breakpoint (req->info);
+                               clear_breakpoint ((MonoBreakpoint *)req->info);
                        if (req->event_kind == EVENT_KIND_STEP)
-                               ss_destroy (req->info);
+                               ss_destroy ((SingleStepReq *)req->info);
                        if (req->event_kind == EVENT_KIND_METHOD_ENTRY)
-                               clear_breakpoint (req->info);
+                               clear_breakpoint ((MonoBreakpoint *)req->info);
                        if (req->event_kind == EVENT_KIND_METHOD_EXIT)
-                               clear_breakpoint (req->info);
+                               clear_breakpoint ((MonoBreakpoint *)req->info);
                        g_ptr_array_remove_index_fast (event_requests, i);
                        g_free (req);
                        break;
@@ -6385,18 +6389,18 @@ clear_event_requests_for_assembly (MonoAssembly *assembly)
        while (found) {
                found = FALSE;
                for (i = 0; i < event_requests->len; ++i) {
-                       EventRequest *req = g_ptr_array_index (event_requests, i);
+                       EventRequest *req = (EventRequest *)g_ptr_array_index (event_requests, i);
 
                        clear_assembly_from_modifiers (req, assembly);
 
-                       if (req->event_kind == EVENT_KIND_BREAKPOINT && breakpoint_matches_assembly (req->info, assembly)) {
+                       if (req->event_kind == EVENT_KIND_BREAKPOINT && breakpoint_matches_assembly ((MonoBreakpoint *)req->info, assembly)) {
                                clear_event_request (req->id, req->event_kind);
                                found = TRUE;
                                break;
                        }
 
                        if (req->event_kind == EVENT_KIND_STEP)
-                               ss_clear_for_assembly (req->info, assembly);
+                               ss_clear_for_assembly ((SingleStepReq *)req->info, assembly);
                }
        }
        mono_loader_unlock ();
@@ -6438,8 +6442,8 @@ clear_types_for_assembly (MonoAssembly *assembly)
 static void
 add_thread (gpointer key, gpointer value, gpointer user_data)
 {
-       MonoInternalThread *thread = value;
-       Buffer *buf = user_data;
+       MonoInternalThread *thread = (MonoInternalThread *)value;
+       Buffer *buf = (Buffer *)user_data;
 
        buffer_add_objid (buf, (MonoObject*)thread);
 }
@@ -6449,7 +6453,8 @@ do_invoke_method (DebuggerTlsData *tls, Buffer *buf, InvokeData *invoke, guint8
 {
        guint8 *end = invoke->endp;
        MonoMethod *m;
-       int i, err, nargs;
+       int i, nargs;
+       ErrorCode err;
        MonoMethodSignature *sig;
        guint8 **arg_buf;
        void **args;
@@ -6472,14 +6477,14 @@ do_invoke_method (DebuggerTlsData *tls, Buffer *buf, InvokeData *invoke, guint8
        }
 
        m = decode_methodid (p, &p, end, &domain, &err);
-       if (err)
+       if (err != ERR_NONE)
                return err;
        sig = mono_method_signature (m);
 
        if (m->klass->valuetype)
-               this_buf = g_alloca (mono_class_instance_size (m->klass));
+               this_buf = (guint8 *)g_alloca (mono_class_instance_size (m->klass));
        else
-               this_buf = g_alloca (sizeof (MonoObject*));
+               this_buf = (guint8 *)g_alloca (sizeof (MonoObject*));
        if (m->klass->valuetype && (m->flags & METHOD_ATTRIBUTE_STATIC)) {
                /* Should be null */
                int type = decode_byte (p, &p, end);
@@ -6498,12 +6503,12 @@ do_invoke_method (DebuggerTlsData *tls, Buffer *buf, InvokeData *invoke, guint8
                                p = tmp_p;
                        } else {
                                err = decode_value (&m->klass->byval_arg, domain, this_buf, p, &p, end);
-                               if (err)
+                               if (err != ERR_NONE)
                                        return err;
                        }
        } else {
                err = decode_value (&m->klass->byval_arg, domain, this_buf, p, &p, end);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
        }
 
@@ -6520,7 +6525,7 @@ do_invoke_method (DebuggerTlsData *tls, Buffer *buf, InvokeData *invoke, guint8
                m = mono_object_get_virtual_method (this_arg, m);
                /* Transform this to the format the rest of the code expects it to be */
                if (m->klass->valuetype) {
-                       this_buf = g_alloca (mono_class_instance_size (m->klass));
+                       this_buf = (guint8 *)g_alloca (mono_class_instance_size (m->klass));
                        memcpy (this_buf, mono_object_unbox (this_arg), mono_class_instance_size (m->klass));
                }
        } else if ((m->flags & METHOD_ATTRIBUTE_VIRTUAL) && !m->klass->valuetype && invoke->flags & INVOKE_FLAG_VIRTUAL) {
@@ -6530,7 +6535,7 @@ do_invoke_method (DebuggerTlsData *tls, Buffer *buf, InvokeData *invoke, guint8
                }
                m = mono_object_get_virtual_method (this_arg, m);
                if (m->klass->valuetype) {
-                       this_buf = g_alloca (mono_class_instance_size (m->klass));
+                       this_buf = (guint8 *)g_alloca (mono_class_instance_size (m->klass));
                        memcpy (this_buf, mono_object_unbox (this_arg), mono_class_instance_size (m->klass));
                }
        }
@@ -6558,26 +6563,26 @@ do_invoke_method (DebuggerTlsData *tls, Buffer *buf, InvokeData *invoke, guint8
        if (nargs != sig->param_count)
                return ERR_INVALID_ARGUMENT;
        /* Use alloca to get gc tracking */
-       arg_buf = g_alloca (nargs * sizeof (gpointer));
+       arg_buf = (guint8 **)g_alloca (nargs * sizeof (gpointer));
        memset (arg_buf, 0, nargs * sizeof (gpointer));
-       args = g_alloca (nargs * sizeof (gpointer));
+       args = (gpointer *)g_alloca (nargs * sizeof (gpointer));
        for (i = 0; i < nargs; ++i) {
                if (MONO_TYPE_IS_REFERENCE (sig->params [i])) {
                        err = decode_value (sig->params [i], domain, (guint8*)&args [i], p, &p, end);
-                       if (err)
+                       if (err != ERR_NONE)
                                break;
                        if (args [i] && ((MonoObject*)args [i])->vtable->domain != domain)
                                NOT_IMPLEMENTED;
 
                        if (sig->params [i]->byref) {
-                               arg_buf [i] = g_alloca (sizeof (mgreg_t));
+                               arg_buf [i] = (guint8 *)g_alloca (sizeof (mgreg_t));
                                *(gpointer*)arg_buf [i] = args [i];
                                args [i] = arg_buf [i];
                        }
                } else {
-                       arg_buf [i] = g_alloca (mono_class_instance_size (mono_class_from_mono_type (sig->params [i])));
+                       arg_buf [i] = (guint8 *)g_alloca (mono_class_instance_size (mono_class_from_mono_type (sig->params [i])));
                        err = decode_value (sig->params [i], domain, arg_buf [i], p, &p, end);
-                       if (err)
+                       if (err != ERR_NONE)
                                break;
                        args [i] = arg_buf [i];
                }
@@ -6644,7 +6649,7 @@ do_invoke_method (DebuggerTlsData *tls, Buffer *buf, InvokeData *invoke, guint8
                } else if (mono_class_from_mono_type (sig->ret)->valuetype || sig->ret->type == MONO_TYPE_PTR || sig->ret->type == MONO_TYPE_FNPTR) {
                        if (mono_class_is_nullable (mono_class_from_mono_type (sig->ret))) {
                                MonoClass *k = mono_class_from_mono_type (sig->ret);
-                               guint8 *nullable_buf = g_alloca (mono_class_value_size (k, NULL));
+                               guint8 *nullable_buf = (guint8 *)g_alloca (mono_class_value_size (k, NULL));
 
                                g_assert (nullable_buf);
                                mono_nullable_init (nullable_buf, res, k);
@@ -6677,7 +6682,7 @@ do_invoke_method (DebuggerTlsData *tls, Buffer *buf, InvokeData *invoke, guint8
 
 #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED
        if (invoke->has_ctx)
-               mono_set_lmf ((gpointer)(((gssize)ext.lmf.previous_lmf) & ~3));
+               mono_set_lmf ((MonoLMF *)(((gssize)ext.lmf.previous_lmf) & ~3));
 #endif
 
        *endp = p;
@@ -6697,12 +6702,13 @@ invoke_method (void)
        DebuggerTlsData *tls;
        InvokeData *invoke;
        int id;
-       int i, err, mindex;
+       int i, mindex;
+       ErrorCode err;
        Buffer buf;
        MonoContext restore_ctx;
        guint8 *p;
 
-       tls = mono_native_tls_get_value (debugger_tls_id);
+       tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
        g_assert (tls);
 
        /*
@@ -6726,7 +6732,7 @@ invoke_method (void)
        id = invoke->id;
 
        p = invoke->p;
-       err = 0;
+       err = ERR_NONE;
        for (mindex = 0; mindex < invoke->nmethods; ++mindex) {
                buffer_init (&buf, 128);
 
@@ -6793,12 +6799,12 @@ invoke_method (void)
 static gboolean
 is_really_suspended (gpointer key, gpointer value, gpointer user_data)
 {
-       MonoThread *thread = value;
+       MonoThread *thread = (MonoThread *)value;
        DebuggerTlsData *tls;
        gboolean res;
 
        mono_loader_lock ();
-       tls = mono_g_hash_table_lookup (thread_to_tls, thread);
+       tls = (DebuggerTlsData *)mono_g_hash_table_lookup (thread_to_tls, thread);
        g_assert (tls);
        res = tls->really_suspended;
        mono_loader_unlock ();
@@ -6824,7 +6830,7 @@ get_source_files_for_type (MonoClass *klass)
                if (minfo) {
                        mono_debug_get_seq_points (minfo, NULL, &source_file_list, NULL, NULL, NULL);
                        for (j = 0; j < source_file_list->len; ++j) {
-                               sinfo = g_ptr_array_index (source_file_list, j);
+                               sinfo = (MonoDebugSourceInfo *)g_ptr_array_index (source_file_list, j);
                                for (i = 0; i < files->len; ++i)
                                        if (!strcmp (g_ptr_array_index (files, i), sinfo->source_file))
                                                break;
@@ -6884,7 +6890,7 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
                /* Clear all event requests */
                mono_loader_lock ();
                while (event_requests->len > 0) {
-                       EventRequest *req = g_ptr_array_index (event_requests, 0);
+                       EventRequest *req = (EventRequest *)g_ptr_array_index (event_requests, 0);
 
                        clear_event_request (req->id, req->event_kind);
                }
@@ -6915,7 +6921,7 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
                /* Clear all event requests */
                mono_loader_lock ();
                while (event_requests->len > 0) {
-                       EventRequest *req = g_ptr_array_index (event_requests, 0);
+                       EventRequest *req = (EventRequest *)g_ptr_array_index (event_requests, 0);
 
                        clear_event_request (req->id, req->event_kind);
                }
@@ -6938,12 +6944,12 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
 #endif
 
                mono_loader_lock ();
-               thread = mono_g_hash_table_find (tid_to_thread, is_really_suspended, NULL);
+               thread = (MonoInternalThread *)mono_g_hash_table_find (tid_to_thread, is_really_suspended, NULL);
                mono_loader_unlock ();
 
                if (thread && exit_method) {
                        mono_loader_lock ();
-                       tls = mono_g_hash_table_lookup (thread_to_tls, thread);
+                       tls = (DebuggerTlsData *)mono_g_hash_table_lookup (thread_to_tls, thread);
                        mono_loader_unlock ();
 
                        args = g_new0 (gpointer, 1);
@@ -6987,10 +6993,11 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
                int objid = decode_objid (p, &p, end);
                MonoThread *thread;
                DebuggerTlsData *tls;
-               int i, count, err, flags, nmethods;
+               int i, count, flags, nmethods;
+               ErrorCode err;
 
                err = get_object (objid, (MonoObject**)&thread);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
 
                flags = decode_int (p, &p, end);
@@ -7007,7 +7014,7 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
                        return ERR_NOT_SUSPENDED;
 
                mono_loader_lock ();
-               tls = mono_g_hash_table_lookup (thread_to_tls, THREAD_TO_INTERNAL (thread));
+               tls = (DebuggerTlsData *)mono_g_hash_table_lookup (thread_to_tls, THREAD_TO_INTERNAL (thread));
                mono_loader_unlock ();
                g_assert (tls);
 
@@ -7024,7 +7031,7 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
                tls->pending_invoke = g_new0 (InvokeData, 1);
                tls->pending_invoke->id = id;
                tls->pending_invoke->flags = flags;
-               tls->pending_invoke->p = g_malloc (end - p);
+               tls->pending_invoke->p = (guint8 *)g_malloc (end - p);
                memcpy (tls->pending_invoke->p, p, end - p);
                tls->pending_invoke->endp = tls->pending_invoke->p + (end - p);
                tls->pending_invoke->suspend_count = suspend_count;
@@ -7044,16 +7051,17 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
                int objid = decode_objid (p, &p, end);
                MonoThread *thread;
                DebuggerTlsData *tls;
-               int invoke_id, err;
+               int invoke_id;
+               ErrorCode err;
 
                err = get_object (objid, (MonoObject**)&thread);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
 
                invoke_id = decode_int (p, &p, end);
 
                mono_loader_lock ();
-               tls = mono_g_hash_table_lookup (thread_to_tls, THREAD_TO_INTERNAL (thread));
+               tls = (DebuggerTlsData *)mono_g_hash_table_lookup (thread_to_tls, THREAD_TO_INTERNAL (thread));
                g_assert (tls);
 
                if (tls->abort_requested) {
@@ -7117,7 +7125,7 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
                mono_loader_lock ();
                g_hash_table_iter_init (&iter, domains);
                while (g_hash_table_iter_next (&iter, NULL, (void**)&domain)) {
-                       AgentDomainInfo *info = domain_jit_info (domain)->agent_info;
+                       AgentDomainInfo *info = (AgentDomainInfo *)domain_jit_info (domain)->agent_info;
 
                        /* Update 'source_file_to_class' cache */
                        g_hash_table_iter_init (&kiter, info->loaded_classes);
@@ -7127,11 +7135,11 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
                                        g_hash_table_insert (info->source_files, klass, files);
 
                                        for (i = 0; i < files->len; ++i) {
-                                               char *s = g_ptr_array_index (files, i);
+                                               char *s = (char *)g_ptr_array_index (files, i);
                                                char *s2 = dbg_path_get_basename (s);
                                                char *s3;
 
-                                               class_list = g_hash_table_lookup (info->source_file_to_class, s2);
+                                               class_list = (GSList *)g_hash_table_lookup (info->source_file_to_class, s2);
                                                if (!class_list) {
                                                        class_list = g_slist_prepend (class_list, klass);
                                                        g_hash_table_insert (info->source_file_to_class, g_strdup (s2), class_list);
@@ -7142,7 +7150,7 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
 
                                                /* The _ignorecase hash contains the lowercase path */
                                                s3 = strdup_tolower (s2);
-                                               class_list = g_hash_table_lookup (info->source_file_to_class_ignorecase, s3);
+                                               class_list = (GSList *)g_hash_table_lookup (info->source_file_to_class_ignorecase, s3);
                                                if (!class_list) {
                                                        class_list = g_slist_prepend (class_list, klass);
                                                        g_hash_table_insert (info->source_file_to_class_ignorecase, g_strdup (s3), class_list);
@@ -7161,14 +7169,14 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
                                char *s;
 
                                s = strdup_tolower (basename);
-                               class_list = g_hash_table_lookup (info->source_file_to_class_ignorecase, s);
+                               class_list = (GSList *)g_hash_table_lookup (info->source_file_to_class_ignorecase, s);
                                g_free (s);
                        } else {
-                               class_list = g_hash_table_lookup (info->source_file_to_class, basename);
+                               class_list = (GSList *)g_hash_table_lookup (info->source_file_to_class, basename);
                        }
 
                        for (l = class_list; l; l = l->next) {
-                               klass = l->data;
+                               klass = (MonoClass *)l->data;
 
                                g_ptr_array_add (res_classes, klass);
                                g_ptr_array_add (res_domains, domain);
@@ -7181,7 +7189,7 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
 
                buffer_add_int (buf, res_classes->len);
                for (i = 0; i < res_classes->len; ++i)
-                       buffer_add_typeid (buf, g_ptr_array_index (res_domains, i), g_ptr_array_index (res_classes, i));
+                       buffer_add_typeid (buf, (MonoDomain *)g_ptr_array_index (res_domains, i), (MonoClass *)g_ptr_array_index (res_classes, i));
                g_ptr_array_free (res_classes, TRUE);
                g_ptr_array_free (res_domains, TRUE);
                break;
@@ -7217,7 +7225,7 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
 
                        mono_domain_assemblies_lock (domain);
                        for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
-                               ass = tmp->data;
+                               ass = (MonoAssembly *)tmp->data;
 
                                if (ass->image) {
                                        type_resolve = TRUE;
@@ -7237,7 +7245,7 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
 
                buffer_add_int (buf, res_classes->len);
                for (i = 0; i < res_classes->len; ++i)
-                       buffer_add_typeid (buf, g_ptr_array_index (res_domains, i), g_ptr_array_index (res_classes, i));
+                       buffer_add_typeid (buf, (MonoDomain *)g_ptr_array_index (res_domains, i), (MonoClass *)g_ptr_array_index (res_classes, i));
                g_ptr_array_free (res_classes, TRUE);
                g_ptr_array_free (res_domains, TRUE);
                break;
@@ -7256,17 +7264,21 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
 static ErrorCode
 event_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 {
-       int err;
+       ErrorCode err;
        MonoError error;
 
        switch (command) {
        case CMD_EVENT_REQUEST_SET: {
                EventRequest *req;
-               int i, event_kind, suspend_policy, nmodifiers, mod;
+               int i, event_kind, suspend_policy, nmodifiers;
+               ModifierKind mod;
                MonoMethod *method;
                long location = 0;
                MonoThread *step_thread;
-               int size = 0, depth = 0, filter = 0, step_thread_id = 0;
+               int step_thread_id = 0;
+               StepDepth depth = STEP_DEPTH_INTO;
+               StepSize size = STEP_SIZE_MIN;
+               StepFilter filter = STEP_FILTER_NONE;
                MonoDomain *domain;
                Modifier *modifier;
 
@@ -7274,7 +7286,7 @@ event_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                suspend_policy = decode_byte (p, &p, end);
                nmodifiers = decode_byte (p, &p, end);
 
-               req = g_malloc0 (sizeof (EventRequest) + (nmodifiers * sizeof (Modifier)));
+               req = (EventRequest *)g_malloc0 (sizeof (EventRequest) + (nmodifiers * sizeof (Modifier)));
                req->id = InterlockedIncrement (&event_request_id);
                req->event_kind = event_kind;
                req->suspend_policy = suspend_policy;
@@ -7282,38 +7294,38 @@ event_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 
                method = NULL;
                for (i = 0; i < nmodifiers; ++i) {
-                       mod = decode_byte (p, &p, end);
+                       mod = (ModifierKind)decode_byte (p, &p, end);
 
                        req->modifiers [i].kind = mod;
                        if (mod == MOD_KIND_COUNT) {
                                req->modifiers [i].data.count = decode_int (p, &p, end);
                        } else if (mod == MOD_KIND_LOCATION_ONLY) {
                                method = decode_methodid (p, &p, end, &domain, &err);
-                               if (err)
+                               if (err != ERR_NONE)
                                        return err;
                                location = decode_long (p, &p, end);
                        } else if (mod == MOD_KIND_STEP) {
                                step_thread_id = decode_id (p, &p, end);
-                               size = decode_int (p, &p, end);
-                               depth = decode_int (p, &p, end);
+                               size = (StepSize)decode_int (p, &p, end);
+                               depth = (StepDepth)decode_int (p, &p, end);
                                if (CHECK_PROTOCOL_VERSION (2, 16))
-                                       filter = decode_int (p, &p, end);
+                                       filter = (StepFilter)decode_int (p, &p, end);
                                req->modifiers [i].data.filter = filter;
                                if (!CHECK_PROTOCOL_VERSION (2, 26) && (req->modifiers [i].data.filter & STEP_FILTER_DEBUGGER_HIDDEN))
                                        /* Treat STEP_THOUGH the same as HIDDEN */
-                                       req->modifiers [i].data.filter |= STEP_FILTER_DEBUGGER_STEP_THROUGH;
+                                       req->modifiers [i].data.filter = (StepFilter)(req->modifiers [i].data.filter | STEP_FILTER_DEBUGGER_STEP_THROUGH);
                        } else if (mod == MOD_KIND_THREAD_ONLY) {
                                int id = decode_id (p, &p, end);
 
                                err = get_object (id, (MonoObject**)&req->modifiers [i].data.thread);
-                               if (err) {
+                               if (err != ERR_NONE) {
                                        g_free (req);
                                        return err;
                                }
                        } else if (mod == MOD_KIND_EXCEPTION_ONLY) {
                                MonoClass *exc_class = decode_typeid (p, &p, end, &domain, &err);
 
-                               if (err)
+                               if (err != ERR_NONE)
                                        return err;
                                req->modifiers [i].caught = decode_byte (p, &p, end);
                                req->modifiers [i].uncaught = decode_byte (p, &p, end);
@@ -7337,7 +7349,7 @@ event_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                                req->modifiers [i].data.assemblies = g_new0 (MonoAssembly*, n);
                                for (j = 0; j < n; ++j) {
                                        req->modifiers [i].data.assemblies [j] = decode_assemblyid (p, &p, end, &domain, &err);
-                                       if (err) {
+                                       if (err != ERR_NONE) {
                                                g_free (req->modifiers [i].data.assemblies);
                                                return err;
                                        }
@@ -7390,13 +7402,13 @@ event_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                        g_assert (step_thread_id);
 
                        err = get_object (step_thread_id, (MonoObject**)&step_thread);
-                       if (err) {
+                       if (err != ERR_NONE) {
                                g_free (req);
                                return err;
                        }
 
                        err = ss_create (THREAD_TO_INTERNAL (step_thread), size, depth, filter, req);
-                       if (err) {
+                       if (err != ERR_NONE) {
                                g_free (req);
                                return err;
                        }
@@ -7460,10 +7472,10 @@ event_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                mono_loader_lock ();
                i = 0;
                while (i < event_requests->len) {
-                       EventRequest *req = g_ptr_array_index (event_requests, i);
+                       EventRequest *req = (EventRequest *)g_ptr_array_index (event_requests, i);
 
                        if (req->event_kind == EVENT_KIND_BREAKPOINT) {
-                               clear_breakpoint (req->info);
+                               clear_breakpoint ((MonoBreakpoint *)req->info);
 
                                g_ptr_array_remove_index_fast (event_requests, i);
                                g_free (req);
@@ -7484,7 +7496,7 @@ event_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 static ErrorCode
 domain_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 {
-       int err;
+       ErrorCode err;
        MonoDomain *domain;
 
        switch (command) {
@@ -7494,7 +7506,7 @@ domain_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
        }
        case CMD_APPDOMAIN_GET_FRIENDLY_NAME: {
                domain = decode_domainid (p, &p, end, NULL, &err);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
                buffer_add_string (buf, domain->friendly_name);
                break;
@@ -7505,7 +7517,7 @@ domain_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                int count;
 
                domain = decode_domainid (p, &p, end, NULL, &err);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
                mono_loader_lock ();
                count = 0;
@@ -7514,7 +7526,7 @@ domain_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                }
                buffer_add_int (buf, count);
                for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
-                       ass = tmp->data;
+                       ass = (MonoAssembly *)tmp->data;
                        buffer_add_assemblyid (buf, domain, ass);
                }
                mono_loader_unlock ();
@@ -7522,7 +7534,7 @@ domain_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
        }
        case CMD_APPDOMAIN_GET_ENTRY_ASSEMBLY: {
                domain = decode_domainid (p, &p, end, NULL, &err);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
 
                buffer_add_assemblyid (buf, domain, domain->entry_assembly);
@@ -7530,7 +7542,7 @@ domain_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
        }
        case CMD_APPDOMAIN_GET_CORLIB: {
                domain = decode_domainid (p, &p, end, NULL, &err);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
 
                buffer_add_assemblyid (buf, domain, domain->domain->mbr.obj.vtable->klass->image->assembly);
@@ -7541,7 +7553,7 @@ domain_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                MonoString *o;
 
                domain = decode_domainid (p, &p, end, NULL, &err);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
                s = decode_string (p, &p, end);
 
@@ -7555,10 +7567,10 @@ domain_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                MonoObject *o;
 
                domain = decode_domainid (p, &p, end, NULL, &err);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
                klass = decode_typeid (p, &p, end, &domain2, &err);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
 
                // FIXME:
@@ -7566,8 +7578,8 @@ domain_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 
                o = mono_object_new (domain, klass);
 
-               err = decode_value (&klass->byval_arg, domain, mono_object_unbox (o), p, &p, end);
-               if (err)
+               err = decode_value (&klass->byval_arg, domain, (guint8 *)mono_object_unbox (o), p, &p, end);
+               if (err != ERR_NONE)
                        return err;
 
                buffer_add_objid (buf, o);
@@ -7583,12 +7595,12 @@ domain_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 static ErrorCode
 assembly_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 {
-       int err;
+       ErrorCode err;
        MonoAssembly *ass;
        MonoDomain *domain;
 
        ass = decode_assemblyid (p, &p, end, &domain, &err);
-       if (err)
+       if (err != ERR_NONE)
                return err;
 
        switch (command) {
@@ -7675,7 +7687,7 @@ assembly_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 static ErrorCode
 module_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 {
-       int err;
+       ErrorCode err;
        MonoDomain *domain;
 
        switch (command) {
@@ -7702,7 +7714,7 @@ module_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 static ErrorCode
 field_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 {
-       int err;
+       ErrorCode err;
        MonoDomain *domain;
 
        switch (command) {
@@ -7736,7 +7748,7 @@ buffer_add_cattr_arg (Buffer *buf, MonoType *t, MonoDomain *domain, MonoObject *
                buffer_add_value (buf, t, mono_object_unbox (val), domain);
 }
 
-static int
+static ErrorCode
 buffer_add_cattrs (Buffer *buf, MonoDomain *domain, MonoImage *image, MonoClass *attr_klass, MonoCustomAttrInfo *cinfo)
 {
        int i, j;
@@ -7841,7 +7853,8 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
        MonoType *type;
        gpointer iter;
        guint8 b;
-       int err, nnested;
+       int nnested;
+       ErrorCode err;
        char *name;
 
        switch (command) {
@@ -7988,13 +8001,13 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
 
                attr_klass = decode_typeid (p, &p, end, NULL, &err);
                /* attr_klass can be NULL */
-               if (err)
+               if (err != ERR_NONE)
                        return err;
 
                cinfo = mono_custom_attrs_from_class (klass);
 
                err = buffer_add_cattrs (buf, domain, klass->image, attr_klass, cinfo);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
                break;
        }
@@ -8004,16 +8017,16 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
                MonoClassField *field;
 
                field = decode_fieldid (p, &p, end, NULL, &err);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
                attr_klass = decode_typeid (p, &p, end, NULL, &err);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
 
                cinfo = mono_custom_attrs_from_field (klass, field);
 
                err = buffer_add_cattrs (buf, domain, klass->image, attr_klass, cinfo);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
                break;
        }
@@ -8023,16 +8036,16 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
                MonoProperty *prop;
 
                prop = decode_propertyid (p, &p, end, NULL, &err);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
                attr_klass = decode_typeid (p, &p, end, NULL, &err);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
 
                cinfo = mono_custom_attrs_from_property (klass, prop);
 
                err = buffer_add_cattrs (buf, domain, klass->image, attr_klass, cinfo);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
                break;
        }
@@ -8050,10 +8063,10 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
 
                if (command == CMD_TYPE_GET_VALUES_2) {
                        int objid = decode_objid (p, &p, end);
-                       int err;
+                       ErrorCode err;
 
                        err = get_object (objid, (MonoObject**)&thread_obj);
-                       if (err)
+                       if (err != ERR_NONE)
                                return err;
 
                        thread = THREAD_TO_INTERNAL (thread_obj);
@@ -8062,7 +8075,7 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
                len = decode_int (p, &p, end);
                for (i = 0; i < len; ++i) {
                        f = decode_fieldid (p, &p, end, NULL, &err);
-                       if (err)
+                       if (err != ERR_NONE)
                                return err;
 
                        if (!(f->type->attrs & FIELD_ATTRIBUTE_STATIC))
@@ -8085,7 +8098,7 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
                                return ERR_INVALID_FIELDID;
 
                        vtable = mono_class_vtable (domain, f->parent);
-                       val = g_malloc (mono_class_instance_size (mono_class_from_mono_type (f->type)));
+                       val = (guint8 *)g_malloc (mono_class_instance_size (mono_class_from_mono_type (f->type)));
                        mono_field_static_get_value_for_thread (thread ? thread : mono_thread_internal_current (), vtable, f, val);
                        buffer_add_value (buf, f->type, val, domain);
                        g_free (val);
@@ -8103,7 +8116,7 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
                len = decode_int (p, &p, end);
                for (i = 0; i < len; ++i) {
                        f = decode_fieldid (p, &p, end, NULL, &err);
-                       if (err)
+                       if (err != ERR_NONE)
                                return err;
 
                        if (!(f->type->attrs & FIELD_ATTRIBUTE_STATIC))
@@ -8125,9 +8138,9 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
                        // FIXME: Check for literal/const
 
                        vtable = mono_class_vtable (domain, f->parent);
-                       val = g_malloc (mono_class_instance_size (mono_class_from_mono_type (f->type)));
+                       val = (guint8 *)g_malloc (mono_class_instance_size (mono_class_from_mono_type (f->type)));
                        err = decode_value (f->type, domain, val, p, &p, end);
-                       if (err) {
+                       if (err != ERR_NONE) {
                                g_free (val);
                                return err;
                        }
@@ -8154,7 +8167,7 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
 
                buffer_add_int (buf, files->len);
                for (i = 0; i < files->len; ++i) {
-                       source_file = g_ptr_array_index (files, i);
+                       source_file = (char *)g_ptr_array_index (files, i);
                        if (command == CMD_TYPE_GET_SOURCE_FILES_2) {
                                buffer_add_string (buf, source_file);
                        } else {
@@ -8170,7 +8183,7 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
        case CMD_TYPE_IS_ASSIGNABLE_FROM: {
                MonoClass *oklass = decode_typeid (p, &p, end, NULL, &err);
 
-               if (err)
+               if (err != ERR_NONE)
                        return err;
                if (mono_class_is_assignable_from (klass, oklass))
                        buffer_add_byte (buf, 1);
@@ -8188,7 +8201,7 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
                        return ERR_LOADER_ERROR;
                buffer_add_int (buf, array->len);
                for (i = 0; i < array->len; ++i) {
-                       MonoMethod *method = g_ptr_array_index (array, i);
+                       MonoMethod *method = (MonoMethod *)g_ptr_array_index (array, i);
                        buffer_add_methodid (buf, domain, method);
                }
 
@@ -8235,7 +8248,7 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
 
                for (tindex = 0; tindex < len; ++tindex) {
                        iclass = decode_typeid (p, &p, end, NULL, &err);
-                       if (err)
+                       if (err != ERR_NONE)
                                return err;
 
                        ioffset = mono_class_interface_offset_with_variance (klass, iclass, &variance_used);
@@ -8283,10 +8296,10 @@ type_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
        MonoClass *klass;
        MonoDomain *old_domain;
        MonoDomain *domain;
-       int err;
+       ErrorCode err;
 
        klass = decode_typeid (p, &p, end, &domain, &err);
-       if (err)
+       if (err != ERR_NONE)
                return err;
 
        old_domain = mono_domain_get ();
@@ -8304,7 +8317,7 @@ static ErrorCode
 method_commands_internal (int command, MonoMethod *method, MonoDomain *domain, guint8 *p, guint8 *end, Buffer *buf)
 {
        MonoMethodHeader *header;
-       int err;
+       ErrorCode err;
 
        switch (command) {
        case CMD_METHOD_GET_NAME: {
@@ -8345,7 +8358,7 @@ method_commands_internal (int command, MonoMethod *method, MonoDomain *domain, g
                if (CHECK_PROTOCOL_VERSION (2, 13)) {
                        buffer_add_int (buf, source_file_list->len);
                        for (i = 0; i < source_file_list->len; ++i) {
-                               MonoDebugSourceInfo *sinfo = g_ptr_array_index (source_file_list, i);
+                               MonoDebugSourceInfo *sinfo = (MonoDebugSourceInfo *)g_ptr_array_index (source_file_list, i);
                                buffer_add_string (buf, sinfo->source_file);
                                if (CHECK_PROTOCOL_VERSION (2, 14)) {
                                        for (j = 0; j < 16; ++j)
@@ -8362,7 +8375,7 @@ method_commands_internal (int command, MonoMethod *method, MonoDomain *domain, g
                        const char *srcfile = "";
 
                        if (source_files [i] != -1) {
-                               MonoDebugSourceInfo *sinfo = g_ptr_array_index (source_file_list, source_files [i]);
+                               MonoDebugSourceInfo *sinfo = (MonoDebugSourceInfo *)g_ptr_array_index (source_file_list, source_files [i]);
                                srcfile = sinfo->source_file;
                        }
                        DEBUG_PRINTF (10, "IL%x -> %s:%d %d %d %d\n", sp->il_offset, srcfile, sp->line, sp->column, sp->end_line, sp->end_column);
@@ -8598,7 +8611,7 @@ method_commands_internal (int command, MonoMethod *method, MonoDomain *domain, g
 
                        if (method->wrapper_type == MONO_WRAPPER_DYNAMIC_METHOD) {
                                val = mono_method_get_wrapper_data (method, token);
-                               handle_class = mono_method_get_wrapper_data (method, token + 1);
+                               handle_class = (MonoClass *)mono_method_get_wrapper_data (method, token + 1);
 
                                if (handle_class == NULL) {
                                        // Can't figure out the token type
@@ -8620,14 +8633,14 @@ method_commands_internal (int command, MonoMethod *method, MonoDomain *domain, g
                                        buffer_add_typeid (buf, domain, mono_class_from_mono_type ((MonoType*)val));
                        } else if (handle_class == mono_defaults.fieldhandle_class) {
                                buffer_add_byte (buf, TOKEN_TYPE_FIELD);
-                               buffer_add_fieldid (buf, domain, val);
+                               buffer_add_fieldid (buf, domain, (MonoClassField *)val);
                        } else if (handle_class == mono_defaults.methodhandle_class) {
                                buffer_add_byte (buf, TOKEN_TYPE_METHOD);
-                               buffer_add_methodid (buf, domain, val);
+                               buffer_add_methodid (buf, domain, (MonoMethod *)val);
                        } else if (handle_class == mono_defaults.string_class) {
                                char *s;
 
-                               s = mono_string_to_utf8 (val);
+                               s = mono_string_to_utf8 ((MonoString *)val);
                                buffer_add_byte (buf, TOKEN_TYPE_STRING);
                                buffer_add_string (buf, s);
                                g_free (s);
@@ -8645,13 +8658,13 @@ method_commands_internal (int command, MonoMethod *method, MonoDomain *domain, g
 
                attr_klass = decode_typeid (p, &p, end, NULL, &err);
                /* attr_klass can be NULL */
-               if (err)
+               if (err != ERR_NONE)
                        return err;
 
                cinfo = mono_custom_attrs_from_method (method);
 
                err = buffer_add_cattrs (buf, domain, method->klass->image, attr_klass, cinfo);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
                break;
        }
@@ -8669,7 +8682,7 @@ method_commands_internal (int command, MonoMethod *method, MonoDomain *domain, g
                type_argv = g_new0 (MonoType*, type_argc);
                for (i = 0; i < type_argc; ++i) {
                        klass = decode_typeid (p, &p, end, &d, &err);
-                       if (err) {
+                       if (err != ERR_NONE) {
                                g_free (type_argv);
                                return err;
                        }
@@ -8701,13 +8714,13 @@ method_commands_internal (int command, MonoMethod *method, MonoDomain *domain, g
 static ErrorCode
 method_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 {
-       int err;
+       ErrorCode err;
        MonoDomain *old_domain;
        MonoDomain *domain;
        MonoMethod *method;
 
        method = decode_methodid (p, &p, end, &domain, &err);
-       if (err)
+       if (err != ERR_NONE)
                return err;
 
        old_domain = mono_domain_get ();
@@ -8725,12 +8738,12 @@ static ErrorCode
 thread_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 {
        int objid = decode_objid (p, &p, end);
-       int err;
+       ErrorCode err;
        MonoThread *thread_obj;
        MonoInternalThread *thread;
 
        err = get_object (objid, (MonoObject**)&thread_obj);
-       if (err)
+       if (err != ERR_NONE)
                return err;
 
        thread = THREAD_TO_INTERNAL (thread_obj);
@@ -8778,7 +8791,7 @@ thread_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                        return ERR_NOT_IMPLEMENTED;
 
                mono_loader_lock ();
-               tls = mono_g_hash_table_lookup (thread_to_tls, thread);
+               tls = (DebuggerTlsData *)mono_g_hash_table_lookup (thread_to_tls, thread);
                mono_loader_unlock ();
                g_assert (tls);
 
@@ -8822,7 +8835,7 @@ thread_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                gint64 il_offset;
 
                method = decode_methodid (p, &p, end, &domain, &err);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
                il_offset = decode_long (p, &p, end);
 
@@ -8832,7 +8845,7 @@ thread_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                }
 
                mono_loader_lock ();
-               tls = mono_g_hash_table_lookup (thread_to_tls, thread);
+               tls = (DebuggerTlsData *)mono_g_hash_table_lookup (thread_to_tls, thread);
                mono_loader_unlock ();
                g_assert (tls);
 
@@ -8864,7 +8877,7 @@ static ErrorCode
 frame_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 {
        int objid;
-       int err;
+       ErrorCode err;
        MonoThread *thread_obj;
        MonoInternalThread *thread;
        int pos, i, len, frame_idx;
@@ -8877,7 +8890,7 @@ frame_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 
        objid = decode_objid (p, &p, end);
        err = get_object (objid, (MonoObject**)&thread_obj);
-       if (err)
+       if (err != ERR_NONE)
                return err;
 
        thread = THREAD_TO_INTERNAL (thread_obj);
@@ -8885,7 +8898,7 @@ frame_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
        id = decode_id (p, &p, end);
 
        mono_loader_lock ();
-       tls = mono_g_hash_table_lookup (thread_to_tls, thread);
+       tls = (DebuggerTlsData *)mono_g_hash_table_lookup (thread_to_tls, thread);
        mono_loader_unlock ();
        g_assert (tls);
 
@@ -9020,11 +9033,11 @@ frame_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                        }
 
                        if (MONO_TYPE_IS_REFERENCE (t))
-                               val_buf = g_alloca (sizeof (MonoObject*));
+                               val_buf = (guint8 *)g_alloca (sizeof (MonoObject*));
                        else
-                               val_buf = g_alloca (mono_class_instance_size (mono_class_from_mono_type (t)));
+                               val_buf = (guint8 *)g_alloca (mono_class_instance_size (mono_class_from_mono_type (t)));
                        err = decode_value (t, frame->domain, val_buf, p, &p, end);
-                       if (err)
+                       if (err != ERR_NONE)
                                return err;
 
                        set_var (t, var, &frame->ctx, frame->domain, val_buf, frame->reg_locations, &tls->restore_state.ctx);
@@ -9048,12 +9061,13 @@ static ErrorCode
 array_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 {
        MonoArray *arr;
-       int objid, err, index, len, i, esize;
+       int objid, index, len, i, esize;
+       ErrorCode err;
        gpointer elem;
 
        objid = decode_objid (p, &p, end);
        err = get_object (objid, (MonoObject**)&arr);
-       if (err)
+       if (err != ERR_NONE)
                return err;
 
        switch (command) {
@@ -9095,7 +9109,7 @@ array_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                for (i = index; i < index + len; ++i) {
                        elem = (gpointer*)((char*)arr->vector + (i * esize));
 
-                       decode_value (&arr->obj.vtable->klass->element_class->byval_arg, arr->obj.vtable->domain, elem, p, &p, end);
+                       decode_value (&arr->obj.vtable->klass->element_class->byval_arg, arr->obj.vtable->domain, (guint8 *)elem, p, &p, end);
                }
                break;
        default:
@@ -9108,7 +9122,8 @@ array_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 static ErrorCode
 string_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 {
-       int objid, err;
+       int objid;
+       ErrorCode err;
        MonoString *str;
        char *s;
        int i, index, length;
@@ -9117,7 +9132,7 @@ string_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 
        objid = decode_objid (p, &p, end);
        err = get_object (objid, (MonoObject**)&str);
-       if (err)
+       if (err != ERR_NONE)
                return err;
 
        switch (command) {
@@ -9159,7 +9174,8 @@ string_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 static ErrorCode
 object_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 {
-       int objid, err;
+       int objid;
+       ErrorCode err;
        MonoObject *obj;
        int len, i;
        MonoClassField *f;
@@ -9169,16 +9185,16 @@ object_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
        if (command == CMD_OBJECT_REF_IS_COLLECTED) {
                objid = decode_objid (p, &p, end);
                err = get_object (objid, &obj);
-               if (err)
+               if (err != ERR_NONE)
                        buffer_add_int (buf, 1);
                else
                        buffer_add_int (buf, 0);
-               return 0;
+               return ERR_NONE;
        }
 
        objid = decode_objid (p, &p, end);
        err = get_object (objid, &obj);
-       if (err)
+       if (err != ERR_NONE)
                return err;
 
        MonoClass *obj_type;
@@ -9199,7 +9215,7 @@ object_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 
                for (i = 0; i < len; ++i) {
                        MonoClassField *f = decode_fieldid (p, &p, end, NULL, &err);
-                       if (err)
+                       if (err != ERR_NONE)
                                return err;
 
                        /* Check that the field belongs to the object */
@@ -9222,7 +9238,7 @@ object_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 
                                g_assert (f->type->attrs & FIELD_ATTRIBUTE_STATIC);
                                vtable = mono_class_vtable (obj->vtable->domain, f->parent);
-                               val = g_malloc (mono_class_instance_size (mono_class_from_mono_type (f->type)));
+                               val = (guint8 *)g_malloc (mono_class_instance_size (mono_class_from_mono_type (f->type)));
                                mono_field_static_get_value (vtable, f, val);
                                buffer_add_value (buf, f->type, val, obj->vtable->domain);
                                g_free (val);
@@ -9236,7 +9252,7 @@ object_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 
                for (i = 0; i < len; ++i) {
                        f = decode_fieldid (p, &p, end, NULL, &err);
-                       if (err)
+                       if (err != ERR_NONE)
                                return err;
 
                        /* Check that the field belongs to the object */
@@ -9260,9 +9276,9 @@ object_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                                g_assert (f->type->attrs & FIELD_ATTRIBUTE_STATIC);
                                vtable = mono_class_vtable (obj->vtable->domain, f->parent);
 
-                               val = g_malloc (mono_class_instance_size (mono_class_from_mono_type (f->type)));
+                               val = (guint8 *)g_malloc (mono_class_instance_size (mono_class_from_mono_type (f->type)));
                                err = decode_value (f->type, obj->vtable->domain, val, p, &p, end);
-                               if (err) {
+                               if (err != ERR_NONE) {
                                        g_free (val);
                                        return err;
                                }
@@ -9270,7 +9286,7 @@ object_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                                g_free (val);
                        } else {
                                err = decode_value (f->type, obj->vtable->domain, (guint8*)obj + f->offset, p, &p, end);
-                               if (err)
+                               if (err != ERR_NONE)
                                        return err;
                        }
                }
@@ -9565,7 +9581,8 @@ wait_for_attach (void)
 static guint32 WINAPI
 debugger_thread (void *arg)
 {
-       int res, len, id, flags, command_set = 0, command = 0;
+       int res, len, id, flags, command = 0;
+       CommandSet command_set = (CommandSet)0;
        guint8 header [HEADER_LENGTH];
        guint8 *data, *p, *end;
        Buffer buf;
@@ -9610,7 +9627,7 @@ debugger_thread (void *arg)
                len = decode_int (p, &p, end);
                id = decode_int (p, &p, end);
                flags = decode_byte (p, &p, end);
-               command_set = decode_byte (p, &p, end);
+               command_set = (CommandSet)decode_byte (p, &p, end);
                command = decode_byte (p, &p, end);
 
                g_assert (flags == 0);
@@ -9628,7 +9645,7 @@ debugger_thread (void *arg)
                        DEBUG_PRINTF (1, "[dbg] Command %s(%s) [%d][at=%lx].\n", command_set_to_string (command_set), cmd_str, id, (long)mono_100ns_ticks () / 10000);
                }
 
-               data = g_malloc (len - HEADER_LENGTH);
+               data = (guint8 *)g_malloc (len - HEADER_LENGTH);
                if (len - HEADER_LENGTH > 0)
                {
                        MONO_PREPARE_BLOCKING;
@@ -9652,7 +9669,7 @@ debugger_thread (void *arg)
                switch (command_set) {
                case CMD_SET_VM:
                        err = vm_commands (command, id, p, end, &buf);
-                       if (!err && command == CMD_VM_INVOKE_METHOD)
+                       if (err == ERR_NONE && command == CMD_VM_INVOKE_METHOD)
                                /* Sent after the invoke is complete */
                                no_reply = TRUE;
                        break;
@@ -9709,7 +9726,7 @@ debugger_thread (void *arg)
                        }
                }
 
-               if (!err && command_set == CMD_SET_VM && command == CMD_VM_STOP_BUFFERING) {
+               if (err == ERR_NONE && command_set == CMD_SET_VM && command == CMD_VM_STOP_BUFFERING) {
                        send_buffered_reply_packets ();
                        buffer_replies = FALSE;
                }
index c759e22e27e126515d7b7aacf4c8e7e0f5327572..2dfff74b4fb6fbdf28dd94741eaef82865c8c795 100644 (file)
@@ -539,7 +539,7 @@ mono_decompose_opcode (MonoCompile *cfg, MonoInst *ins)
                        g_assert (!info->sig->hasthis);
                        g_assert (info->sig->param_count <= MONO_MAX_SRC_REGS);
 
-                       args = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoInst*) * info->sig->param_count);
+                       args = (MonoInst **)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoInst*) * info->sig->param_count);
                        if (info->sig->param_count > 0) {
                                int sregs [MONO_MAX_SRC_REGS];
                                int num_sregs, i;
@@ -1197,7 +1197,7 @@ mono_decompose_vtype_opts (MonoCompile *cfg)
         * Create a dummy bblock and emit code into it so we can use the normal 
         * code generation macros.
         */
-       cfg->cbb = mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoBasicBlock));
+       cfg->cbb = (MonoBasicBlock *)mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoBasicBlock));
        first_bb = cfg->cbb;
 
        /* For LLVM, decompose only the OP_STOREV_MEMBASE opcodes, which need write barriers and the gsharedvt opcodes */
@@ -1489,7 +1489,7 @@ mono_decompose_array_access_opts (MonoCompile *cfg)
         * Create a dummy bblock and emit code into it so we can use the normal 
         * code generation macros.
         */
-       cfg->cbb = mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoBasicBlock));
+       cfg->cbb = (MonoBasicBlock *)mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoBasicBlock));
        first_bb = cfg->cbb;
 
        for (bb = cfg->bb_entry; bb; bb = bb->next_bb) {
index b9437db9be4aea35c456101921a911d5c6529e29..ab3ba6333cce8f5c11d47acd8c0b7759ce421275 100644 (file)
@@ -117,7 +117,7 @@ compute_dominators (MonoCompile *cfg)
                MonoBitSet *dominators;
                char *mem;
 
-               mem = mono_mempool_alloc0 (cfg->mempool, bitsize);
+               mem = (char *)mono_mempool_alloc0 (cfg->mempool, bitsize);
 
                bb->dominators = dominators = mono_bitset_mem_new (mem, cfg->num_bblocks, 0);
                mem += bitsize;
@@ -199,7 +199,7 @@ compute_dominance_frontier (MonoCompile *cfg)
                cfg->bblocks [i]->flags &= ~BB_VISITED;
 
        bitsize = mono_bitset_alloc_size (cfg->num_bblocks, 0);
-       mem = mono_mempool_alloc0 (cfg->mempool, bitsize * cfg->num_bblocks);
+       mem = (char *)mono_mempool_alloc0 (cfg->mempool, bitsize * cfg->num_bblocks);
  
        for (i = 0; i < cfg->num_bblocks; ++i) {
                MonoBasicBlock *bb = cfg->bblocks [i];
@@ -332,7 +332,7 @@ mono_compute_natural_loops (MonoCompile *cfg)
                                        GList *l;
 
                                        for (l = h->loop_blocks; l; l = l->next) {
-                                               MonoBasicBlock *b = l->data;
+                                               MonoBasicBlock *b = (MonoBasicBlock *)l->data;
                                                if (b->dfn)
                                                        mono_bitset_set_fast (in_loop_blocks, b->dfn);
                                        }
index 83ec87b71c1980e95e67f4d92476aa6f8bd2d897..7f35d2549db598803bb160b60caec732173b4e6b 100644 (file)
@@ -60,6 +60,9 @@
 #include <locale.h>
 #include "version.h"
 #include "debugger-agent.h"
+#if TARGET_OSX
+#   include <sys/resource.h>
+#endif
 
 static FILE *mini_stats_fd;
 
@@ -392,7 +395,7 @@ mini_regression_step (MonoImage *image, int verbose, int *total_run, int *total,
                                if (verbose >= 2)
                                        g_print ("Running '%s' ...\n", method->name);
 #ifdef MONO_USE_AOT_COMPILER
-                               if ((func = mono_aot_get_method (mono_get_root_domain (), method)))
+                               if ((func = (TestMethod)mono_aot_get_method (mono_get_root_domain (), method)))
                                        ;
                                else
 #endif
@@ -497,7 +500,7 @@ mini_regression (MonoImage *image, int verbose, int *total_run)
                for (iter = mono_single_method_list; iter; iter = g_slist_next (iter)) {
                        char *method_name;
 
-                       mono_current_single_method = iter->data;
+                       mono_current_single_method = (MonoMethod *)iter->data;
 
                        method_name = mono_method_full_name (mono_current_single_method, TRUE);
                        g_print ("Current single method: %s\n", method_name);
@@ -934,7 +937,7 @@ compile_all_methods_thread_main_inner (CompileAllThreadArgs *args)
                        g_print ("Compiling %d %s\n", count, desc);
                        g_free (desc);
                }
-               cfg = mini_method_compile (method, mono_get_optimizations_for_method (method, args->opts), mono_get_root_domain (), 0, 0, -1);
+               cfg = mini_method_compile (method, mono_get_optimizations_for_method (method, args->opts), mono_get_root_domain (), (JitFlags)0, 0, -1);
                if (cfg->exception_type != MONO_EXCEPTION_NONE) {
                        printf ("Compilation of %s failed with exception '%s':\n", mono_method_full_name (cfg->method, TRUE), cfg->exception_message);
                        fail_count ++;
@@ -1017,7 +1020,7 @@ typedef struct
 
 static void main_thread_handler (gpointer user_data)
 {
-       MainThreadArgs *main_args = user_data;
+       MainThreadArgs *main_args = (MainThreadArgs *)user_data;
        MonoAssembly *assembly;
 
        if (mono_compile_aot) {
@@ -1079,7 +1082,7 @@ load_agent (MonoDomain *domain, char *desc)
        MonoImageOpenStatus open_status;
 
        if (col) {
-               agent = g_memdup (desc, col - desc + 1);
+               agent = (char *)g_memdup (desc, col - desc + 1);
                agent [col - desc] = '\0';
                args = col + 1;
        } else {
@@ -1435,7 +1438,7 @@ mono_set_use_smp (int use_smp)
 #ifdef GLIBC_BEFORE_2_3_4_SCHED_SETAFFINITY
                sched_setaffinity (getpid(), (gpointer)&proc_mask);
 #else
-               sched_setaffinity (getpid(), sizeof (unsigned long), (gpointer)&proc_mask);
+               sched_setaffinity (getpid(), sizeof (unsigned long), (const cpu_set_t *)&proc_mask);
 #endif
        }
 #endif
@@ -1470,6 +1473,22 @@ switch_gc (char* argv[], const char* target_gc)
 
 #ifdef TARGET_OSX
 
+/*
+ * tries to increase the minimum number of files, if the number is below 1024
+ */
+static void
+darwin_change_default_file_handles ()
+{
+       struct rlimit limit;
+       
+       if (getrlimit (RLIMIT_NOFILE, &limit) == 0){
+               if (limit.rlim_cur < 1024){
+                       limit.rlim_cur = MAX(1024,limit.rlim_cur);
+                       setrlimit (RLIMIT_NOFILE, &limit);
+               }
+       }
+}
+
 static void
 switch_arch (char* argv[], const char* target_arch)
 {
@@ -1520,7 +1539,7 @@ mono_main (int argc, char* argv[])
        char *config_file = NULL;
        int i, count = 1;
        guint32 opt, action = DO_EXEC, recompilation_times = 1;
-       MonoGraphOptions mono_graph_options = 0;
+       MonoGraphOptions mono_graph_options = (MonoGraphOptions)0;
        int mini_verbose = 0;
        gboolean enable_profile = FALSE;
        char *trace_options = NULL;
@@ -1550,6 +1569,10 @@ mono_main (int argc, char* argv[])
 
        setlocale (LC_ALL, "");
 
+#if TARGET_OSX
+       darwin_change_default_file_handles ();
+#endif
+       
        if (g_getenv ("MONO_NO_SMP"))
                mono_set_use_smp (FALSE);
        
@@ -2113,10 +2136,10 @@ mono_main (int argc, char* argv[])
                        (method->flags & METHOD_ATTRIBUTE_PINVOKE_IMPL)) {
                        MonoMethod *nm;
                        nm = mono_marshal_get_native_wrapper (method, TRUE, FALSE);
-                       cfg = mini_method_compile (nm, opt, mono_get_root_domain (), 0, part, -1);
+                       cfg = mini_method_compile (nm, opt, mono_get_root_domain (), (JitFlags)0, part, -1);
                }
                else
-                       cfg = mini_method_compile (method, opt, mono_get_root_domain (), 0, part, -1);
+                       cfg = mini_method_compile (method, opt, mono_get_root_domain (), (JitFlags)0, part, -1);
                if ((mono_graph_options & MONO_GRAPH_CFG_SSA) && !(cfg->comp_done & MONO_COMP_SSA)) {
                        g_warning ("no SSA info available (use -O=deadce)");
                        return 1;
@@ -2148,7 +2171,7 @@ mono_main (int argc, char* argv[])
                                opt = opt_sets [i];
                                g_timer_start (timer);
                                for (j = 0; j < count; ++j) {
-                                       cfg = mini_method_compile (method, opt, mono_get_root_domain (), 0, 0, -1);
+                                       cfg = mini_method_compile (method, opt, mono_get_root_domain (), (JitFlags)0, 0, -1);
                                        mono_destroy_compile (cfg);
                                }
                                g_timer_stop (timer);
@@ -2171,12 +2194,12 @@ mono_main (int argc, char* argv[])
                                        (method->flags & METHOD_ATTRIBUTE_PINVOKE_IMPL))
                                        method = mono_marshal_get_native_wrapper (method, TRUE, FALSE);
 
-                               cfg = mini_method_compile (method, opt, mono_get_root_domain (), 0, 0, -1);
+                               cfg = mini_method_compile (method, opt, mono_get_root_domain (), (JitFlags)0, 0, -1);
                                mono_destroy_compile (cfg);
                        }
                }
        } else {
-               cfg = mini_method_compile (method, opt, mono_get_root_domain (), 0, 0, -1);
+               cfg = mini_method_compile (method, opt, mono_get_root_domain (), (JitFlags)0, 0, -1);
                mono_destroy_compile (cfg);
        }
 #endif
@@ -2357,7 +2380,7 @@ mono_parse_env_options (int *ref_argc, char **ref_argv [])
                        
                        /* First the environment variable settings, to allow the command line options to override */
                        for (i = 0; i < array->len; i++)
-                               new_argv [i+1] = g_ptr_array_index (array, i);
+                               new_argv [i+1] = (char *)g_ptr_array_index (array, i);
                        i++;
                        for (j = 1; j < argc; j++)
                                new_argv [i++] = argv [j];
index 68f703f38ef8216d68c030bd884aec3e580d2a2e..771c1be1e7f993d2aeed58b0c645fe4b696a4746 100644 (file)
@@ -711,7 +711,7 @@ mono_dwarf_escape_path (const char *name)
                int len, i, j;
 
                len = strlen (name);
-               s = g_malloc0 ((len + 1) * 2);
+               s = (char *)g_malloc0 ((len + 1) * 2);
                j = 0;
                for (i = 0; i < len; ++i) {
                        if (name [i] == '\\') {
@@ -741,7 +741,7 @@ emit_all_line_number_info (MonoDwarfWriter *w)
        /* Collect files */
        info_list = g_slist_reverse (w->line_info);
        for (l = info_list; l; l = l->next) {
-               MethodLineNumberInfo *info = l->data;
+               MethodLineNumberInfo *info = (MethodLineNumberInfo *)l->data;
                MonoDebugMethodInfo *minfo;
                GPtrArray *source_file_list;
 
@@ -752,7 +752,7 @@ emit_all_line_number_info (MonoDwarfWriter *w)
 
                mono_debug_get_seq_points (minfo, NULL, &source_file_list, NULL, NULL, NULL);
                for (i = 0; i < source_file_list->len; ++i) {
-                       MonoDebugSourceInfo *sinfo = g_ptr_array_index (source_file_list, i);
+                       MonoDebugSourceInfo *sinfo = (MonoDebugSourceInfo *)g_ptr_array_index (source_file_list, i);
                        add_line_number_file_name (w, sinfo->source_file, 0, 0);
                }
        }               
@@ -761,7 +761,7 @@ emit_all_line_number_info (MonoDwarfWriter *w)
        dir_to_index = g_hash_table_new (g_str_hash, g_str_equal);
        index_to_dir = g_hash_table_new (NULL, NULL);
        for (i = 0; i < w->line_number_file_index; ++i) {
-               char *name = g_hash_table_lookup (w->index_to_file, GUINT_TO_POINTER (i + 1));
+               char *name = (char *)g_hash_table_lookup (w->index_to_file, GUINT_TO_POINTER (i + 1));
                char *copy;
                int dir_index = 0;
 
@@ -811,7 +811,7 @@ emit_all_line_number_info (MonoDwarfWriter *w)
        /* Includes */
        emit_section_change (w, ".debug_line", 0);
        for (i = 0; i < w->line_number_dir_index; ++i) {
-               char *dir = g_hash_table_lookup (index_to_dir, GUINT_TO_POINTER (i + 1));
+               char *dir = (char *)g_hash_table_lookup (index_to_dir, GUINT_TO_POINTER (i + 1));
 
                emit_string (w, mono_dwarf_escape_path (dir));
        }
@@ -820,7 +820,7 @@ emit_all_line_number_info (MonoDwarfWriter *w)
 
        /* Files */
        for (i = 0; i < w->line_number_file_index; ++i) {
-               char *name = g_hash_table_lookup (w->index_to_file, GUINT_TO_POINTER (i + 1));
+               char *name = (char *)g_hash_table_lookup (w->index_to_file, GUINT_TO_POINTER (i + 1));
                char *basename = NULL, *dir;
                int dir_index = 0;
 
@@ -847,7 +847,7 @@ emit_all_line_number_info (MonoDwarfWriter *w)
 
        /* Emit line number table */
        for (l = info_list; l; l = l->next) {
-               MethodLineNumberInfo *info = l->data;
+               MethodLineNumberInfo *info = (MethodLineNumberInfo *)l->data;
                MonoDebugMethodJitInfo *dmji;
 
                dmji = mono_debug_find_method (info->method, mono_domain_get ());
@@ -1011,7 +1011,7 @@ get_class_die (MonoDwarfWriter *w, MonoClass *klass, gboolean vtype)
        else
                cache = w->class_to_die;
 
-       return g_hash_table_lookup (cache, klass);
+       return (const char *)g_hash_table_lookup (cache, klass);
 }
 
 /* Returns the local symbol pointing to the emitted debug info */
@@ -1032,7 +1032,7 @@ emit_class_dwarf_info (MonoDwarfWriter *w, MonoClass *klass, gboolean vtype)
        else
                cache = w->class_to_die;
 
-       die = g_hash_table_lookup (cache, klass);
+       die = (char *)g_hash_table_lookup (cache, klass);
        if (die)
                return die;
 
@@ -1239,7 +1239,7 @@ get_type_die (MonoDwarfWriter *w, MonoType *t)
 
        if (t->byref) {
                if (t->type == MONO_TYPE_VALUETYPE) {
-                       tdie = g_hash_table_lookup (w->class_to_pointer_die, klass);
+                       tdie = (const char *)g_hash_table_lookup (w->class_to_pointer_die, klass);
                }
                else {
                        tdie = get_class_die (w, klass, FALSE);
@@ -1256,7 +1256,7 @@ get_type_die (MonoDwarfWriter *w, MonoType *t)
        } else {
                switch (t->type) {
                case MONO_TYPE_CLASS:
-                       tdie = g_hash_table_lookup (w->class_to_reference_die, klass);
+                       tdie = (const char *)g_hash_table_lookup (w->class_to_reference_die, klass);
                        //tdie = ".LDIE_OBJECT";
                        break;
                case MONO_TYPE_ARRAY:
@@ -1270,7 +1270,7 @@ get_type_die (MonoDwarfWriter *w, MonoType *t)
                        break;
                case MONO_TYPE_GENERICINST:
                        if (!MONO_TYPE_ISSTRUCT (t)) {
-                               tdie = g_hash_table_lookup (w->class_to_reference_die, klass);
+                               tdie = (const char *)g_hash_table_lookup (w->class_to_reference_die, klass);
                        } else {
                                tdie = ".LDIE_I4";
                        }
@@ -1419,7 +1419,7 @@ token_handler (MonoDisHelper *dh, MonoMethod *method, guint32 token)
        case CEE_CASTCLASS:
        case CEE_LDELEMA:
                if (method->wrapper_type) {
-                       klass = data;
+                       klass = (MonoClass *)data;
                } else {
                        klass = mono_class_get_checked (method->klass->image, token, &error);
                        g_assert (mono_error_ok (&error)); /* FIXME error handling */
@@ -1430,7 +1430,7 @@ token_handler (MonoDisHelper *dh, MonoMethod *method, guint32 token)
        case CEE_CALL:
        case CEE_CALLVIRT:
                if (method->wrapper_type)
-                       cmethod = data;
+                       cmethod = (MonoMethod *)data;
                else
                        cmethod = mono_get_method_full (method->klass->image, token, NULL, NULL);
                desc = mono_method_full_name (cmethod, TRUE);
@@ -1439,7 +1439,7 @@ token_handler (MonoDisHelper *dh, MonoMethod *method, guint32 token)
                break;
        case CEE_CALLI:
                if (method->wrapper_type) {
-                       desc = mono_signature_get_desc (data, FALSE);
+                       desc = mono_signature_get_desc ((MonoMethodSignature *)data, FALSE);
                        res = g_strdup_printf ("<%s>", desc);
                        g_free (desc);
                } else {
@@ -1451,7 +1451,7 @@ token_handler (MonoDisHelper *dh, MonoMethod *method, guint32 token)
        case CEE_STFLD:
        case CEE_STSFLD:
                if (method->wrapper_type) {
-                       field = data;
+                       field = (MonoClassField *)data;
                } else {
                        field = mono_field_from_token_checked (method->klass->image, token, &klass, NULL,  &error);
                        g_assert (mono_error_ok (&error)); /* FIXME error handling */
@@ -1620,7 +1620,7 @@ emit_line_number_info (MonoDwarfWriter *w, MonoMethod *method,
        ln_array = g_new0 (MonoDebugLineNumberEntry, debug_info->num_line_numbers);
        memcpy (ln_array, debug_info->line_numbers, debug_info->num_line_numbers * sizeof (MonoDebugLineNumberEntry));
 
-       qsort (ln_array, debug_info->num_line_numbers, sizeof (MonoDebugLineNumberEntry), (gpointer)compare_lne);
+       qsort (ln_array, debug_info->num_line_numbers, sizeof (MonoDebugLineNumberEntry), (int (*)(const void *, const void *))compare_lne);
 
        native_to_il_offset = g_new0 (int, code_size + 1);
 
index ca3b19bfb0a2495050561f1bb5c8c073be3f943e..3f039f74b3e71ad570f7b0cbe5df185b6329566f 100644 (file)
@@ -167,7 +167,7 @@ mono_arch_get_restore_context (MonoTrampInfo **info, gboolean aot)
 
        /* restore_contect (MonoContext *ctx) */
 
-       start = code = mono_global_codeman_reserve (256);
+       start = code = (guint8 *)mono_global_codeman_reserve (256);
 
        amd64_mov_reg_reg (code, AMD64_R11, AMD64_ARG_REG1, 8);
 
@@ -226,7 +226,7 @@ mono_arch_get_call_filter (MonoTrampInfo **info, gboolean aot)
        GSList *unwind_ops = NULL;
        const guint kMaxCodeSize = NACL_SIZE (128, 256);
 
-       start = code = mono_global_codeman_reserve (kMaxCodeSize);
+       start = code = (guint8 *)mono_global_codeman_reserve (kMaxCodeSize);
 
        /* call_filter (MonoContext *ctx, unsigned long eip) */
        code = start;
@@ -381,7 +381,7 @@ get_throw_trampoline (MonoTrampInfo **info, gboolean rethrow, gboolean corlib, g
        dummy_stack_space = 0;
 #endif
 
-       start = code = mono_global_codeman_reserve (kMaxCodeSize);
+       start = code = (guint8 *)mono_global_codeman_reserve (kMaxCodeSize);
 
        /* The stack is unaligned on entry */
        stack_size = ALIGN_TO (sizeof (MonoContext) + 64 + dummy_stack_space, MONO_ARCH_FRAME_ALIGNMENT) + 8;
@@ -561,9 +561,9 @@ mono_arch_unwind_frame (MonoDomain *domain, MonoJitTlsData *jit_tls,
                for (i = 0; i < AMD64_NREG; ++i)
                        regs [i] = new_ctx->gregs [i];
 
-               mono_unwind_frame (unwind_info, unwind_info_len, ji->code_start, 
+               mono_unwind_frame (unwind_info, unwind_info_len, (guint8 *)ji->code_start,
                                                   (guint8*)ji->code_start + ji->code_size,
-                                                  ip, epilog ? &epilog : NULL, regs, MONO_MAX_IREGS + 1,
+                                                  (guint8 *)ip, epilog ? &epilog : NULL, regs, MONO_MAX_IREGS + 1,
                                                   save_locations, MONO_MAX_IREGS, &cfa);
 
                for (i = 0; i < AMD64_NREG; ++i)
@@ -590,7 +590,7 @@ mono_arch_unwind_frame (MonoDomain *domain, MonoJitTlsData *jit_tls,
 
                        memcpy (new_ctx, &ext->ctx, sizeof (MonoContext));
 
-                       *lmf = (gpointer)(((guint64)(*lmf)->previous_lmf) & ~7);
+                       *lmf = (MonoLMF *)(((guint64)(*lmf)->previous_lmf) & ~7);
 
                        frame->type = FRAME_TYPE_DEBUGGER_INVOKE;
 
@@ -615,7 +615,7 @@ mono_arch_unwind_frame (MonoDomain *domain, MonoJitTlsData *jit_tls,
                        rip = *(guint64*)((*lmf)->rsp - sizeof(mgreg_t));
                }
 
-               ji = mini_jit_info_table_find (domain, (gpointer)rip, NULL);
+               ji = mini_jit_info_table_find (domain, (char *)rip, NULL);
                /*
                 * FIXME: ji == NULL can happen when a managed-to-native wrapper is interrupted
                 * in the soft debugger suspend code, since (*lmf)->rsp no longer points to the
@@ -652,7 +652,7 @@ mono_arch_unwind_frame (MonoDomain *domain, MonoJitTlsData *jit_tls,
                        }
                }
 
-               *lmf = (gpointer)(((guint64)(*lmf)->previous_lmf) & ~7);
+               *lmf = (MonoLMF *)(((guint64)(*lmf)->previous_lmf) & ~7);
 
                return TRUE;
        }
@@ -668,12 +668,12 @@ mono_arch_unwind_frame (MonoDomain *domain, MonoJitTlsData *jit_tls,
 static void
 handle_signal_exception (gpointer obj)
 {
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        MonoContext ctx;
 
        memcpy (&ctx, &jit_tls->ex_ctx, sizeof (MonoContext));
 
-       mono_handle_exception (&ctx, obj);
+       mono_handle_exception (&ctx, (MonoObject *)obj);
 
        mono_restore_context (&ctx);
 }
@@ -715,7 +715,7 @@ mono_arch_handle_exception (void *sigctx, gpointer obj)
         * signal is disabled, and we could run arbitrary code though the debugger. So
         * resume into the normal stack and do most work there if possible.
         */
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
 
        /* Pass the ctx parameter in TLS */
        mono_sigctx_to_monoctx (sigctx, &jit_tls->ex_ctx);
@@ -756,7 +756,7 @@ mono_arch_ip_from_context (void *sigctx)
 static void
 restore_soft_guard_pages (void)
 {
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        if (jit_tls->stack_ovf_guard_base)
                mono_mprotect (jit_tls->stack_ovf_guard_base, jit_tls->stack_ovf_guard_size, MONO_MMAP_NONE);
 }
@@ -771,7 +771,7 @@ static void
 prepare_for_guard_pages (MonoContext *mctx)
 {
        gpointer *sp;
-       sp = (gpointer)(mctx->gregs [AMD64_RSP]);
+       sp = (gpointer *)(mctx->gregs [AMD64_RSP]);
        sp -= 1;
        /* the return addr */
        sp [0] = (gpointer)(mctx->gregs [AMD64_RIP]);
@@ -780,7 +780,7 @@ prepare_for_guard_pages (MonoContext *mctx)
 }
 
 static void
-altstack_handle_and_restore (MonoContext *ctx, gpointer obj, gboolean stack_ovf)
+altstack_handle_and_restore (MonoContext *ctx, MonoObject *obj, gboolean stack_ovf)
 {
        MonoContext mctx;
 
@@ -797,7 +797,7 @@ mono_arch_handle_altstack_exception (void *sigctx, MONO_SIG_HANDLER_INFO_TYPE *s
 {
 #if defined(MONO_ARCH_USE_SIGACTION)
        MonoException *exc = NULL;
-       MonoJitInfo *ji = mini_jit_info_table_find (mono_domain_get (), (gpointer)UCONTEXT_REG_RIP (sigctx), NULL);
+       MonoJitInfo *ji = mini_jit_info_table_find (mono_domain_get (), (char *)UCONTEXT_REG_RIP (sigctx), NULL);
        gpointer *sp;
        int frame_size;
        MonoContext *copied_ctx;
@@ -818,8 +818,8 @@ mono_arch_handle_altstack_exception (void *sigctx, MONO_SIG_HANDLER_INFO_TYPE *s
        frame_size = sizeof (MonoContext) + sizeof (gpointer) * 4 + 128;
        frame_size += 15;
        frame_size &= ~15;
-       sp = (gpointer)(UCONTEXT_REG_RSP (sigctx) & ~15);
-       sp = (gpointer)((char*)sp - frame_size);
+       sp = (gpointer *)(UCONTEXT_REG_RSP (sigctx) & ~15);
+       sp = (gpointer *)((char*)sp - frame_size);
        copied_ctx = (MonoContext*)(sp + 4);
        /* the arguments must be aligned */
        sp [-1] = (gpointer)UCONTEXT_REG_RIP (sigctx);
@@ -882,7 +882,7 @@ mono_arch_exceptions_init (void)
                /* Call this to avoid initialization races */
                tramps = mono_amd64_get_exception_trampolines (FALSE);
                for (l = tramps; l; l = l->next) {
-                       MonoTrampInfo *info = l->data;
+                       MonoTrampInfo *info = (MonoTrampInfo *)l->data;
 
                        mono_register_jit_icall (info->code, g_strdup (info->name), NULL, TRUE);
                        mono_tramp_info_register (info, NULL);
@@ -1145,7 +1145,7 @@ mono_tasklets_arch_restore (void)
 
        if (saved)
                return (MonoContinuationRestore)saved;
-       code = start = mono_global_codeman_reserve (kMaxCodeSize);
+       code = start = (guint8 *)mono_global_codeman_reserve (kMaxCodeSize);
        /* the signature is: restore (MonoContinuation *cont, int state, MonoLMF **lmf_addr) */
        /* cont is in AMD64_ARG_REG1 ($rcx or $rdi)
         * state is in AMD64_ARG_REG2 ($rdx or $rsi)
index 0cd3f3b5c815699c87ccd4a2beb6e9e55f633102..b996f8f83b55a07a401a31409d4f5c437228d43c 100644 (file)
@@ -99,7 +99,7 @@ load_file (const char *name) {
                        is_template = TRUE;
                        desc = g_new0 (OpDesc, 1);
                } else {
-                       desc = g_hash_table_lookup (table, str);
+                       desc = (OpDesc *)g_hash_table_lookup (table, str);
                        if (!desc)
                                g_error ("Invalid opcode '%s' at line %d in %s\n", str, line, name);
                        if (desc->desc)
@@ -165,7 +165,7 @@ load_file (const char *name) {
                                tname = p;
                                while (*p && isalnum (*p)) ++p;
                                *p++ = 0;
-                               tdesc = g_hash_table_lookup (template_table, tname);
+                               tdesc = (OpDesc *)g_hash_table_lookup (template_table, tname);
                                if (!tdesc)
                                        g_error ("Invalid template name %s at '%s' at line %d in %s\n", tname, p, line, name);
                                for (i = 0; i < MONO_INST_MAX; ++i) {
index fed9002320487da1e5088867e4905881ca99a3f9..08d2891f87c239c138f3d1e48284f3f8c8399aef 100644 (file)
@@ -20,7 +20,7 @@ static char *
 convert_name (const char *str)
 {
        int i, j, len = strlen (str);
-       char *res = g_malloc (len * 2);
+       char *res = (char *)g_malloc (len * 2);
 
        j = 0;
        for (i = 0; i < len; i++) {
index 0a74bfb4ff875eca13a397a825b55ff506582437..c216f3b25755f4231091b096a4f506990e4a8d2f 100644 (file)
@@ -324,7 +324,7 @@ bin_writer_emit_ensure_buffer (BinSection *section, int size)
                guint8 *data;
                while (new_size <= new_offset)
                        new_size *= 2;
-               data = g_malloc0 (new_size);
+               data = (guint8 *)g_malloc0 (new_size);
 #ifdef __native_client_codegen__
                /* for Native Client, fill empty space with HLT instruction */
                /* instead of 00.                                           */
@@ -448,7 +448,7 @@ static BinReloc*
 create_reloc (MonoImageWriter *acfg, const char *end, const char* start, int offset)
 {
        BinReloc *reloc;
-       reloc = mono_mempool_alloc0 (acfg->mempool, sizeof (BinReloc));
+       reloc = (BinReloc *)mono_mempool_alloc0 (acfg->mempool, sizeof (BinReloc));
        reloc->val1 = mono_mempool_strdup (acfg->mempool, end);
        if (strcmp (start, ".") == 0) {
                reloc->val2_section = acfg->cur_section;
@@ -899,7 +899,7 @@ get_label_addr (MonoImageWriter *acfg, const char *name)
        BinSection *section;
        gsize value;
 
-       lab = g_hash_table_lookup (acfg->labels, name);
+       lab = (BinLabel *)g_hash_table_lookup (acfg->labels, name);
        if (!lab)
                g_error ("Undefined label: '%s'.\n", name);
        section = lab->section;
@@ -982,7 +982,7 @@ collect_syms (MonoImageWriter *acfg, int *hash, ElfStrTable *strtab, ElfSectHead
                /*g_print ("sym name %s tabled to %d\n", symbol->name, symbols [i].st_name);*/
                section = symbol->section;
                symbols [i].st_shndx = section->parent? section->parent->shidx: section->shidx;
-               lab = g_hash_table_lookup (acfg->labels, symbol->name);
+               lab = (BinLabel *)g_hash_table_lookup (acfg->labels, symbol->name);
                offset = lab->offset;
                if (section->parent) {
                        symbols [i].st_value = section->parent->virt_offset + section->cur_offset + offset;
@@ -991,7 +991,7 @@ collect_syms (MonoImageWriter *acfg, int *hash, ElfStrTable *strtab, ElfSectHead
                }
 
                if (symbol->end_label) {
-                       BinLabel *elab = g_hash_table_lookup (acfg->labels, symbol->end_label);
+                       BinLabel *elab = (BinLabel *)g_hash_table_lookup (acfg->labels, symbol->end_label);
                        g_assert (elab);
                        symbols [i].st_size = elab->offset - lab->offset;
                }
@@ -1063,7 +1063,7 @@ reloc_symbols (MonoImageWriter *acfg, ElfSymbol *symbols, ElfSectHeader *sheader
                if (dynamic && !symbol->is_global)
                        continue;
                section = symbol->section;
-               lab = g_hash_table_lookup (acfg->labels, symbol->name);
+               lab = (BinLabel *)g_hash_table_lookup (acfg->labels, symbol->name);
                offset = lab->offset;
                if (section->parent) {
                        symbols [i].st_value = sheaders [section->parent->shidx].sh_addr + section->cur_offset + offset;
@@ -1615,7 +1615,7 @@ bin_writer_emit_writeout (MonoImageWriter *acfg)
 
        if (!acfg->fp) {
                acfg->out_buf_size = file_offset + sizeof (secth);
-               acfg->out_buf = g_malloc (acfg->out_buf_size);
+               acfg->out_buf = (guint8 *)g_malloc (acfg->out_buf_size);
        }
 
        bin_writer_fwrite (acfg, &header, sizeof (header), 1);
index 59654ee902875458b9aa814f6dc22c194f449b49..b9ed1784a5643c47f95c11fb39edaf9e0699cfe6 100644 (file)
@@ -106,7 +106,7 @@ alloc_dreg (MonoCompile *cfg, MonoStackType stack_type)
  * JIT code still uses the left and right fields, so it has to stay.
  */
 #define MONO_INST_NEW(cfg,dest,op) do {        \
-               (dest) = mono_mempool_alloc ((cfg)->mempool, sizeof (MonoInst));        \
+               (dest) = (MonoInst *)mono_mempool_alloc ((cfg)->mempool, sizeof (MonoInst));    \
                (dest)->inst_c0 = (dest)->inst_c1 = 0; \
                (dest)->next = (dest)->prev = NULL;    \
                (dest)->opcode = (op);  \
@@ -230,7 +230,7 @@ alloc_dreg (MonoCompile *cfg, MonoStackType stack_type)
 #define NEW_AOTCONST(cfg,dest,patch_type,cons) do {    \
         MONO_INST_NEW ((cfg), (dest), cfg->compile_aot ? OP_AOTCONST : OP_PCONST); \
                (dest)->inst_p0 = (cons);       \
-               (dest)->inst_i1 = (gpointer)(patch_type); \
+               (dest)->inst_i1 = (MonoInst *)(patch_type); \
                (dest)->type = STACK_PTR;       \
                (dest)->dreg = alloc_dreg ((cfg), STACK_PTR);   \
     } while (0)
@@ -311,7 +311,7 @@ alloc_dreg (MonoCompile *cfg, MonoStackType stack_type)
                type_to_eval_stack_type ((cfg), (vartype), (dest));     \
                (dest)->klass = var->klass;     \
                (dest)->sreg1 = var->dreg;   \
-        (dest)->dreg = alloc_dreg ((cfg), (dest)->type); \
+        (dest)->dreg = alloc_dreg ((cfg), (MonoStackType)(dest)->type); \
         if ((dest)->opcode == OP_VMOVE) (dest)->klass = mono_class_from_mono_type ((vartype)); \
        } while (0)
 
@@ -373,7 +373,7 @@ handle_gsharedvt_ldaddr (MonoCompile *cfg)
         (dest)->type = STACK_MP; \
            (dest)->klass = cfg->ret->klass;    \
            (dest)->sreg1 = cfg->vret_addr->dreg;   \
-        (dest)->dreg = alloc_dreg ((cfg), (dest)->type); \
+        (dest)->dreg = alloc_dreg ((cfg), (MonoStackType)(dest)->type); \
        } while (0)
 
 #define NEW_ARGLOADA(cfg,dest,num) NEW_VARLOADA ((cfg), (dest), arg_array [(num)], param_types [(num)])
@@ -395,7 +395,7 @@ handle_gsharedvt_ldaddr (MonoCompile *cfg)
 #define NEW_LOAD_MEMBASE_TYPE(cfg,dest,ltype,base,offset) do { \
            NEW_LOAD_MEMBASE ((cfg), (dest), mono_type_to_load_membase ((cfg), (ltype)), 0, (base), (offset)); \
            type_to_eval_stack_type ((cfg), (ltype), (dest)); \
-           (dest)->dreg = alloc_dreg ((cfg), (dest)->type); \
+           (dest)->dreg = alloc_dreg ((cfg), (MonoStackType)(dest)->type); \
     } while (0)
 
 #define NEW_STORE_MEMBASE_TYPE(cfg,dest,ltype,base,offset,sr) do { \
@@ -743,7 +743,7 @@ handle_gsharedvt_ldaddr (MonoCompile *cfg)
  * block_num: unique ID assigned at bblock creation
  */
 #define NEW_BBLOCK(cfg,bblock) do { \
-       (bblock) = mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoBasicBlock)); \
+       (bblock) = (MonoBasicBlock *)mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoBasicBlock)); \
        (bblock)->block_num = cfg->num_bblocks++; \
     } while (0)
 
@@ -796,7 +796,7 @@ static int ccount = 0;
             MONO_ADD_INS ((cfg)->cbb, ins); \
             MONO_START_BB ((cfg), falsebb); \
         } else { \
-                   ins->inst_many_bb = mono_mempool_alloc (cfg->mempool, sizeof(gpointer)*2);  \
+                   ins->inst_many_bb = (MonoBasicBlock **)mono_mempool_alloc (cfg->mempool, sizeof(gpointer)*2);       \
             ins->inst_true_bb = (truebb); \
             ins->inst_false_bb = NULL; \
             mono_link_bblock ((cfg), (cfg)->cbb, (truebb)); \
@@ -817,7 +817,7 @@ static int ccount = 0;
 #define        MONO_EMIT_NEW_BRANCH_BLOCK2(cfg,op,truebb,falsebb) do { \
         MonoInst *ins; \
         MONO_INST_NEW ((cfg), (ins), (op)); \
-               ins->inst_many_bb = mono_mempool_alloc (cfg->mempool, sizeof(gpointer)*2);      \
+               ins->inst_many_bb = (MonoBasicBlock **)mono_mempool_alloc (cfg->mempool, sizeof(gpointer)*2);   \
         ins->inst_true_bb = (truebb); \
         ins->inst_false_bb = (falsebb); \
         mono_link_bblock ((cfg), (cfg)->cbb, (truebb)); \
index fc67fba72330925b6330cf5b1d4fedad31facb56..f5b4e4204fd0efc1ad3e00fbb6d133a9e1f1fec7 100644 (file)
@@ -671,14 +671,14 @@ mono_array_new_va (MonoMethod *cm, ...)
 
        va_start (ap, cm);
        
-       lengths = alloca (sizeof (uintptr_t) * pcount);
+       lengths = (uintptr_t *)alloca (sizeof (uintptr_t) * pcount);
        for (i = 0; i < pcount; ++i)
                lengths [i] = d = va_arg(ap, int);
 
        if (rank == pcount) {
                /* Only lengths provided. */
                if (cm->klass->byval_arg.type == MONO_TYPE_ARRAY) {
-                       lower_bounds = alloca (sizeof (intptr_t) * rank);
+                       lower_bounds = (intptr_t *)alloca (sizeof (intptr_t) * rank);
                        memset (lower_bounds, 0, sizeof (intptr_t) * rank);
                } else {
                        lower_bounds = NULL;
@@ -712,7 +712,7 @@ mono_array_new_1 (MonoMethod *cm, guint32 length)
        g_assert (rank == pcount);
 
        if (cm->klass->byval_arg.type == MONO_TYPE_ARRAY) {
-               lower_bounds = alloca (sizeof (intptr_t) * rank);
+               lower_bounds = (intptr_t *)alloca (sizeof (intptr_t) * rank);
                memset (lower_bounds, 0, sizeof (intptr_t) * rank);
        } else {
                lower_bounds = NULL;
@@ -739,7 +739,7 @@ mono_array_new_2 (MonoMethod *cm, guint32 length1, guint32 length2)
        g_assert (rank == pcount);
 
        if (cm->klass->byval_arg.type == MONO_TYPE_ARRAY) {
-               lower_bounds = alloca (sizeof (intptr_t) * rank);
+               lower_bounds = (intptr_t *)alloca (sizeof (intptr_t) * rank);
                memset (lower_bounds, 0, sizeof (intptr_t) * rank);
        } else {
                lower_bounds = NULL;
@@ -767,7 +767,7 @@ mono_array_new_3 (MonoMethod *cm, guint32 length1, guint32 length2, guint32 leng
        g_assert (rank == pcount);
 
        if (cm->klass->byval_arg.type == MONO_TYPE_ARRAY) {
-               lower_bounds = alloca (sizeof (intptr_t) * rank);
+               lower_bounds = (intptr_t *)alloca (sizeof (intptr_t) * rank);
                memset (lower_bounds, 0, sizeof (intptr_t) * rank);
        } else {
                lower_bounds = NULL;
@@ -796,7 +796,7 @@ mono_array_new_4 (MonoMethod *cm, guint32 length1, guint32 length2, guint32 leng
        g_assert (rank == pcount);
 
        if (cm->klass->byval_arg.type == MONO_TYPE_ARRAY) {
-               lower_bounds = alloca (sizeof (intptr_t) * rank);
+               lower_bounds = (intptr_t *)alloca (sizeof (intptr_t) * rank);
                memset (lower_bounds, 0, sizeof (intptr_t) * rank);
        } else {
                lower_bounds = NULL;
@@ -1119,7 +1119,7 @@ mono_object_castclass_unbox (MonoObject *obj, MonoClass *klass)
        MonoClass *oklass;
 
        if (mini_get_debug_options ()->better_cast_details) {
-               jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+               jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
                jit_tls->class_cast_from = NULL;
        }
 
@@ -1150,7 +1150,7 @@ mono_object_castclass_with_cache (MonoObject *obj, MonoClass *klass, gpointer *c
        gpointer cached_vtable, obj_vtable;
 
        if (mini_get_debug_options ()->better_cast_details) {
-               jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+               jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
                jit_tls->class_cast_from = NULL;
        }
 
@@ -1388,7 +1388,7 @@ mono_resolve_iface_call (MonoObject *this_obj, int imt_slot, MonoMethod *imt_met
                /*
                 * The exact compiled method might not be shared so it doesn't have an rgctx arg.
                 */
-               ji = mini_jit_info_table_find (mono_domain_get (), compiled_method, NULL);
+               ji = mini_jit_info_table_find (mono_domain_get (), (char *)compiled_method, NULL);
                if (!ji || (ji && ji->has_generic_jit_info)) {
                        if (m->wrapper_type == MONO_WRAPPER_MANAGED_TO_MANAGED && m->klass->rank && strstr (m->name, "System.Collections.Generic"))
                                m = mono_aot_get_array_helper_from_wrapper (m);
index 6368b8d5e3761b8856618862cce97a34e8ea8ae9..7c224995c2b5100b06f2291314ff8d239b424d37 100644 (file)
@@ -195,9 +195,9 @@ gpointer mono_fill_class_rgctx (MonoVTable *vtable, int index);
 
 gpointer mono_fill_method_rgctx (MonoMethodRuntimeGenericContext *mrgctx, int index);
 
-gpointer mono_resolve_iface_call (MonoObject *this, int imt_slot, MonoMethod *imt_method, gpointer *out_rgctx_arg);
+gpointer mono_resolve_iface_call (MonoObject *this_obj, int imt_slot, MonoMethod *imt_method, gpointer *out_rgctx_arg);
 
-gpointer mono_resolve_vcall (MonoObject *this, int slot, MonoMethod *imt_method);
+gpointer mono_resolve_vcall (MonoObject *this_obj, int slot, MonoMethod *imt_method);
 
 void mono_init_delegate (MonoDelegate *del, MonoObject *target, MonoMethod *method);
 
index d778ab5fc73f700a880ab4f65618a59172e62a66..6ee1e0ff7929ef8118525e4280d15b911eb029c9 100644 (file)
@@ -23,7 +23,7 @@ mono_varlist_insert_sorted (MonoCompile *cfg, GList *list, MonoMethodVar *mv, in
                return g_list_prepend (NULL, mv);
 
        for (l = list; l; l = l->next) {
-               MonoMethodVar *v1 = l->data;
+               MonoMethodVar *v1 = (MonoMethodVar *)l->data;
                
                if (sort_type == 2) {
                        if (mv->spill_costs >= v1->spill_costs) {
@@ -108,7 +108,7 @@ mono_linear_scan (MonoCompile *cfg, GList *vars, GList *regs, regmask_t *used_ma
 
        /* linear scan */
        for (l = vars; l; l = l->next) {
-               vmv = l->data;
+               vmv = (MonoMethodVar *)l->data;
 
 #ifdef DEBUG_LSCAN
                printf ("START  %2d %08x %08x\n",  vmv->idx, vmv->range.first_use.abs_pos, 
@@ -199,7 +199,7 @@ mono_linear_scan (MonoCompile *cfg, GList *vars, GList *regs, regmask_t *used_ma
 
        n_regvars = 0;
        for (l = vars; l; l = l->next) {
-               vmv = l->data;
+               vmv = (MonoMethodVar *)l->data;
                
                if (vmv->reg >= 0)  {
                        if ((gains [vmv->reg] > mono_arch_regalloc_cost (cfg, vmv)) && (cfg->varinfo [vmv->idx]->opcode != OP_REGVAR)) {
@@ -227,7 +227,7 @@ mono_linear_scan (MonoCompile *cfg, GList *vars, GList *regs, regmask_t *used_ma
        /* Compute used regs */
        used_regs = 0;
        for (l = vars; l; l = l->next) {
-               vmv = l->data;
+               vmv = (MonoMethodVar *)l->data;
                
                if (vmv->reg >= 0)
                        used_regs |= 1LL << vmv->reg;
@@ -288,7 +288,7 @@ mono_linear_scan2 (MonoCompile *cfg, GList *vars, GList *regs, regmask_t *used_m
        int n_regs, n_regvars, i;
 
        for (l = vars; l; l = l->next) {
-               vmv = l->data;
+               vmv = (MonoMethodVar *)l->data;
                LSCAN_DEBUG (printf ("VAR R%d %08x %08x C%d\n", cfg->varinfo [vmv->idx]->dreg, vmv->range.first_use.abs_pos, 
                                                         vmv->range.last_use.abs_pos, vmv->spill_costs));
        }
@@ -302,7 +302,7 @@ mono_linear_scan2 (MonoCompile *cfg, GList *vars, GList *regs, regmask_t *used_m
        inactive = NULL;
 
        while (unhandled) {
-               MonoMethodVar *current = unhandled->data;
+               MonoMethodVar *current = (MonoMethodVar *)unhandled->data;
                int pos, reg, max_free_pos;
                gboolean changed;
 
@@ -470,7 +470,7 @@ mono_linear_scan2 (MonoCompile *cfg, GList *vars, GList *regs, regmask_t *used_m
        /* Do the actual register assignment */
        n_regvars = 0;
        for (l = vars; l; l = l->next) {
-               vmv = l->data;
+               vmv = (MonoMethodVar *)l->data;
 
                if (vmv->reg >= 0) {
                        int reg_index = vmv->reg;
@@ -498,7 +498,7 @@ mono_linear_scan2 (MonoCompile *cfg, GList *vars, GList *regs, regmask_t *used_m
        /* Compute used regs */
        used_regs = 0;
        for (l = vars; l; l = l->next) {
-               vmv = l->data;
+               vmv = (MonoMethodVar *)l->data;
                
                if (vmv->reg >= 0)
                        used_regs |= 1LL << vmv->reg;
index 355846bea67270805a5262f2d9518839fc2f33df..ee87dfa082ad509892177d58242c5dc7bf962971 100644 (file)
@@ -44,14 +44,14 @@ optimize_initlocals (MonoCompile *cfg);
 static inline MonoBitSet* 
 mono_bitset_mp_new (MonoMemPool *mp, guint32 size, guint32 max_size)
 {
-       guint8 *mem = mono_mempool_alloc0 (mp, size);
+       guint8 *mem = (guint8 *)mono_mempool_alloc0 (mp, size);
        return mono_bitset_mem_new (mem, max_size, MONO_BITSET_DONT_FREE);
 }
 
 static inline MonoBitSet* 
 mono_bitset_mp_new_noinit (MonoMemPool *mp, guint32 size, guint32 max_size)
 {
-       guint8 *mem = mono_mempool_alloc (mp, size);
+       guint8 *mem = (guint8 *)mono_mempool_alloc (mp, size);
        return mono_bitset_mem_new (mem, max_size, MONO_BITSET_DONT_FREE);
 }
 
@@ -154,7 +154,7 @@ mono_liveness_handle_exception_clauses (MonoCompile *cfg)
         * Determine which clauses are outer try clauses, i.e. they are not contained in any
         * other non-try clause.
         */
-       outer_try = mono_mempool_alloc0 (cfg->mempool, sizeof (gboolean) * header->num_clauses);
+       outer_try = (gboolean *)mono_mempool_alloc0 (cfg->mempool, sizeof (gboolean) * header->num_clauses);
        for (i = 0; i < header->num_clauses; ++i)
                outer_try [i] = TRUE;
        /* Iterate over the clauses backward, so outer clauses come first */
@@ -238,7 +238,7 @@ analyze_liveness_bb (MonoCompile *cfg, MonoBasicBlock *bb)
                        continue;
 
                if (ins->opcode == OP_LDADDR) {
-                       MonoInst *var = ins->inst_p0;
+                       MonoInst *var = (MonoInst *)ins->inst_p0;
                        int idx = var->inst_c0;
                        MonoMethodVar *vi = MONO_VARINFO (cfg, idx);
 
@@ -660,7 +660,7 @@ mono_linterval_add_range (MonoCompile *cfg, MonoLiveInterval *interval, int from
                next_range->from = from;
        } else {
                /* Insert it */
-               new_range = mono_mempool_alloc (cfg->mempool, sizeof (MonoLiveRange2));
+               new_range = (MonoLiveRange2 *)mono_mempool_alloc (cfg->mempool, sizeof (MonoLiveRange2));
                new_range->from = from;
                new_range->to = to;
                new_range->next = NULL;
@@ -753,8 +753,8 @@ mono_linterval_split (MonoCompile *cfg, MonoLiveInterval *interval, MonoLiveInte
 
        g_assert (pos > interval->range->from && pos <= interval->last_range->to);
 
-       *i1 = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoLiveInterval));
-       *i2 = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoLiveInterval));
+       *i1 = (MonoLiveInterval *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoLiveInterval));
+       *i2 = (MonoLiveInterval *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoLiveInterval));
 
        for (r = interval->range; r; r = r->next) {
                if (pos > r->to) {
@@ -889,12 +889,12 @@ mono_analyze_liveness2 (MonoCompile *cfg)
        last_use = g_new0 (gint32, max_vars);
 
        reverse_len = 1024;
-       reverse = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * reverse_len);
+       reverse = (MonoInst **)mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * reverse_len);
 
        for (idx = 0; idx < max_vars; ++idx) {
                MonoMethodVar *vi = MONO_VARINFO (cfg, idx);
 
-               vi->interval = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoLiveInterval));
+               vi->interval = (MonoLiveInterval *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoLiveInterval));
        }
 
        /*
@@ -941,7 +941,7 @@ mono_analyze_liveness2 (MonoCompile *cfg)
                for (nins = 0, pos = block_from, ins = bb->code; ins; ins = ins->next, ++nins, ++pos) {
                        if (nins >= reverse_len) {
                                int new_reverse_len = reverse_len * 2;
-                               MonoInst **new_reverse = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * new_reverse_len);
+                               MonoInst **new_reverse = (MonoInst **)mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * new_reverse_len);
                                memcpy (new_reverse, reverse, sizeof (MonoInst*) * reverse_len);
                                reverse = new_reverse;
                                reverse_len = new_reverse_len;
@@ -1025,17 +1025,17 @@ update_liveness_gc (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst *ins, gint32
 
                /* Add it to the last callsite */
                g_assert (*callsites);
-               last = (*callsites)->data;
+               last = (GCCallSite *)(*callsites)->data;
                last->param_slots = g_slist_prepend_mempool (cfg->mempool, last->param_slots, ins);
        } else if (ins->flags & MONO_INST_GC_CALLSITE) {
-               GCCallSite *callsite = mono_mempool_alloc0 (cfg->mempool, sizeof (GCCallSite));
+               GCCallSite *callsite = (GCCallSite *)mono_mempool_alloc0 (cfg->mempool, sizeof (GCCallSite));
                int i;
 
                LIVENESS_DEBUG (printf ("\t%x: ", ins->backend.pc_offset); mono_print_ins (ins));
                LIVENESS_DEBUG (printf ("\t\tlive: "));
 
                callsite->bb = bb;
-               callsite->liveness = mono_mempool_alloc0 (cfg->mempool, ALIGN_TO (cfg->num_varinfo, 8) / 8);
+               callsite->liveness = (guint8 *)mono_mempool_alloc0 (cfg->mempool, ALIGN_TO (cfg->num_varinfo, 8) / 8);
                callsite->pc_offset = ins->backend.pc_offset;
                for (i = 0; i < cfg->num_varinfo; ++i) {
                        if (last_use [i] != 0) {
@@ -1091,7 +1091,7 @@ mono_analyze_liveness_gc (MonoCompile *cfg)
        }
 
        reverse_len = 1024;
-       reverse = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * reverse_len);
+       reverse = (MonoInst **)mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * reverse_len);
 
        for (bb = cfg->bb_entry; bb; bb = bb->next_bb) {
                MonoInst *ins;
@@ -1133,7 +1133,7 @@ mono_analyze_liveness_gc (MonoCompile *cfg)
                for (nins = 0, pos = block_from, ins = bb->code; ins; ins = ins->next, ++nins, ++pos) {
                        if (nins >= reverse_len) {
                                int new_reverse_len = reverse_len * 2;
-                               MonoInst **new_reverse = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * new_reverse_len);
+                               MonoInst **new_reverse = (MonoInst **)mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * new_reverse_len);
                                memcpy (new_reverse, reverse, sizeof (MonoInst*) * reverse_len);
                                reverse = new_reverse;
                                reverse_len = new_reverse_len;
index 3d4e8029aab6b69e8e9a352adecdffc0e40445ff..fc7b74692f736ca83805bae61f0d7c0baf16e83d 100644 (file)
@@ -58,8 +58,8 @@ mono_local_cprop (MonoCompile *cfg)
 restart:
 
        max = cfg->next_vreg;
-       defs = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * (cfg->next_vreg + 1));
-       def_index = mono_mempool_alloc (cfg->mempool, sizeof (guint32) * (cfg->next_vreg + 1));
+       defs = (MonoInst **)mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * (cfg->next_vreg + 1));
+       def_index = (gint32 *)mono_mempool_alloc (cfg->mempool, sizeof (guint32) * (cfg->next_vreg + 1));
 
        for (bb = cfg->bb_entry; bb; bb = bb->next_bb) {
                MonoInst *ins;
@@ -107,7 +107,7 @@ restart:
 
                        /* FIXME: Optimize this */
                        if (ins->opcode == OP_LDADDR) {
-                               MonoInst *var = ins->inst_p0;
+                               MonoInst *var = (MonoInst *)ins->inst_p0;
 
                                defs [var->dreg] = NULL;
                                /*
index bbe1f46dde715a95e0c2eec9d1c3218e37ee5a5f..a337597dae3a7ef306f7dcdc50e9b3c8bafd0758 100644 (file)
@@ -499,7 +499,7 @@ add_widen_op (MonoCompile *cfg, MonoInst *ins, MonoInst **arg1_ref, MonoInst **a
                CHECK_TYPE (ins);       \
                /* Have to insert a widening op */               \
         add_widen_op (cfg, ins, &sp [0], &sp [1]);              \
-        ins->dreg = alloc_dreg ((cfg), (ins)->type); \
+        ins->dreg = alloc_dreg ((cfg), (MonoStackType)(ins)->type); \
         MONO_ADD_INS ((cfg)->cbb, (ins)); \
         *sp++ = mono_decompose_opcode ((cfg), (ins));  \
        } while (0)
@@ -510,7 +510,7 @@ add_widen_op (MonoCompile *cfg, MonoInst *ins, MonoInst **arg1_ref, MonoInst **a
                ins->sreg1 = sp [0]->dreg;      \
                type_from_op (cfg, ins, sp [0], NULL);  \
                CHECK_TYPE (ins);       \
-        (ins)->dreg = alloc_dreg ((cfg), (ins)->type); \
+        (ins)->dreg = alloc_dreg ((cfg), (MonoStackType)(ins)->type); \
         MONO_ADD_INS ((cfg)->cbb, (ins)); \
                *sp++ = mono_decompose_opcode (cfg, ins);       \
        } while (0)
@@ -525,7 +525,7 @@ add_widen_op (MonoCompile *cfg, MonoInst *ins, MonoInst **arg1_ref, MonoInst **a
                CHECK_TYPE (cmp);       \
                add_widen_op (cfg, cmp, &sp [0], &sp [1]);                                              \
                type_from_op (cfg, ins, sp [0], sp [1]);                                                        \
-               ins->inst_many_bb = mono_mempool_alloc (cfg->mempool, sizeof(gpointer)*2);      \
+               ins->inst_many_bb = (MonoBasicBlock **)mono_mempool_alloc (cfg->mempool, sizeof(gpointer)*2);   \
                GET_BBLOCK (cfg, tblock, target);               \
                link_bblock (cfg, cfg->cbb, tblock);    \
                ins->inst_true_bb = tblock;     \
@@ -582,7 +582,7 @@ link_bblock (MonoCompile *cfg, MonoBasicBlock *from, MonoBasicBlock* to)
                }
        }
        if (!found) {
-               newa = mono_mempool_alloc (cfg->mempool, sizeof (gpointer) * (from->out_count + 1));
+               newa = (MonoBasicBlock **)mono_mempool_alloc (cfg->mempool, sizeof (gpointer) * (from->out_count + 1));
                for (i = 0; i < from->out_count; ++i) {
                        newa [i] = from->out_bb [i];
                }
@@ -599,7 +599,7 @@ link_bblock (MonoCompile *cfg, MonoBasicBlock *from, MonoBasicBlock* to)
                }
        }
        if (!found) {
-               newa = mono_mempool_alloc (cfg->mempool, sizeof (gpointer) * (to->in_count + 1));
+               newa = (MonoBasicBlock **)mono_mempool_alloc (cfg->mempool, sizeof (gpointer) * (to->in_count + 1));
                for (i = 0; i < to->in_count; ++i) {
                        newa [i] = to->in_bb [i];
                }
@@ -685,7 +685,7 @@ mono_create_spvar_for_region (MonoCompile *cfg, int region)
 {
        MonoInst *var;
 
-       var = g_hash_table_lookup (cfg->spvars, GINT_TO_POINTER (region));
+       var = (MonoInst *)g_hash_table_lookup (cfg->spvars, GINT_TO_POINTER (region));
        if (var)
                return;
 
@@ -699,7 +699,7 @@ mono_create_spvar_for_region (MonoCompile *cfg, int region)
 MonoInst *
 mono_find_exvar_for_offset (MonoCompile *cfg, int offset)
 {
-       return g_hash_table_lookup (cfg->exvars, GINT_TO_POINTER (offset));
+       return (MonoInst *)g_hash_table_lookup (cfg->exvars, GINT_TO_POINTER (offset));
 }
 
 static MonoInst*
@@ -707,7 +707,7 @@ mono_create_exvar_for_offset (MonoCompile *cfg, int offset)
 {
        MonoInst *var;
 
-       var = g_hash_table_lookup (cfg->exvars, GINT_TO_POINTER (offset));
+       var = (MonoInst *)g_hash_table_lookup (cfg->exvars, GINT_TO_POINTER (offset));
        if (var)
                return var;
 
@@ -1397,7 +1397,7 @@ mono_save_token_info (MonoCompile *cfg, MonoImage *image, guint32 token, gpointe
         * table == 0 means this is a reference made from a wrapper.
         */
        if (cfg->compile_aot && !cfg->generic_context && (mono_metadata_token_table (token) > 0)) {
-               MonoJumpInfoToken *jump_info_token = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoJumpInfoToken));
+               MonoJumpInfoToken *jump_info_token = (MonoJumpInfoToken *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoJumpInfoToken));
                jump_info_token->image = image;
                jump_info_token->token = token;
                g_hash_table_insert (cfg->token_info_hash, key, jump_info_token);
@@ -1447,7 +1447,7 @@ handle_stack_args (MonoCompile *cfg, MonoInst **sp, int count)
                }
                //printf ("\n");
                if (!found) {
-                       bb->out_stack = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * count);
+                       bb->out_stack = (MonoInst **)mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * count);
                        for (i = 0; i < count; ++i) {
                                /* 
                                 * try to reuse temps already allocated for this purpouse, if they occupy the same
@@ -1950,7 +1950,7 @@ mini_emit_memcpy (MonoCompile *cfg, int destreg, int doffset, int srcreg, int so
 }
 
 static void
-emit_tls_set (MonoCompile *cfg, int sreg1, int tls_key)
+emit_tls_set (MonoCompile *cfg, int sreg1, MonoTlsKey tls_key)
 {
        MonoInst *ins, *c;
 
@@ -2480,7 +2480,7 @@ emit_imt_argument (MonoCompile *cfg, MonoCallInst *call, MonoMethod *method, Mon
 static MonoJumpInfo *
 mono_patch_info_new (MonoMemPool *mp, int ip, MonoJumpInfoType type, gconstpointer target)
 {
-       MonoJumpInfo *ji = mono_mempool_alloc (mp, sizeof (MonoJumpInfo));
+       MonoJumpInfo *ji = (MonoJumpInfo *)mono_mempool_alloc (mp, sizeof (MonoJumpInfo));
 
        ji->ip.i = ip;
        ji->type = type;
@@ -2556,7 +2556,7 @@ check_method_sharing (MonoCompile *cfg, MonoMethod *cmethod, gboolean *out_pass_
 
 inline static MonoCallInst *
 mono_emit_call_args (MonoCompile *cfg, MonoMethodSignature *sig, 
-                                        MonoInst **args, int calli, int virtual, int tail, int rgctx, int unbox_trampoline)
+                                        MonoInst **args, int calli, int virtual_, int tail, int rgctx, int unbox_trampoline)
 {
        MonoType *sig_ret;
        MonoCallInst *call;
@@ -2572,7 +2572,7 @@ mono_emit_call_args (MonoCompile *cfg, MonoMethodSignature *sig,
 
                MONO_INST_NEW_CALL (cfg, call, OP_TAILCALL);
        } else
-               MONO_INST_NEW_CALL (cfg, call, ret_type_to_call_opcode (cfg, sig->ret, calli, virtual));
+               MONO_INST_NEW_CALL (cfg, call, ret_type_to_call_opcode (cfg, sig->ret, calli, virtual_));
 
        call->args = args;
        call->signature = sig;
@@ -2611,7 +2611,7 @@ mono_emit_call_args (MonoCompile *cfg, MonoMethodSignature *sig,
 
                call->vret_var = loada;
        } else if (!MONO_TYPE_IS_VOID (sig_ret))
-               call->inst.dreg = alloc_dreg (cfg, call->inst.type);
+               call->inst.dreg = alloc_dreg (cfg, (MonoStackType)call->inst.type);
 
 #ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
        if (COMPILE_SOFT_FLOAT (cfg)) {
@@ -2749,7 +2749,7 @@ mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSign
 #ifndef DISABLE_REMOTING
        gboolean might_be_remote = FALSE;
 #endif
-       gboolean virtual = this_ins != NULL;
+       gboolean virtual_ = this_ins != NULL;
        gboolean enable_for_aot = TRUE;
        int context_used;
        MonoCallInst *call;
@@ -2813,7 +2813,7 @@ mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSign
        }
 #endif
 
-       if (cfg->llvm_only && !call_target && virtual && (method->flags & METHOD_ATTRIBUTE_VIRTUAL)) {
+       if (cfg->llvm_only && !call_target && virtual_ && (method->flags & METHOD_ATTRIBUTE_VIRTUAL)) {
                // FIXME: Vcall optimizations below
                MonoInst *icall_args [16];
                MonoInst *ins;
@@ -2843,7 +2843,7 @@ mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSign
 
        need_unbox_trampoline = method->klass == mono_defaults.object_class || (method->klass->flags & TYPE_ATTRIBUTE_INTERFACE);
 
-       call = mono_emit_call_args (cfg, sig, args, FALSE, virtual, tail, rgctx_arg ? TRUE : FALSE, need_unbox_trampoline);
+       call = mono_emit_call_args (cfg, sig, args, FALSE, virtual_, tail, rgctx_arg ? TRUE : FALSE, need_unbox_trampoline);
 
 #ifndef DISABLE_REMOTING
        if (might_be_remote)
@@ -2855,7 +2855,7 @@ mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSign
        call->inst.inst_left = this_ins;
        call->tail_call = tail;
 
-       if (virtual) {
+       if (virtual_) {
                int vtable_reg, slot_reg, this_reg;
                int offset;
 
@@ -3476,10 +3476,10 @@ emit_get_rgctx (MonoCompile *cfg, MonoMethod *method, int context_used)
 static MonoJumpInfoRgctxEntry *
 mono_patch_info_rgctx_entry_new (MonoMemPool *mp, MonoMethod *method, gboolean in_mrgctx, MonoJumpInfoType patch_type, gconstpointer patch_data, MonoRgctxInfoType info_type)
 {
-       MonoJumpInfoRgctxEntry *res = mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoRgctxEntry));
+       MonoJumpInfoRgctxEntry *res = (MonoJumpInfoRgctxEntry *)mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoRgctxEntry));
        res->method = method;
        res->in_mrgctx = in_mrgctx;
-       res->data = mono_mempool_alloc0 (mp, sizeof (MonoJumpInfo));
+       res->data = (MonoJumpInfo *)mono_mempool_alloc0 (mp, sizeof (MonoJumpInfo));
        res->data->type = patch_type;
        res->data->data.target = patch_data;
        res->info_type = info_type;
@@ -3638,7 +3638,7 @@ emit_get_rgctx_gsharedvt_call (MonoCompile *cfg, int context_used,
        MonoJumpInfoRgctxEntry *entry;
        MonoInst *rgctx;
 
-       call_info = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoJumpInfoGSharedVtCall));
+       call_info = (MonoJumpInfoGSharedVtCall *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoJumpInfoGSharedVtCall));
        call_info->sig = sig;
        call_info->method = cmethod;
 
@@ -3661,7 +3661,7 @@ emit_get_rgctx_virt_method (MonoCompile *cfg, int context_used,
        MonoJumpInfoRgctxEntry *entry;
        MonoInst *rgctx;
 
-       info = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoJumpInfoVirtMethod));
+       info = (MonoJumpInfoVirtMethod *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoJumpInfoVirtMethod));
        info->klass = klass;
        info->method = virt_method;
 
@@ -3729,7 +3729,7 @@ static int
 get_gsharedvt_info_slot (MonoCompile *cfg, gpointer data, MonoRgctxInfoType rgctx_type)
 {
        MonoGSharedVtMethodInfo *info = cfg->gsharedvt_info;
-       MonoRuntimeGenericContextInfoTemplate *template;
+       MonoRuntimeGenericContextInfoTemplate *template_;
        int i, idx;
 
        g_assert (info);
@@ -3745,7 +3745,7 @@ get_gsharedvt_info_slot (MonoCompile *cfg, gpointer data, MonoRgctxInfoType rgct
                MonoRuntimeGenericContextInfoTemplate *new_entries;
                int new_count_entries = info->count_entries ? info->count_entries * 2 : 16;
 
-               new_entries = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoRuntimeGenericContextInfoTemplate) * new_count_entries);
+               new_entries = (MonoRuntimeGenericContextInfoTemplate *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoRuntimeGenericContextInfoTemplate) * new_count_entries);
 
                memcpy (new_entries, info->entries, sizeof (MonoRuntimeGenericContextInfoTemplate) * info->count_entries);
                info->entries = new_entries;
@@ -3753,9 +3753,9 @@ get_gsharedvt_info_slot (MonoCompile *cfg, gpointer data, MonoRgctxInfoType rgct
        }
 
        idx = info->num_entries;
-       template = &info->entries [idx];
-       template->info_type = rgctx_type;
-       template->data = data;
+       template_ = &info->entries [idx];
+       template_->info_type = rgctx_type;
+       template_->data = data;
 
        info->num_entries ++;
 
@@ -4114,7 +4114,7 @@ handle_unbox_gsharedvt (MonoCompile *cfg, MonoClass *klass, MonoInst *obj)
                MonoInst *unbox_call;
                MonoMethodSignature *unbox_sig;
 
-               unbox_sig = mono_mempool_alloc0 (cfg->mempool, MONO_SIZEOF_METHOD_SIGNATURE + (1 * sizeof (MonoType *)));
+               unbox_sig = (MonoMethodSignature *)mono_mempool_alloc0 (cfg->mempool, MONO_SIZEOF_METHOD_SIGNATURE + (1 * sizeof (MonoType *)));
                unbox_sig->ret = &klass->byval_arg;
                unbox_sig->param_count = 1;
                unbox_sig->params [0] = &mono_defaults.object_class->byval_arg;
@@ -4146,7 +4146,7 @@ handle_alloc (MonoCompile *cfg, MonoClass *klass, gboolean for_box, int context_
 
        if (context_used) {
                MonoInst *data;
-               int rgctx_info;
+               MonoRgctxInfoType rgctx_info;
                MonoInst *iargs [2];
                gboolean known_instance_size = !mini_is_gsharedvt_klass (klass);
 
@@ -4318,7 +4318,7 @@ handle_box (MonoCompile *cfg, MonoInst *val, MonoClass *klass, int context_used)
                         * klass is Nullable<T>, need to call Nullable<T>.Box () using a gsharedvt signature, but we cannot
                         * construct that method at JIT time, so have to do things by hand.
                         */
-                       box_sig = mono_mempool_alloc0 (cfg->mempool, MONO_SIZEOF_METHOD_SIGNATURE + (1 * sizeof (MonoType *)));
+                       box_sig = (MonoMethodSignature *)mono_mempool_alloc0 (cfg->mempool, MONO_SIZEOF_METHOD_SIGNATURE + (1 * sizeof (MonoType *)));
                        box_sig->ret = &mono_defaults.object_class->byval_arg;
                        box_sig->param_count = 1;
                        box_sig->params [0] = &klass->byval_arg;
@@ -4926,13 +4926,13 @@ handle_enum_has_flag (MonoCompile *cfg, MonoClass *klass, MonoInst *enum_this, M
        }
 
        {
-               MonoInst *load, *and, *cmp, *ceq;
+               MonoInst *load, *and_, *cmp, *ceq;
                int enum_reg = is_i4 ? alloc_ireg (cfg) : alloc_lreg (cfg);
                int and_reg = is_i4 ? alloc_ireg (cfg) : alloc_lreg (cfg);
                int dest_reg = alloc_ireg (cfg);
 
                EMIT_NEW_LOAD_MEMBASE (cfg, load, load_opc, enum_reg, enum_this->dreg, 0);
-               EMIT_NEW_BIALU (cfg, and, is_i4 ? OP_IAND : OP_LAND, and_reg, enum_reg, enum_flag->dreg);
+               EMIT_NEW_BIALU (cfg, and_, is_i4 ? OP_IAND : OP_LAND, and_reg, enum_reg, enum_flag->dreg);
                EMIT_NEW_BIALU (cfg, cmp, is_i4 ? OP_ICOMPARE : OP_LCOMPARE, -1, and_reg, enum_flag->dreg);
                EMIT_NEW_UNALU (cfg, ceq, is_i4 ? OP_ICEQ : OP_LCEQ, dest_reg, -1);
 
@@ -4940,7 +4940,7 @@ handle_enum_has_flag (MonoCompile *cfg, MonoClass *klass, MonoInst *enum_this, M
 
                if (!is_i4) {
                        load = mono_decompose_opcode (cfg, load);
-                       and = mono_decompose_opcode (cfg, and);
+                       and_ = mono_decompose_opcode (cfg, and_);
                        cmp = mono_decompose_opcode (cfg, cmp);
                        ceq = mono_decompose_opcode (cfg, ceq);
                }
@@ -4953,7 +4953,7 @@ handle_enum_has_flag (MonoCompile *cfg, MonoClass *klass, MonoInst *enum_this, M
  * Returns NULL and set the cfg exception on error.
  */
 static G_GNUC_UNUSED MonoInst*
-handle_delegate_ctor (MonoCompile *cfg, MonoClass *klass, MonoInst *target, MonoMethod *method, int context_used, gboolean virtual)
+handle_delegate_ctor (MonoCompile *cfg, MonoClass *klass, MonoInst *target, MonoMethod *method, int context_used, gboolean virtual_)
 {
        MonoInst *ptr;
        int dreg;
@@ -4962,7 +4962,7 @@ handle_delegate_ctor (MonoCompile *cfg, MonoClass *klass, MonoInst *target, Mono
        MonoDomain *domain;
        guint8 **code_slot;
 
-       if (virtual && !cfg->llvm_only) {
+       if (virtual_ && !cfg->llvm_only) {
                MonoMethod *invoke = mono_get_delegate_invoke (klass);
                g_assert (invoke);
 
@@ -4985,7 +4985,7 @@ handle_delegate_ctor (MonoCompile *cfg, MonoClass *klass, MonoInst *target, Mono
                args [0] = obj;
                args [1] = target;
                args [2] = emit_get_rgctx_method (cfg, context_used, method, MONO_RGCTX_INFO_METHOD);
-               mono_emit_jit_icall (cfg, virtual ? mono_init_delegate_virtual : mono_init_delegate, args);
+               mono_emit_jit_icall (cfg, virtual_ ? mono_init_delegate_virtual : mono_init_delegate, args);
 
                return obj;
        }
@@ -5022,9 +5022,9 @@ handle_delegate_ctor (MonoCompile *cfg, MonoClass *klass, MonoInst *target, Mono
                        mono_domain_lock (domain);
                        if (!domain_jit_info (domain)->method_code_hash)
                                domain_jit_info (domain)->method_code_hash = g_hash_table_new (NULL, NULL);
-                       code_slot = g_hash_table_lookup (domain_jit_info (domain)->method_code_hash, method);
+                       code_slot = (guint8 **)g_hash_table_lookup (domain_jit_info (domain)->method_code_hash, method);
                        if (!code_slot) {
-                               code_slot = mono_domain_alloc0 (domain, sizeof (gpointer));
+                               code_slot = (guint8 **)mono_domain_alloc0 (domain, sizeof (gpointer));
                                g_hash_table_insert (domain_jit_info (domain)->method_code_hash, method, code_slot);
                        }
                        mono_domain_unlock (domain);
@@ -5037,13 +5037,13 @@ handle_delegate_ctor (MonoCompile *cfg, MonoClass *klass, MonoInst *target, Mono
        if (cfg->compile_aot) {
                MonoDelegateClassMethodPair *del_tramp;
 
-               del_tramp = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoDelegateClassMethodPair));
+               del_tramp = (MonoDelegateClassMethodPair *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoDelegateClassMethodPair));
                del_tramp->klass = klass;
                del_tramp->method = context_used ? NULL : method;
-               del_tramp->is_virtual = virtual;
+               del_tramp->is_virtual = virtual_;
                EMIT_NEW_AOTCONST (cfg, tramp_ins, MONO_PATCH_INFO_DELEGATE_TRAMPOLINE, del_tramp);
        } else {
-               if (virtual)
+               if (virtual_)
                        trampoline = mono_create_delegate_virtual_trampoline (cfg->domain, klass, context_used ? NULL : method);
                else
                        trampoline = mono_create_delegate_trampoline_info (cfg->domain, klass, context_used ? NULL : method);
@@ -5051,7 +5051,7 @@ handle_delegate_ctor (MonoCompile *cfg, MonoClass *klass, MonoInst *target, Mono
        }
 
        /* Set invoke_impl field */
-       if (virtual) {
+       if (virtual_) {
                MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, obj->dreg, MONO_STRUCT_OFFSET (MonoDelegate, invoke_impl), tramp_ins->dreg);
        } else {
                dreg = alloc_preg (cfg);
@@ -5064,7 +5064,7 @@ handle_delegate_ctor (MonoCompile *cfg, MonoClass *klass, MonoInst *target, Mono
        }
 
        dreg = alloc_preg (cfg);
-       MONO_EMIT_NEW_ICONST (cfg, dreg, virtual ? 1 : 0);
+       MONO_EMIT_NEW_ICONST (cfg, dreg, virtual_ ? 1 : 0);
        MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STOREI1_MEMBASE_REG, obj->dreg, MONO_STRUCT_OFFSET (MonoDelegate, method_is_virtual), dreg);
 
        /* All the checks which are in mono_delegate_ctor () are done by the delegate trampoline */
@@ -6692,13 +6692,13 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
                        cfg->disable_llvm = TRUE;
 
                        if (args [0]->opcode == OP_GOT_ENTRY) {
-                               pi = args [0]->inst_p1;
+                               pi = (MonoInst *)args [0]->inst_p1;
                                g_assert (pi->opcode == OP_PATCH_INFO);
                                g_assert (GPOINTER_TO_INT (pi->inst_p1) == MONO_PATCH_INFO_LDSTR);
-                               ji = pi->inst_p0;
+                               ji = (MonoJumpInfoToken *)pi->inst_p0;
                        } else {
                                g_assert (GPOINTER_TO_INT (args [0]->inst_p1) == MONO_PATCH_INFO_LDSTR);
-                               ji = args [0]->inst_p0;
+                               ji = (MonoJumpInfoToken *)args [0]->inst_p0;
                        }
 
                        NULLIFY_INS (args [0]);
@@ -6927,7 +6927,7 @@ emit_init_local (MonoCompile *cfg, int local, MonoType *type, gboolean init)
        MonoInst *var = cfg->locals [local];
        if (COMPILE_SOFT_FLOAT (cfg)) {
                MonoInst *store;
-               int reg = alloc_dreg (cfg, var->type);
+               int reg = alloc_dreg (cfg, (MonoStackType)var->type);
                emit_init_rvar (cfg, reg, type);
                EMIT_NEW_LOCSTORE (cfg, store, local, cfg->cbb->last_ins);
        } else {
@@ -6962,7 +6962,7 @@ inline_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsig,
        guint32 prev_cil_offset_to_bb_len;
        MonoMethod *prev_current_method;
        MonoGenericContext *prev_generic_context;
-       gboolean ret_var_set, prev_ret_var_set, prev_disable_inline, virtual = FALSE;
+       gboolean ret_var_set, prev_ret_var_set, prev_disable_inline, virtual_ = FALSE;
 
        g_assert (cfg->exception_type == MONO_EXCEPTION_NONE);
 
@@ -7013,7 +7013,7 @@ inline_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsig,
        }
 
        prev_locals = cfg->locals;
-       cfg->locals = mono_mempool_alloc0 (cfg->mempool, cheader->num_locals * sizeof (MonoInst*));     
+       cfg->locals = (MonoInst **)mono_mempool_alloc0 (cfg->mempool, cheader->num_locals * sizeof (MonoInst*));
        for (i = 0; i < cheader->num_locals; ++i)
                cfg->locals [i] = mono_compile_create_var (cfg, cheader->locals [i], OP_LOCAL);
 
@@ -7044,9 +7044,9 @@ inline_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsig,
        prev_disable_inline = cfg->disable_inline;
 
        if (ip && *ip == CEE_CALLVIRT && !(cmethod->flags & METHOD_ATTRIBUTE_STATIC))
-               virtual = TRUE;
+               virtual_ = TRUE;
 
-       costs = mono_method_to_ir (cfg, cmethod, sbblock, ebblock, rvar, sp, real_offset, virtual);
+       costs = mono_method_to_ir (cfg, cmethod, sbblock, ebblock, rvar, sp, real_offset, virtual_);
 
        ret_var_set = cfg->ret_var_set;
 
@@ -7286,7 +7286,7 @@ mini_get_method_allow_open (MonoMethod *m, guint32 token, MonoClass *klass, Mono
        MonoMethod *method;
 
        if (m->wrapper_type != MONO_WRAPPER_NONE) {
-               method = mono_method_get_wrapper_data (m, token);
+               method = (MonoMethod *)mono_method_get_wrapper_data (m, token);
                if (context) {
                        MonoError error;
                        method = mono_class_inflate_generic_method_checked (method, context, &error);
@@ -7317,7 +7317,7 @@ mini_get_class (MonoMethod *method, guint32 token, MonoGenericContext *context)
        MonoClass *klass;
 
        if (method->wrapper_type != MONO_WRAPPER_NONE) {
-               klass = mono_method_get_wrapper_data (method, token);
+               klass = (MonoClass *)mono_method_get_wrapper_data (method, token);
                if (context)
                        klass = mono_class_inflate_generic_class (klass, context);
        } else {
@@ -7480,7 +7480,7 @@ initialize_array_data (MonoMethod *method, gboolean aot, unsigned char *ip, Mono
                        /*g_print ("field: 0x%08x, rva: %d, rva_ptr: %p\n", read32 (ip + 2), rva, data_ptr);*/
                        /* for aot code we do the lookup on load */
                        if (aot && data_ptr)
-                               return GUINT_TO_POINTER (rva);
+                               return (const char *)GUINT_TO_POINTER (rva);
                } else {
                        /*FIXME is it possible to AOT a SRE assembly not meant to be saved? */ 
                        g_assert (!aot);
@@ -7797,7 +7797,7 @@ sig_to_rgctx_sig (MonoMethodSignature *sig)
        MonoMethodSignature *res;
        int i;
 
-       res = g_malloc (MONO_SIZEOF_METHOD_SIGNATURE + (sig->param_count + 1) * sizeof (MonoType*));
+       res = (MonoMethodSignature *)g_malloc (MONO_SIZEOF_METHOD_SIGNATURE + (sig->param_count + 1) * sizeof (MonoType*));
        memcpy (res, sig, MONO_SIZEOF_METHOD_SIGNATURE);
        res->param_count = sig->param_count + 1;
        for (i = 0; i < sig->param_count; ++i)
@@ -7957,7 +7957,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                cfg->real_offset = inline_offset;
        }
 
-       cfg->cil_offset_to_bb = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoBasicBlock*) * header->code_size);
+       cfg->cil_offset_to_bb = (MonoBasicBlock **)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoBasicBlock*) * header->code_size);
        cfg->cil_offset_to_bb_len = header->code_size;
 
        cfg->current_method = method;
@@ -7965,7 +7965,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
        if (cfg->verbose_level > 2)
                printf ("method to IR %s\n", mono_method_full_name (method, TRUE));
 
-       param_types = mono_mempool_alloc (cfg->mempool, sizeof (MonoType*) * num_args);
+       param_types = (MonoType **)mono_mempool_alloc (cfg->mempool, sizeof (MonoType*) * num_args);
        if (sig->hasthis)
                param_types [0] = method->klass->valuetype?&method->klass->this_arg:&method->klass->byval_arg;
        for (n = 0; n < sig->param_count; ++n)
@@ -8050,7 +8050,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                /* mostly like handle_stack_args (), but just sets the input args */
                                /* printf ("handling clause at IL_%04x\n", clause->handler_offset); */
                                tblock->in_scount = 1;
-                               tblock->in_stack = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*));
+                               tblock->in_stack = (MonoInst **)mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*));
                                tblock->in_stack [0] = mono_create_exvar_for_offset (cfg, clause->handler_offset);
 
                                cfg->cbb = tblock;
@@ -8082,7 +8082,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        tblock->flags |= BB_EXCEPTION_HANDLER;
                                        tblock->real_offset = clause->data.filter_offset;
                                        tblock->in_scount = 1;
-                                       tblock->in_stack = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*));
+                                       tblock->in_stack = (MonoInst **)mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*));
                                        /* The filter block shares the exvar with the handler block */
                                        tblock->in_stack [0] = mono_create_exvar_for_offset (cfg, clause->handler_offset);
                                        MONO_INST_NEW (cfg, ins, OP_START_HANDLER);
@@ -8155,10 +8155,10 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                MonoInst *var, *locals_var;
                int dreg;
 
-               info = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoGSharedVtMethodInfo));
+               info = (MonoGSharedVtMethodInfo *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoGSharedVtMethodInfo));
                info->method = cfg->method;
                info->count_entries = 16;
-               info->entries = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoRuntimeGenericContextInfoTemplate) * info->count_entries);
+               info->entries = (MonoRuntimeGenericContextInfoTemplate *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoRuntimeGenericContextInfoTemplate) * info->count_entries);
                cfg->gsharedvt_info = info;
 
                var = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL);
@@ -8263,7 +8263,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
        }
 
        /* we use a spare stack slot in SWITCH and NEWOBJ and others */
-       stack_start = sp = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoInst*) * (header->max_stack + 1));
+       stack_start = sp = (MonoInst **)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoInst*) * (header->max_stack + 1));
 
        ins_flag = 0;
        start_new_bblock = 0;
@@ -8583,7 +8583,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 #endif
 
                        /* FIXME: we should really allocate this only late in the compilation process */
-                       f = mono_domain_alloc (cfg->domain, sizeof (float));
+                       f = (float *)mono_domain_alloc (cfg->domain, sizeof (float));
                        CHECK_OPSIZE (5);
                        CHECK_STACK_OVF (1);
 
@@ -8620,7 +8620,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 #endif
 
                        /* FIXME: we should really allocate this only late in the compilation process */
-                       d = mono_domain_alloc (cfg->domain, sizeof (double));
+                       d = (double *)mono_domain_alloc (cfg->domain, sizeof (double));
                        CHECK_OPSIZE (9);
                        CHECK_STACK_OVF (1);
 
@@ -8705,7 +8705,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        if (cfg->llvm_only) {
                                MonoInst **args;
 
-                               args = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * n);
+                               args = (MonoInst **)mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * n);
                                for (i = 0; i < n; ++i)
                                        EMIT_NEW_ARGLOAD (cfg, args [i], i);
                                ins = mono_emit_method_call_full (cfg, cmethod, fsig, TRUE, args, NULL, NULL, NULL);
@@ -8729,7 +8729,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                call->method = cmethod;
                                call->tail_call = TRUE;
                                call->signature = mono_method_signature (cmethod);
-                               call->args = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * n);
+                               call->args = (MonoInst **)mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * n);
                                call->inst.inst_p0 = cmethod;
                                for (i = 0; i < n; ++i)
                                        EMIT_NEW_ARGLOAD (cfg, call->args [i], i);
@@ -8787,7 +8787,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
                        CHECK_STACK (n);
 
-                       //g_assert (!virtual || fsig->hasthis);
+                       //g_assert (!virtual_ || fsig->hasthis);
 
                        sp -= n;
 
@@ -8818,7 +8818,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        INLINE_FAILURE ("indirect call");
 
                        if (addr->opcode == OP_PCONST || addr->opcode == OP_AOTCONST || addr->opcode == OP_GOT_ENTRY) {
-                               int info_type;
+                               MonoJumpInfoType info_type;
                                gpointer info_data;
 
                                /*
@@ -8826,10 +8826,10 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                 * with the contents of the aotconst as the patch info.
                                 */
                                if (addr->opcode == OP_PCONST || addr->opcode == OP_AOTCONST) {
-                                       info_type = addr->inst_c1;
+                                       info_type = (MonoJumpInfoType)addr->inst_c1;
                                        info_data = addr->inst_p0;
                                } else {
-                                       info_type = addr->inst_right->inst_c1;
+                                       info_type = (MonoJumpInfoType)addr->inst_right->inst_c1;
                                        info_data = addr->inst_right->inst_left;
                                }
 
@@ -8862,7 +8862,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        MonoInst *addr = NULL;
                        MonoMethodSignature *fsig = NULL;
                        int array_rank = 0;
-                       int virtual = *ip == CEE_CALLVIRT;
+                       int virtual_ = *ip == CEE_CALLVIRT;
                        gboolean pass_imt_from_rgctx = FALSE;
                        MonoInst *imt_arg = NULL;
                        MonoInst *keep_this_alive = NULL;
@@ -8943,9 +8943,9 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        if (mono_security_core_clr_enabled ())
                                ensure_method_is_allowed_to_call_method (cfg, method, cil_method);
 
-                       if (!virtual && (cmethod->flags & METHOD_ATTRIBUTE_ABSTRACT))
+                       if (!virtual_ && (cmethod->flags & METHOD_ATTRIBUTE_ABSTRACT))
                                /* MS.NET seems to silently convert this to a callvirt */
-                               virtual = 1;
+                               virtual_ = 1;
 
                        {
                                /*
@@ -8956,8 +8956,8 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                 */
                                const int test_flags = METHOD_ATTRIBUTE_VIRTUAL | METHOD_ATTRIBUTE_FINAL | METHOD_ATTRIBUTE_STATIC;
                                const int expected_flags = METHOD_ATTRIBUTE_VIRTUAL | METHOD_ATTRIBUTE_FINAL;
-                               if (!virtual && mono_class_is_marshalbyref (cmethod->klass) && (cmethod->flags & test_flags) == expected_flags && cfg->method->wrapper_type == MONO_WRAPPER_NONE)
-                                       virtual = 1;
+                               if (!virtual_ && mono_class_is_marshalbyref (cmethod->klass) && (cmethod->flags & test_flags) == expected_flags && cfg->method->wrapper_type == MONO_WRAPPER_NONE)
+                                       virtual_ = 1;
                        }
 
                        if (!cmethod->klass->inited)
@@ -9021,7 +9021,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
                        CHECK_STACK (n);
 
-                       //g_assert (!virtual || fsig->hasthis);
+                       //g_assert (!virtual_ || fsig->hasthis);
 
                        sp -= n;
 
@@ -9157,7 +9157,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                        CHECK_CFG_EXCEPTION;
                                                }
                                        }
-                                       virtual = 0;
+                                       virtual_ = 0;
                                }
                                constrained_class = NULL;
                        }
@@ -9247,9 +9247,9 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                if ((!(cmethod->flags & METHOD_ATTRIBUTE_VIRTUAL) ||
                                         MONO_METHOD_IS_FINAL (cmethod)) &&
                                        !mono_class_is_marshalbyref (cmethod->klass)) {
-                                       if (virtual)
+                                       if (virtual_)
                                                check_this = TRUE;
-                                       virtual = 0;
+                                       virtual_ = 0;
                                }
                        }
 
@@ -9264,7 +9264,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                MONO_EMIT_NEW_CHECK_THIS (cfg, sp [0]->dreg);
 
                        /* Calling virtual generic methods */
-                       if (virtual && (cmethod->flags & METHOD_ATTRIBUTE_VIRTUAL) && 
+                       if (virtual_ && (cmethod->flags & METHOD_ATTRIBUTE_VIRTUAL) &&
                            !(MONO_METHOD_IS_FINAL (cmethod) && 
                              cmethod->wrapper_type != MONO_WRAPPER_REMOTING_INVOKE_WITH_CHECK) &&
                            fsig->generic_param_count && 
@@ -9349,7 +9349,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
                        /* Inlining */
                        if ((cfg->opt & MONO_OPT_INLINE) &&
-                               (!virtual || !(cmethod->flags & METHOD_ATTRIBUTE_VIRTUAL) || MONO_METHOD_IS_FINAL (cmethod)) &&
+                               (!virtual_ || !(cmethod->flags & METHOD_ATTRIBUTE_VIRTUAL) || MONO_METHOD_IS_FINAL (cmethod)) &&
                            mono_method_check_inlining (cfg, cmethod)) {
                                int costs;
                                gboolean always = FALSE;
@@ -9421,7 +9421,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                !(cmethod->klass->rank && cmethod->klass->byval_arg.type != MONO_TYPE_SZARRAY)) {
                                MonoRgctxInfoType info_type;
 
-                               if (virtual) {
+                               if (virtual_) {
                                        //if (cmethod->klass->flags & TYPE_ATTRIBUTE_INTERFACE)
                                                //GSHAREDVT_FAILURE (*ip);
                                        // disable for possible remoting calls
@@ -9446,7 +9446,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                if ((cmethod->klass->parent == mono_defaults.multicastdelegate_class) && (!strcmp (cmethod->name, "Invoke")))
                                        keep_this_alive = sp [0];
 
-                               if (virtual && (cmethod->flags & METHOD_ATTRIBUTE_VIRTUAL))
+                               if (virtual_ && (cmethod->flags & METHOD_ATTRIBUTE_VIRTUAL))
                                        info_type = MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE_VIRT;
                                else
                                        info_type = MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE;
@@ -9466,7 +9466,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        if (context_used && !imt_arg && !array_rank && !delegate_invoke &&
                                (!mono_method_is_generic_sharable_full (cmethod, TRUE, FALSE, FALSE) ||
                                 !mono_class_generic_sharing_enabled (cmethod->klass)) &&
-                               (!virtual || MONO_METHOD_IS_FINAL (cmethod) ||
+                               (!virtual_ || MONO_METHOD_IS_FINAL (cmethod) ||
                                 !(cmethod->flags & METHOD_ATTRIBUTE_VIRTUAL))) {
                                INLINE_FAILURE ("gshared");
 
@@ -9553,7 +9553,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                goto call_end;
                        }
 
-                       ins = mini_redirect_call (cfg, cmethod, fsig, sp, virtual ? sp [0] : NULL);
+                       ins = mini_redirect_call (cfg, cmethod, fsig, sp, virtual_ ? sp [0] : NULL);
                        if (ins)
                                goto call_end;
 
@@ -9636,7 +9636,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                         * So we make resolve_iface_call return the rgctx, and do two calls with different signatures
                         * based on whenever there is an rgctx or not.
                         */
-                       if (cfg->llvm_only && virtual && cmethod && (cmethod->klass->flags & TYPE_ATTRIBUTE_INTERFACE)) {
+                       if (cfg->llvm_only && virtual_ && cmethod && (cmethod->klass->flags & TYPE_ATTRIBUTE_INTERFACE)) {
                                MonoInst *args_buf [16], *icall_args [16];
                                MonoInst **args;
                                MonoBasicBlock *rgctx_bb, *end_bb;
@@ -9683,7 +9683,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                if (fsig->param_count + 2 < 16)
                                        args = args_buf;
                                else
-                                       args = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoInst*) * (fsig->param_count + 2));
+                                       args = (MonoInst **)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoInst*) * (fsig->param_count + 2));
                                args [0] = sp [0];
                                for (i = 0; i < fsig->param_count; ++i)
                                        args [i + 1] = sp [i + 1];
@@ -9701,7 +9701,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
                        /* Common call */
                        INLINE_FAILURE ("call");
-                       ins = mono_emit_method_call_full (cfg, cmethod, fsig, tail_call, sp, virtual ? sp [0] : NULL,
+                       ins = mono_emit_method_call_full (cfg, cmethod, fsig, tail_call, sp, virtual_ ? sp [0] : NULL,
                                                                                          imt_arg, vtable_arg);
 
                        if (tail_call && !cfg->llvm_only) {
@@ -9927,7 +9927,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        MONO_INST_NEW (cfg, ins, is_true ? CEE_BNE_UN : CEE_BEQ);
                        type_from_op (cfg, ins, sp [0], NULL);
                        MONO_ADD_INS (cfg->cbb, ins);
-                       ins->inst_many_bb = mono_mempool_alloc (cfg->mempool, sizeof(gpointer)*2);
+                       ins->inst_many_bb = (MonoBasicBlock **)mono_mempool_alloc (cfg->mempool, sizeof(gpointer)*2);
                        GET_BBLOCK (cfg, tblock, target);
                        ins->inst_true_bb = tblock;
                        GET_BBLOCK (cfg, tblock, ip);
@@ -9986,7 +9986,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        GET_BBLOCK (cfg, default_bblock, target);
                        default_bblock->flags |= BB_INDIRECT_JUMP_TARGET;
 
-                       targets = mono_mempool_alloc (cfg->mempool, sizeof (MonoBasicBlock*) * n);
+                       targets = (MonoBasicBlock **)mono_mempool_alloc (cfg->mempool, sizeof (MonoBasicBlock*) * n);
                        for (i = 0; i < n; ++i) {
                                GET_BBLOCK (cfg, tblock, target + (gint32)read32(ip));
                                targets [i] = tblock;
@@ -10019,7 +10019,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        for (i = 0; i < n; ++i)
                                link_bblock (cfg, cfg->cbb, targets [i]);
 
-                       table = mono_mempool_alloc (cfg->mempool, sizeof (MonoJumpInfoBBTable));
+                       table = (MonoJumpInfoBBTable *)mono_mempool_alloc (cfg->mempool, sizeof (MonoJumpInfoBBTable));
                        table->table = targets;
                        table->table_size = n;
 
@@ -10041,7 +10041,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                ins->sreg1 = src1->dreg;
                                ins->inst_p0 = table;
                                ins->inst_many_bb = targets;
-                               ins->klass = GUINT_TO_POINTER (n);
+                               ins->klass = (MonoClass *)GUINT_TO_POINTER (n);
                                MONO_ADD_INS (cfg->cbb, ins);
                        } else {
                                if (sizeof (gpointer) == 8)
@@ -10154,7 +10154,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        ins->sreg2 = sp [1]->dreg;
                        type_from_op (cfg, ins, sp [0], sp [1]);
                        CHECK_TYPE (ins);
-                       ins->dreg = alloc_dreg ((cfg), (ins)->type);
+                       ins->dreg = alloc_dreg ((cfg), (MonoStackType)(ins)->type);
 
                        /* Use the immediate opcodes if possible */
                        if ((sp [1]->opcode == OP_ICONST) && mono_arch_is_inst_imm (sp [1]->inst_c0)) {
@@ -10194,7 +10194,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        type_from_op (cfg, ins, sp [0], sp [1]);
                        CHECK_TYPE (ins);
                        add_widen_op (cfg, ins, &sp [0], &sp [1]);
-                       ins->dreg = alloc_dreg ((cfg), (ins)->type);
+                       ins->dreg = alloc_dreg ((cfg), (MonoStackType)(ins)->type);
 
                        /* FIXME: Pass opcode to is_inst_imm */
 
@@ -10442,7 +10442,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        }
                        else if (method->wrapper_type != MONO_WRAPPER_NONE) {
                                MonoInst *iargs [1];
-                               char *str = mono_method_get_wrapper_data (method, n);
+                               char *str = (char *)mono_method_get_wrapper_data (method, n);
 
                                if (cfg->compile_aot)
                                        EMIT_NEW_LDSTRLITCONST (cfg, iargs [0], str);
@@ -11007,7 +11007,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        CHECK_OPSIZE (5);
                        token = read32 (ip + 1);
                        if (method->wrapper_type != MONO_WRAPPER_NONE) {
-                               field = mono_method_get_wrapper_data (method, token);
+                               field = (MonoClassField *)mono_method_get_wrapper_data (method, token);
                                klass = field->parent;
                        }
                        else {
@@ -11904,7 +11904,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        if (method->wrapper_type == MONO_WRAPPER_DYNAMIC_METHOD ||
                                        method->wrapper_type == MONO_WRAPPER_SYNCHRONIZED) {
                                handle = mono_method_get_wrapper_data (method, n);
-                               handle_class = mono_method_get_wrapper_data (method, n + 1);
+                               handle_class = (MonoClass *)mono_method_get_wrapper_data (method, n + 1);
                                if (handle_class == mono_defaults.typehandle_class)
                                        handle = &((MonoClass*)handle)->byval_arg;
                        }
@@ -11923,11 +11923,11 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                           typeof(Gen<>). */
                                        context_used = 0;
                                } else if (handle_class == mono_defaults.typehandle_class) {
-                                       context_used = mini_class_check_context_used (cfg, mono_class_from_mono_type (handle));
+                                       context_used = mini_class_check_context_used (cfg, mono_class_from_mono_type ((MonoType *)handle));
                                } else if (handle_class == mono_defaults.fieldhandle_class)
                                        context_used = mini_class_check_context_used (cfg, ((MonoClassField*)handle)->parent);
                                else if (handle_class == mono_defaults.methodhandle_class)
-                                       context_used = mini_method_check_context_used (cfg, handle);
+                                       context_used = mini_method_check_context_used (cfg, (MonoMethod *)handle);
                                else
                                        g_assert_not_reached ();
                        }
@@ -11963,7 +11963,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        (cmethod = mini_get_method (cfg, method, read32 (ip + 6), NULL, generic_context)) &&
                                        (cmethod->klass == mono_defaults.systemtype_class) &&
                                        (strcmp (cmethod->name, "GetTypeFromHandle") == 0)) {
-                                       MonoClass *tclass = mono_class_from_mono_type (handle);
+                                       MonoClass *tclass = mono_class_from_mono_type ((MonoType *)handle);
 
                                        mono_class_init (tclass);
                                        if (context_used) {
@@ -11985,7 +11985,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                        EMIT_NEW_TYPE_FROM_HANDLE_CONST (cfg, ins, image, n, generic_context);
                                                }
                                        } else {
-                                               EMIT_NEW_PCONST (cfg, ins, mono_type_get_object (cfg->domain, handle));
+                                               EMIT_NEW_PCONST (cfg, ins, mono_type_get_object (cfg->domain, (MonoType *)handle));
                                        }
                                        ins->type = STACK_OBJ;
                                        ins->klass = cmethod->klass;
@@ -11998,14 +11998,14 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        if (context_used) {
                                                if (handle_class == mono_defaults.typehandle_class) {
                                                        ins = emit_get_rgctx_klass (cfg, context_used,
-                                                                       mono_class_from_mono_type (handle),
+                                                                       mono_class_from_mono_type ((MonoType *)handle),
                                                                        MONO_RGCTX_INFO_TYPE);
                                                } else if (handle_class == mono_defaults.methodhandle_class) {
                                                        ins = emit_get_rgctx_method (cfg, context_used,
-                                                                       handle, MONO_RGCTX_INFO_METHOD);
+                                                                       (MonoMethod *)handle, MONO_RGCTX_INFO_METHOD);
                                                } else if (handle_class == mono_defaults.fieldhandle_class) {
                                                        ins = emit_get_rgctx_field (cfg, context_used,
-                                                                       handle, MONO_RGCTX_INFO_CLASS_FIELD);
+                                                                       (MonoClassField *)handle, MONO_RGCTX_INFO_CLASS_FIELD);
                                                } else {
                                                        g_assert_not_reached ();
                                                }
@@ -12128,7 +12128,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                MonoExceptionClause *clause;
 
                                for (tmp = handlers; tmp; tmp = tmp->next) {
-                                       clause = tmp->data;
+                                       clause = (MonoExceptionClause *)tmp->data;
                                        tblock = cfg->cil_offset_to_bb [clause->handler_offset];
                                        g_assert (tblock);
                                        link_bblock (cfg, cfg->cbb, tblock);
@@ -12267,7 +12267,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                CHECK_OPSIZE (6);
                                token = read32 (ip + 2);
 
-                               cmethod = mono_method_get_wrapper_data (method, token);
+                               cmethod = (MonoMethod *)mono_method_get_wrapper_data (method, token);
 
                                if (cfg->compile_aot) {
                                        EMIT_NEW_AOTCONST (cfg, ins, MONO_PATCH_INFO_ICALL_ADDR, cmethod);
@@ -12330,7 +12330,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                CHECK_OPSIZE (6);
                                --sp;
                                token = read32 (ip + 2);
-                               klass = mono_method_get_wrapper_data (method, token);
+                               klass = (MonoClass *)mono_method_get_wrapper_data (method, token);
                                g_assert (klass->valuetype);
                                mono_class_init (klass);
 
@@ -12419,11 +12419,11 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                ip += 2;
                                break;
                        case CEE_MONO_TLS: {
-                               int key;
+                               MonoTlsKey key;
 
                                CHECK_STACK_OVF (1);
                                CHECK_OPSIZE (6);
-                               key = (gint32)read32 (ip + 2);
+                               key = (MonoTlsKey)read32 (ip + 2);
                                g_assert (key < TLS_KEY_NUM);
 
                                ins = mono_create_tls_get (cfg, key);
@@ -12601,7 +12601,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        cmp->opcode = OP_ICOMPARE;
                                MONO_ADD_INS (cfg->cbb, cmp);
                                ins->type = STACK_I4;
-                               ins->dreg = alloc_dreg (cfg, ins->type);
+                               ins->dreg = alloc_dreg (cfg, (MonoStackType)ins->type);
                                type_from_op (cfg, ins, arg1, arg2);
 
                                if (cmp->opcode == OP_FCOMPARE || cmp->opcode == OP_RCOMPARE) {
@@ -13720,7 +13720,7 @@ mono_handle_global_vregs (MonoCompile *cfg)
        MonoBasicBlock *bb;
        int i, pos;
 
-       vreg_to_bb = mono_mempool_alloc0 (cfg->mempool, sizeof (gint32*) * cfg->next_vreg + 1);
+       vreg_to_bb = (gint32 *)mono_mempool_alloc0 (cfg->mempool, sizeof (gint32*) * cfg->next_vreg + 1);
 
 #ifdef MONO_ARCH_SIMD_INTRINSICS
        if (cfg->uses_simd_intrinsics)
@@ -13963,7 +13963,7 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
        guint32 *lvregs;
        guint32 i, lvregs_len;
        gboolean dest_has_lvreg = FALSE;
-       guint32 stacktypes [128];
+       MonoStackType stacktypes [128];
        MonoInst **live_range_start, **live_range_end;
        MonoBasicBlock **live_range_start_bb, **live_range_end_bb;
        int *gsharedvt_vreg_to_idx = NULL;
@@ -14027,7 +14027,7 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
        }
 
        if (cfg->gsharedvt) {
-               gsharedvt_vreg_to_idx = mono_mempool_alloc0 (cfg->mempool, sizeof (int) * cfg->next_vreg);
+               gsharedvt_vreg_to_idx = (int *)mono_mempool_alloc0 (cfg->mempool, sizeof (int) * cfg->next_vreg);
 
                for (i = 0; i < cfg->num_varinfo; ++i) {
                        MonoInst *ins = cfg->varinfo [i];
@@ -14057,8 +14057,8 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
         * the variable again.
         */
        orig_next_vreg = cfg->next_vreg;
-       vreg_to_lvreg = mono_mempool_alloc0 (cfg->mempool, sizeof (guint32) * cfg->next_vreg);
-       lvregs = mono_mempool_alloc (cfg->mempool, sizeof (guint32) * 1024);
+       vreg_to_lvreg = (guint32 *)mono_mempool_alloc0 (cfg->mempool, sizeof (guint32) * cfg->next_vreg);
+       lvregs = (guint32 *)mono_mempool_alloc (cfg->mempool, sizeof (guint32) * 1024);
        lvregs_len = 0;
 
        /* 
@@ -14109,7 +14109,7 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
                         * when variable addresses are known.
                         */
                        if (ins->opcode == OP_LDADDR) {
-                               MonoInst *var = ins->inst_p0;
+                               MonoInst *var = (MonoInst *)ins->inst_p0;
 
                                if (var->opcode == OP_VTARG_ADDR) {
                                        /* Happens on SPARC/S390 where vtypes are passed by reference */
index 49d9cbc14dfab8e9ad4854e62dc945117e3fafb4..3b92f4c72e8a1de69486d1cdd665b8c3982bd5d9 100644 (file)
@@ -1142,9 +1142,9 @@ get_call_info (MonoMemPool *mp, MonoMethodSignature *sig)
        gboolean is_pinvoke = sig->pinvoke;
 
        if (mp)
-               cinfo = mono_mempool_alloc0 (mp, sizeof (CallInfo) + (sizeof (ArgInfo) * n));
+               cinfo = (CallInfo *)mono_mempool_alloc0 (mp, sizeof (CallInfo) + (sizeof (ArgInfo) * n));
        else
-               cinfo = g_malloc0 (sizeof (CallInfo) + (sizeof (ArgInfo) * n));
+               cinfo = (CallInfo *)g_malloc0 (sizeof (CallInfo) + (sizeof (ArgInfo) * n));
 
        cinfo->nargs = n;
 
@@ -1593,7 +1593,7 @@ mono_arch_compute_omit_fp (MonoCompile *cfg)
 
        if (!cfg->arch.cinfo)
                cfg->arch.cinfo = get_call_info (cfg->mempool, sig);
-       cinfo = cfg->arch.cinfo;
+       cinfo = (CallInfo *)cfg->arch.cinfo;
 
        /*
         * FIXME: Remove some of the restrictions.
@@ -1776,7 +1776,7 @@ mono_arch_fill_argument_info (MonoCompile *cfg)
 
        sig = mono_method_signature (cfg->method);
 
-       cinfo = cfg->arch.cinfo;
+       cinfo = (CallInfo *)cfg->arch.cinfo;
        sig_ret = mini_get_underlying_type (sig->ret);
 
        /*
@@ -1843,7 +1843,7 @@ mono_arch_allocate_vars (MonoCompile *cfg)
 
        sig = mono_method_signature (cfg->method);
 
-       cinfo = cfg->arch.cinfo;
+       cinfo = (CallInfo *)cfg->arch.cinfo;
        sig_ret = mini_get_underlying_type (sig->ret);
 
        mono_arch_compute_omit_fp (cfg);
@@ -2071,7 +2071,7 @@ mono_arch_create_vars (MonoCompile *cfg)
 
        if (!cfg->arch.cinfo)
                cfg->arch.cinfo = get_call_info (cfg->mempool, sig);
-       cinfo = cfg->arch.cinfo;
+       cinfo = (CallInfo *)cfg->arch.cinfo;
 
        if (cinfo->ret.storage == ArgValuetypeInReg)
                cfg->ret_var_is_local = TRUE;
@@ -2984,7 +2984,7 @@ mono_arch_finish_dyn_call (MonoDynCallInfo *info, guint8 *buf)
 } while (0);
 
 static guint8*
-emit_call_body (MonoCompile *cfg, guint8 *code, guint32 patch_type, gconstpointer data)
+emit_call_body (MonoCompile *cfg, guint8 *code, MonoJumpInfoType patch_type, gconstpointer data)
 {
        gboolean no_patch = FALSE;
 
@@ -3018,7 +3018,7 @@ emit_call_body (MonoCompile *cfg, guint8 *code, guint32 patch_type, gconstpointe
                                 * The call might go directly to a native function without
                                 * the wrapper.
                                 */
-                               MonoJitICallInfo *mi = mono_find_jit_icall_by_name (data);
+                               MonoJitICallInfo *mi = mono_find_jit_icall_by_name ((const char *)data);
                                if (mi) {
                                        gconstpointer target = mono_icall_get_wrapper (mi);
                                        if ((((guint64)target) >> 32) != 0)
@@ -3030,7 +3030,7 @@ emit_call_body (MonoCompile *cfg, guint8 *code, guint32 patch_type, gconstpointe
                        MonoJumpInfo *jinfo = NULL;
 
                        if (cfg->abs_patches)
-                               jinfo = g_hash_table_lookup (cfg->abs_patches, data);
+                               jinfo = (MonoJumpInfo *)g_hash_table_lookup (cfg->abs_patches, data);
                        if (jinfo) {
                                if (jinfo->type == MONO_PATCH_INFO_JIT_ICALL_ADDR) {
                                        MonoJitICallInfo *mi = mono_find_jit_icall_by_name (jinfo->data.name);
@@ -3109,7 +3109,7 @@ emit_call_body (MonoCompile *cfg, guint8 *code, guint32 patch_type, gconstpointe
 }
 
 static inline guint8*
-emit_call (MonoCompile *cfg, guint8 *code, guint32 patch_type, gconstpointer data, gboolean win64_adjust_stack)
+emit_call (MonoCompile *cfg, guint8 *code, MonoJumpInfoType patch_type, gconstpointer data, gboolean win64_adjust_stack)
 {
 #ifdef TARGET_WIN32
        if (win64_adjust_stack)
@@ -3597,7 +3597,7 @@ emit_move_return_value (MonoCompile *cfg, MonoInst *ins, guint8 *code)
        case OP_VCALL2_MEMBASE:
                cinfo = get_call_info (cfg->mempool, ((MonoCallInst*)ins)->signature);
                if (cinfo->ret.storage == ArgValuetypeInReg) {
-                       MonoInst *loc = cfg->arch.vret_addr_loc;
+                       MonoInst *loc = (MonoInst *)cfg->arch.vret_addr_loc;
 
                        /* Load the destination address */
                        g_assert (loc->opcode == OP_REGOFFSET);
@@ -3966,7 +3966,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 
                if (G_UNLIKELY (offset > (cfg->code_size - max_len - EXTRA_CODE_SPACE))) {
                        cfg->code_size *= 2;
-                       cfg->native_code = mono_realloc_native_code(cfg);
+                       cfg->native_code = (unsigned char *)mono_realloc_native_code(cfg);
                        code = cfg->native_code + offset;
                        cfg->stat_code_reallocs++;
                }
@@ -4314,7 +4314,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        break;
                case OP_SEQ_POINT: {
                        if (ins->flags & MONO_INST_SINGLE_STEP_LOC) {
-                               MonoInst *var = cfg->arch.ss_tramp_var;
+                               MonoInst *var = (MonoInst *)cfg->arch.ss_tramp_var;
                                guint8 *label;
 
                                /* Load ss_tramp_var */
@@ -4338,7 +4338,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        if (cfg->compile_aot) {
                                guint32 offset = code - cfg->native_code;
                                guint32 val;
-                               MonoInst *info_var = cfg->arch.seq_point_info_var;
+                               MonoInst *info_var = (MonoInst *)cfg->arch.seq_point_info_var;
                                guint8 *label;
 
                                /* Load info var */
@@ -4353,7 +4353,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                amd64_call_reg (code, AMD64_R11);
                                amd64_patch (label, code);
                        } else {
-                               MonoInst *var = cfg->arch.bp_tramp_var;
+                               MonoInst *var = (MonoInst *)cfg->arch.bp_tramp_var;
                                guint8 *label;
 
                                /*
@@ -5224,21 +5224,21 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                case OP_COND_EXC_IGE_UN:
                case OP_COND_EXC_ILE:
                case OP_COND_EXC_ILE_UN:
-                       EMIT_COND_SYSTEM_EXCEPTION (cc_table [mono_opcode_to_cond (ins->opcode)], cc_signed_table [mono_opcode_to_cond (ins->opcode)], ins->inst_p1);
+                       EMIT_COND_SYSTEM_EXCEPTION (cc_table [mono_opcode_to_cond (ins->opcode)], cc_signed_table [mono_opcode_to_cond (ins->opcode)], (const char *)ins->inst_p1);
                        break;
                case OP_COND_EXC_OV:
                case OP_COND_EXC_NO:
                case OP_COND_EXC_C:
                case OP_COND_EXC_NC:
                        EMIT_COND_SYSTEM_EXCEPTION (branch_cc_table [ins->opcode - OP_COND_EXC_EQ], 
-                                                   (ins->opcode < OP_COND_EXC_NE_UN), ins->inst_p1);
+                                                   (ins->opcode < OP_COND_EXC_NE_UN), (const char *)ins->inst_p1);
                        break;
                case OP_COND_EXC_IOV:
                case OP_COND_EXC_INO:
                case OP_COND_EXC_IC:
                case OP_COND_EXC_INC:
                        EMIT_COND_SYSTEM_EXCEPTION (branch_cc_table [ins->opcode - OP_COND_EXC_IEQ], 
-                                                   (ins->opcode < OP_COND_EXC_INE_UN), ins->inst_p1);
+                                                   (ins->opcode < OP_COND_EXC_INE_UN), (const char *)ins->inst_p1);
                        break;
 
                /* floating point opcodes */
@@ -6857,7 +6857,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
        cfg->code_size = MAX (cfg->header->code_size * 4, 1024);
 
 #if defined(__default_codegen__)
-       code = cfg->native_code = g_malloc (cfg->code_size);
+       code = cfg->native_code = (unsigned char *)g_malloc (cfg->code_size);
 #elif defined(__native_client_codegen__)
        /* native_code_alloc is not 32-byte aligned, native_code is. */
        cfg->native_code_alloc = g_malloc (cfg->code_size + kNaClAlignment);
@@ -6968,7 +6968,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                if (G_UNLIKELY (required_code_size >= (cfg->code_size - offset))) {
                        while (required_code_size >= (cfg->code_size - offset))
                                cfg->code_size *= 2;
-                       cfg->native_code = mono_realloc_native_code (cfg);
+                       cfg->native_code = (unsigned char *)mono_realloc_native_code (cfg);
                        code = cfg->native_code + offset;
                        cfg->stat_code_reallocs++;
                }
@@ -7138,7 +7138,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
        sig = mono_method_signature (method);
        pos = 0;
 
-       cinfo = cfg->arch.cinfo;
+       cinfo = (CallInfo *)cfg->arch.cinfo;
 
        if (sig->ret->type != MONO_TYPE_VOID) {
                /* Save volatile arguments to the stack */
@@ -7243,7 +7243,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 
        if (trace) {
                args_clobbered = TRUE;
-               code = mono_arch_instrument_prolog (cfg, mono_trace_enter_method, code, TRUE);
+               code = (guint8 *)mono_arch_instrument_prolog (cfg, mono_trace_enter_method, code, TRUE);
        }
 
        if (cfg->prof_options & MONO_PROFILE_ENTER_LEAVE)
@@ -7318,7 +7318,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
        }
 
        if (cfg->gen_sdb_seq_points) {
-               MonoInst *info_var = cfg->arch.seq_point_info_var;
+               MonoInst *info_var = (MonoInst *)cfg->arch.seq_point_info_var;
 
                /* Initialize seq_point_info_var */
                if (cfg->compile_aot) {
@@ -7332,7 +7332,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 
                if (cfg->compile_aot) {
                        /* Initialize ss_tramp_var */
-                       ins = cfg->arch.ss_tramp_var;
+                       ins = (MonoInst *)cfg->arch.ss_tramp_var;
                        g_assert (ins->opcode == OP_REGOFFSET);
 
                        amd64_mov_reg_membase (code, AMD64_R11, info_var->inst_basereg, info_var->inst_offset, 8);
@@ -7340,14 +7340,14 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                        amd64_mov_membase_reg (code, ins->inst_basereg, ins->inst_offset, AMD64_R11, 8);
                } else {
                        /* Initialize ss_tramp_var */
-                       ins = cfg->arch.ss_tramp_var;
+                       ins = (MonoInst *)cfg->arch.ss_tramp_var;
                        g_assert (ins->opcode == OP_REGOFFSET);
 
                        amd64_mov_reg_imm (code, AMD64_R11, (guint64)&ss_trampoline);
                        amd64_mov_membase_reg (code, ins->inst_basereg, ins->inst_offset, AMD64_R11, 8);
 
                        /* Initialize bp_tramp_var */
-                       ins = cfg->arch.bp_tramp_var;
+                       ins = (MonoInst *)cfg->arch.bp_tramp_var;
                        g_assert (ins->opcode == OP_REGOFFSET);
 
                        amd64_mov_reg_imm (code, AMD64_R11, (guint64)&bp_trampoline);
@@ -7377,7 +7377,7 @@ mono_arch_emit_epilog (MonoCompile *cfg)
 
        while (cfg->code_len + max_epilog_size > (cfg->code_size - 16)) {
                cfg->code_size *= 2;
-               cfg->native_code = mono_realloc_native_code (cfg);
+               cfg->native_code = (unsigned char *)mono_realloc_native_code (cfg);
                cfg->stat_code_reallocs++;
        }
        code = cfg->native_code + cfg->code_len;
@@ -7391,7 +7391,7 @@ mono_arch_emit_epilog (MonoCompile *cfg)
        mono_emit_unwind_op_remember_state (cfg, code);
 
        if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
-               code = mono_arch_instrument_epilog (cfg, mono_trace_leave_method, code, TRUE);
+               code = (guint8 *)mono_arch_instrument_epilog (cfg, mono_trace_leave_method, code, TRUE);
 
        /* the code restoring the registers must be kept in sync with OP_TAILCALL */
        
@@ -7432,7 +7432,7 @@ mono_arch_emit_epilog (MonoCompile *cfg)
        }
 
        /* Load returned vtypes into registers if needed */
-       cinfo = cfg->arch.cinfo;
+       cinfo = (CallInfo *)cfg->arch.cinfo;
        if (cinfo->ret.storage == ArgValuetypeInReg) {
                ArgInfo *ainfo = &cinfo->ret;
                MonoInst *inst = cfg->ret;
@@ -7507,7 +7507,7 @@ mono_arch_emit_exceptions (MonoCompile *cfg)
 
        while (cfg->code_len + code_size > (cfg->code_size - 16)) {
                cfg->code_size *= 2;
-               cfg->native_code = mono_realloc_native_code (cfg);
+               cfg->native_code = (unsigned char *)mono_realloc_native_code (cfg);
                cfg->stat_code_reallocs++;
        }
 
@@ -7699,7 +7699,7 @@ mono_arch_emit_exceptions (MonoCompile *cfg)
 void*
 mono_arch_instrument_prolog (MonoCompile *cfg, void *func, void *p, gboolean enable_arguments)
 {
-       guchar *code = p;
+       guchar *code = (guchar *)p;
        MonoMethodSignature *sig;
        MonoInst *inst;
        int i, n, stack_area = 0;
@@ -7750,7 +7750,7 @@ enum {
 void*
 mono_arch_instrument_epilog_full (MonoCompile *cfg, void *func, void *p, gboolean enable_arguments, gboolean preserve_argument_registers)
 {
-       guchar *code = p;
+       guchar *code = (guchar *)p;
        int save_mode = SAVE_NONE;
        MonoMethod *method = cfg->method;
        MonoType *ret_type = mini_get_underlying_type (mono_method_signature (method)->ret);
@@ -8009,7 +8009,7 @@ get_delegate_invoke_impl (MonoTrampInfo **info, gboolean has_target, guint32 par
        unwind_ops = mono_arch_get_cie_program ();
 
        if (has_target) {
-               start = code = mono_global_codeman_reserve (64);
+               start = code = (guint8 *)mono_global_codeman_reserve (64);
 
                /* Replace the this argument with the target */
                amd64_mov_reg_reg (code, AMD64_RAX, AMD64_ARG_REG1, 8);
@@ -8018,7 +8018,7 @@ get_delegate_invoke_impl (MonoTrampInfo **info, gboolean has_target, guint32 par
 
                g_assert ((code - start) < 64);
        } else {
-               start = code = mono_global_codeman_reserve (64);
+               start = code = (guint8 *)mono_global_codeman_reserve (64);
 
                if (param_count == 0) {
                        amd64_jump_membase (code, AMD64_ARG_REG1, MONO_STRUCT_OFFSET (MonoDelegate, method_ptr));
@@ -8080,7 +8080,7 @@ get_delegate_virtual_invoke_impl (MonoTrampInfo **info, gboolean load_imt_reg, i
        if (offset / (int)sizeof (gpointer) > MAX_VIRTUAL_DELEGATE_OFFSET)
                return NULL;
 
-       start = code = mono_global_codeman_reserve (size);
+       start = code = (guint8 *)mono_global_codeman_reserve (size);
 
        unwind_ops = mono_arch_get_cie_program ();
 
@@ -8160,10 +8160,10 @@ mono_arch_get_delegate_invoke_impl (MonoMethodSignature *sig, gboolean has_targe
                        return cached;
 
                if (mono_aot_only) {
-                       start = mono_aot_get_trampoline ("delegate_invoke_impl_has_target");
+                       start = (guint8 *)mono_aot_get_trampoline ("delegate_invoke_impl_has_target");
                } else {
                        MonoTrampInfo *info;
-                       start = get_delegate_invoke_impl (&info, TRUE, 0);
+                       start = (guint8 *)get_delegate_invoke_impl (&info, TRUE, 0);
                        mono_tramp_info_register (info, NULL);
                }
 
@@ -8184,11 +8184,11 @@ mono_arch_get_delegate_invoke_impl (MonoMethodSignature *sig, gboolean has_targe
 
                if (mono_aot_only) {
                        char *name = g_strdup_printf ("delegate_invoke_impl_target_%d", sig->param_count);
-                       start = mono_aot_get_trampoline (name);
+                       start = (guint8 *)mono_aot_get_trampoline (name);
                        g_free (name);
                } else {
                        MonoTrampInfo *info;
-                       start = get_delegate_invoke_impl (&info, FALSE, sig->param_count);
+                       start = (guint8 *)get_delegate_invoke_impl (&info, FALSE, sig->param_count);
                        mono_tramp_info_register (info, NULL);
                }
 
@@ -8326,9 +8326,9 @@ mono_arch_build_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckI
        code = mono_domain_code_reserve (domain, size);
 #else
        if (fail_tramp)
-               code = mono_method_alloc_generic_virtual_thunk (domain, size);
+               code = (guint8 *)mono_method_alloc_generic_virtual_thunk (domain, size);
        else
-               code = mono_domain_code_reserve (domain, size);
+               code = (guint8 *)mono_domain_code_reserve (domain, size);
 #endif
        start = code;
 
@@ -8550,8 +8550,8 @@ mono_arch_install_handler_block_guard (MonoJitInfo *ji, MonoJitExceptionInfo *cl
        char *bp;
 
        /*Load the spvar*/
-       bp = MONO_CONTEXT_GET_BP (ctx);
-       sp = *(gpointer*)(bp + clause->exvar_offset);
+       bp = (char *)MONO_CONTEXT_GET_BP (ctx);
+       sp = (gpointer *)*(gpointer*)(bp + clause->exvar_offset);
 
        old_value = *sp;
        if (old_value < ji->code_start || (char*)old_value > ((char*)ji->code_start + ji->code_size))
@@ -8570,7 +8570,7 @@ mono_arch_install_handler_block_guard (MonoJitInfo *ji, MonoJitExceptionInfo *cl
  * On AMD64, the result is placed into R11.
  */
 guint8*
-mono_arch_emit_load_aotconst (guint8 *start, guint8 *code, MonoJumpInfo **ji, int tramp_type, gconstpointer target)
+mono_arch_emit_load_aotconst (guint8 *start, guint8 *code, MonoJumpInfo **ji, MonoJumpInfoType tramp_type, gconstpointer target)
 {
        *ji = mono_patch_info_list_prepend (*ji, code - start, tramp_type, target);
        amd64_mov_reg_membase (code, AMD64_R11, AMD64_RIP, 0, 8);
@@ -8606,7 +8606,7 @@ mono_arch_set_breakpoint (MonoJitInfo *ji, guint8 *ip)
 
        if (ji->from_aot) {
                guint32 native_offset = ip - (guint8*)ji->code_start;
-               SeqPointInfo *info = mono_arch_get_seq_point_info (mono_domain_get (), ji->code_start);
+               SeqPointInfo *info = (SeqPointInfo *)mono_arch_get_seq_point_info (mono_domain_get (), (guint8 *)ji->code_start);
 
                g_assert (info->bp_addrs [native_offset] == 0);
                info->bp_addrs [native_offset] = mini_get_breakpoint_trampoline ();
@@ -8630,7 +8630,7 @@ mono_arch_clear_breakpoint (MonoJitInfo *ji, guint8 *ip)
 
        if (ji->from_aot) {
                guint32 native_offset = ip - (guint8*)ji->code_start;
-               SeqPointInfo *info = mono_arch_get_seq_point_info (mono_domain_get (), ji->code_start);
+               SeqPointInfo *info = (SeqPointInfo *)mono_arch_get_seq_point_info (mono_domain_get (), (guint8 *)ji->code_start);
 
                info->bp_addrs [native_offset] = NULL;
        } else {
@@ -8719,7 +8719,7 @@ mono_arch_get_seq_point_info (MonoDomain *domain, guint8 *code)
        // FIXME: Add a free function
 
        mono_domain_lock (domain);
-       info = g_hash_table_lookup (domain_jit_info (domain)->arch_seq_points,
+       info = (SeqPointInfo *)g_hash_table_lookup (domain_jit_info (domain)->arch_seq_points,
                                                                code);
        mono_domain_unlock (domain);
 
@@ -8728,7 +8728,7 @@ mono_arch_get_seq_point_info (MonoDomain *domain, guint8 *code)
                g_assert (ji);
 
                // FIXME: Optimize the size
-               info = g_malloc0 (sizeof (SeqPointInfo) + (ji->code_size * sizeof (gpointer)));
+               info = (SeqPointInfo *)g_malloc0 (sizeof (SeqPointInfo) + (ji->code_size * sizeof (gpointer)));
 
                info->ss_tramp_addr = &ss_trampoline;
 
index 9129c800a45727924ec85a502a05b1643755b43c..83170902e4ee113fe059ea27ab3cf26949af8f3d 100644 (file)
@@ -144,7 +144,7 @@ mono_regstate_assign (MonoRegState *rs)
        if (rs->next_vreg > rs->vassign_size) {
                g_free (rs->vassign);
                rs->vassign_size = MAX (rs->next_vreg, 256);
-               rs->vassign = g_malloc (rs->vassign_size * sizeof (gint32));
+               rs->vassign = (gint32 *)g_malloc (rs->vassign_size * sizeof (gint32));
        }
 
        memset (rs->isymbolic, 0, MONO_MAX_IREGS * sizeof (rs->isymbolic [0]));
@@ -295,7 +295,7 @@ resize_spill_info (MonoCompile *cfg, int bank)
 
        g_assert (bank < MONO_NUM_REGBANKS);
 
-       new_info = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoSpillInfo) * new_len);
+       new_info = (MonoSpillInfo *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoSpillInfo) * new_len);
        if (orig_info)
                memcpy (new_info, orig_info, sizeof (MonoSpillInfo) * orig_len);
        for (i = orig_len; i < new_len; ++i)
@@ -1180,10 +1180,11 @@ mono_local_regalloc (MonoCompile *cfg, MonoBasicBlock *bb)
        if (cfg->reginfo && cfg->reginfo_len < max)
                cfg->reginfo = NULL;
 
-       reginfo = cfg->reginfo;
+       reginfo = (RegTrack *)cfg->reginfo;
        if (!reginfo) {
                cfg->reginfo_len = MAX (1024, max * 2);
-               reginfo = cfg->reginfo = mono_mempool_alloc (cfg->mempool, sizeof (RegTrack) * cfg->reginfo_len);
+               reginfo = (RegTrack *)mono_mempool_alloc (cfg->mempool, sizeof (RegTrack) * cfg->reginfo_len);
+               cfg->reginfo = reginfo;
        } 
        else
                g_assert (cfg->reginfo_len >= rs->next_vreg);
@@ -2450,7 +2451,7 @@ mono_opcode_to_cond (int opcode)
        default:
                printf ("%s\n", mono_inst_name (opcode));
                g_assert_not_reached ();
-               return 0;
+               return (CompRelation)0;
        }
 }
 
@@ -2512,7 +2513,7 @@ mono_opcode_to_type (int opcode, int cmp_opcode)
                }
        } else {
                g_error ("Unknown opcode '%s' in opcode_to_type", mono_inst_name (opcode));
-               return 0;
+               return (CompType)0;
        }
 }
 
index 26c9451330e2e6786e57841f94baed3ce723afc8..8db012832c683dda702d7e504e79a97f7a2e8f83 100644 (file)
@@ -134,7 +134,7 @@ mono_exceptions_init (void)
        if (mono_llvm_only)
                cbs.mono_raise_exception = mono_llvm_raise_exception;
        else
-               cbs.mono_raise_exception = mono_get_throw_exception ();
+               cbs.mono_raise_exception = (void (*)(MonoException *))mono_get_throw_exception ();
        cbs.mono_raise_exception_with_ctx = mono_raise_exception_with_ctx;
        cbs.mono_exception_walk_trace = mono_exception_walk_trace;
        cbs.mono_install_handler_block_guard = mono_install_handler_block_guard;
@@ -238,21 +238,21 @@ find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, MonoJitInfo *res, Mo
        if (prev_ji && (ip > prev_ji->code_start && ((guint8*)ip < ((guint8*)prev_ji->code_start) + prev_ji->code_size)))
                ji = prev_ji;
        else
-               ji = mini_jit_info_table_find (domain, ip, NULL);
+               ji = mini_jit_info_table_find (domain, (char *)ip, NULL);
 
        if (managed)
                *managed = FALSE;
 
        err = mono_arch_unwind_frame (domain, jit_tls, ji, ctx, new_ctx, lmf, NULL, &frame);
        if (!err)
-               return (gpointer)-1;
+               return (MonoJitInfo *)-1;
 
        if (*lmf && ((*lmf) != jit_tls->first_lmf) && ((gpointer)MONO_CONTEXT_GET_SP (new_ctx) >= (gpointer)(*lmf))) {
                /*
                 * Remove any unused lmf.
                 * Mask out the lower bits which might be used to hold additional information.
                 */
-               *lmf = (gpointer)(((gsize)(*lmf)->previous_lmf) & ~(SIZEOF_VOID_P -1));
+               *lmf = (MonoLMF *)(((gsize)(*lmf)->previous_lmf) & ~(SIZEOF_VOID_P -1));
        }
 
        /* Convert between the new and the old APIs */
@@ -397,7 +397,7 @@ mono_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls,
        if (prev_ji && (ip > prev_ji->code_start && ((guint8*)ip < ((guint8*)prev_ji->code_start) + prev_ji->code_size)))
                ji = prev_ji;
        else
-               ji = mini_jit_info_table_find (domain, ip, &target_domain);
+               ji = mini_jit_info_table_find (domain, (char *)ip, &target_domain);
 
        if (!target_domain)
                target_domain = domain;
@@ -414,7 +414,7 @@ mono_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls,
                 * Remove any unused lmf.
                 * Mask out the lower bits which might be used to hold additional information.
                 */
-               *lmf = (gpointer)(((gsize)(*lmf)->previous_lmf) & ~(SIZEOF_VOID_P -1));
+               *lmf = (MonoLMF *)(((gsize)(*lmf)->previous_lmf) & ~(SIZEOF_VOID_P -1));
        }
 
        if (frame->ji && !frame->ji->is_trampoline && !frame->ji->async)
@@ -524,7 +524,7 @@ get_generic_info_from_stack_frame (MonoJitInfo *ji, MonoContext *ctx)
                return info;
        } else {
                /* Avoid returning a managed object */
-               MonoObject *this_obj = info;
+               MonoObject *this_obj = (MonoObject *)info;
 
                return this_obj->vtable->klass;
        }
@@ -542,17 +542,17 @@ get_generic_context_from_stack_frame (MonoJitInfo *ji, gpointer generic_info)
        method = jinfo_get_method (ji);
        g_assert (method->is_inflated);
        if (mono_method_get_context (method)->method_inst) {
-               MonoMethodRuntimeGenericContext *mrgctx = generic_info;
+               MonoMethodRuntimeGenericContext *mrgctx = (MonoMethodRuntimeGenericContext *)generic_info;
 
                klass = mrgctx->class_vtable->klass;
                context.method_inst = mrgctx->method_inst;
                g_assert (context.method_inst);
        } else if ((method->flags & METHOD_ATTRIBUTE_STATIC) || method->klass->valuetype) {
-               MonoVTable *vtable = generic_info;
+               MonoVTable *vtable = (MonoVTable *)generic_info;
 
                klass = vtable->klass;
        } else {
-               klass = generic_info;
+               klass = (MonoClass *)generic_info;
        }
 
        //g_assert (!method->klass->generic_container);
@@ -623,7 +623,7 @@ mono_exception_walk_trace (MonoException *ex, MonoExceptionFrameWalk func, gpoin
        for (i = 0; i < len; i++) {
                gpointer ip = mono_array_get (ta, gpointer, i * 2 + 0);
                gpointer generic_info = mono_array_get (ta, gpointer, i * 2 + 1);
-               MonoJitInfo *ji = mono_jit_info_table_find (domain, ip);
+               MonoJitInfo *ji = mono_jit_info_table_find (domain, (char *)ip);
 
                if (ji == NULL) {
                        if (func (NULL, ip, 0, FALSE, user_data))
@@ -663,7 +663,7 @@ ves_icall_get_trace (MonoException *exc, gint32 skip, MonoBoolean need_file_info
                gpointer generic_info = mono_array_get (ta, gpointer, i * 2 + 1);
                MonoMethod *method;
 
-               ji = mono_jit_info_table_find (domain, ip);
+               ji = mono_jit_info_table_find (domain, (char *)ip);
                if (ji == NULL) {
                        /* Unmanaged frame */
                        mono_array_setref (res, i, sf);
@@ -726,7 +726,7 @@ static void
 mono_runtime_walk_stack_with_ctx (MonoJitStackWalk func, MonoContext *start_ctx, MonoUnwindOptions unwind_options, void *user_data)
 {
        if (!start_ctx) {
-               MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+               MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
                if (jit_tls && jit_tls->orig_ex_ctx_set)
                        start_ctx = &jit_tls->orig_ex_ctx;
        }
@@ -760,7 +760,7 @@ mono_walk_stack_with_ctx (MonoJitStackWalk func, MonoContext *start_ctx, MonoUnw
                start_ctx = &extra_ctx;
        }
 
-       mono_walk_stack_full (func, start_ctx, mono_domain_get (), thread->jit_data, mono_get_lmf (), unwind_options, user_data);
+       mono_walk_stack_full (func, start_ctx, mono_domain_get (), (MonoJitTlsData *)thread->jit_data, mono_get_lmf (), unwind_options, user_data);
 }
 
 /**
@@ -793,9 +793,9 @@ mono_walk_stack_with_state (MonoJitStackWalk func, MonoThreadUnwindState *state,
 
        mono_walk_stack_full (func,
                &state->ctx, 
-               state->unwind_data [MONO_UNWIND_DATA_DOMAIN],
-               state->unwind_data [MONO_UNWIND_DATA_JIT_TLS],
-               state->unwind_data [MONO_UNWIND_DATA_LMF],
+               (MonoDomain *)state->unwind_data [MONO_UNWIND_DATA_DOMAIN],
+               (MonoJitTlsData *)state->unwind_data [MONO_UNWIND_DATA_JIT_TLS],
+               (MonoLMF *)state->unwind_data [MONO_UNWIND_DATA_LMF],
                unwind_options, user_data);
 }
 
@@ -901,7 +901,7 @@ ves_icall_get_frame_info (gint32 skip, MonoBoolean need_file_info,
                          MonoString **file, gint32 *line, gint32 *column)
 {
        MonoDomain *domain = mono_domain_get ();
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        MonoLMF *lmf = mono_get_lmf ();
        MonoJitInfo *ji = NULL;
        MonoContext ctx, new_ctx;
@@ -1033,7 +1033,7 @@ mini_jit_info_table_find_ext (MonoDomain *domain, char *addr, gboolean allow_tra
        if (!t)
                return NULL;
 
-       refs = (t->appdomain_refs) ? *(gpointer *) t->appdomain_refs : NULL;
+       refs = (gpointer *)((t->appdomain_refs) ? *(gpointer *) t->appdomain_refs : NULL);
        for (; refs && *refs; refs++) {
                if (*refs != domain && *refs != mono_get_root_domain ()) {
                        ji = mono_jit_info_table_find_internal ((MonoDomain*) *refs, addr, TRUE, allow_trampolines);
@@ -1101,7 +1101,7 @@ wrap_non_exception_throws (MonoMethod *m)
                        if (named_type != 0x54)
                                continue;
                        name_len = mono_metadata_decode_blob_size (p, &p);
-                       name = g_malloc (name_len + 1);
+                       name = (char *)g_malloc (name_len + 1);
                        memcpy (name, p, name_len);
                        name [name_len] = 0;
                        p += name_len;
@@ -1193,12 +1193,12 @@ setup_stack_trace (MonoException *mono_ex, GSList *dynamic_methods, MonoArray *i
  * OUT_FILTER_IDX. Return TRUE if the exception is caught, FALSE otherwise.
  */
 static gboolean
-mono_handle_exception_internal_first_pass (MonoContext *ctx, gpointer obj, gint32 *out_filter_idx, MonoJitInfo **out_ji, MonoJitInfo **out_prev_ji, MonoObject *non_exception)
+mono_handle_exception_internal_first_pass (MonoContext *ctx, MonoObject *obj, gint32 *out_filter_idx, MonoJitInfo **out_ji, MonoJitInfo **out_prev_ji, MonoObject *non_exception)
 {
        MonoDomain *domain = mono_domain_get ();
        MonoJitInfo *ji = NULL;
        static int (*call_filter) (MonoContext *, gpointer) = NULL;
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        MonoLMF *lmf = mono_get_lmf ();
        MonoArray *initial_trace_ips = NULL;
        GList *trace_ips = NULL;
@@ -1214,7 +1214,7 @@ mono_handle_exception_internal_first_pass (MonoContext *ctx, gpointer obj, gint3
 
        g_assert (ctx != NULL);
 
-       if (obj == domain->stack_overflow_ex)
+       if (obj == (MonoObject *)domain->stack_overflow_ex)
                stack_overflow = TRUE;
 
        mono_ex = (MonoException*)obj;
@@ -1228,7 +1228,7 @@ mono_handle_exception_internal_first_pass (MonoContext *ctx, gpointer obj, gint3
        }
 
        if (!call_filter)
-               call_filter = mono_get_call_filter ();
+               call_filter = (int (*) (MonoContext *, void *))mono_get_call_filter ();
 
        g_assert (jit_tls->end_of_stack);
        g_assert (jit_tls->abort_func);
@@ -1413,12 +1413,12 @@ mono_handle_exception_internal_first_pass (MonoContext *ctx, gpointer obj, gint3
  * @resume: whenever to resume unwinding based on the state in MonoJitTlsData.
  */
 static gboolean
-mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume, MonoJitInfo **out_ji)
+mono_handle_exception_internal (MonoContext *ctx, MonoObject *obj, gboolean resume, MonoJitInfo **out_ji)
 {
        MonoDomain *domain = mono_domain_get ();
        MonoJitInfo *ji, *prev_ji;
        static int (*call_filter) (MonoContext *, gpointer) = NULL;
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        MonoLMF *lmf = mono_get_lmf ();
        MonoException *mono_ex;
        gboolean stack_overflow = FALSE;
@@ -1440,20 +1440,20 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume,
        /*
         * Allocate a new exception object instead of the preconstructed ones.
         */
-       if (obj == domain->stack_overflow_ex) {
+       if (obj == (MonoObject *)domain->stack_overflow_ex) {
                /*
                 * It is not a good idea to try and put even more pressure on the little stack available.
                 * obj = mono_get_exception_stack_overflow ();
                 */
                stack_overflow = TRUE;
        }
-       else if (obj == domain->null_reference_ex) {
-               obj = mono_get_exception_null_reference ();
+       else if (obj == (MonoObject *)domain->null_reference_ex) {
+               obj = (MonoObject *)mono_get_exception_null_reference ();
        }
 
        if (!mono_object_isinst (obj, mono_defaults.exception_class)) {
                non_exception = obj;
-               obj = mono_get_exception_runtime_wrapped (obj);
+               obj = (MonoObject *)mono_get_exception_runtime_wrapped (obj);
        }
 
        mono_ex = (MonoException*)obj;
@@ -1492,7 +1492,7 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume,
        }
 
        if (!call_filter)
-               call_filter = mono_get_call_filter ();
+               call_filter = (int (*)(MonoContext *, void*))mono_get_call_filter ();
 
        g_assert (jit_tls->end_of_stack);
        g_assert (jit_tls->abort_func);
@@ -1540,7 +1540,7 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume,
                if (!res) {
                        if (mini_get_debug_options ()->break_on_exc)
                                G_BREAKPOINT ();
-                       mono_debugger_agent_handle_exception (obj, ctx, NULL);
+                       mono_debugger_agent_handle_exception ((MonoException *)obj, ctx, NULL);
 
                        if (mini_get_debug_options ()->suspend_on_unhandled) {
                                mono_runtime_printf_err ("Unhandled exception, suspending...");
@@ -1567,9 +1567,9 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume,
                        }
 
                        if (unhandled)
-                               mono_debugger_agent_handle_exception (obj, ctx, NULL);
+                               mono_debugger_agent_handle_exception ((MonoException *)obj, ctx, NULL);
                        else
-                               mono_debugger_agent_handle_exception (obj, ctx, &ctx_cp);
+                               mono_debugger_agent_handle_exception ((MonoException *)obj, ctx, &ctx_cp);
                }
        }
 
@@ -1700,7 +1700,7 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume,
                                                         *      There aren't any further finally/fault handler blocks down the stack over this exception.
                                                         *   This must be ensured by the code that installs the guard trampoline.
                                                         */
-                                                       g_assert (ji == mini_jit_info_table_find (domain, MONO_CONTEXT_GET_IP (&jit_tls->handler_block_context), NULL));
+                                                       g_assert (ji == mini_jit_info_table_find (domain, (char *)MONO_CONTEXT_GET_IP (&jit_tls->handler_block_context), NULL));
 
                                                        if (!is_address_protected (ji, jit_tls->handler_block, ei->handler_start)) {
                                                                is_outside = TRUE;
@@ -1723,7 +1723,7 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume,
 #ifndef DISABLE_PERFCOUNTERS
                                        mono_perfcounters->exceptions_depth += frame_count;
 #endif
-                                       if (obj == domain->stack_overflow_ex)
+                                       if (obj == (MonoObject *)domain->stack_overflow_ex)
                                                jit_tls->handling_stack_ovf = FALSE;
 
                                        return 0;
@@ -1798,7 +1798,7 @@ mono_debugger_run_finally (MonoContext *start_ctx)
 {
        static int (*call_filter) (MonoContext *, gpointer) = NULL;
        MonoDomain *domain = mono_domain_get ();
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        MonoLMF *lmf = mono_get_lmf ();
        MonoContext ctx, new_ctx;
        MonoJitInfo *ji, rji;
@@ -1811,7 +1811,7 @@ mono_debugger_run_finally (MonoContext *start_ctx)
                return;
 
        if (!call_filter)
-               call_filter = mono_get_call_filter ();
+               call_filter = (int (*)(MonoContext *, void *))mono_get_call_filter ();
 
        for (i = 0; i < ji->num_clauses; i++) {
                MonoJitExceptionInfo *ei = &ji->clauses [i];
@@ -1829,7 +1829,7 @@ mono_debugger_run_finally (MonoContext *start_ctx)
  * @obj: the exception object
  */
 gboolean
-mono_handle_exception (MonoContext *ctx, gpointer obj)
+mono_handle_exception (MonoContext *ctx, MonoObject *obj)
 {
 #ifndef DISABLE_PERFCOUNTERS
        mono_perfcounters->exceptions_thrown++;
@@ -1944,7 +1944,7 @@ try_restore_stack_protection (MonoJitTlsData *jit_tls, int extra_bytes)
 static G_GNUC_UNUSED void
 try_more_restore (void)
 {
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        if (try_restore_stack_protection (jit_tls, 500))
                jit_tls->restore_stack_prot = NULL;
 }
@@ -1952,7 +1952,7 @@ try_more_restore (void)
 static G_GNUC_UNUSED void
 restore_stack_protection (void)
 {
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        MonoException *ex = mono_domain_get ()->stack_overflow_ex;
        /* if we can't restore the stack protection, keep a callback installed so
         * we'll try to restore as much stack as we can at each return from unmanaged
@@ -1971,7 +1971,7 @@ restore_stack_protection (void)
 gpointer
 mono_altstack_restore_prot (mgreg_t *regs, guint8 *code, gpointer *tramp_data, guint8* tramp)
 {
-       void (*func)(void) = (gpointer)tramp_data;
+       void (*func)(void) = (void (*)(void))tramp_data;
        func ();
        return NULL;
 }
@@ -2039,7 +2039,7 @@ static gboolean
 print_overflow_stack_frame (StackFrameInfo *frame, MonoContext *ctx, gpointer data)
 {
        MonoMethod *method = NULL;
-       PrintOverflowUserData *user_data = data;
+       PrintOverflowUserData *user_data = (PrintOverflowUserData *)data;
        gchar *location;
 
        if (frame->ji && frame->type != FRAME_TYPE_TRAMPOLINE)
@@ -2157,7 +2157,7 @@ mono_handle_native_sigsegv (int signal, void *ctx, MONO_SIG_HANDLER_INFO_TYPE *i
 #ifdef MONO_ARCH_USE_SIGACTION
        struct sigaction sa;
 #endif
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        const char *signal_str = (signal == SIGSEGV) ? "SIGSEGV" : "SIGABRT";
 
        if (handling_sigsegv)
@@ -2182,7 +2182,8 @@ mono_handle_native_sigsegv (int signal, void *ctx, MONO_SIG_HANDLER_INFO_TYPE *i
        if (jit_tls && mono_thread_internal_current ()) {
                mono_runtime_printf_err ("Stacktrace:\n");
 
-               mono_walk_stack (print_stack_frame_to_stderr, TRUE, NULL);
+               /* FIXME: Is MONO_UNWIND_LOOKUP_IL_OFFSET correct here? */
+               mono_walk_stack (print_stack_frame_to_stderr, MONO_UNWIND_LOOKUP_IL_OFFSET, NULL);
        }
 
 #ifdef HAVE_BACKTRACE_SYMBOLS
@@ -2371,14 +2372,14 @@ mono_print_thread_dump_from_ctx (MonoContext *ctx)
 void
 mono_resume_unwind (MonoContext *ctx)
 {
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        MonoContext new_ctx;
 
        MONO_CONTEXT_SET_IP (ctx, MONO_CONTEXT_GET_IP (&jit_tls->resume_state.ctx));
        MONO_CONTEXT_SET_SP (ctx, MONO_CONTEXT_GET_SP (&jit_tls->resume_state.ctx));
        new_ctx = *ctx;
 
-       mono_handle_exception_internal (&new_ctx, jit_tls->resume_state.ex_obj, TRUE, NULL);
+       mono_handle_exception_internal (&new_ctx, (MonoObject *)jit_tls->resume_state.ex_obj, TRUE, NULL);
 
        mono_restore_context (&new_ctx);
 }
@@ -2396,7 +2397,7 @@ find_last_handler_block (StackFrameInfo *frame, MonoContext *ctx, gpointer data)
 {
        int i;
        gpointer ip;
-       FindHandlerBlockData *pdata = data;
+       FindHandlerBlockData *pdata = (FindHandlerBlockData *)data;
        MonoJitInfo *ji = frame->ji;
 
        if (!ji)
@@ -2457,7 +2458,7 @@ gboolean
 mono_install_handler_block_guard (MonoThreadUnwindState *ctx)
 {
        FindHandlerBlockData data = { 0 };
-       MonoJitTlsData *jit_tls = ctx->unwind_data [MONO_UNWIND_DATA_JIT_TLS];
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)ctx->unwind_data [MONO_UNWIND_DATA_JIT_TLS];
        gpointer resume_ip;
 
        /* FIXME */
@@ -2505,7 +2506,7 @@ mono_set_cast_details (MonoClass *from, MonoClass *to)
        MonoJitTlsData *jit_tls = NULL;
 
        if (mini_get_debug_options ()->better_cast_details) {
-               jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+               jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
                jit_tls->class_cast_from = from;
                jit_tls->class_cast_to = to;
        }
@@ -2612,7 +2613,7 @@ mono_thread_state_init_from_current (MonoThreadUnwindState *ctx)
 static void
 mono_raise_exception_with_ctx (MonoException *exc, MonoContext *ctx)
 {
-       mono_handle_exception (ctx, exc);
+       mono_handle_exception (ctx, (MonoObject *)exc);
        mono_restore_context (ctx);
 }
 
@@ -2621,7 +2622,7 @@ void
 mono_setup_async_callback (MonoContext *ctx, void (*async_cb)(void *fun), gpointer user_data)
 {
 #ifdef MONO_ARCH_HAVE_SETUP_ASYNC_CALLBACK
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        jit_tls->ex_ctx = *ctx;
 
        mono_arch_setup_async_callback (ctx, async_cb, user_data);
@@ -2684,7 +2685,7 @@ mono_restore_context (MonoContext *ctx)
        static void (*restore_context) (MonoContext *);
 
        if (!restore_context)
-               restore_context = mono_get_restore_context ();
+               restore_context = (void (*)(MonoContext *))mono_get_restore_context ();
        restore_context (ctx);
        g_assert_not_reached ();
 }
index e944f2526c2070f6e546d73114f1261815de08b7..58094823d31f585fcebb0294a2c3ba67e9f9a4c0 100644 (file)
@@ -142,35 +142,35 @@ mono_class_check_context_used (MonoClass *klass)
  * LOCKING: loader lock
  */
 static MonoRuntimeGenericContextInfoTemplate*
-get_info_templates (MonoRuntimeGenericContextTemplate *template, int type_argc)
+get_info_templates (MonoRuntimeGenericContextTemplate *template_, int type_argc)
 {
        g_assert (type_argc >= 0);
        if (type_argc == 0)
-               return template->infos;
-       return g_slist_nth_data (template->method_templates, type_argc - 1);
+               return template_->infos;
+       return (MonoRuntimeGenericContextInfoTemplate *)g_slist_nth_data (template_->method_templates, type_argc - 1);
 }
 
 /*
  * LOCKING: loader lock
  */
 static void
-set_info_templates (MonoImage *image, MonoRuntimeGenericContextTemplate *template, int type_argc,
+set_info_templates (MonoImage *image, MonoRuntimeGenericContextTemplate *template_, int type_argc,
        MonoRuntimeGenericContextInfoTemplate *oti)
 {
        g_assert (type_argc >= 0);
        if (type_argc == 0)
-               template->infos = oti;
+               template_->infos = oti;
        else {
-               int length = g_slist_length (template->method_templates);
+               int length = g_slist_length (template_->method_templates);
                GSList *list;
 
                /* FIXME: quadratic! */
                while (length < type_argc) {
-                       template->method_templates = g_slist_append_image (image, template->method_templates, NULL);
+                       template_->method_templates = g_slist_append_image (image, template_->method_templates, NULL);
                        length++;
                }
 
-               list = g_slist_nth (template->method_templates, type_argc - 1);
+               list = g_slist_nth (template_->method_templates, type_argc - 1);
                g_assert (list);
                list->data = oti;
        }
@@ -180,23 +180,23 @@ set_info_templates (MonoImage *image, MonoRuntimeGenericContextTemplate *templat
  * LOCKING: loader lock
  */
 static int
-template_get_max_argc (MonoRuntimeGenericContextTemplate *template)
+template_get_max_argc (MonoRuntimeGenericContextTemplate *template_)
 {
-       return g_slist_length (template->method_templates);
+       return g_slist_length (template_->method_templates);
 }
 
 /*
  * LOCKING: loader lock
  */
 static MonoRuntimeGenericContextInfoTemplate*
-rgctx_template_get_other_slot (MonoRuntimeGenericContextTemplate *template, int type_argc, int slot)
+rgctx_template_get_other_slot (MonoRuntimeGenericContextTemplate *template_, int type_argc, int slot)
 {
        int i;
        MonoRuntimeGenericContextInfoTemplate *oti;
 
        g_assert (slot >= 0);
 
-       for (oti = get_info_templates (template, type_argc), i = 0; i < slot; oti = oti->next, ++i) {
+       for (oti = get_info_templates (template_, type_argc), i = 0; i < slot; oti = oti->next, ++i) {
                if (!oti)
                        return NULL;
        }
@@ -208,12 +208,12 @@ rgctx_template_get_other_slot (MonoRuntimeGenericContextTemplate *template, int
  * LOCKING: loader lock
  */
 static int
-rgctx_template_num_infos (MonoRuntimeGenericContextTemplate *template, int type_argc)
+rgctx_template_num_infos (MonoRuntimeGenericContextTemplate *template_, int type_argc)
 {
        MonoRuntimeGenericContextInfoTemplate *oti;
        int i;
 
-       for (i = 0, oti = get_info_templates (template, type_argc); oti; ++i, oti = oti->next)
+       for (i = 0, oti = get_info_templates (template_, type_argc); oti; ++i, oti = oti->next)
                ;
 
        return i;
@@ -245,14 +245,14 @@ class_set_rgctx_template (MonoClass *klass, MonoRuntimeGenericContextTemplate *r
 static MonoRuntimeGenericContextTemplate*
 class_lookup_rgctx_template (MonoClass *klass)
 {
-       MonoRuntimeGenericContextTemplate *template;
+       MonoRuntimeGenericContextTemplate *template_;
 
        if (!klass->image->rgctx_template_hash)
                return NULL;
 
-       template = g_hash_table_lookup (klass->image->rgctx_template_hash, klass);
+       template_ = (MonoRuntimeGenericContextTemplate *)g_hash_table_lookup (klass->image->rgctx_template_hash, klass);
 
-       return template;
+       return template_;
 }
 
 /*
@@ -273,7 +273,7 @@ register_generic_subclass (MonoClass *klass)
        if (!generic_subclass_hash)
                generic_subclass_hash = g_hash_table_new (mono_aligned_addr_hash, NULL);
 
-       subclass = g_hash_table_lookup (generic_subclass_hash, parent);
+       subclass = (MonoClass *)g_hash_table_lookup (generic_subclass_hash, parent);
        rgctx_template->next_subclass = subclass;
        g_hash_table_insert (generic_subclass_hash, parent, klass);
 }
@@ -351,7 +351,7 @@ alloc_template (MonoClass *klass)
        num_templates_allocted++;
        num_templates_bytes += size;
 
-       return mono_image_alloc0 (klass->image, size);
+       return (MonoRuntimeGenericContextTemplate *)mono_image_alloc0 (klass->image, size);
 }
 
 /* LOCKING: Takes the loader lock */
@@ -363,7 +363,7 @@ alloc_oti (MonoImage *image)
        num_oti_allocted++;
        num_oti_bytes += size;
 
-       return mono_image_alloc0 (image, size);
+       return (MonoRuntimeGenericContextInfoTemplate *)mono_image_alloc0 (image, size);
 }
 
 #define MONO_RGCTX_SLOT_USED_MARKER    ((gpointer)&mono_defaults.object_class->byval_arg)
@@ -383,7 +383,7 @@ info_has_identity (MonoRgctxInfoType info_type)
  * LOCKING: loader lock
  */
 static void
-rgctx_template_set_slot (MonoImage *image, MonoRuntimeGenericContextTemplate *template, int type_argc,
+rgctx_template_set_slot (MonoImage *image, MonoRuntimeGenericContextTemplate *template_, int type_argc,
        int slot, gpointer data, MonoRgctxInfoType info_type)
 {
        static gboolean inited = FALSE;
@@ -391,7 +391,7 @@ rgctx_template_set_slot (MonoImage *image, MonoRuntimeGenericContextTemplate *te
        static int num_data = 0;
 
        int i;
-       MonoRuntimeGenericContextInfoTemplate *list = get_info_templates (template, type_argc);
+       MonoRuntimeGenericContextInfoTemplate *list = get_info_templates (template_, type_argc);
        MonoRuntimeGenericContextInfoTemplate **oti = &list;
 
        if (!inited) {
@@ -416,7 +416,7 @@ rgctx_template_set_slot (MonoImage *image, MonoRuntimeGenericContextTemplate *te
        (*oti)->data = data;
        (*oti)->info_type = info_type;
 
-       set_info_templates (image, template, type_argc, list);
+       set_info_templates (image, template_, type_argc, list);
 
        if (data == MONO_RGCTX_SLOT_USED_MARKER)
                ++num_markers;
@@ -530,8 +530,9 @@ inflate_info (MonoRuntimeGenericContextInfoTemplate *oti, MonoGenericContext *co
        case MONO_RGCTX_INFO_NULLABLE_CLASS_BOX:
        case MONO_RGCTX_INFO_NULLABLE_CLASS_UNBOX: {
                gpointer result = mono_class_inflate_generic_type_with_mempool (temporary ? NULL : klass->image,
-                       data, context, &error);
-               g_assert (mono_error_ok (&error)); /*FIXME proper error handling*/
+                       (MonoType *)data, context, &error);
+               if (!mono_error_ok (&error)) /*FIXME proper error handling */
+                       g_error ("Could not inflate generic type due to %s", mono_error_get_message (&error));
                return result;
        }
 
@@ -541,7 +542,7 @@ inflate_info (MonoRuntimeGenericContextInfoTemplate *oti, MonoGenericContext *co
        case MONO_RGCTX_INFO_METHOD_CONTEXT:
        case MONO_RGCTX_INFO_REMOTING_INVOKE_WITH_CHECK:
        case MONO_RGCTX_INFO_METHOD_DELEGATE_CODE: {
-               MonoMethod *method = data;
+               MonoMethod *method = (MonoMethod *)data;
                MonoMethod *inflated_method;
                MonoType *inflated_type = mono_class_inflate_generic_type (&method->klass->byval_arg, context);
                MonoClass *inflated_class = mono_class_from_mono_type (inflated_type);
@@ -566,12 +567,12 @@ inflate_info (MonoRuntimeGenericContextInfoTemplate *oti, MonoGenericContext *co
                return inflated_method;
        }
        case MONO_RGCTX_INFO_METHOD_GSHAREDVT_INFO: {
-               MonoGSharedVtMethodInfo *oinfo = data;
+               MonoGSharedVtMethodInfo *oinfo = (MonoGSharedVtMethodInfo *)data;
                MonoGSharedVtMethodInfo *res;
                MonoDomain *domain = mono_domain_get ();
                int i;
 
-               res = mono_domain_alloc0 (domain, sizeof (MonoGSharedVtMethodInfo));
+               res = (MonoGSharedVtMethodInfo *)mono_domain_alloc0 (domain, sizeof (MonoGSharedVtMethodInfo));
                /*
                res->nlocals = info->nlocals;
                res->locals_types = g_new0 (MonoType*, info->nlocals);
@@ -579,19 +580,19 @@ inflate_info (MonoRuntimeGenericContextInfoTemplate *oti, MonoGenericContext *co
                        res->locals_types [i] = mono_class_inflate_generic_type (info->locals_types [i], context);
                */
                res->num_entries = oinfo->num_entries;
-               res->entries = mono_domain_alloc0 (domain, sizeof (MonoRuntimeGenericContextInfoTemplate) * oinfo->num_entries);
+               res->entries = (MonoRuntimeGenericContextInfoTemplate *)mono_domain_alloc0 (domain, sizeof (MonoRuntimeGenericContextInfoTemplate) * oinfo->num_entries);
                for (i = 0; i < oinfo->num_entries; ++i) {
                        MonoRuntimeGenericContextInfoTemplate *otemplate = &oinfo->entries [i];
-                       MonoRuntimeGenericContextInfoTemplate *template = &res->entries [i];
+                       MonoRuntimeGenericContextInfoTemplate *template_ = &res->entries [i];
 
-                       memcpy (template, otemplate, sizeof (MonoRuntimeGenericContextInfoTemplate));
-                       template->data = inflate_info (template, context, klass, FALSE);
+                       memcpy (template_, otemplate, sizeof (MonoRuntimeGenericContextInfoTemplate));
+                       template_->data = inflate_info (template_, context, klass, FALSE);
                }
                return res;
        }
        case MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE:
        case MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE_VIRT: {
-               MonoJumpInfoGSharedVtCall *info = data;
+               MonoJumpInfoGSharedVtCall *info = (MonoJumpInfoGSharedVtCall *)data;
                MonoMethod *method = info->method;
                MonoMethod *inflated_method;
                MonoType *inflated_type = mono_class_inflate_generic_type (&method->klass->byval_arg, context);
@@ -599,7 +600,7 @@ inflate_info (MonoRuntimeGenericContextInfoTemplate *oti, MonoGenericContext *co
                MonoJumpInfoGSharedVtCall *res;
                MonoDomain *domain = mono_domain_get ();
 
-               res = mono_domain_alloc0 (domain, sizeof (MonoJumpInfoGSharedVtCall));
+               res = (MonoJumpInfoGSharedVtCall *)mono_domain_alloc0 (domain, sizeof (MonoJumpInfoGSharedVtCall));
                /* Keep the original signature */
                res->sig = info->sig;
 
@@ -627,7 +628,7 @@ inflate_info (MonoRuntimeGenericContextInfoTemplate *oti, MonoGenericContext *co
 
        case MONO_RGCTX_INFO_CLASS_FIELD:
        case MONO_RGCTX_INFO_FIELD_OFFSET: {
-               MonoClassField *field = data;
+               MonoClassField *field = (MonoClassField *)data;
                MonoType *inflated_type = mono_class_inflate_generic_type (&field->parent->byval_arg, context);
                MonoClass *inflated_class = mono_class_from_mono_type (inflated_type);
                int i = field - field->parent->fields;
@@ -641,7 +642,7 @@ inflate_info (MonoRuntimeGenericContextInfoTemplate *oti, MonoGenericContext *co
                return &inflated_class->fields [i];
        }
        case MONO_RGCTX_INFO_SIG_GSHAREDVT_OUT_TRAMPOLINE_CALLI: {
-               MonoMethodSignature *sig = data;
+               MonoMethodSignature *sig = (MonoMethodSignature *)data;
                MonoMethodSignature *isig;
                MonoError error;
 
@@ -651,14 +652,14 @@ inflate_info (MonoRuntimeGenericContextInfoTemplate *oti, MonoGenericContext *co
        }
        case MONO_RGCTX_INFO_VIRT_METHOD_CODE:
        case MONO_RGCTX_INFO_VIRT_METHOD_BOX_TYPE: {
-               MonoJumpInfoVirtMethod *info = data;
+               MonoJumpInfoVirtMethod *info = (MonoJumpInfoVirtMethod *)data;
                MonoJumpInfoVirtMethod *res;
                MonoType *t;
                MonoDomain *domain = mono_domain_get ();
                MonoError error;
 
                // FIXME: Temporary
-               res = mono_domain_alloc0 (domain, sizeof (MonoJumpInfoVirtMethod));
+               res = (MonoJumpInfoVirtMethod *)mono_domain_alloc0 (domain, sizeof (MonoJumpInfoVirtMethod));
                t = mono_class_inflate_generic_type (&info->klass->byval_arg, context);
                res->klass = mono_class_from_mono_type (t);
                mono_metadata_free_type (t);
@@ -689,7 +690,7 @@ free_inflated_info (MonoRgctxInfoType info_type, gpointer info)
        case MONO_RGCTX_INFO_TYPE:
        case MONO_RGCTX_INFO_REFLECTION_TYPE:
        case MONO_RGCTX_INFO_CAST_CACHE:
-               mono_metadata_free_type (info);
+               mono_metadata_free_type ((MonoType *)info);
                break;
        default:
                break;
@@ -728,21 +729,21 @@ get_shared_class (MonoClass *klass)
 static MonoRuntimeGenericContextTemplate*
 mono_class_get_runtime_generic_context_template (MonoClass *klass)
 {
-       MonoRuntimeGenericContextTemplate *parent_template, *template;
+       MonoRuntimeGenericContextTemplate *parent_template, *template_;
        guint32 i;
 
        klass = get_shared_class (klass);
 
        mono_loader_lock ();
-       template = class_lookup_rgctx_template (klass);
+       template_ = class_lookup_rgctx_template (klass);
        mono_loader_unlock ();
 
-       if (template)
-               return template;
+       if (template_)
+               return template_;
 
        //g_assert (get_shared_class (class) == class);
 
-       template = alloc_template (klass);
+       template_ = alloc_template (klass);
 
        mono_loader_lock ();
 
@@ -762,7 +763,7 @@ mono_class_get_runtime_generic_context_template (MonoClass *klass)
 
                                oti = class_get_rgctx_template_oti (klass->parent, type_argc, i, FALSE, FALSE, NULL);
                                if (oti.data && oti.data != MONO_RGCTX_SLOT_USED_MARKER) {
-                                       rgctx_template_set_slot (klass->image, template, type_argc, i,
+                                       rgctx_template_set_slot (klass->image, template_, type_argc, i,
                                                                                         oti.data, oti.info_type);
                                }
                        }
@@ -771,9 +772,9 @@ mono_class_get_runtime_generic_context_template (MonoClass *klass)
 
        if (class_lookup_rgctx_template (klass)) {
                /* some other thread already set the template */
-               template = class_lookup_rgctx_template (klass);
+               template_ = class_lookup_rgctx_template (klass);
        } else {
-               class_set_rgctx_template (klass, template);
+               class_set_rgctx_template (klass, template_);
 
                if (klass->parent)
                        register_generic_subclass (klass);
@@ -781,7 +782,7 @@ mono_class_get_runtime_generic_context_template (MonoClass *klass)
 
        mono_loader_unlock ();
 
-       return template;
+       return template_;
 }
 
 /*
@@ -820,11 +821,11 @@ class_get_rgctx_template_oti (MonoClass *klass, int type_argc, guint32 slot, gbo
 
                return oti;
        } else {
-               MonoRuntimeGenericContextTemplate *template;
+               MonoRuntimeGenericContextTemplate *template_;
                MonoRuntimeGenericContextInfoTemplate *oti;
 
-               template = mono_class_get_runtime_generic_context_template (klass);
-               oti = rgctx_template_get_other_slot (template, type_argc, slot);
+               template_ = mono_class_get_runtime_generic_context_template (klass);
+               oti = rgctx_template_get_other_slot (template_, type_argc, slot);
                g_assert (oti);
 
                if (temporary)
@@ -856,8 +857,8 @@ class_type_info (MonoDomain *domain, MonoClass *klass, MonoRgctxInfoType info_ty
        }
        case MONO_RGCTX_INFO_CAST_CACHE: {
                /*First slot is the cache itself, the second the vtable.*/
-               gpointer **cache_data = mono_domain_alloc0 (domain, sizeof (gpointer) * 2);
-               cache_data [1] = (gpointer)klass;
+               gpointer **cache_data = (gpointer **)mono_domain_alloc0 (domain, sizeof (gpointer) * 2);
+               cache_data [1] = (gpointer *)klass;
                return cache_data;
        }
        case MONO_RGCTX_INFO_ARRAY_ELEMENT_SIZE:
@@ -913,7 +914,7 @@ class_type_info (MonoDomain *domain, MonoClass *klass, MonoRgctxInfoType info_ty
                        if (!domain_info->memcpy_addr [size]) {
                                gpointer addr = mono_compile_method (memcpy_method [size]);
                                mono_memory_barrier ();
-                               domain_info->memcpy_addr [size] = addr;
+                               domain_info->memcpy_addr [size] = (gpointer *)addr;
                        }
                        return domain_info->memcpy_addr [size];
                } else {
@@ -933,7 +934,7 @@ class_type_info (MonoDomain *domain, MonoClass *klass, MonoRgctxInfoType info_ty
                        if (!domain_info->bzero_addr [size]) {
                                gpointer addr = mono_compile_method (bzero_method [size]);
                                mono_memory_barrier ();
-                               domain_info->bzero_addr [size] = addr;
+                               domain_info->bzero_addr [size] = (gpointer *)addr;
                        }
                        return domain_info->bzero_addr [size];
                }
@@ -955,7 +956,7 @@ class_type_info (MonoDomain *domain, MonoClass *klass, MonoRgctxInfoType info_ty
 
                addr = mono_compile_method (method);
                // The caller uses the gsharedvt call signature
-               ji = mini_jit_info_table_find (mono_domain_get (), mono_get_addr_from_ftnptr (addr), NULL);
+               ji = mini_jit_info_table_find (mono_domain_get (), (char *)mono_get_addr_from_ftnptr (addr), NULL);
                g_assert (ji);
                if (mini_jit_info_is_gsharedvt (ji))
                        return mono_create_static_rgctx_trampoline (method, addr);
@@ -1005,7 +1006,7 @@ typedef struct {
 static guint
 tramp_info_hash (gconstpointer key)
 {
-       GSharedVtTrampInfo *tramp = (gpointer)key;
+       GSharedVtTrampInfo *tramp = (GSharedVtTrampInfo *)key;
 
        return (gsize)tramp->addr;
 }
@@ -1013,8 +1014,8 @@ tramp_info_hash (gconstpointer key)
 static gboolean
 tramp_info_equal (gconstpointer a, gconstpointer b)
 {
-       GSharedVtTrampInfo *tramp1 = (gpointer)a;
-       GSharedVtTrampInfo *tramp2 = (gpointer)b;
+       GSharedVtTrampInfo *tramp1 = (GSharedVtTrampInfo *)a;
+       GSharedVtTrampInfo *tramp2 = (GSharedVtTrampInfo *)b;
 
        /* The signatures should be internalized */
        return tramp1->is_in == tramp2->is_in && tramp1->calli == tramp2->calli && tramp1->vcall_offset == tramp2->vcall_offset &&
@@ -1097,7 +1098,7 @@ mini_get_gsharedvt_wrapper (gboolean gsharedvt_in, gpointer addr, MonoMethodSign
        num_trampolines ++;
 
        /* Cache it */
-       tramp_info = mono_domain_alloc0 (domain, sizeof (GSharedVtTrampInfo));
+       tramp_info = (GSharedVtTrampInfo *)mono_domain_alloc0 (domain, sizeof (GSharedVtTrampInfo));
        memcpy (tramp_info, &tinfo, sizeof (GSharedVtTrampInfo));
 
        mono_domain_lock (domain);
@@ -1145,7 +1146,7 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
        case MONO_RGCTX_INFO_BZERO:
        case MONO_RGCTX_INFO_NULLABLE_CLASS_BOX:
        case MONO_RGCTX_INFO_NULLABLE_CLASS_UNBOX: {
-               MonoClass *arg_class = mono_class_from_mono_type (data);
+               MonoClass *arg_class = mono_class_from_mono_type ((MonoType *)data);
 
                free_inflated_info (oti->info_type, data);
                g_assert (arg_class);
@@ -1161,17 +1162,17 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
        case MONO_RGCTX_INFO_TYPE:
                return data;
        case MONO_RGCTX_INFO_REFLECTION_TYPE:
-               return mono_type_get_object (domain, data);
+               return mono_type_get_object (domain, (MonoType *)data);
        case MONO_RGCTX_INFO_METHOD:
                return data;
        case MONO_RGCTX_INFO_GENERIC_METHOD_CODE: {
                gpointer addr;
 
-               addr = mono_compile_method (data);
-               return mini_add_method_trampoline (data, addr, mono_method_needs_static_rgctx_invoke (data, FALSE), FALSE);
+               addr = mono_compile_method ((MonoMethod *)data);
+               return mini_add_method_trampoline ((MonoMethod *)data, addr, mono_method_needs_static_rgctx_invoke ((MonoMethod *)data, FALSE), FALSE);
        }
        case MONO_RGCTX_INFO_VIRT_METHOD_CODE: {
-               MonoJumpInfoVirtMethod *info = data;
+               MonoJumpInfoVirtMethod *info = (MonoJumpInfoVirtMethod *)data;
                MonoClass *iface_class = info->method->klass;
                MonoMethod *method;
                MonoError error;
@@ -1197,7 +1198,7 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
                return mini_add_method_trampoline (method, addr, mono_method_needs_static_rgctx_invoke (method, FALSE), FALSE);
        }
        case MONO_RGCTX_INFO_VIRT_METHOD_BOX_TYPE: {
-               MonoJumpInfoVirtMethod *info = data;
+               MonoJumpInfoVirtMethod *info = (MonoJumpInfoVirtMethod *)data;
                MonoClass *iface_class = info->method->klass;
                MonoMethod *method;
                MonoClass *impl_class;
@@ -1226,14 +1227,14 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
        }
 #ifndef DISABLE_REMOTING
        case MONO_RGCTX_INFO_REMOTING_INVOKE_WITH_CHECK:
-               return mono_compile_method (mono_marshal_get_remoting_invoke_with_check (data));
+               return mono_compile_method (mono_marshal_get_remoting_invoke_with_check ((MonoMethod *)data));
 #endif
        case MONO_RGCTX_INFO_METHOD_DELEGATE_CODE:
                return mono_domain_alloc0 (domain, sizeof (gpointer));
        case MONO_RGCTX_INFO_CLASS_FIELD:
                return data;
        case MONO_RGCTX_INFO_FIELD_OFFSET: {
-               MonoClassField *field = data;
+               MonoClassField *field = (MonoClassField *)data;
 
                /* The value is offset by 1 */
                if (field->parent->valuetype && !(field->type->attrs & FIELD_ATTRIBUTE_STATIC))
@@ -1242,7 +1243,7 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
                        return GUINT_TO_POINTER (field->offset + 1);
        }
        case MONO_RGCTX_INFO_METHOD_RGCTX: {
-               MonoMethodInflated *method = data;
+               MonoMethodInflated *method = (MonoMethodInflated *)data;
                MonoVTable *vtable;
 
                g_assert (method->method.method.is_inflated);
@@ -1255,7 +1256,7 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
                return mono_method_lookup_rgctx (vtable, method->context.method_inst);
        }
        case MONO_RGCTX_INFO_METHOD_CONTEXT: {
-               MonoMethodInflated *method = data;
+               MonoMethodInflated *method = (MonoMethodInflated *)data;
 
                g_assert (method->method.method.is_inflated);
                g_assert (method->context.method_inst);
@@ -1263,8 +1264,8 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
                return method->context.method_inst;
        }
        case MONO_RGCTX_INFO_SIG_GSHAREDVT_OUT_TRAMPOLINE_CALLI: {
-               MonoMethodSignature *gsig = oti->data;
-               MonoMethodSignature *sig = data;
+               MonoMethodSignature *gsig = (MonoMethodSignature *)oti->data;
+               MonoMethodSignature *sig = (MonoMethodSignature *)data;
                gpointer addr;
 
                /*
@@ -1275,12 +1276,12 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
        }
        case MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE:
        case MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE_VIRT: {
-               MonoJumpInfoGSharedVtCall *call_info = data;
+               MonoJumpInfoGSharedVtCall *call_info = (MonoJumpInfoGSharedVtCall *)data;
                MonoMethodSignature *call_sig;
                MonoMethod *method;
                gpointer addr;
                MonoJitInfo *callee_ji;
-               gboolean virtual = oti->info_type == MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE_VIRT;
+               gboolean virtual_ = oti->info_type == MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE_VIRT;
                gint32 vcall_offset;
                gboolean callee_gsharedvt;
 
@@ -1291,12 +1292,12 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
 
                g_assert (method->is_inflated);
 
-               if (!virtual)
+               if (!virtual_)
                        addr = mono_compile_method (method);
                else
                        addr = NULL;
 
-               if (virtual) {
+               if (virtual_) {
                        /* Same as in mono_emit_method_call_full () */
                        if ((method->klass->parent == mono_defaults.multicastdelegate_class) && (!strcmp (method->name, "Invoke"))) {
                                /* See mono_emit_method_call_full () */
@@ -1314,7 +1315,7 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
                }
 
                // FIXME: This loads information in the AOT case
-               callee_ji = mini_jit_info_table_find (mono_domain_get (), mono_get_addr_from_ftnptr (addr), NULL);
+               callee_ji = mini_jit_info_table_find (mono_domain_get (), (char *)mono_get_addr_from_ftnptr (addr), NULL);
                callee_gsharedvt = ji_is_gsharedvt (callee_ji);
 
                /*
@@ -1328,7 +1329,7 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
                 * caller -> out trampoline -> in trampoline -> callee
                 * This is not very efficient, but it is easy to implement.
                 */
-               if (virtual || !callee_gsharedvt) {
+               if (virtual_ || !callee_gsharedvt) {
                        MonoMethodSignature *sig, *gsig;
 
                        g_assert (method->is_inflated);
@@ -1382,21 +1383,21 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
                return addr;
        }
        case MONO_RGCTX_INFO_METHOD_GSHAREDVT_INFO: {
-               MonoGSharedVtMethodInfo *info = data;
+               MonoGSharedVtMethodInfo *info = (MonoGSharedVtMethodInfo *)data;
                MonoGSharedVtMethodRuntimeInfo *res;
                MonoType *t;
                int i, offset, align, size;
 
                // FIXME:
-               res = g_malloc0 (sizeof (MonoGSharedVtMethodRuntimeInfo) + (info->num_entries * sizeof (gpointer)));
+               res = (MonoGSharedVtMethodRuntimeInfo *)g_malloc0 (sizeof (MonoGSharedVtMethodRuntimeInfo) + (info->num_entries * sizeof (gpointer)));
 
                offset = 0;
                for (i = 0; i < info->num_entries; ++i) {
-                       MonoRuntimeGenericContextInfoTemplate *template = &info->entries [i];
+                       MonoRuntimeGenericContextInfoTemplate *template_ = &info->entries [i];
 
-                       switch (template->info_type) {
+                       switch (template_->info_type) {
                        case MONO_RGCTX_INFO_LOCAL_OFFSET:
-                               t = template->data;
+                               t = (MonoType *)template_->data;
 
                                size = mono_type_size (t, &align);
 
@@ -1412,7 +1413,7 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
                                offset += size;
                                break;
                        default:
-                               res->entries [i] = instantiate_info (domain, template, context, klass);
+                               res->entries [i] = instantiate_info (domain, template_, context, klass);
                                break;
                        }
                }
@@ -1433,14 +1434,14 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
 static void
 fill_in_rgctx_template_slot (MonoClass *klass, int type_argc, int index, gpointer data, MonoRgctxInfoType info_type)
 {
-       MonoRuntimeGenericContextTemplate *template = mono_class_get_runtime_generic_context_template (klass);
+       MonoRuntimeGenericContextTemplate *template_ = mono_class_get_runtime_generic_context_template (klass);
        MonoClass *subclass;
 
-       rgctx_template_set_slot (klass->image, template, type_argc, index, data, info_type);
+       rgctx_template_set_slot (klass->image, template_, type_argc, index, data, info_type);
 
        /* Recurse for all subclasses */
        if (generic_subclass_hash)
-               subclass = g_hash_table_lookup (generic_subclass_hash, klass);
+               subclass = (MonoClass *)g_hash_table_lookup (generic_subclass_hash, klass);
        else
                subclass = NULL;
 
@@ -1514,11 +1515,11 @@ static int
 register_info (MonoClass *klass, int type_argc, gpointer data, MonoRgctxInfoType info_type)
 {
        int i;
-       MonoRuntimeGenericContextTemplate *template = mono_class_get_runtime_generic_context_template (klass);
+       MonoRuntimeGenericContextTemplate *template_ = mono_class_get_runtime_generic_context_template (klass);
        MonoClass *parent;
        MonoRuntimeGenericContextInfoTemplate *oti;
 
-       for (i = 0, oti = get_info_templates (template, type_argc); oti; ++i, oti = oti->next) {
+       for (i = 0, oti = get_info_templates (template_, type_argc); oti; ++i, oti = oti->next) {
                if (!oti->data)
                        break;
        }
@@ -1542,7 +1543,7 @@ register_info (MonoClass *klass, int type_argc, gpointer data, MonoRgctxInfoType
                        break;
 
                rgctx_template_set_slot (parent->image, parent_template, type_argc, i,
-                                                                MONO_RGCTX_SLOT_USED_MARKER, 0);
+                                                                MONO_RGCTX_SLOT_USED_MARKER, (MonoRgctxInfoType)0);
 
                parent = parent->parent;
        }
@@ -1572,7 +1573,7 @@ info_equal (gpointer data1, gpointer data2, MonoRgctxInfoType info_type)
        case MONO_RGCTX_INFO_BZERO:
        case MONO_RGCTX_INFO_NULLABLE_CLASS_BOX:
        case MONO_RGCTX_INFO_NULLABLE_CLASS_UNBOX:
-               return mono_class_from_mono_type (data1) == mono_class_from_mono_type (data2);
+               return mono_class_from_mono_type ((MonoType *)data1) == mono_class_from_mono_type ((MonoType *)data2);
        case MONO_RGCTX_INFO_METHOD:
        case MONO_RGCTX_INFO_METHOD_GSHAREDVT_INFO:
        case MONO_RGCTX_INFO_GENERIC_METHOD_CODE:
@@ -1588,8 +1589,8 @@ info_equal (gpointer data1, gpointer data2, MonoRgctxInfoType info_type)
                return data1 == data2;
        case MONO_RGCTX_INFO_VIRT_METHOD_CODE:
        case MONO_RGCTX_INFO_VIRT_METHOD_BOX_TYPE: {
-               MonoJumpInfoVirtMethod *info1 = data1;
-               MonoJumpInfoVirtMethod *info2 = data2;
+               MonoJumpInfoVirtMethod *info1 = (MonoJumpInfoVirtMethod *)data1;
+               MonoJumpInfoVirtMethod *info2 = (MonoJumpInfoVirtMethod *)data2;
 
                return info1->klass == info2->klass && info1->method == info2->method;
        }
@@ -1629,7 +1630,7 @@ mini_rgctx_info_type_to_patch_info_type (MonoRgctxInfoType info_type)
                return MONO_PATCH_INFO_FIELD;
        default:
                g_assert_not_reached ();
-               return -1;
+               return (MonoJumpInfoType)-1;
        }
 }
 
@@ -1756,7 +1757,7 @@ alloc_rgctx_array (MonoDomain *domain, int n, gboolean is_mrgctx)
        static int mrgctx_bytes_alloced = 0;
 
        int size = mono_class_rgctx_get_array_size (n, is_mrgctx) * sizeof (gpointer);
-       gpointer array = mono_domain_alloc0 (domain, size);
+       gpointer *array = (gpointer *)mono_domain_alloc0 (domain, size);
 
        if (!inited) {
                mono_counters_register ("RGCTX num arrays alloced", MONO_COUNTER_GENERICS | MONO_COUNTER_INT, &rgctx_num_alloced);
@@ -1821,7 +1822,7 @@ fill_runtime_generic_context (MonoVTable *class_vtable, MonoRuntimeGenericContex
                }
                if (!rgctx [offset + 0])
                        rgctx [offset + 0] = alloc_rgctx_array (domain, i + 1, method_inst != NULL);
-               rgctx = rgctx [offset + 0];
+               rgctx = (void **)rgctx [offset + 0];
                first_slot += size - 1;
                size = mono_class_rgctx_get_array_size (i + 1, method_inst != NULL);
        }
@@ -1919,7 +1920,7 @@ mono_method_fill_runtime_generic_context (MonoMethodRuntimeGenericContext *mrgct
 static guint
 mrgctx_hash_func (gconstpointer key)
 {
-       const MonoMethodRuntimeGenericContext *mrgctx = key;
+       const MonoMethodRuntimeGenericContext *mrgctx = (const MonoMethodRuntimeGenericContext *)key;
 
        return mono_aligned_addr_hash (mrgctx->class_vtable) ^ mono_metadata_generic_inst_hash (mrgctx->method_inst);
 }
@@ -1927,8 +1928,8 @@ mrgctx_hash_func (gconstpointer key)
 static gboolean
 mrgctx_equal_func (gconstpointer a, gconstpointer b)
 {
-       const MonoMethodRuntimeGenericContext *mrgctx1 = a;
-       const MonoMethodRuntimeGenericContext *mrgctx2 = b;
+       const MonoMethodRuntimeGenericContext *mrgctx1 = (const MonoMethodRuntimeGenericContext *)a;
+       const MonoMethodRuntimeGenericContext *mrgctx2 = (const MonoMethodRuntimeGenericContext *)b;
 
        return mrgctx1->class_vtable == mrgctx2->class_vtable &&
                mono_metadata_generic_inst_equal (mrgctx1->method_inst, mrgctx2->method_inst);
@@ -1961,7 +1962,7 @@ mono_method_lookup_rgctx (MonoVTable *class_vtable, MonoGenericInst *method_inst
        key.class_vtable = class_vtable;
        key.method_inst = method_inst;
 
-       mrgctx = g_hash_table_lookup (domain->method_rgctx_hash, &key);
+       mrgctx = (MonoMethodRuntimeGenericContext *)g_hash_table_lookup (domain->method_rgctx_hash, &key);
 
        if (!mrgctx) {
                //int i;
@@ -2322,7 +2323,7 @@ get_object_generic_inst (int type_argc)
        MonoType **type_argv;
        int i;
 
-       type_argv = alloca (sizeof (MonoType*) * type_argc);
+       type_argv = (MonoType **)alloca (sizeof (MonoType*) * type_argc);
 
        for (i = 0; i < type_argc; ++i)
                type_argv [i] = &mono_defaults.object_class->byval_arg;
@@ -2784,11 +2785,11 @@ mini_get_shared_gparam (MonoType *t, MonoType *constraint)
        }
        if (!image->gshared_types [constraint->type])
                image->gshared_types [constraint->type] = g_hash_table_new (shared_gparam_hash, shared_gparam_equal);
-       res = g_hash_table_lookup (image->gshared_types [constraint->type], &key);
+       res = (MonoType *)g_hash_table_lookup (image->gshared_types [constraint->type], &key);
        mono_image_unlock (image);
        if (res)
                return res;
-       copy = mono_image_alloc0 (image, sizeof (MonoGSharedGenericParam));
+       copy = (MonoGSharedGenericParam *)mono_image_alloc0 (image, sizeof (MonoGSharedGenericParam));
        memcpy (&copy->param, par, sizeof (MonoGenericParamFull));
        copy->param.info.pklass = NULL;
        name = get_shared_gparam_name (constraint->type, ((MonoGenericParamFull*)copy)->info.name);
@@ -2983,7 +2984,7 @@ mini_get_rgctx_entry_slot (MonoJumpInfoRgctxEntry *entry)
                slot = mono_method_lookup_or_register_info (entry->method, entry->in_mrgctx, entry->data->data.sig, entry->info_type, mono_method_get_context (entry->method));
                break;
        case MONO_PATCH_INFO_GSHAREDVT_CALL: {
-               MonoJumpInfoGSharedVtCall *call_info = g_malloc0 (sizeof (MonoJumpInfoGSharedVtCall)); //mono_domain_alloc0 (domain, sizeof (MonoJumpInfoGSharedVtCall));
+               MonoJumpInfoGSharedVtCall *call_info = (MonoJumpInfoGSharedVtCall *)g_malloc0 (sizeof (MonoJumpInfoGSharedVtCall)); //mono_domain_alloc0 (domain, sizeof (MonoJumpInfoGSharedVtCall));
 
                memcpy (call_info, entry->data->data.gsharedvt, sizeof (MonoJumpInfoGSharedVtCall));
                slot = mono_method_lookup_or_register_info (entry->method, entry->in_mrgctx, call_info, entry->info_type, mono_method_get_context (entry->method));
@@ -2995,15 +2996,15 @@ mini_get_rgctx_entry_slot (MonoJumpInfoRgctxEntry *entry)
                int i;
 
                /* Make a copy into the domain mempool */
-               info = g_malloc0 (sizeof (MonoGSharedVtMethodInfo)); //mono_domain_alloc0 (domain, sizeof (MonoGSharedVtMethodInfo));
+               info = (MonoGSharedVtMethodInfo *)g_malloc0 (sizeof (MonoGSharedVtMethodInfo)); //mono_domain_alloc0 (domain, sizeof (MonoGSharedVtMethodInfo));
                info->method = oinfo->method;
                info->num_entries = oinfo->num_entries;
-               info->entries = g_malloc0 (sizeof (MonoRuntimeGenericContextInfoTemplate) * info->num_entries);
+               info->entries = (MonoRuntimeGenericContextInfoTemplate *)g_malloc0 (sizeof (MonoRuntimeGenericContextInfoTemplate) * info->num_entries);
                for (i = 0; i < oinfo->num_entries; ++i) {
                        MonoRuntimeGenericContextInfoTemplate *otemplate = &oinfo->entries [i];
-                       MonoRuntimeGenericContextInfoTemplate *template = &info->entries [i];
+                       MonoRuntimeGenericContextInfoTemplate *template_ = &info->entries [i];
 
-                       memcpy (template, otemplate, sizeof (MonoRuntimeGenericContextInfoTemplate));
+                       memcpy (template_, otemplate, sizeof (MonoRuntimeGenericContextInfoTemplate));
                }
                slot = mono_method_lookup_or_register_info (entry->method, entry->in_mrgctx, info, entry->info_type, mono_method_get_context (entry->method));
                break;
@@ -3012,7 +3013,7 @@ mini_get_rgctx_entry_slot (MonoJumpInfoRgctxEntry *entry)
                MonoJumpInfoVirtMethod *info;
                MonoJumpInfoVirtMethod *oinfo = entry->data->data.virt_method;
 
-               info = g_malloc0 (sizeof (MonoJumpInfoVirtMethod));
+               info = (MonoJumpInfoVirtMethod *)g_malloc0 (sizeof (MonoJumpInfoVirtMethod));
                memcpy (info, oinfo, sizeof (MonoJumpInfoVirtMethod));
                slot = mono_method_lookup_or_register_info (entry->method, entry->in_mrgctx, info, entry->info_type, mono_method_get_context (entry->method));
                break;
index 724c4aa2c8739dadfeb23d5cc49833e71eee6775..962557058b4bedb68a655480a721c24b23230f71 100644 (file)
@@ -130,19 +130,19 @@ mono_gdb_render_native_backtraces (pid_t crashed_pid)
 
 static GHashTable *mono_saved_signal_handlers = NULL;
 
-static gpointer
+static struct sigaction *
 get_saved_signal_handler (int signo)
 {
        if (mono_saved_signal_handlers)
                /* The hash is only modified during startup, so no need for locking */
-               return g_hash_table_lookup (mono_saved_signal_handlers, GINT_TO_POINTER (signo));
+               return (struct sigaction *)g_hash_table_lookup (mono_saved_signal_handlers, GINT_TO_POINTER (signo));
        return NULL;
 }
 
 static void
 save_old_signal_handler (int signo, struct sigaction *old_action)
 {
-       struct sigaction *handler_to_save = g_malloc (sizeof (struct sigaction));
+       struct sigaction *handler_to_save = (struct sigaction *)g_malloc (sizeof (struct sigaction));
 
        mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_CONFIG,
                                "Saving old signal handler for signal %d.", signo);
@@ -189,7 +189,7 @@ gboolean
 MONO_SIG_HANDLER_SIGNATURE (mono_chain_signal)
 {
        int signal = MONO_SIG_HANDLER_GET_SIGNO ();
-       struct sigaction *saved_handler = get_saved_signal_handler (signal);
+       struct sigaction *saved_handler = (struct sigaction *)get_saved_signal_handler (signal);
 
        if (saved_handler && saved_handler->sa_handler) {
                if (!(saved_handler->sa_flags & SA_SIGINFO)) {
@@ -211,7 +211,7 @@ MONO_SIG_HANDLER_FUNC (static, sigabrt_signal_handler)
        MONO_SIG_HANDLER_GET_CONTEXT;
 
        if (mono_thread_internal_current ())
-               ji = mono_jit_info_table_find_internal (mono_domain_get (), mono_arch_ip_from_context (ctx), TRUE, TRUE);
+               ji = mono_jit_info_table_find_internal (mono_domain_get (), (char *)mono_arch_ip_from_context (ctx), TRUE, TRUE);
        if (!ji) {
         if (mono_chain_signal (MONO_SIG_HANDLER_PARAMS))
                        return;
@@ -257,15 +257,15 @@ per_thread_profiler_hit (void *ctx)
        MonoProfilerCallChainStrategy call_chain_strategy = mono_profiler_stat_get_call_chain_strategy ();
 
        if (call_chain_depth == 0) {
-               mono_profiler_stat_hit (mono_arch_ip_from_context (ctx), ctx);
+               mono_profiler_stat_hit ((guchar *)mono_arch_ip_from_context (ctx), ctx);
        } else {
-               MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+               MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
                int current_frame_index = 1;
                MonoContext mono_context;
                guchar *ips [call_chain_depth + 1];
 
                mono_sigctx_to_monoctx (ctx, &mono_context);
-               ips [0] = MONO_CONTEXT_GET_IP (&mono_context);
+               ips [0] = (guchar *)MONO_CONTEXT_GET_IP (&mono_context);
                
                if (jit_tls != NULL) {
                        if (call_chain_strategy == MONO_PROFILER_CALL_CHAIN_NATIVE) {
@@ -274,17 +274,17 @@ per_thread_profiler_hit (void *ctx)
                        guchar *stack_bottom;
                        guchar *stack_top;
                        
-                       stack_bottom = jit_tls->end_of_stack;
-                       stack_top = MONO_CONTEXT_GET_SP (&mono_context);
-                       current_frame = MONO_CONTEXT_GET_BP (&mono_context);
+                       stack_bottom = (guchar *)jit_tls->end_of_stack;
+                       stack_top = (guchar *)MONO_CONTEXT_GET_SP (&mono_context);
+                       current_frame = (guchar *)MONO_CONTEXT_GET_BP (&mono_context);
                        
                        while ((current_frame_index <= call_chain_depth) &&
                                        (stack_bottom IS_BEFORE_ON_STACK (guchar*) current_frame) &&
                                        ((guchar*) current_frame IS_BEFORE_ON_STACK stack_top)) {
-                               ips [current_frame_index] = CURRENT_FRAME_GET_RETURN_ADDRESS (current_frame);
+                               ips [current_frame_index] = (guchar *)CURRENT_FRAME_GET_RETURN_ADDRESS (current_frame);
                                current_frame_index ++;
                                stack_top = current_frame;
-                               current_frame = CURRENT_FRAME_GET_BASE_POINTER (current_frame);
+                               current_frame = (guchar *)CURRENT_FRAME_GET_BASE_POINTER (current_frame);
                        }
 #else
                                call_chain_strategy = MONO_PROFILER_CALL_CHAIN_GLIBC;
@@ -310,7 +310,7 @@ per_thread_profiler_hit (void *ctx)
                                        ji = mono_find_jit_info (domain, jit_tls, &res, NULL, &mono_context,
                                                        &new_mono_context, NULL, &lmf, &native_offset, NULL);
                                        while ((ji != NULL) && (current_frame_index <= call_chain_depth)) {
-                                               ips [current_frame_index] = MONO_CONTEXT_GET_IP (&new_mono_context);
+                                               ips [current_frame_index] = (guchar *)MONO_CONTEXT_GET_IP (&new_mono_context);
                                                current_frame_index ++;
                                                mono_context = new_mono_context;
                                                ji = mono_find_jit_info (domain, jit_tls, &res, NULL, &mono_context,
@@ -393,7 +393,7 @@ add_signal_handler (int signo, gpointer handler)
        struct sigaction previous_sa;
 
 #ifdef MONO_ARCH_USE_SIGACTION
-       sa.sa_sigaction = handler;
+       sa.sa_sigaction = (void (*)(int, siginfo_t *, void *))handler;
        sigemptyset (&sa.sa_mask);
        sa.sa_flags = SA_SIGINFO;
 #ifdef MONO_ARCH_SIGSEGV_ON_ALTSTACK
@@ -658,7 +658,7 @@ void
 mono_gdb_render_native_backtraces (pid_t crashed_pid)
 {
        const char *argv [9];
-       char template [] = "/tmp/mono-lldb-commands.XXXXXX";
+       char template_ [] = "/tmp/mono-lldb-commands.XXXXXX";
        char buf1 [128];
        FILE *commands;
        gboolean using_lldb = FALSE;
@@ -673,10 +673,10 @@ mono_gdb_render_native_backtraces (pid_t crashed_pid)
                return;
 
        if (using_lldb) {
-               if (mkstemp (template) == -1)
+               if (mkstemp (template_) == -1)
                        return;
 
-               commands = fopen (template, "w");
+               commands = fopen (template_, "w");
 
                fprintf (commands, "process attach --pid %ld\n", (long) crashed_pid);
                fprintf (commands, "thread list\n");
@@ -688,7 +688,7 @@ mono_gdb_render_native_backtraces (pid_t crashed_pid)
                fclose (commands);
 
                argv [1] = "--source";
-               argv [2] = template;
+               argv [2] = template_;
                argv [3] = 0;
        } else {
                argv [1] = "-ex";
@@ -705,7 +705,7 @@ mono_gdb_render_native_backtraces (pid_t crashed_pid)
        execv (argv [0], (char**)argv);
 
        if (using_lldb)
-               unlink (template);
+               unlink (template_);
 }
 #endif
 #endif /* __native_client__ */
index 01449fbfc86e9c9e63c5ebf89275fb233b31f829..530e82cd3bf73395c0ab99958b3fcef98b319757 100644 (file)
@@ -5972,7 +5972,7 @@ mono_arch_emit_load_got_addr (guint8 *start, guint8 *code, MonoCompile *cfg, Mon
  * r12.
  */
 guint8*
-mono_arch_emit_load_aotconst (guint8 *start, guint8 *code, MonoJumpInfo **ji, int tramp_type, gconstpointer target)
+mono_arch_emit_load_aotconst (guint8 *start, guint8 *code, MonoJumpInfo **ji, MonoJumpInfoType tramp_type, gconstpointer target)
 {
        /* Load the mscorlib got address */
        ppc_ldptr (code, ppc_r12, sizeof (gpointer), ppc_r30);
index e7db1b4318e9510d6a1cf88acf700515114defe8..9cf0f042c8f0b86759d1dea1ee1e4f5a56cc2b18 100644 (file)
@@ -167,7 +167,7 @@ get_method_from_ip (void *ip)
        if (!domain)
                domain = mono_get_root_domain ();
 
-       ji = mono_jit_info_table_find_internal (domain, ip, TRUE, TRUE);
+       ji = mono_jit_info_table_find_internal (domain, (char *)ip, TRUE, TRUE);
        if (!ji) {
                user_data.ip = ip;
                user_data.method = NULL;
@@ -244,9 +244,9 @@ mono_print_method_from_ip (void *ip)
        MonoGenericSharingContext*gsctx;
        const char *shared_type;
 
-       ji = mini_jit_info_table_find_ext (domain, ip, TRUE, &target_domain);
+       ji = mini_jit_info_table_find_ext (domain, (char *)ip, TRUE, &target_domain);
        if (ji && ji->is_trampoline) {
-               MonoTrampInfo *tinfo = ji->d.tramp_info;
+               MonoTrampInfo *tinfo = (MonoTrampInfo *)ji->d.tramp_info;
 
                printf ("IP %p is at offset 0x%x of trampoline '%s'.\n", ip, (int)((guint8*)ip - tinfo->code), tinfo->name);
                return;
@@ -437,7 +437,7 @@ mono_create_unwind_op (int when, int tag, int reg, int val)
 MonoJumpInfoToken *
 mono_jump_info_token_new2 (MonoMemPool *mp, MonoImage *image, guint32 token, MonoGenericContext *context)
 {
-       MonoJumpInfoToken *res = mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoToken));
+       MonoJumpInfoToken *res = (MonoJumpInfoToken *)mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoToken));
        res->image = image;
        res->token = token;
        res->has_context = context != NULL;
@@ -488,8 +488,8 @@ register_trampoline_jit_info (MonoDomain *domain, MonoTrampInfo *info)
 {
        MonoJitInfo *ji;
 
-       ji = mono_domain_alloc0 (domain, mono_jit_info_size (0, 0, 0));
-       mono_jit_info_init (ji, NULL, info->code, info->code_size, 0, 0, 0);
+       ji = (MonoJitInfo *)mono_domain_alloc0 (domain, mono_jit_info_size ((MonoJitInfoFlags)0, 0, 0));
+       mono_jit_info_init (ji, NULL, info->code, info->code_size, (MonoJitInfoFlags)0, 0, 0);
        ji->d.tramp_info = info;
        ji->is_trampoline = TRUE;
 
@@ -551,7 +551,7 @@ mono_tramp_info_cleanup (void)
        GSList *l;
 
        for (l = tramp_infos; l; l = l->next) {
-               MonoTrampInfo *info = l->data;
+               MonoTrampInfo *info = (MonoTrampInfo *)l->data;
 
                mono_tramp_info_free (info);
        }
@@ -565,7 +565,7 @@ register_trampolines (MonoDomain *domain)
        GSList *l;
 
        for (l = tramp_infos; l; l = l->next) {
-               MonoTrampInfo *info = l->data;
+               MonoTrampInfo *info = (MonoTrampInfo *)l->data;
 
                register_trampoline_jit_info (domain, info);
        }
@@ -656,7 +656,7 @@ mono_dynamic_code_hash_lookup (MonoDomain *domain, MonoMethod *method)
        MonoJitDynamicMethodInfo *res;
 
        if (domain_jit_info (domain)->dynamic_code_hash)
-               res = g_hash_table_lookup (domain_jit_info (domain)->dynamic_code_hash, method);
+               res = (MonoJitDynamicMethodInfo *)g_hash_table_lookup (domain_jit_info (domain)->dynamic_code_hash, method);
        else
                res = NULL;
        return res;
@@ -775,7 +775,7 @@ MonoLMF *
 mono_get_lmf (void)
 {
 #if defined(MONO_HAVE_FAST_TLS) && defined(MONO_ARCH_ENABLE_MONO_LMF_VAR)
-       return MONO_FAST_TLS_GET (mono_lmf);
+       return (MonoLMF *)MONO_FAST_TLS_GET (mono_lmf);
 #else
        MonoJitTlsData *jit_tls;
 
@@ -794,7 +794,7 @@ MonoLMF **
 mono_get_lmf_addr (void)
 {
 #ifdef MONO_HAVE_FAST_TLS
-       return MONO_FAST_TLS_GET (mono_lmf_addr);
+       return (MonoLMF **)MONO_FAST_TLS_GET (mono_lmf_addr);
 #else
        MonoJitTlsData *jit_tls;
 
@@ -833,7 +833,7 @@ mono_set_lmf (MonoLMF *lmf)
 MonoJitTlsData*
 mono_get_jit_tls (void)
 {
-       return mono_native_tls_get_value (mono_jit_tls_id);
+       return (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
 }
 
 static void
@@ -941,13 +941,13 @@ setup_jit_tls_data (gpointer stack_start, gpointer abort_func)
        MonoJitTlsData *jit_tls;
        MonoLMF *lmf;
 
-       jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        if (jit_tls)
                return jit_tls;
 
        jit_tls = g_new0 (MonoJitTlsData, 1);
 
-       jit_tls->abort_func = abort_func;
+       jit_tls->abort_func = (void (*)(MonoObject *))abort_func;
        jit_tls->end_of_stack = stack_start;
 
        mono_set_jit_tls (jit_tls);
@@ -1038,7 +1038,7 @@ mini_thread_cleanup (MonoNativeThreadId tid)
         * The current offender is mono_thread_manage which cleanup threads from the outside.
         */
        if (info && mono_thread_info_get_tid (info) == tid) {
-               jit_tls = info->jit_data;
+               jit_tls = (MonoJitTlsData *)info->jit_data;
                info->jit_data = NULL;
 
                mono_set_jit_tls (NULL);
@@ -1051,7 +1051,7 @@ mini_thread_cleanup (MonoNativeThreadId tid)
        } else {
                info = mono_thread_info_lookup (tid);
                if (info) {
-                       jit_tls = info->jit_data;
+                       jit_tls = (MonoJitTlsData *)info->jit_data;
                        info->jit_data = NULL;
                }
                mono_hazard_pointer_clear (mono_hazard_pointer_get (), 1);
@@ -1122,7 +1122,7 @@ mono_patch_info_list_prepend (MonoJumpInfo *list, int ip, MonoJumpInfoType type,
 MonoJumpInfo*
 mono_patch_info_dup_mp (MonoMemPool *mp, MonoJumpInfo *patch_info)
 {
-       MonoJumpInfo *res = mono_mempool_alloc (mp, sizeof (MonoJumpInfo));
+       MonoJumpInfo *res = (MonoJumpInfo *)mono_mempool_alloc (mp, sizeof (MonoJumpInfo));
        memcpy (res, patch_info, sizeof (MonoJumpInfo));
 
        switch (patch_info->type) {
@@ -1131,27 +1131,27 @@ mono_patch_info_dup_mp (MonoMemPool *mp, MonoJumpInfo *patch_info)
        case MONO_PATCH_INFO_TYPE_FROM_HANDLE:
        case MONO_PATCH_INFO_LDTOKEN:
        case MONO_PATCH_INFO_DECLSEC:
-               res->data.token = mono_mempool_alloc (mp, sizeof (MonoJumpInfoToken));
+               res->data.token = (MonoJumpInfoToken *)mono_mempool_alloc (mp, sizeof (MonoJumpInfoToken));
                memcpy (res->data.token, patch_info->data.token, sizeof (MonoJumpInfoToken));
                break;
        case MONO_PATCH_INFO_SWITCH:
-               res->data.table = mono_mempool_alloc (mp, sizeof (MonoJumpInfoBBTable));
+               res->data.table = (MonoJumpInfoBBTable *)mono_mempool_alloc (mp, sizeof (MonoJumpInfoBBTable));
                memcpy (res->data.table, patch_info->data.table, sizeof (MonoJumpInfoBBTable));
-               res->data.table->table = mono_mempool_alloc (mp, sizeof (MonoBasicBlock*) * patch_info->data.table->table_size);
+               res->data.table->table = (MonoBasicBlock **)mono_mempool_alloc (mp, sizeof (MonoBasicBlock*) * patch_info->data.table->table_size);
                memcpy (res->data.table->table, patch_info->data.table->table, sizeof (MonoBasicBlock*) * patch_info->data.table->table_size);
                break;
        case MONO_PATCH_INFO_RGCTX_FETCH:
        case MONO_PATCH_INFO_RGCTX_SLOT_INDEX:
-               res->data.rgctx_entry = mono_mempool_alloc (mp, sizeof (MonoJumpInfoRgctxEntry));
+               res->data.rgctx_entry = (MonoJumpInfoRgctxEntry *)mono_mempool_alloc (mp, sizeof (MonoJumpInfoRgctxEntry));
                memcpy (res->data.rgctx_entry, patch_info->data.rgctx_entry, sizeof (MonoJumpInfoRgctxEntry));
                res->data.rgctx_entry->data = mono_patch_info_dup_mp (mp, res->data.rgctx_entry->data);
                break;
        case MONO_PATCH_INFO_DELEGATE_TRAMPOLINE:
-               res->data.del_tramp = mono_mempool_alloc0 (mp, sizeof (MonoDelegateClassMethodPair));
+               res->data.del_tramp = (MonoDelegateClassMethodPair *)mono_mempool_alloc0 (mp, sizeof (MonoDelegateClassMethodPair));
                memcpy (res->data.del_tramp, patch_info->data.del_tramp, sizeof (MonoDelegateClassMethodPair));
                break;
        case MONO_PATCH_INFO_GSHAREDVT_CALL:
-               res->data.gsharedvt = mono_mempool_alloc (mp, sizeof (MonoJumpInfoGSharedVtCall));
+               res->data.gsharedvt = (MonoJumpInfoGSharedVtCall *)mono_mempool_alloc (mp, sizeof (MonoJumpInfoGSharedVtCall));
                memcpy (res->data.gsharedvt, patch_info->data.gsharedvt, sizeof (MonoJumpInfoGSharedVtCall));
                break;
        case MONO_PATCH_INFO_GSHAREDVT_METHOD: {
@@ -1160,15 +1160,15 @@ mono_patch_info_dup_mp (MonoMemPool *mp, MonoJumpInfo *patch_info)
                int i;
 
                oinfo = patch_info->data.gsharedvt_method;
-               info = mono_mempool_alloc (mp, sizeof (MonoGSharedVtMethodInfo));
+               info = (MonoGSharedVtMethodInfo *)mono_mempool_alloc (mp, sizeof (MonoGSharedVtMethodInfo));
                res->data.gsharedvt_method = info;
                memcpy (info, oinfo, sizeof (MonoGSharedVtMethodInfo));
-               info->entries = mono_mempool_alloc (mp, sizeof (MonoRuntimeGenericContextInfoTemplate) * info->count_entries);
+               info->entries = (MonoRuntimeGenericContextInfoTemplate *)mono_mempool_alloc (mp, sizeof (MonoRuntimeGenericContextInfoTemplate) * info->count_entries);
                for (i = 0; i < oinfo->num_entries; ++i) {
                        MonoRuntimeGenericContextInfoTemplate *otemplate = &oinfo->entries [i];
-                       MonoRuntimeGenericContextInfoTemplate *template = &info->entries [i];
+                       MonoRuntimeGenericContextInfoTemplate *template_ = &info->entries [i];
 
-                       memcpy (template, otemplate, sizeof (MonoRuntimeGenericContextInfoTemplate));
+                       memcpy (template_, otemplate, sizeof (MonoRuntimeGenericContextInfoTemplate));
                }
                //info->locals_types = mono_mempool_alloc0 (mp, info->nlocals * sizeof (MonoType*));
                //memcpy (info->locals_types, oinfo->locals_types, info->nlocals * sizeof (MonoType*));
@@ -1179,7 +1179,7 @@ mono_patch_info_dup_mp (MonoMemPool *mp, MonoJumpInfo *patch_info)
                MonoJumpInfoVirtMethod *oinfo;
 
                oinfo = patch_info->data.virt_method;
-               info = mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoVirtMethod));
+               info = (MonoJumpInfoVirtMethod *)mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoVirtMethod));
                res->data.virt_method = info;
                memcpy (info, oinfo, sizeof (MonoJumpInfoVirtMethod));
                break;
@@ -1445,12 +1445,12 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
                jump_table = g_malloc0 (sizeof(gpointer) * patch_info->data.table->table_size);
 #else
                if (method && method->dynamic) {
-                       jump_table = mono_code_manager_reserve (mono_dynamic_code_hash_lookup (domain, method)->code_mp, sizeof (gpointer) * patch_info->data.table->table_size);
+                       jump_table = (void **)mono_code_manager_reserve (mono_dynamic_code_hash_lookup (domain, method)->code_mp, sizeof (gpointer) * patch_info->data.table->table_size);
                } else {
                        if (mono_aot_only) {
-                               jump_table = mono_domain_alloc (domain, sizeof (gpointer) * patch_info->data.table->table_size);
+                               jump_table = (void **)mono_domain_alloc (domain, sizeof (gpointer) * patch_info->data.table->table_size);
                        } else {
-                               jump_table = mono_domain_code_reserve (domain, sizeof (gpointer) * patch_info->data.table->table_size);
+                               jump_table = (void **)mono_domain_code_reserve (domain, sizeof (gpointer) * patch_info->data.table->table_size);
                        }
                }
 #endif
@@ -1560,10 +1560,10 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
                if (!mono_error_ok (&error))
                        g_error ("Could not patch ldtoken due to %s", mono_error_get_message (&error));
                mono_class_init (handle_class);
-               mono_class_init (mono_class_from_mono_type (handle));
+               mono_class_init (mono_class_from_mono_type ((MonoType *)handle));
 
                target =
-                       mono_type_get_object (domain, handle);
+                       mono_type_get_object (domain, (MonoType *)handle);
                break;
        }
        case MONO_PATCH_INFO_LDTOKEN: {
@@ -1676,7 +1676,7 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
        case MONO_PATCH_INFO_TLS_OFFSET: {
                int offset;
 
-               offset = mini_get_tls_offset (GPOINTER_TO_INT (patch_info->data.target));
+               offset = mini_get_tls_offset ((MonoTlsKey)GPOINTER_TO_INT (patch_info->data.target));
 #ifdef MONO_ARCH_HAVE_TRANSLATE_TLS_OFFSET
                offset = mono_arch_translate_tls_offset (offset);
 #endif
@@ -1691,8 +1691,8 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
                int len;
                char *s;
 
-               len = strlen (patch_info->data.target);
-               s = mono_domain_alloc0 (domain, len + 1);
+               len = strlen ((const char *)patch_info->data.target);
+               s = (char *)mono_domain_alloc0 (domain, len + 1);
                memcpy (s, patch_info->data.target, len);
                target = s;
 
@@ -1746,10 +1746,10 @@ mini_lookup_method (MonoDomain *domain, MonoMethod *method, MonoMethod *shared)
        static int failed_lookups = 0;
 
        mono_domain_jit_code_hash_lock (domain);
-       ji = mono_internal_hash_table_lookup (&domain->jit_code_hash, method);
+       ji = (MonoJitInfo *)mono_internal_hash_table_lookup (&domain->jit_code_hash, method);
        if (!ji && shared) {
                /* Try generic sharing */
-               ji = mono_internal_hash_table_lookup (&domain->jit_code_hash, shared);
+               ji = (MonoJitInfo *)mono_internal_hash_table_lookup (&domain->jit_code_hash, shared);
                if (ji && !ji->has_generic_jit_info)
                        ji = NULL;
                if (!inited) {
@@ -1942,7 +1942,7 @@ mono_jit_compile_method_with_opt (MonoMethod *method, guint32 opt, MonoException
                /*
                 * SGEN requires the JIT info for these methods to be registered, see is_ip_in_managed_allocator ().
                 */
-               ji = mini_jit_info_table_find (mono_domain_get (), code, &d);
+               ji = mini_jit_info_table_find (mono_domain_get (), (char *)code, &d);
                g_assert (ji);
        }
 
@@ -2029,13 +2029,13 @@ mono_jit_free_method (MonoDomain *domain, MonoMethod *method)
 
                remove = NULL;
                for (tmp = jlist->list; tmp; tmp = tmp->next) {
-                       guint8 *ip = tmp->data;
+                       guint8 *ip = (guint8 *)tmp->data;
 
                        if (ip >= (guint8*)ji->ji->code_start && ip < (guint8*)ji->ji->code_start + ji->ji->code_size)
                                remove = g_slist_prepend (remove, tmp);
                }
                for (tmp = remove; tmp; tmp = tmp->next) {
-                       jlist->list = g_slist_delete_link (jlist->list, tmp->data);
+                       jlist->list = g_slist_delete_link ((GSList *)jlist->list, (GSList *)tmp->data);
                }
                g_slist_free (remove);
        }
@@ -2162,7 +2162,7 @@ mono_jit_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObjec
 
        domain_info = domain_jit_info (domain);
 
-       info = mono_conc_hashtable_lookup (domain_info->runtime_invoke_hash, method);
+       info = (RuntimeInvokeInfo *)mono_conc_hashtable_lookup (domain_info->runtime_invoke_hash, method);
 
        if (!info) {
                if (mono_security_core_clr_enabled ()) {
@@ -2307,7 +2307,7 @@ mono_jit_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObjec
                        info->runtime_invoke = mono_jit_compile_method (invoke);
 
                mono_domain_lock (domain);
-               info2 = mono_conc_hashtable_insert (domain_info->runtime_invoke_hash, method, info);
+               info2 = (RuntimeInvokeInfo *)mono_conc_hashtable_insert (domain_info->runtime_invoke_hash, method, info);
                mono_domain_unlock (domain);
                if (info2) {
                        g_free (info);
@@ -2315,7 +2315,7 @@ mono_jit_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObjec
                }
        }
 
-       runtime_invoke = info->runtime_invoke;
+       runtime_invoke = (MonoObject *(*)(MonoObject *, void **, MonoObject **, void *))info->runtime_invoke;
 
        /*
         * We need this here because mono_marshal_get_runtime_invoke can place
@@ -2345,11 +2345,11 @@ mono_jit_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObjec
 
                if (!dyn_runtime_invoke) {
                        invoke = mono_marshal_get_runtime_invoke_dynamic ();
-                       dyn_runtime_invoke = mono_jit_compile_method (invoke);
+                       dyn_runtime_invoke = (RuntimeInvokeDynamicFunction)mono_jit_compile_method (invoke);
                }
 
                /* Convert the arguments to the format expected by start_dyn_call () */
-               args = g_alloca ((sig->param_count + sig->hasthis + info->needs_rgctx) * sizeof (gpointer));
+               args = (void **)g_alloca ((sig->param_count + sig->hasthis + info->needs_rgctx) * sizeof (gpointer));
                pindex = 0;
                if (sig->hasthis)
                        args [pindex ++] = &obj;
@@ -2390,15 +2390,15 @@ mono_jit_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObjec
                gpointer *args;
                int i, pindex;
 
-               args = g_alloca ((sig->param_count + sig->hasthis + info->needs_rgctx) * sizeof (gpointer));
+               args = (void **)g_alloca ((sig->param_count + sig->hasthis + info->needs_rgctx) * sizeof (gpointer));
                pindex = 0;
                rgctx = mini_method_get_rgctx (method);
                for (i = 0; i < sig->param_count; ++i)
                        args [pindex ++] = params [i];
                args [pindex ++] = &rgctx;
-               return runtime_invoke (obj, args, exc, info->compiled_method);
+               return runtime_invoke ((MonoObject *)obj, args, exc, info->compiled_method);
        } else {
-               return runtime_invoke (obj, params, exc, info->compiled_method);
+               return runtime_invoke ((MonoObject *)obj, params, exc, info->compiled_method);
        }
 }
 
@@ -2409,7 +2409,7 @@ MONO_SIG_HANDLER_FUNC (, mono_sigfpe_signal_handler)
        MONO_SIG_HANDLER_INFO_TYPE *info = MONO_SIG_HANDLER_GET_INFO ();
        MONO_SIG_HANDLER_GET_CONTEXT;
 
-       ji = mono_jit_info_table_find_internal (mono_domain_get (), mono_arch_ip_from_context (ctx), TRUE, TRUE);
+       ji = mono_jit_info_table_find_internal (mono_domain_get (), (char *)mono_arch_ip_from_context (ctx), TRUE, TRUE);
 
 #if defined(MONO_ARCH_HAVE_IS_INT_OVERFLOW)
        if (mono_arch_is_int_overflow (ctx, info))
@@ -2455,7 +2455,7 @@ MONO_SIG_HANDLER_FUNC (, mono_sigill_signal_handler)
 MONO_SIG_HANDLER_FUNC (, mono_sigsegv_signal_handler)
 {
        MonoJitInfo *ji;
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        gpointer fault_addr = NULL;
 #ifdef HAVE_SIG_INFO
        MONO_SIG_HANDLER_INFO_TYPE *info = MONO_SIG_HANDLER_GET_INFO ();
@@ -2495,7 +2495,7 @@ MONO_SIG_HANDLER_FUNC (, mono_sigsegv_signal_handler)
        }
 #endif
 
-       ji = mono_jit_info_table_find_internal (mono_domain_get (), mono_arch_ip_from_context (ctx), TRUE, TRUE);
+       ji = mono_jit_info_table_find_internal (mono_domain_get (), (char *)mono_arch_ip_from_context (ctx), TRUE, TRUE);
 
 #ifdef MONO_ARCH_SIGSEGV_ON_ALTSTACK
        if (mono_handle_soft_stack_ovf (jit_tls, ji, ctx, info, (guint8*)info->si_addr))
@@ -2579,10 +2579,10 @@ mono_jit_create_remoting_trampoline (MonoDomain *domain, MonoMethod *method, Mon
        if ((method->flags & METHOD_ATTRIBUTE_ABSTRACT) ||
            (mono_method_signature (method)->hasthis && (mono_class_is_marshalbyref (method->klass) || method->klass == mono_defaults.object_class))) {
                nm = mono_marshal_get_remoting_invoke_for_target (method, target);
-               addr = mono_compile_method (nm);
+               addr = (guint8 *)mono_compile_method (nm);
        } else
        {
-               addr = mono_compile_method (method);
+               addr = (guint8 *)mono_compile_method (method);
        }
        return mono_get_addr_from_ftnptr (addr);
 }
@@ -2633,7 +2633,7 @@ mini_get_vtable_trampoline (int slot_index)
                                memcpy (new_table, vtable_trampolines, vtable_trampolines_size * sizeof (gpointer));
                        g_free (vtable_trampolines);
                        mono_memory_barrier ();
-                       vtable_trampolines = new_table;
+                       vtable_trampolines = (void **)new_table;
                        vtable_trampolines_size = new_size;
                }
                mono_jit_unlock ();
@@ -2700,10 +2700,10 @@ mono_get_delegate_virtual_invoke_impl (MonoMethodSignature *sig, MonoMethod *met
                int ind = (load_imt_reg ? (-offset) : offset) / SIZEOF_VOID_P;
 
                sprintf (tramp_name, "delegate_virtual_invoke%s_%d", imt, ind);
-               cache [idx] = mono_aot_get_trampoline (tramp_name);
+               cache [idx] = (guint8 *)mono_aot_get_trampoline (tramp_name);
                g_assert (cache [idx]);
        } else {
-               cache [idx] = mono_arch_get_delegate_virtual_invoke_impl (sig, method, offset, load_imt_reg);
+               cache [idx] = (guint8 *)mono_arch_get_delegate_virtual_invoke_impl (sig, method, offset, load_imt_reg);
        }
        return cache [idx];
 }
@@ -2864,8 +2864,8 @@ static void runtime_invoke_info_free (gpointer value);
 static gint
 class_method_pair_equal (gconstpointer ka, gconstpointer kb)
 {
-       const MonoClassMethodPair *apair = ka;
-       const MonoClassMethodPair *bpair = kb;
+       const MonoClassMethodPair *apair = (const MonoClassMethodPair *)ka;
+       const MonoClassMethodPair *bpair = (const MonoClassMethodPair *)kb;
 
        return apair->klass == bpair->klass && apair->method == bpair->method ? 1 : 0;
 }
@@ -2873,7 +2873,7 @@ class_method_pair_equal (gconstpointer ka, gconstpointer kb)
 static guint
 class_method_pair_hash (gconstpointer data)
 {
-       const MonoClassMethodPair *pair = data;
+       const MonoClassMethodPair *pair = (const MonoClassMethodPair *)data;
 
        return (gsize)pair->klass ^ (gsize)pair->method;
 }
@@ -2898,21 +2898,21 @@ mini_create_jit_domain_info (MonoDomain *domain)
 static void
 delete_jump_list (gpointer key, gpointer value, gpointer user_data)
 {
-       MonoJumpList *jlist = value;
+       MonoJumpList *jlist = (MonoJumpList *)value;
        g_slist_free (jlist->list);
 }
 
 static void
 delete_got_slot_list (gpointer key, gpointer value, gpointer user_data)
 {
-       GSList *list = value;
+       GSList *list = (GSList *)value;
        g_slist_free (list);
 }
 
 static void
 dynamic_method_info_free (gpointer key, gpointer value, gpointer user_data)
 {
-       MonoJitDynamicMethodInfo *di = value;
+       MonoJitDynamicMethodInfo *di = (MonoJitDynamicMethodInfo *)value;
        mono_code_manager_destroy (di->code_mp);
        g_free (di);
 }
@@ -3560,7 +3560,7 @@ mini_cleanup (MonoDomain *domain)
        mono_runtime_cleanup (domain);
 #endif
 
-       free_jit_tls_data (mono_native_tls_get_value (mono_jit_tls_id));
+       free_jit_tls_data ((MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id));
 
        mono_icall_cleanup ();
 
index 473c724fc624a0acadf223e04654a7af270c61d0..b9790e99681a5d03fe9ef348e7bfb13259910bdc 100644 (file)
@@ -41,8 +41,8 @@ typedef struct {
 static gint
 rgctx_tramp_info_equal (gconstpointer ka, gconstpointer kb)
 {
-       const RgctxTrampInfo *i1 = ka;
-       const RgctxTrampInfo *i2 = kb;
+       const RgctxTrampInfo *i1 = (const RgctxTrampInfo *)ka;
+       const RgctxTrampInfo *i2 = (const RgctxTrampInfo *)kb;
 
        if (i1->m == i2->m && i1->addr == i2->addr)
                return 1;
@@ -53,7 +53,7 @@ rgctx_tramp_info_equal (gconstpointer ka, gconstpointer kb)
 static guint
 rgctx_tramp_info_hash (gconstpointer data)
 {
-       const RgctxTrampInfo *info = data;
+       const RgctxTrampInfo *info = (const RgctxTrampInfo *)data;
 
        return GPOINTER_TO_UINT (info->m) ^ GPOINTER_TO_UINT (info->addr);
 }
@@ -112,11 +112,11 @@ mono_create_static_rgctx_trampoline (MonoMethod *m, gpointer addr)
        if (mono_aot_only)
                res = mono_aot_get_static_rgctx_trampoline (ctx, addr);
        else
-               res = mono_arch_get_static_rgctx_trampoline (m, ctx, addr);
+               res = mono_arch_get_static_rgctx_trampoline (m, (MonoMethodRuntimeGenericContext *)ctx, addr);
 
        mono_domain_lock (domain);
        /* Duplicates inserted while we didn't hold the lock are OK */
-       info = mono_domain_alloc (domain, sizeof (RgctxTrampInfo));
+       info = (RgctxTrampInfo *)mono_domain_alloc (domain, sizeof (RgctxTrampInfo));
        info->m = m;
        info->addr = addr;
        g_hash_table_insert (domain_jit_info (domain)->static_rgctx_trampoline_hash, info, res);
@@ -167,7 +167,7 @@ mini_resolve_imt_method (MonoVTable *vt, gpointer *vtable_slot, MonoMethod *imt_
        /* This has to be variance aware since imt_method can be from an interface that vt->klass doesn't directly implement */
        interface_offset = mono_class_interface_offset_with_variance (vt->klass, imt_method->klass, &variance_used);
        if (interface_offset < 0)
-               g_error ("%s doesn't implement interface %s\n", mono_type_get_name_full (&vt->klass->byval_arg, 0), mono_type_get_name_full (&imt_method->klass->byval_arg, 0));
+               g_error ("%s doesn't implement interface %s\n", mono_type_get_name_full (&vt->klass->byval_arg, MONO_TYPE_NAME_FORMAT_IL), mono_type_get_name_full (&imt_method->klass->byval_arg, MONO_TYPE_NAME_FORMAT_IL));
 
        *variant_iface = NULL;
        if (imt_method->is_inflated && ((MonoMethodInflated*)imt_method)->context.method_inst) {
@@ -203,7 +203,7 @@ mini_resolve_imt_method (MonoVTable *vt, gpointer *vtable_slot, MonoMethod *imt_
        } else {
                /* Avoid loading metadata or creating a generic vtable if possible */
                if (lookup_aot && !vt->klass->valuetype)
-                       aot_addr = mono_aot_get_method_from_vt_slot (mono_domain_get (), vt, interface_offset + mono_method_get_vtable_slot (imt_method));
+                       aot_addr = (guint8 *)mono_aot_get_method_from_vt_slot (mono_domain_get (), vt, interface_offset + mono_method_get_vtable_slot (imt_method));
                else
                        aot_addr = NULL;
                if (aot_addr)
@@ -298,7 +298,7 @@ mini_add_method_trampoline (MonoMethod *m, gpointer compiled_method, gboolean ad
        MonoJitInfo *ji;
 
        // FIXME: This loads information from AOT (perf problem)
-       ji = mini_jit_info_table_find (mono_domain_get (), mono_get_addr_from_ftnptr (compiled_method), NULL);
+       ji = mini_jit_info_table_find (mono_domain_get (), (char *)mono_get_addr_from_ftnptr (compiled_method), NULL);
        callee_gsharedvt = mini_jit_info_is_gsharedvt (ji);
 
        callee_array_helper = FALSE;
@@ -391,18 +391,18 @@ common_call_trampoline_inner (mgreg_t *regs, guint8 *code, MonoMethod *m, MonoVT
        MonoMethod *declaring = NULL;
        MonoMethod *generic_virtual = NULL, *variant_iface = NULL;
        int context_used;
-       gboolean imt_call, virtual;
+       gboolean imt_call, virtual_;
        gpointer *orig_vtable_slot, *vtable_slot_to_patch = NULL;
        MonoJitInfo *ji = NULL;
 
-       virtual = vt && (gpointer)vtable_slot > (gpointer)vt;
+       virtual_ = vt && (gpointer)vtable_slot > (gpointer)vt;
        imt_call = vt && (gpointer)vtable_slot < (gpointer)vt;
 
        /*
         * rgctx trampolines are needed when the call is indirect so the caller can't pass
         * the rgctx argument needed by the callee.
         */
-       if (virtual && m)
+       if (virtual_ && m)
                need_rgctx_tramp = mono_method_needs_static_rgctx_invoke (m, FALSE);
 
        orig_vtable_slot = vtable_slot;
@@ -416,7 +416,7 @@ common_call_trampoline_inner (mgreg_t *regs, guint8 *code, MonoMethod *m, MonoVT
                g_assert (vtable_slot);
 
                imt_method = mono_arch_find_imt_method (regs, code);
-               this_arg = mono_arch_get_this_arg_from_call (regs, code);
+               this_arg = (MonoObject *)mono_arch_get_this_arg_from_call (regs, code);
 
                if (mono_object_is_transparent_proxy (this_arg)) {
                        /* Use the slow path for now */
@@ -451,7 +451,7 @@ common_call_trampoline_inner (mgreg_t *regs, guint8 *code, MonoMethod *m, MonoVT
         * The virtual check is needed because is_generic_method_definition (m) could
         * return TRUE for methods used in IMT calls too.
         */
-       if (virtual && is_generic_method_definition (m)) {
+       if (virtual_ && is_generic_method_definition (m)) {
                MonoError error;
                MonoGenericContext context = { NULL, NULL };
                MonoMethod *declaring;
@@ -499,7 +499,7 @@ common_call_trampoline_inner (mgreg_t *regs, guint8 *code, MonoMethod *m, MonoVT
 
                        klass = vtable->klass;
                } else {
-                       MonoObject *this_argument = mono_arch_get_this_arg_from_call (regs, code);
+                       MonoObject *this_argument = (MonoObject *)mono_arch_get_this_arg_from_call (regs, code);
 
                        vt = this_argument->vtable;
                        vtable_slot = orig_vtable_slot;
@@ -605,10 +605,10 @@ common_call_trampoline_inner (mgreg_t *regs, guint8 *code, MonoMethod *m, MonoVT
                        GSList *list, *tmp;
 
                        mono_domain_lock (domain);
-                       list = g_hash_table_lookup (domain_jit_info (domain)->jump_target_got_slot_hash, m);
+                       list = (GSList *)g_hash_table_lookup (domain_jit_info (domain)->jump_target_got_slot_hash, m);
                        if (list) {
                                for (tmp = list; tmp; tmp = tmp->next) {
-                                       gpointer *got_slot = tmp->data;
+                                       gpointer *got_slot = (gpointer *)tmp->data;
                                        *got_slot = addr;
                                }
                                g_hash_table_remove (domain_jit_info (domain)->jump_target_got_slot_hash, m);
@@ -635,7 +635,7 @@ common_call_trampoline_inner (mgreg_t *regs, guint8 *code, MonoMethod *m, MonoVT
                if (plt_entry) {
                        if (generic_shared) {
                                target_ji =
-                                       mini_jit_info_table_find (mono_domain_get (), mono_get_addr_from_ftnptr (compiled_method), NULL);
+                                       mini_jit_info_table_find (mono_domain_get (), (char *)mono_get_addr_from_ftnptr (compiled_method), NULL);
                                if (!ji)
                                        ji = mini_jit_info_table_find (mono_domain_get (), (char*)code, NULL);
 
@@ -644,7 +644,7 @@ common_call_trampoline_inner (mgreg_t *regs, guint8 *code, MonoMethod *m, MonoVT
                                }
                        }
                        if (!no_patch)
-                               mono_aot_patch_plt_entry (code, plt_entry, NULL, regs, addr);
+                               mono_aot_patch_plt_entry (code, plt_entry, NULL, regs, (guint8 *)addr);
                } else {
                        if (generic_shared) {
                                if (m->wrapper_type != MONO_WRAPPER_NONE)
@@ -654,7 +654,7 @@ common_call_trampoline_inner (mgreg_t *regs, guint8 *code, MonoMethod *m, MonoVT
 
                        /* Patch calling code */
                        target_ji =
-                               mini_jit_info_table_find (mono_domain_get (), mono_get_addr_from_ftnptr (compiled_method), NULL);
+                               mini_jit_info_table_find (mono_domain_get (), (char *)mono_get_addr_from_ftnptr (compiled_method), NULL);
                        if (!ji)
                                ji = mini_jit_info_table_find (mono_domain_get (), (char*)code, NULL);
 
@@ -668,7 +668,7 @@ common_call_trampoline_inner (mgreg_t *regs, guint8 *code, MonoMethod *m, MonoVT
                        }
 
                        if (!no_patch && mono_method_same_domain (ji, target_ji))
-                               mono_arch_patch_callsite (ji->code_start, code, addr);
+                               mono_arch_patch_callsite ((guint8 *)ji->code_start, code, (guint8 *)addr);
                }
        }
 
@@ -695,7 +695,7 @@ mono_magic_trampoline (mgreg_t *regs, guint8 *code, gpointer arg, guint8* tramp)
 {
        trampoline_calls ++;
 
-       return common_call_trampoline (regs, code, arg, NULL, NULL);
+       return common_call_trampoline (regs, code, (MonoMethod *)arg, NULL, NULL);
 }
 
 /**
@@ -725,7 +725,7 @@ mono_vcall_trampoline (mgreg_t *regs, guint8 *code, int slot, guint8 *tramp)
        /*
         * Obtain the vtable from the 'this' arg.
         */
-       this_arg = mono_arch_get_this_arg_from_call (regs, code);
+       this_arg = (MonoObject *)mono_arch_get_this_arg_from_call (regs, code);
        g_assert (this_arg);
 
        vt = this_arg->vtable;
@@ -823,7 +823,7 @@ mono_aot_trampoline (mgreg_t *regs, guint8 *code, guint8 *token_info,
 
        trampoline_calls ++;
 
-       image = *(gpointer*)(gpointer)token_info;
+       image = (MonoImage *)*(gpointer*)(gpointer)token_info;
        token_info += sizeof (gpointer);
        token = *(guint32*)(gpointer)token_info;
 
@@ -842,7 +842,7 @@ mono_aot_trampoline (mgreg_t *regs, guint8 *code, guint8 *token_info,
        plt_entry = mono_aot_get_plt_entry (code);
        g_assert (plt_entry);
 
-       mono_aot_patch_plt_entry (code, plt_entry, NULL, regs, addr);
+       mono_aot_patch_plt_entry (code, plt_entry, NULL, regs, (guint8 *)addr);
 
        return addr;
 }
@@ -894,9 +894,9 @@ mono_rgctx_lazy_fetch_trampoline (mgreg_t *regs, guint8 *code, gpointer data, gu
        num_lookups++;
 
        if (mrgctx)
-               return mono_method_fill_runtime_generic_context (arg, index);
+               return mono_method_fill_runtime_generic_context ((MonoMethodRuntimeGenericContext *)arg, index);
        else
-               return mono_class_fill_runtime_generic_context (arg, index);
+               return mono_class_fill_runtime_generic_context ((MonoVTable *)arg, index);
 }
 
 /*
@@ -914,7 +914,7 @@ create_delegate_trampoline_data (MonoDomain *domain, MonoClass *klass, MonoMetho
        invoke = mono_get_delegate_invoke (klass);
        g_assert (invoke);
 
-       tramp_data = mono_domain_alloc0 (domain, sizeof (MonoDelegateTrampInfo));
+       tramp_data = (MonoDelegateTrampInfo *)mono_domain_alloc0 (domain, sizeof (MonoDelegateTrampInfo));
        tramp_data->invoke = invoke;
        tramp_data->invoke_sig = mono_method_signature (invoke);
        tramp_data->impl_this = mono_arch_get_delegate_invoke_impl (mono_method_signature (invoke), TRUE);
@@ -949,8 +949,8 @@ mono_delegate_trampoline (mgreg_t *regs, guint8 *code, gpointer *arg, guint8* tr
        gboolean enable_caching = TRUE;
        MonoDelegateTrampInfo *tramp_info = (MonoDelegateTrampInfo*)arg;
        MonoMethod *invoke = tramp_info->invoke;
-       guint8 *impl_this = tramp_info->impl_this;
-       guint8 *impl_nothis = tramp_info->impl_nothis;
+       guint8 *impl_this = (guint8 *)tramp_info->impl_this;
+       guint8 *impl_nothis = (guint8 *)tramp_info->impl_nothis;
        MonoError err;
        MonoMethodSignature *sig;
        gpointer addr, compiled_method;
@@ -959,7 +959,7 @@ mono_delegate_trampoline (mgreg_t *regs, guint8 *code, gpointer *arg, guint8* tr
        trampoline_calls ++;
 
        /* Obtain the delegate object according to the calling convention */
-       delegate = mono_arch_get_this_arg_from_call (regs, code);
+       delegate = (MonoDelegate *)mono_arch_get_this_arg_from_call (regs, code);
        g_assert (mono_class_has_parent (mono_object_class (delegate), mono_defaults.multicastdelegate_class));
 
        if (delegate->method) {
@@ -1009,7 +1009,7 @@ mono_delegate_trampoline (mgreg_t *regs, guint8 *code, gpointer *arg, guint8* tr
        // ftnptrs are being used.  "method" would end up null on archtitectures without
        // ftnptrs so we can just skip this.
        } else if (delegate->method_ptr) {
-               ji = mono_jit_info_table_find (domain, mono_get_addr_from_ftnptr (delegate->method_ptr));
+               ji = mono_jit_info_table_find (domain, (char *)mono_get_addr_from_ftnptr (delegate->method_ptr));
                if (ji)
                        method = jinfo_get_method (ji);
        }
@@ -1073,7 +1073,7 @@ mono_delegate_trampoline (mgreg_t *regs, guint8 *code, gpointer *arg, guint8* tr
                        addr = mini_add_method_trampoline (method, compiled_method, need_rgctx_tramp, need_unbox_tramp);
                        delegate->method_ptr = addr;
                        if (enable_caching && delegate->method_code)
-                               *delegate->method_code = delegate->method_ptr;
+                               *delegate->method_code = (guint8 *)delegate->method_ptr;
                }
        } else {
                if (need_rgctx_tramp)
@@ -1095,8 +1095,8 @@ mono_delegate_trampoline (mgreg_t *regs, guint8 *code, gpointer *arg, guint8* tr
        if (!code) {
                /* The general, unoptimized case */
                m = mono_marshal_get_delegate_invoke (invoke, delegate);
-               code = mono_compile_method (m);
-               code = mini_add_method_trampoline (m, code, mono_method_needs_static_rgctx_invoke (m, FALSE), FALSE);
+               code = (guint8 *)mono_compile_method (m);
+               code = (guint8 *)mini_add_method_trampoline (m, code, mono_method_needs_static_rgctx_invoke (m, FALSE), FALSE);
        }
 
        delegate->invoke_impl = mono_get_addr_from_ftnptr (code);
@@ -1114,7 +1114,7 @@ mono_handler_block_guard_trampoline (mgreg_t *regs, guint8 *code, gpointer *tram
 {
        MonoContext ctx;
        MonoException *exc;
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        gpointer resume_ip = jit_tls->handler_block_return_address;
 
        memcpy (&ctx, &jit_tls->handler_block_context, sizeof (MonoContext));
@@ -1129,7 +1129,7 @@ mono_handler_block_guard_trampoline (mgreg_t *regs, guint8 *code, gpointer *tram
                exc = mono_thread_resume_interruption ();
 
        if (exc) {
-               mono_handle_exception (&ctx, exc);
+               mono_handle_exception (&ctx, (MonoObject *)exc);
                mono_restore_context (&ctx);
        }
 
@@ -1306,7 +1306,7 @@ mono_create_jump_trampoline (MonoDomain *domain, MonoMethod *method, gboolean ad
        code = mono_create_specific_trampoline (method, MONO_TRAMPOLINE_JUMP, mono_domain_get (), &code_size);
        g_assert (code_size);
 
-       ji = mono_domain_alloc0 (domain, MONO_SIZEOF_JIT_INFO);
+       ji = (MonoJitInfo *)mono_domain_alloc0 (domain, MONO_SIZEOF_JIT_INFO);
        ji->code_start = code;
        ji->code_size = code_size;
        ji->d.method = method;
@@ -1383,7 +1383,7 @@ mono_create_jit_trampoline_from_token (MonoImage *image, guint32 token)
        MonoDomain *domain = mono_domain_get ();
        guint8 *buf, *start;
 
-       buf = start = mono_domain_alloc0 (domain, 2 * sizeof (gpointer));
+       buf = start = (guint8 *)mono_domain_alloc0 (domain, 2 * sizeof (gpointer));
 
        *(gpointer*)(gpointer)buf = image;
        buf += sizeof (gpointer);
@@ -1412,7 +1412,7 @@ mono_create_delegate_trampoline_info (MonoDomain *domain, MonoClass *klass, Mono
        pair.klass = klass;
        pair.method = method;
        mono_domain_lock (domain);
-       tramp_info = g_hash_table_lookup (domain_jit_info (domain)->delegate_trampoline_hash, &pair);
+       tramp_info = (MonoDelegateTrampInfo *)g_hash_table_lookup (domain_jit_info (domain)->delegate_trampoline_hash, &pair);
        mono_domain_unlock (domain);
        if (tramp_info)
                return tramp_info;
@@ -1422,7 +1422,7 @@ mono_create_delegate_trampoline_info (MonoDomain *domain, MonoClass *klass, Mono
        tramp_info->invoke_impl = mono_create_specific_trampoline (tramp_info, MONO_TRAMPOLINE_DELEGATE, domain, &code_size);
        g_assert (code_size);
 
-       dpair = mono_domain_alloc0 (domain, sizeof (MonoClassMethodPair));
+       dpair = (MonoClassMethodPair *)mono_domain_alloc0 (domain, sizeof (MonoClassMethodPair));
        memcpy (dpair, &pair, sizeof (MonoClassMethodPair));
 
        /* store trampoline address */
index 8eb39a921e2b65b46627291ee94139db5d4d5b5e..a74765570f76a2139af0e55533dacdfb50ab8a66 100644 (file)
@@ -6652,7 +6652,7 @@ emit_load_aotconst (guint8 *start, guint8 *code, MonoCompile *cfg, MonoJumpInfo
  * EAX.
  */
 guint8*
-mono_arch_emit_load_aotconst (guint8 *start, guint8 *code, MonoJumpInfo **ji, int tramp_type, gconstpointer target)
+mono_arch_emit_load_aotconst (guint8 *start, guint8 *code, MonoJumpInfo **ji, MonoJumpInfoType tramp_type, gconstpointer target)
 {
        /* Load the mscorlib got address */
        x86_mov_reg_membase (code, X86_EAX, MONO_ARCH_GOT_REG, sizeof (gpointer), 4);
index 0444303be0f9d67320381f76fa03f43768def0c8..89ae9d56a9d79d181cfce419ff1ea90f65c36b95 100644 (file)
@@ -314,7 +314,7 @@ typedef struct {
 void
 mono_emit_unwind_op (MonoCompile *cfg, int when, int tag, int reg, int val)
 {
-       MonoUnwindOp *op = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoUnwindOp));
+       MonoUnwindOp *op = (MonoUnwindOp *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoUnwindOp));
 
        op->op = tag;
        op->reg = reg;
@@ -465,7 +465,7 @@ mono_find_spvar_for_region (MonoCompile *cfg, int region)
 {
        region = mono_get_block_region_notry (cfg, region);
 
-       return g_hash_table_lookup (cfg->spvars, GINT_TO_POINTER (region));
+       return (MonoInst *)g_hash_table_lookup (cfg->spvars, GINT_TO_POINTER (region));
 }
 
 static void
@@ -787,7 +787,7 @@ set_vreg_to_inst (MonoCompile *cfg, int vreg, MonoInst *inst)
 
                while (vreg >= cfg->vreg_to_inst_len)
                        cfg->vreg_to_inst_len = cfg->vreg_to_inst_len ? cfg->vreg_to_inst_len * 2 : 32;
-               cfg->vreg_to_inst = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoInst*) * cfg->vreg_to_inst_len);
+               cfg->vreg_to_inst = (MonoInst **)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoInst*) * cfg->vreg_to_inst_len);
                if (size)
                        memcpy (cfg->vreg_to_inst, tmp, size * sizeof (MonoInst*));
        }
@@ -949,7 +949,7 @@ mono_mark_vreg_as_ref (MonoCompile *cfg, int vreg)
 
                while (vreg >= cfg->vreg_is_ref_len)
                        cfg->vreg_is_ref_len = cfg->vreg_is_ref_len ? cfg->vreg_is_ref_len * 2 : 32;
-               cfg->vreg_is_ref = mono_mempool_alloc0 (cfg->mempool, sizeof (gboolean) * cfg->vreg_is_ref_len);
+               cfg->vreg_is_ref = (gboolean *)mono_mempool_alloc0 (cfg->mempool, sizeof (gboolean) * cfg->vreg_is_ref_len);
                if (size)
                        memcpy (cfg->vreg_is_ref, tmp, size * sizeof (gboolean));
        }
@@ -965,7 +965,7 @@ mono_mark_vreg_as_mp (MonoCompile *cfg, int vreg)
 
                while (vreg >= cfg->vreg_is_mp_len)
                        cfg->vreg_is_mp_len = cfg->vreg_is_mp_len ? cfg->vreg_is_mp_len * 2 : 32;
-               cfg->vreg_is_mp = mono_mempool_alloc0 (cfg->mempool, sizeof (gboolean) * cfg->vreg_is_mp_len);
+               cfg->vreg_is_mp = (gboolean *)mono_mempool_alloc0 (cfg->mempool, sizeof (gboolean) * cfg->vreg_is_mp_len);
                if (size)
                        memcpy (cfg->vreg_is_mp, tmp, size * sizeof (gboolean));
        }
@@ -1079,10 +1079,10 @@ mono_add_ins_to_end (MonoBasicBlock *bb, MonoInst *inst)
 void
 mono_create_jump_table (MonoCompile *cfg, MonoInst *label, MonoBasicBlock **bbs, int num_blocks)
 {
-       MonoJumpInfo *ji = mono_mempool_alloc (cfg->mempool, sizeof (MonoJumpInfo));
+       MonoJumpInfo *ji = (MonoJumpInfo *)mono_mempool_alloc (cfg->mempool, sizeof (MonoJumpInfo));
        MonoJumpInfoBBTable *table;
 
-       table = mono_mempool_alloc (cfg->mempool, sizeof (MonoJumpInfoBBTable));
+       table = (MonoJumpInfoBBTable *)mono_mempool_alloc (cfg->mempool, sizeof (MonoJumpInfoBBTable));
        table->table = bbs;
        table->table_size = num_blocks;
        
@@ -1104,7 +1104,7 @@ mono_get_array_new_va_signature (int arity)
        if (!sighash) {
                sighash = g_hash_table_new (NULL, NULL);
        }
-       else if ((res = g_hash_table_lookup (sighash, GINT_TO_POINTER (arity)))) {
+       else if ((res = (MonoMethodSignature *)g_hash_table_lookup (sighash, GINT_TO_POINTER (arity)))) {
                mono_jit_unlock ();
                return res;
        }
@@ -1269,7 +1269,7 @@ mono_dynamic_code_hash_lookup (MonoDomain *domain, MonoMethod *method)
        MonoJitDynamicMethodInfo *res;
 
        if (domain_jit_info (domain)->dynamic_code_hash)
-               res = g_hash_table_lookup (domain_jit_info (domain)->dynamic_code_hash, method);
+               res = (MonoJitDynamicMethodInfo *)g_hash_table_lookup (domain_jit_info (domain)->dynamic_code_hash, method);
        else
                res = NULL;
        return res;
@@ -1319,11 +1319,11 @@ mono_allocate_stack_slots2 (MonoCompile *cfg, gboolean backward, guint32 *stack_
 
        LSCAN_DEBUG (printf ("Allocate Stack Slots 2 for %s:\n", mono_method_full_name (cfg->method, TRUE)));
 
-       scalar_stack_slots = mono_mempool_alloc0 (cfg->mempool, sizeof (StackSlotInfo) * MONO_TYPE_PINNED);
+       scalar_stack_slots = (StackSlotInfo *)mono_mempool_alloc0 (cfg->mempool, sizeof (StackSlotInfo) * MONO_TYPE_PINNED);
        vtype_stack_slots = NULL;
        nvtypes = 0;
 
-       offsets = mono_mempool_alloc (cfg->mempool, sizeof (gint32) * cfg->num_varinfo);
+       offsets = (gint32 *)mono_mempool_alloc (cfg->mempool, sizeof (gint32) * cfg->num_varinfo);
        for (i = 0; i < cfg->num_varinfo; ++i)
                offsets [i] = -1;
 
@@ -1355,7 +1355,7 @@ mono_allocate_stack_slots2 (MonoCompile *cfg, gboolean backward, guint32 *stack_
        offset = 0;
        *stack_align = 0;
        for (unhandled = vars; unhandled; unhandled = unhandled->next) {
-               MonoMethodVar *current = unhandled->data;
+               MonoMethodVar *current = (MonoMethodVar *)unhandled->data;
 
                vmv = current;
                inst = cfg->varinfo [vmv->idx];
@@ -1393,7 +1393,7 @@ mono_allocate_stack_slots2 (MonoCompile *cfg, gboolean backward, guint32 *stack_
                        /* Fall through */
                case MONO_TYPE_VALUETYPE:
                        if (!vtype_stack_slots)
-                               vtype_stack_slots = mono_mempool_alloc0 (cfg->mempool, sizeof (StackSlotInfo) * 256);
+                               vtype_stack_slots = (StackSlotInfo *)mono_mempool_alloc0 (cfg->mempool, sizeof (StackSlotInfo) * 256);
                        for (i = 0; i < nvtypes; ++i)
                                if (t->data.klass == vtype_stack_slots [i].vtype)
                                        break;
@@ -1632,11 +1632,11 @@ mono_allocate_stack_slots (MonoCompile *cfg, gboolean backward, guint32 *stack_s
        if ((cfg->num_varinfo > 0) && MONO_VARINFO (cfg, 0)->interval)
                return mono_allocate_stack_slots2 (cfg, backward, stack_size, stack_align);
 
-       scalar_stack_slots = mono_mempool_alloc0 (cfg->mempool, sizeof (StackSlotInfo) * MONO_TYPE_PINNED);
+       scalar_stack_slots = (StackSlotInfo *)mono_mempool_alloc0 (cfg->mempool, sizeof (StackSlotInfo) * MONO_TYPE_PINNED);
        vtype_stack_slots = NULL;
        nvtypes = 0;
 
-       offsets = mono_mempool_alloc (cfg->mempool, sizeof (gint32) * cfg->num_varinfo);
+       offsets = (gint32 *)mono_mempool_alloc (cfg->mempool, sizeof (gint32) * cfg->num_varinfo);
        for (i = 0; i < cfg->num_varinfo; ++i)
                offsets [i] = -1;
 
@@ -1654,7 +1654,7 @@ mono_allocate_stack_slots (MonoCompile *cfg, gboolean backward, guint32 *stack_s
        offset = 0;
        *stack_align = sizeof(mgreg_t);
        for (l = vars; l; l = l->next) {
-               vmv = l->data;
+               vmv = (MonoMethodVar *)l->data;
                inst = cfg->varinfo [vmv->idx];
 
                t = mono_type_get_underlying_type (inst->inst_vtype);
@@ -1692,7 +1692,7 @@ mono_allocate_stack_slots (MonoCompile *cfg, gboolean backward, guint32 *stack_s
                        /* Fall through */
                case MONO_TYPE_VALUETYPE:
                        if (!vtype_stack_slots)
-                               vtype_stack_slots = mono_mempool_alloc0 (cfg->mempool, sizeof (StackSlotInfo) * 256);
+                               vtype_stack_slots = (StackSlotInfo *)mono_mempool_alloc0 (cfg->mempool, sizeof (StackSlotInfo) * 256);
                        for (i = 0; i < nvtypes; ++i)
                                if (t->data.klass == vtype_stack_slots [i].vtype)
                                        break;
@@ -1893,8 +1893,8 @@ mini_register_opcode_emulation (int opcode, const char *name, const char *sigstr
        if (emul_opcode_num >= emul_opcode_alloced) {
                int incr = emul_opcode_alloced? emul_opcode_alloced/2: 16;
                emul_opcode_alloced += incr;
-               emul_opcode_map = g_realloc (emul_opcode_map, sizeof (emul_opcode_map [0]) * emul_opcode_alloced);
-               emul_opcode_opcodes = g_realloc (emul_opcode_opcodes, sizeof (emul_opcode_opcodes [0]) * emul_opcode_alloced);
+               emul_opcode_map = (MonoJitICallInfo **)g_realloc (emul_opcode_map, sizeof (emul_opcode_map [0]) * emul_opcode_alloced);
+               emul_opcode_opcodes = (short *)g_realloc (emul_opcode_opcodes, sizeof (emul_opcode_opcodes [0]) * emul_opcode_alloced);
        }
        emul_opcode_map [emul_opcode_num] = info;
        emul_opcode_opcodes [emul_opcode_num] = opcode;
@@ -2070,7 +2070,7 @@ mono_destroy_compile (MonoCompile *cfg)
        if (cfg->exvars)
                g_hash_table_destroy (cfg->exvars);
        for (l = cfg->headers_to_free; l; l = l->next)
-               mono_metadata_free_mh (l->data);
+               mono_metadata_free_mh ((MonoMethodHeader *)l->data);
        g_list_free (cfg->ldstr_list);
        g_hash_table_destroy (cfg->token_info_hash);
        if (cfg->abs_patches)
@@ -2174,7 +2174,7 @@ mono_get_lmf_addr_intrinsic (MonoCompile* cfg)
 void
 mono_add_patch_info (MonoCompile *cfg, int ip, MonoJumpInfoType type, gconstpointer target)
 {
-       MonoJumpInfo *ji = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoJumpInfo));
+       MonoJumpInfo *ji = (MonoJumpInfo *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoJumpInfo));
 
        ji->ip.i = ip;
        ji->type = type;
@@ -2187,7 +2187,7 @@ mono_add_patch_info (MonoCompile *cfg, int ip, MonoJumpInfoType type, gconstpoin
 void
 mono_add_patch_info_rel (MonoCompile *cfg, int ip, MonoJumpInfoType type, gconstpointer target, int relocation)
 {
-       MonoJumpInfo *ji = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoJumpInfo));
+       MonoJumpInfo *ji = (MonoJumpInfo *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoJumpInfo));
 
        ji->ip.i = ip;
        ji->type = type;
@@ -2225,7 +2225,7 @@ mono_add_seq_point (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst *ins, int nat
 void
 mono_add_var_location (MonoCompile *cfg, MonoInst *var, gboolean is_reg, int reg, int offset, int from, int to)
 {
-       MonoDwarfLocListEntry *entry = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoDwarfLocListEntry));
+       MonoDwarfLocListEntry *entry = (MonoDwarfLocListEntry *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoDwarfLocListEntry));
 
        if (is_reg)
                g_assert (offset == 0);
@@ -2261,7 +2261,7 @@ mono_compile_create_vars (MonoCompile *cfg)
        if (cfg->verbose_level > 2)
                g_print ("creating vars\n");
 
-       cfg->args = mono_mempool_alloc0 (cfg->mempool, (sig->param_count + sig->hasthis) * sizeof (MonoInst*));
+       cfg->args = (MonoInst **)mono_mempool_alloc0 (cfg->mempool, (sig->param_count + sig->hasthis) * sizeof (MonoInst*));
 
        if (sig->hasthis)
                cfg->args [0] = mono_compile_create_var (cfg, &cfg->method->klass->this_arg, OP_ARG);
@@ -2288,7 +2288,7 @@ mono_compile_create_vars (MonoCompile *cfg)
        }
 
        cfg->locals_start = cfg->num_varinfo;
-       cfg->locals = mono_mempool_alloc0 (cfg->mempool, header->num_locals * sizeof (MonoInst*));
+       cfg->locals = (MonoInst **)mono_mempool_alloc0 (cfg->mempool, header->num_locals * sizeof (MonoInst*));
 
        if (cfg->verbose_level > 2)
                g_print ("creating locals\n");
@@ -2348,7 +2348,7 @@ mono_postprocess_patches (MonoCompile *cfg)
 
                        if (patch_info->type == MONO_PATCH_INFO_ABS) {
                                if (cfg->abs_patches) {
-                                       MonoJumpInfo *abs_ji = g_hash_table_lookup (cfg->abs_patches, patch_info->data.target);
+                                       MonoJumpInfo *abs_ji = (MonoJumpInfo *)g_hash_table_lookup (cfg->abs_patches, patch_info->data.target);
                                        if (abs_ji) {
                                                patch_info->type = abs_ji->type;
                                                patch_info->data.target = abs_ji->data.target;
@@ -2367,9 +2367,9 @@ mono_postprocess_patches (MonoCompile *cfg)
                        table = g_malloc0 (sizeof(gpointer) * patch_info->data.table->table_size);
 #else
                        if (cfg->method->dynamic) {
-                               table = mono_code_manager_reserve (cfg->dynamic_info->code_mp, sizeof (gpointer) * patch_info->data.table->table_size);
+                               table = (void **)mono_code_manager_reserve (cfg->dynamic_info->code_mp, sizeof (gpointer) * patch_info->data.table->table_size);
                        } else {
-                               table = mono_domain_code_reserve (cfg->domain, sizeof (gpointer) * patch_info->data.table->table_size);
+                               table = (void **)mono_domain_code_reserve (cfg->domain, sizeof (gpointer) * patch_info->data.table->table_size);
                        }
 #endif
 
@@ -2397,9 +2397,9 @@ mono_postprocess_patches (MonoCompile *cfg)
 #endif
 
                        mono_domain_lock (domain);
-                       jlist = g_hash_table_lookup (domain_jit_info (domain)->jump_target_hash, patch_info->data.method);
+                       jlist = (MonoJumpList *)g_hash_table_lookup (domain_jit_info (domain)->jump_target_hash, patch_info->data.method);
                        if (!jlist) {
-                               jlist = mono_domain_alloc0 (domain, sizeof (MonoJumpList));
+                               jlist = (MonoJumpList *)mono_domain_alloc0 (domain, sizeof (MonoJumpList));
                                g_hash_table_insert (domain_jit_info (domain)->jump_target_hash, patch_info->data.method, jlist);
                        }
                        jlist->list = g_slist_prepend (jlist->list, ip);
@@ -2515,11 +2515,11 @@ mono_codegen (MonoCompile *cfg)
 
                if (mono_using_xdebug)
                        /* See the comment for cfg->code_domain */
-                       code = mono_domain_code_reserve (code_domain, cfg->code_size + cfg->thunk_area + unwindlen);
+                       code = (guint8 *)mono_domain_code_reserve (code_domain, cfg->code_size + cfg->thunk_area + unwindlen);
                else
-                       code = mono_code_manager_reserve (cfg->dynamic_info->code_mp, cfg->code_size + cfg->thunk_area + unwindlen);
+                       code = (guint8 *)mono_code_manager_reserve (cfg->dynamic_info->code_mp, cfg->code_size + cfg->thunk_area + unwindlen);
        } else {
-               code = mono_domain_code_reserve (code_domain, cfg->code_size + cfg->thunk_area + unwindlen);
+               code = (guint8 *)mono_domain_code_reserve (code_domain, cfg->code_size + cfg->thunk_area + unwindlen);
        }
 #if defined(__native_client_codegen__) && defined(__native_client__)
        nacl_allow_target_modification (TRUE);
@@ -2685,7 +2685,7 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
        header = cfg->header;
 
        if (cfg->gshared)
-               flags |= JIT_INFO_HAS_GENERIC_JIT_INFO;
+               flags = (MonoJitInfoFlags)(flags | JIT_INFO_HAS_GENERIC_JIT_INFO);
 
        if (cfg->arch_eh_jit_info) {
                MonoJitArgumentInfo *arg_info;
@@ -2699,18 +2699,18 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
                stack_size = mono_arch_get_argument_info (sig, sig->param_count, arg_info);
 
                if (stack_size)
-                       flags |= JIT_INFO_HAS_ARCH_EH_INFO;
+                       flags = (MonoJitInfoFlags)(flags | JIT_INFO_HAS_ARCH_EH_INFO);
        }
 
        if (cfg->has_unwind_info_for_epilog && !(flags & JIT_INFO_HAS_ARCH_EH_INFO))
-               flags |= JIT_INFO_HAS_ARCH_EH_INFO;
+               flags = (MonoJitInfoFlags)(flags | JIT_INFO_HAS_ARCH_EH_INFO);
 
        if (cfg->thunk_area)
-               flags |= JIT_INFO_HAS_THUNK_INFO;
+               flags = (MonoJitInfoFlags)(flags | JIT_INFO_HAS_THUNK_INFO);
 
        if (cfg->try_block_holes) {
                for (tmp = cfg->try_block_holes; tmp; tmp = tmp->next) {
-                       TryBlockHole *hole = tmp->data;
+                       TryBlockHole *hole = (TryBlockHole *)tmp->data;
                        MonoExceptionClause *ec = hole->clause;
                        int hole_end = hole->basic_block->native_offset + hole->basic_block->native_length;
                        MonoBasicBlock *clause_last_bb = cfg->cil_offset_to_bb [ec->try_offset + ec->try_len];
@@ -2721,7 +2721,7 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
                                ++num_holes;
                }
                if (num_holes)
-                       flags |= JIT_INFO_HAS_TRY_BLOCK_HOLES;
+                       flags = (MonoJitInfoFlags)(flags | JIT_INFO_HAS_TRY_BLOCK_HOLES);
                if (G_UNLIKELY (cfg->verbose_level >= 4))
                        printf ("Number of try block holes %d\n", num_holes);
        }
@@ -2732,9 +2732,9 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
                num_clauses = header->num_clauses;
 
        if (cfg->method->dynamic)
-               jinfo = g_malloc0 (mono_jit_info_size (flags, num_clauses, num_holes));
+               jinfo = (MonoJitInfo *)g_malloc0 (mono_jit_info_size (flags, num_clauses, num_holes));
        else
-               jinfo = mono_domain_alloc0 (cfg->domain, mono_jit_info_size (flags, num_clauses, num_holes));
+               jinfo = (MonoJitInfo *)mono_domain_alloc0 (cfg->domain, mono_jit_info_size (flags, num_clauses, num_holes));
        mono_jit_info_init (jinfo, cfg->method_to_register, cfg->native_code, cfg->code_len, flags, num_clauses, num_holes);
        jinfo->domain_neutral = (cfg->opt & MONO_OPT_SHARED) != 0;
 
@@ -2752,7 +2752,7 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
                if (cfg->method->dynamic)
                        gi->generic_sharing_context = g_new0 (MonoGenericSharingContext, 1);
                else
-                       gi->generic_sharing_context = mono_domain_alloc0 (cfg->domain, sizeof (MonoGenericSharingContext));
+                       gi->generic_sharing_context = (MonoGenericSharingContext *)mono_domain_alloc0 (cfg->domain, sizeof (MonoGenericSharingContext));
                mini_init_gsctx (cfg->method->dynamic ? NULL : cfg->domain, NULL, cfg->gsctx_context, gi->generic_sharing_context);
 
                if ((method_to_compile->flags & METHOD_ATTRIBUTE_STATIC) ||
@@ -2782,9 +2782,9 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
 
                        gi->nlocs = g_slist_length (loclist);
                        if (cfg->method->dynamic)
-                               gi->locations = g_malloc0 (gi->nlocs * sizeof (MonoDwarfLocListEntry));
+                               gi->locations = (MonoDwarfLocListEntry *)g_malloc0 (gi->nlocs * sizeof (MonoDwarfLocListEntry));
                        else
-                               gi->locations = mono_domain_alloc0 (cfg->domain, gi->nlocs * sizeof (MonoDwarfLocListEntry));
+                               gi->locations = (MonoDwarfLocListEntry *)mono_domain_alloc0 (cfg->domain, gi->nlocs * sizeof (MonoDwarfLocListEntry));
                        i = 0;
                        for (l = loclist; l; l = l->next) {
                                memcpy (&(gi->locations [i]), l->data, sizeof (MonoDwarfLocListEntry));
@@ -2825,7 +2825,7 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
                for (tmp = cfg->try_block_holes; tmp; tmp = tmp->next) {
                        guint32 start_bb_offset;
                        MonoTryBlockHoleJitInfo *hole;
-                       TryBlockHole *hole_data = tmp->data;
+                       TryBlockHole *hole_data = (TryBlockHole *)tmp->data;
                        MonoExceptionClause *ec = hole_data->clause;
                        int hole_end = hole_data->basic_block->native_offset + hole_data->basic_block->native_length;
                        MonoBasicBlock *clause_last_bb = cfg->cil_offset_to_bb [ec->try_offset + ec->try_len];
@@ -2933,7 +2933,7 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
                        ei->handler_start = cfg->native_code + tblock->native_offset;
 
                        for (tmp = cfg->try_block_holes; tmp; tmp = tmp->next) {
-                               TryBlockHole *hole = tmp->data;
+                               TryBlockHole *hole = (TryBlockHole *)tmp->data;
                                gpointer hole_end = cfg->native_code + (hole->basic_block->native_offset + hole->basic_block->native_length);
                                if (hole->clause == ec && hole_end == ei->try_end) {
                                        if (G_UNLIKELY (cfg->verbose_level >= 4))
@@ -3550,7 +3550,7 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
                }
        }
 
-       cfg->intvars = mono_mempool_alloc0 (cfg->mempool, sizeof (guint16) * STACK_MAX * header->max_stack);
+       cfg->intvars = (guint16 *)mono_mempool_alloc0 (cfg->mempool, sizeof (guint16) * STACK_MAX * header->max_stack);
 
        if (cfg->verbose_level > 0) {
                char *method_name;
@@ -3692,7 +3692,7 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
        mono_threads_safepoint ();
 
        /* Depth-first ordering on basic blocks */
-       cfg->bblocks = mono_mempool_alloc (cfg->mempool, sizeof (MonoBasicBlock*) * (cfg->num_bblocks + 1));
+       cfg->bblocks = (MonoBasicBlock **)mono_mempool_alloc (cfg->mempool, sizeof (MonoBasicBlock*) * (cfg->num_bblocks + 1));
 
        cfg->max_block_num = cfg->num_bblocks;
 
@@ -3932,7 +3932,7 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
 
                                        bb->last_ins->opcode = mono_reverse_branch_op (bb->last_ins->opcode);
                                } else {                        
-                                       MonoInst *inst = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoInst));
+                                       MonoInst *inst = (MonoInst *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoInst));
                                        inst->opcode = OP_BR;
                                        inst->inst_target_bb = bb->last_ins->inst_false_bb;
                                        mono_bblock_add_inst (bb, inst);
@@ -4077,7 +4077,7 @@ mono_arch_instrument_epilog (MonoCompile *cfg, void *func, void *p, gboolean ena
 void
 mono_cfg_add_try_hole (MonoCompile *cfg, MonoExceptionClause *clause, guint8 *start, MonoBasicBlock *bb)
 {
-       TryBlockHole *hole = mono_mempool_alloc (cfg->mempool, sizeof (TryBlockHole));
+       TryBlockHole *hole = (TryBlockHole *)mono_mempool_alloc (cfg->mempool, sizeof (TryBlockHole));
        hole->clause = clause;
        hole->start_offset = start - cfg->native_code;
        hole->basic_block = bb;
@@ -4108,7 +4108,7 @@ create_jit_info_for_trampoline (MonoMethod *wrapper, MonoTrampInfo *info)
                uw_info = mono_unwind_ops_encode (info->unwind_ops, &info_len);
        }
 
-       jinfo = mono_domain_alloc0 (domain, MONO_SIZEOF_JIT_INFO);
+       jinfo = (MonoJitInfo *)mono_domain_alloc0 (domain, MONO_SIZEOF_JIT_INFO);
        jinfo->d.method = wrapper;
        jinfo->code_start = info->code;
        jinfo->code_size = info->code_size;
@@ -4156,9 +4156,9 @@ mono_jit_compile_method_inner (MonoMethod *method, MonoDomain *target_domain, in
                }
                nm = mono_marshal_get_native_wrapper (method, TRUE, mono_aot_only);
                code = mono_get_addr_from_ftnptr (mono_compile_method (nm));
-               jinfo = mono_jit_info_table_find (target_domain, code);
+               jinfo = mono_jit_info_table_find (target_domain, (char *)code);
                if (!jinfo)
-                       jinfo = mono_jit_info_table_find (mono_domain_get (), code);
+                       jinfo = mono_jit_info_table_find (mono_domain_get (), (char *)code);
                if (jinfo)
                        mono_profiler_method_end_jit (method, jinfo, MONO_PROFILE_OK);
                return code;
@@ -4273,7 +4273,7 @@ mono_jit_compile_method_inner (MonoMethod *method, MonoDomain *target_domain, in
                        ex = mono_loader_error_prepare_exception (error);
                } else {
                        if (cfg->exception_ptr) {
-                               ex = mono_class_get_exception_for_failure (cfg->exception_ptr);
+                               ex = mono_class_get_exception_for_failure ((MonoClass *)cfg->exception_ptr);
                        } else {
                                if (cfg->exception_type == MONO_EXCEPTION_MISSING_FIELD)
                                        ex = mono_exception_from_name_msg (mono_defaults.corlib, "System", "MissingFieldException", cfg->exception_message);
@@ -4304,7 +4304,7 @@ mono_jit_compile_method_inner (MonoMethod *method, MonoDomain *target_domain, in
                ex = mono_exception_from_name_msg (mono_defaults.corlib, "System", "FieldAccessException", cfg->exception_message);
                break;
        case MONO_EXCEPTION_OBJECT_SUPPLIED: {
-               MonoException *exp = cfg->exception_ptr;
+               MonoException *exp = (MonoException *)cfg->exception_ptr;
                MONO_GC_UNREGISTER_ROOT (cfg->exception_ptr);
 
                ex = exp;
@@ -4388,7 +4388,7 @@ mono_jit_compile_method_inner (MonoMethod *method, MonoDomain *target_domain, in
                MonoJumpInfo patch_info;
                MonoJumpList *jlist;
                GSList *tmp;
-               jlist = g_hash_table_lookup (domain_jit_info (target_domain)->jump_target_hash, method);
+               jlist = (MonoJumpList *)g_hash_table_lookup (domain_jit_info (target_domain)->jump_target_hash, method);
                if (jlist) {
                        patch_info.next = NULL;
                        patch_info.ip.i = 0;
@@ -4402,8 +4402,8 @@ mono_jit_compile_method_inner (MonoMethod *method, MonoDomain *target_domain, in
 #endif
 #ifdef MONO_ARCH_HAVE_PATCH_CODE_NEW
                        for (tmp = jlist->list; tmp; tmp = tmp->next) {
-                               gpointer target = mono_resolve_patch_target (NULL, target_domain, tmp->data, &patch_info, TRUE);
-                               mono_arch_patch_code_new (NULL, target_domain, tmp->data, &patch_info, target);
+                               gpointer target = mono_resolve_patch_target (NULL, target_domain, (guint8 *)tmp->data, &patch_info, TRUE);
+                               mono_arch_patch_code_new (NULL, target_domain, (guint8 *)tmp->data, &patch_info, target);
                        }
 #else
                        for (tmp = jlist->list; tmp; tmp = tmp->next)
index 06b86f5b7f1ee7d85224d8826e2b9a88424d4012..e27511ce33827a03b57829d9affd873a4c5adbc7 100644 (file)
@@ -389,7 +389,7 @@ enum {
        } while (0)
 
 #define MONO_INST_NEW(cfg,dest,op) do {        \
-               (dest) = mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoInst));       \
+               (dest) = (MonoInst *)mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoInst));   \
                (dest)->opcode = (op);  \
                (dest)->dreg = -1;                          \
                MONO_INST_NULLIFY_SREGS ((dest));           \
@@ -397,7 +397,7 @@ enum {
        } while (0)
 
 #define MONO_INST_NEW_CALL(cfg,dest,op) do {   \
-               (dest) = mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoCallInst));   \
+               (dest) = (MonoCallInst *)mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoCallInst));   \
                (dest)->inst.opcode = (op);     \
                (dest)->inst.dreg = -1;                                 \
                MONO_INST_NULLIFY_SREGS (&(dest)->inst);                \
@@ -2576,7 +2576,7 @@ void      mono_arch_decompose_long_opts         (MonoCompile *cfg, MonoInst *ins
 GSList*   mono_arch_get_delegate_invoke_impls   (void);
 LLVMCallInfo* mono_arch_get_llvm_call_info      (MonoCompile *cfg, MonoMethodSignature *sig) MONO_LLVM_INTERNAL;
 guint8*   mono_arch_emit_load_got_addr          (guint8 *start, guint8 *code, MonoCompile *cfg, MonoJumpInfo **ji);
-guint8*   mono_arch_emit_load_aotconst          (guint8 *start, guint8 *code, MonoJumpInfo **ji, int tramp_type, gconstpointer target);
+guint8*   mono_arch_emit_load_aotconst          (guint8 *start, guint8 *code, MonoJumpInfo **ji, MonoJumpInfoType tramp_type, gconstpointer target);
 GSList*   mono_arch_get_cie_program             (void);
 void      mono_arch_set_target                  (char *mtriple);
 gboolean  mono_arch_gsharedvt_sig_supported     (MonoMethodSignature *sig);
@@ -2697,7 +2697,7 @@ mono_thread_state_init_from_handle (MonoThreadUnwindState *tctx, MonoThreadInfo
 typedef gboolean (*MonoJitStackWalk)            (StackFrameInfo *frame, MonoContext *ctx, gpointer data);
 
 void     mono_exceptions_init                   (void);
-gboolean mono_handle_exception                  (MonoContext *ctx, gpointer obj);
+gboolean mono_handle_exception                  (MonoContext *ctx, MonoObject *obj);
 void     mono_handle_native_sigsegv             (int signal, void *sigctx, MONO_SIG_HANDLER_INFO_TYPE *siginfo);
 MONO_API void     mono_print_thread_dump                 (void *sigctx);
 MONO_API void     mono_print_thread_dump_from_ctx        (MonoContext *ctx);
index c9f74b8e170b68359225bbc6e8a1fba44da6598c..ac22ca41f070d0201b7c4b55371cc597b1e97a51 100644 (file)
@@ -58,7 +58,7 @@ mono_save_seq_point_info (MonoCompile *cfg)
 
        for (i = 0; i < cfg->seq_points->len; ++i) {
                SeqPoint *sp = &seq_points [i];
-               MonoInst *ins = g_ptr_array_index (cfg->seq_points, i);
+               MonoInst *ins = (MonoInst *)g_ptr_array_index (cfg->seq_points, i);
 
                sp->il_offset = ins->inst_imm;
                sp->native_offset = ins->inst_offset;
@@ -79,7 +79,7 @@ mono_save_seq_point_info (MonoCompile *cfg)
                        bb_seq_points = g_slist_reverse (bb->seq_points);
                        last = NULL;
                        for (l = bb_seq_points; l; l = l->next) {
-                               MonoInst *ins = l->data;
+                               MonoInst *ins = (MonoInst *)l->data;
 
                                if (ins->inst_imm == METHOD_ENTRY_IL_OFFSET || ins->inst_imm == METHOD_EXIT_IL_OFFSET)
                                /* Used to implement method entry/exit events */
@@ -108,13 +108,13 @@ mono_save_seq_point_info (MonoCompile *cfg)
                                 */
                                l = g_slist_last (bb->seq_points);
                                if (l) {
-                                       endfinally_seq_point = l->data;
+                                       endfinally_seq_point = (MonoInst *)l->data;
 
                                        for (bb2 = cfg->bb_entry; bb2; bb2 = bb2->next_bb) {
                                                GSList *l = g_slist_last (bb2->seq_points);
 
                                                if (l) {
-                                                       MonoInst *ins = l->data;
+                                                       MonoInst *ins = (MonoInst *)l->data;
 
                                                        if (!(ins->inst_imm == METHOD_ENTRY_IL_OFFSET || ins->inst_imm == METHOD_EXIT_IL_OFFSET) && ins != endfinally_seq_point)
                                                                next [endfinally_seq_point->backend.size] = g_slist_append (next [endfinally_seq_point->backend.size], GUINT_TO_POINTER (ins->backend.size));
@@ -198,12 +198,12 @@ mono_get_seq_points (MonoDomain *domain, MonoMethod *method)
        }
 
        mono_loader_lock ();
-       seq_points = g_hash_table_lookup (domain_jit_info (domain)->seq_points, method);
+       seq_points = (MonoSeqPointInfo *)g_hash_table_lookup (domain_jit_info (domain)->seq_points, method);
        if (!seq_points && method->is_inflated) {
                /* generic sharing + aot */
-               seq_points = g_hash_table_lookup (domain_jit_info (domain)->seq_points, declaring_generic_method);
+               seq_points = (MonoSeqPointInfo *)g_hash_table_lookup (domain_jit_info (domain)->seq_points, declaring_generic_method);
                if (!seq_points)
-                       seq_points = g_hash_table_lookup (domain_jit_info (domain)->seq_points, shared_method);
+                       seq_points = (MonoSeqPointInfo *)g_hash_table_lookup (domain_jit_info (domain)->seq_points, shared_method);
        }
        mono_loader_unlock ();
 
@@ -299,6 +299,6 @@ void
 mono_image_get_aot_seq_point_path (MonoImage *image, char **str)
 {
        int size = strlen (image->name) + strlen (SEQ_POINT_AOT_EXT) + 1;
-       *str = g_malloc (size);
+       *str = (char *)g_malloc (size);
        g_sprintf (*str, "%s%s", image->name, SEQ_POINT_AOT_EXT);
 }
index 0f484a98758ab2c15d81df374257df9e9eaabe59..6bffbd05c4927183446441b0f290e53e1595debf 100644 (file)
@@ -686,7 +686,7 @@ mono_simd_simplify_indirection (MonoCompile *cfg)
        }
 
        DEBUG (printf ("[simd-simplify] max vreg is %d\n", max_vreg));
-       vreg_flags = g_malloc0 (max_vreg + 1);
+       vreg_flags = (char *)g_malloc0 (max_vreg + 1);
        target_bb = g_new0 (MonoBasicBlock*, max_vreg + 1);
 
        for (i = 0; i < cfg->num_varinfo; i++) {
@@ -1482,7 +1482,7 @@ simd_version_name (guint32 version)
 static MonoInst*
 emit_intrinsics (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsig, MonoInst **args, const SimdIntrinsc *intrinsics, guint32 size)
 {
-       const SimdIntrinsc * result = mono_binary_search (cmethod->name, intrinsics, size, sizeof (SimdIntrinsc), &simd_intrinsic_compare_by_name);
+       const SimdIntrinsc *result = (const SimdIntrinsc *)mono_binary_search (cmethod->name, intrinsics, size, sizeof (SimdIntrinsc), &simd_intrinsic_compare_by_name);
        if (!result) {
                DEBUG (printf ("function doesn't have a simd intrinsic %s::%s/%d\n", cmethod->klass->name, cmethod->name, fsig->param_count));
                return NULL;
index 95bea3006eef32939c9fbfd145f62f5b754c3816..3e79b5e3916640cb0d6a3e9e7415b0b501ba6538 100644 (file)
@@ -141,7 +141,7 @@ static inline void
 record_use (MonoCompile *cfg, MonoInst *var, MonoBasicBlock *bb, MonoInst *ins)
 {
        MonoMethodVar *info;
-       MonoVarUsageInfo *ui = mono_mempool_alloc (cfg->mempool, sizeof (MonoVarUsageInfo));
+       MonoVarUsageInfo *ui = (MonoVarUsageInfo *)mono_mempool_alloc (cfg->mempool, sizeof (MonoVarUsageInfo));
 
        info = MONO_VARINFO (cfg, var->inst_c0);
        
@@ -352,7 +352,7 @@ mono_ssa_compute (MonoCompile *cfg)
        mono_compile_dominator_info (cfg, MONO_COMP_DOM | MONO_COMP_IDOM | MONO_COMP_DFRONTIER);
 
        bitsize = mono_bitset_alloc_size (cfg->num_bblocks, 0);
-       buf = buf_start = g_malloc0 (mono_bitset_alloc_size (cfg->num_bblocks, 0) * cfg->num_varinfo);
+       buf = buf_start = (guint8 *)g_malloc0 (mono_bitset_alloc_size (cfg->num_bblocks, 0) * cfg->num_varinfo);
 
        for (i = 0; i < cfg->num_varinfo; ++i) {
                vinfo [i].def_in = mono_bitset_mem_new (buf, cfg->num_bblocks, 0);
@@ -434,7 +434,7 @@ mono_ssa_compute (MonoCompile *cfg)
                        else
                                ins->klass = var->klass;
 
-                       ins->inst_phi_args =  mono_mempool_alloc0 (cfg->mempool, sizeof (int) * (cfg->bblocks [idx]->in_count + 1));
+                       ins->inst_phi_args = (int *)mono_mempool_alloc0 (cfg->mempool, sizeof (int) * (cfg->bblocks [idx]->in_count + 1));
                        ins->inst_phi_args [0] = cfg->bblocks [idx]->in_count;
 
                        /* For debugging */
@@ -457,7 +457,7 @@ mono_ssa_compute (MonoCompile *cfg)
 
        /* Renaming phase */
 
-       stack = alloca (sizeof (MonoInst *) * cfg->num_varinfo);
+       stack = (MonoInst **)alloca (sizeof (MonoInst *) * cfg->num_varinfo);
        memset (stack, 0, sizeof (MonoInst *) * cfg->num_varinfo);
 
        lvreg_stack = g_new0 (guint32, cfg->next_vreg);
@@ -937,7 +937,7 @@ visit_inst (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst *ins, GList **cvars,
 
                if (MONO_IS_JUMP_TABLE (ins)) {
                        int i;
-                       MonoJumpInfoBBTable *table = MONO_JUMP_TABLE_FROM_INS (ins);
+                       MonoJumpInfoBBTable *table = (MonoJumpInfoBBTable *)MONO_JUMP_TABLE_FROM_INS (ins);
 
                        if (!ins->next || ins->next->opcode != OP_PADD) {
                                /* The PADD was optimized away */
@@ -973,7 +973,7 @@ visit_inst (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst *ins, GList **cvars,
 
                if (ins->opcode == OP_SWITCH) {
                        int i;
-                       MonoJumpInfoBBTable *table = ins->inst_p0;
+                       MonoJumpInfoBBTable *table = (MonoJumpInfoBBTable *)ins->inst_p0;
 
                        for (i = 0; i < table->table_size; i++)
                                if (table->table [i])
@@ -1049,7 +1049,7 @@ fold_ins (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst *ins, MonoInst **carray
 
                if (MONO_IS_JUMP_TABLE (ins)) {
                        int i;
-                       MonoJumpInfoBBTable *table = MONO_JUMP_TABLE_FROM_INS (ins);
+                       MonoJumpInfoBBTable *table = (MonoJumpInfoBBTable *)MONO_JUMP_TABLE_FROM_INS (ins);
 
                        if (!ins->next || ins->next->opcode != OP_PADD) {
                                /* The PADD was optimized away */
index 5e41d3d26139ac8ee4af8e8323771fb05e407dcb..9457633bafc1b81e5dcf27980522e6702e214274 100644 (file)
@@ -47,7 +47,7 @@ continuation_mark_frame (MonoContinuation *cont)
        if (cont->domain)
                return mono_get_exception_argument ("cont", "Already marked");
 
-       jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        lmf = mono_get_lmf();
        cont->domain = mono_domain_get ();
        cont->thread_id = mono_native_thread_id_get ();
index 0b0a15ad9b6f7b820991f7dd1451506c4118fd1c..765bc111c09bb22e86740bdc03f19ff6b4bf29fb 100644 (file)
@@ -158,7 +158,7 @@ static void get_string (void)
        }
        if (value != NULL)
                g_free (value);
-       value = g_malloc (input - start + 1);
+       value = (char *)g_malloc (input - start + 1);
        strncpy (value, start, input-start);
        value [input-start] = 0;
 }
@@ -431,11 +431,11 @@ mono_trace_enter_method (MonoMethod *method, char *ebp)
 
        sig = mono_method_signature (method);
 
-       arg_info = alloca (sizeof (MonoJitArgumentInfo) * (sig->param_count + 1));
+       arg_info = (MonoJitArgumentInfo *)alloca (sizeof (MonoJitArgumentInfo) * (sig->param_count + 1));
 
        if (method->is_inflated) {
                /* FIXME: Might be better to pass the ji itself */
-               MonoJitInfo *ji = mini_jit_info_table_find (mono_domain_get (), RETURN_ADDRESS (), NULL);
+               MonoJitInfo *ji = mini_jit_info_table_find (mono_domain_get (), (char *)RETURN_ADDRESS (), NULL);
                if (ji) {
                        gsctx = mono_jit_info_get_generic_sharing_context (ji);
                        if (gsctx && gsctx->is_gsharedvt) {
@@ -455,11 +455,11 @@ mono_trace_enter_method (MonoMethod *method, char *ebp)
        }
 
        if (mono_method_signature (method)->hasthis) {
-               gpointer *this = (gpointer *)(ebp + arg_info [0].offset);
+               gpointer *this_obj = (gpointer *)(ebp + arg_info [0].offset);
                if (method->klass->valuetype) {
-                       printf ("value:%p, ", *arg_in_stack_slot(this, gpointer *));
+                       printf ("value:%p, ", *arg_in_stack_slot(this_obj, gpointer *));
                } else {
-                       o = *arg_in_stack_slot(this, MonoObject *);
+                       o = *arg_in_stack_slot(this_obj, MonoObject *);
 
                        if (o) {
                                klass = o->vtable->klass;
@@ -599,7 +599,7 @@ mono_trace_leave_method (MonoMethod *method, ...)
 
        if (method->is_inflated) {
                /* FIXME: Might be better to pass the ji itself */
-               MonoJitInfo *ji = mini_jit_info_table_find (mono_domain_get (), RETURN_ADDRESS (), NULL);
+               MonoJitInfo *ji = mini_jit_info_table_find (mono_domain_get (), (char *)RETURN_ADDRESS (), NULL);
                if (ji) {
                        gsctx = mono_jit_info_get_generic_sharing_context (ji);
                        if (gsctx && gsctx->is_gsharedvt) {
@@ -694,7 +694,7 @@ mono_trace_leave_method (MonoMethod *method, ...)
                break;
        }
        case MONO_TYPE_VALUETYPE:  {
-               guint8 *p = va_arg (ap, gpointer);
+               guint8 *p = (guint8 *)va_arg (ap, gpointer);
                int j, size, align;
                size = mono_type_size (type, &align);
                printf ("[");
index 99d0f12f206fc2f3fc6c015d4620fbc1ec606f66..b3712467479efe6b1b80a2f02b81663cb63136b8 100644 (file)
@@ -57,7 +57,7 @@ mono_arch_get_unbox_trampoline (MonoMethod *m, gpointer addr)
 
        this_reg = mono_arch_get_this_arg_reg (NULL);
 
-       start = code = mono_domain_code_reserve (domain, size);
+       start = code = (guint8 *)mono_domain_code_reserve (domain, size);
 
        unwind_ops = mono_arch_get_cie_program ();
 
@@ -101,7 +101,7 @@ mono_arch_get_static_rgctx_trampoline (MonoMethod *m, MonoMethodRuntimeGenericCo
                buf_len = NACL_SIZE (30, 32);
 #endif
 
-       start = code = mono_domain_code_reserve (domain, buf_len);
+       start = code = (guint8 *)mono_domain_code_reserve (domain, buf_len);
 
        unwind_ops = mono_arch_get_cie_program ();
 
@@ -155,7 +155,7 @@ mono_arch_patch_callsite (guint8 *method_start, guint8 *orig_code, guint8 *addr)
                                 */
                                guint8 *thunk_start, *thunk_code;
 
-                               thunk_start = thunk_code = mono_domain_code_reserve (mono_domain_get (), 32);
+                               thunk_start = thunk_code = (guint8 *)mono_domain_code_reserve (mono_domain_get (), 32);
                                amd64_jump_membase (thunk_code, AMD64_RIP, 0);
                                *(guint64*)thunk_code = (guint64)addr;
                                addr = thunk_start;
@@ -222,7 +222,7 @@ mono_arch_create_llvm_native_thunk (MonoDomain *domain, guint8 *addr)
         */
        guint8 *thunk_start, *thunk_code;
 
-       thunk_start = thunk_code = mono_domain_code_reserve (mono_domain_get (), 32);
+       thunk_start = thunk_code = (guint8 *)mono_domain_code_reserve (mono_domain_get (), 32);
        amd64_jump_membase (thunk_code, AMD64_RIP, 0);
        *(guint64*)thunk_code = (guint64)addr;
        addr = thunk_start;
@@ -294,7 +294,7 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
        else
                has_caller = TRUE;
 
-       code = buf = mono_global_codeman_reserve (kMaxCodeSize);
+       code = buf = (guint8 *)mono_global_codeman_reserve (kMaxCodeSize);
 
        /* Compute stack frame size and offsets */
        offset = 0;
@@ -618,7 +618,7 @@ mono_arch_create_specific_trampoline (gpointer arg1, MonoTrampolineType tramp_ty
        else
                size = 5 + 1 + 8;
 
-       code = buf = mono_domain_code_reserve_align (domain, size, 1);
+       code = buf = (guint8 *)mono_domain_code_reserve_align (domain, size, 1);
 
        if (((gint64)tramp - (gint64)code) >> 31 != 0 && ((gint64)tramp - (gint64)code) >> 31 != -1) {
 #ifndef MONO_ARCH_NOMAP32BIT
@@ -626,7 +626,7 @@ mono_arch_create_specific_trampoline (gpointer arg1, MonoTrampolineType tramp_ty
 #endif
                far_addr = TRUE;
                size += 16;
-               code = buf = mono_domain_code_reserve_align (domain, size, 1);
+               code = buf = (guint8 *)mono_domain_code_reserve_align (domain, size, 1);
        }
 #elif defined(__native_client_codegen__)
        size = 5 + 1 + 4;
@@ -702,11 +702,11 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
 
        tramp_size = NACL_SIZE (64 + 8 * depth, 128 + 8 * depth);
 
-       code = buf = mono_global_codeman_reserve (tramp_size);
+       code = buf = (guint8 *)mono_global_codeman_reserve (tramp_size);
 
        unwind_ops = mono_arch_get_cie_program ();
 
-       rgctx_null_jumps = g_malloc (sizeof (guint8*) * (depth + 2));
+       rgctx_null_jumps = (guint8 **)g_malloc (sizeof (guint8*) * (depth + 2));
 
        if (mrgctx) {
                /* get mrgctx ptr */
@@ -756,7 +756,7 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
                code = mono_arch_emit_load_aotconst (buf, code, &ji, MONO_PATCH_INFO_JIT_ICALL_ADDR, g_strdup_printf ("specific_trampoline_lazy_fetch_%u", slot));
                amd64_jump_reg (code, AMD64_R11);
        } else {
-               tramp = mono_arch_create_specific_trampoline (GUINT_TO_POINTER (slot), MONO_TRAMPOLINE_RGCTX_LAZY_FETCH, mono_get_root_domain (), NULL);
+               tramp = (guint8 *)mono_arch_create_specific_trampoline (GUINT_TO_POINTER (slot), MONO_TRAMPOLINE_RGCTX_LAZY_FETCH, mono_get_root_domain (), NULL);
 
                /* jump to the actual trampoline */
                amd64_jump_code (code, tramp);
@@ -779,7 +779,7 @@ void
 mono_arch_invalidate_method (MonoJitInfo *ji, void *func, gpointer func_arg)
 {
        /* FIXME: This is not thread safe */
-       guint8 *code = ji->code_start;
+       guint8 *code = (guint8 *)ji->code_start;
 
        amd64_mov_reg_imm (code, AMD64_ARG_REG1, func_arg);
        amd64_mov_reg_imm (code, AMD64_R11, func);
@@ -792,7 +792,7 @@ mono_arch_invalidate_method (MonoJitInfo *ji, void *func, gpointer func_arg)
 static void
 handler_block_trampoline_helper (gpointer *ptr)
 {
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        *ptr = jit_tls->handler_block_return_address;
 }
 
@@ -807,7 +807,7 @@ mono_arch_create_handler_block_trampoline (MonoTrampInfo **info, gboolean aot)
 
        g_assert (!aot);
 
-       code = buf = mono_global_codeman_reserve (tramp_size);
+       code = buf = (guint8 *)mono_global_codeman_reserve (tramp_size);
 
        unwind_ops = mono_arch_get_cie_program ();
 
@@ -892,7 +892,7 @@ mono_arch_create_sdb_trampoline (gboolean single_step, MonoTrampInfo **info, gbo
        GSList *unwind_ops = NULL;
        MonoJumpInfo *ji = NULL;
 
-       code = buf = mono_global_codeman_reserve (tramp_size);
+       code = buf = (guint8 *)mono_global_codeman_reserve (tramp_size);
 
        framesize = 0;
 #ifdef TARGET_WIN32
index 8838c4956e563845c5b7b4ba6efaa5b35c70f3c3..2b4475f0a67e929629a8b46cee381cf8e911c365 100644 (file)
@@ -758,6 +758,7 @@ mono_arch_create_sdb_trampoline (gboolean single_step, MonoTrampInfo **info, gbo
        /* Argument area */
        framesize += sizeof (mgreg_t);
 
+       framesize = ALIGN_TO (framesize, 8);
        ctx_offset = framesize;
        framesize += sizeof (MonoContext);
 
index b477a487154921dc9c32d0ae2874aee14948263e..82f14d7882255940ad311339fbe8c50073075a1b 100644 (file)
@@ -361,7 +361,7 @@ mono_unwind_ops_encode_full (GSList *unwind_ops, guint32 *out_len, gboolean enab
        for (; l; l = l->next) {
                int reg;
 
-               op = l->data;
+               op = (MonoUnwindOp *)l->data;
 
                /* Convert the register from the hw encoding to the dwarf encoding */
                reg = mono_hw_reg_to_dwarf_reg (op->reg);
@@ -446,7 +446,7 @@ mono_unwind_ops_encode_full (GSList *unwind_ops, guint32 *out_len, gboolean enab
        
        g_assert (p - buf < 4096);
        *out_len = p - buf;
-       res = g_malloc (p - buf);
+       res = (guint8 *)g_malloc (p - buf);
        memcpy (res, buf, p - buf);
        return res;
 }
@@ -688,7 +688,7 @@ mono_cache_unwind_info (guint8 *unwind_info, guint32 unwind_info_len)
                }
        }
 
-       info = g_malloc (sizeof (MonoUnwindInfo) + unwind_info_len);
+       info = (MonoUnwindInfo *)g_malloc (sizeof (MonoUnwindInfo) + unwind_info_len);
        info->len = unwind_info_len;
        memcpy (&info->info, unwind_info, unwind_info_len);
 
@@ -881,11 +881,11 @@ decode_lsda (guint8 *lsda, guint8 *code, MonoJitExceptionInfo **ex_info, guint32
        p = (guint8*)ALIGN_TO ((mgreg_t)p, 4);
 
        if (ex_info) {
-               *ex_info = g_malloc0 (ncall_sites * sizeof (MonoJitExceptionInfo));
+               *ex_info = (MonoJitExceptionInfo *)g_malloc0 (ncall_sites * sizeof (MonoJitExceptionInfo));
                *ex_info_len = ncall_sites;
        }
        if (type_info)
-               *type_info = g_malloc0 (ncall_sites * sizeof (gpointer));
+               *type_info = (gpointer *)g_malloc0 (ncall_sites * sizeof (gpointer));
 
        for (i = 0; i < ncall_sites; ++i) {
                int block_start_offset, block_size, landing_pad;
@@ -1058,7 +1058,7 @@ mono_unwind_decode_fde (guint8 *fde, guint32 *out_len, guint32 *code_len, MonoJi
        g_assert (return_reg == DWARF_PC_REG);
 
        buf_len = (cie + cie_len + 4 - cie_cfi) + (fde + fde_len + 4 - fde_cfi);
-       buf = g_malloc0 (buf_len);
+       buf = (guint8 *)g_malloc0 (buf_len);
 
        i = 0;
        p = cie_cfi;
@@ -1084,7 +1084,7 @@ mono_unwind_decode_fde (guint8 *fde, guint32 *out_len, guint32 *code_len, MonoJi
 
        *out_len = i;
 
-       return g_realloc (buf, i);
+       return (guint8 *)g_realloc (buf, i);
 }
 
 /*
@@ -1158,7 +1158,7 @@ mono_unwind_decode_llvm_mono_fde (guint8 *fde, int fde_len, guint8 *cie, guint8
        cie_cfi_len = p - cie_cfi;
        fde_cfi_len = (fde + fde_len - fde_cfi);
 
-       buf = g_malloc0 (cie_cfi_len + fde_cfi_len);
+       buf = (guint8 *)g_malloc0 (cie_cfi_len + fde_cfi_len);
        memcpy (buf, cie_cfi, cie_cfi_len);
        memcpy (buf + cie_cfi_len, fde_cfi, fde_cfi_len);
 
index 4ee385504bea1c339957a3080e005c3bfaf02b41..e57211635ee700b0ea1bea48015d8709333b89fd 100644 (file)
@@ -133,7 +133,7 @@ static char*
 pstrdup (const char *s)
 {
        int len = strlen (s) + 1;
-       char *p = malloc (len);
+       char *p = (char *)malloc (len);
        memcpy (p, s, len);
        return p;
 }
@@ -196,7 +196,7 @@ add_counter_to_section (Counter *counter)
        CounterSection *csection, *s;
        CounterList *clist;
 
-       clist = calloc (1, sizeof (CounterList));
+       clist = (CounterList *)calloc (1, sizeof (CounterList));
        clist->counter = counter;
 
        for (csection = counters_sections; csection; csection = csection->next) {
@@ -212,7 +212,7 @@ add_counter_to_section (Counter *counter)
        }
 
        /* If section does not exist */
-       csection = calloc (1, sizeof (CounterSection));
+       csection = (CounterSection *)calloc (1, sizeof (CounterSection));
        csection->value = counter->section;
        csection->counters = clist;
        csection->counters_last = clist;
@@ -237,7 +237,7 @@ add_counter (const char *section, const char *name, int type, int unit, int vari
                if (list->counter->index == index)
                        return;
 
-       counter = calloc (1, sizeof (Counter));
+       counter = (Counter *)calloc (1, sizeof (Counter));
        counter->section = section;
        counter->name = name;
        counter->type = type;
@@ -245,7 +245,7 @@ add_counter (const char *section, const char *name, int type, int unit, int vari
        counter->variance = variance;
        counter->index = index;
 
-       list = calloc (1, sizeof (CounterList));
+       list = (CounterList *)calloc (1, sizeof (CounterList));
        list->counter = counter;
 
        if (!counters) {
@@ -268,7 +268,7 @@ add_counter_to_timestamp (uint64_t timestamp, Counter *counter)
        CounterSection *csection;
        CounterList *clist;
 
-       clist = calloc (1, sizeof (CounterList));
+       clist = (CounterList *)calloc (1, sizeof (CounterList));
        clist->counter = counter;
 
        for (ctimestamp = counters_timestamps; ctimestamp; ctimestamp = ctimestamp->next) {
@@ -286,7 +286,7 @@ add_counter_to_timestamp (uint64_t timestamp, Counter *counter)
                        }
 
                        /* if timestamp exist and section does not exist */
-                       csection = calloc (1, sizeof (CounterSection));
+                       csection = (CounterSection *)calloc (1, sizeof (CounterSection));
                        csection->value = counter->section;
                        csection->counters = clist;
                        csection->counters_last = clist;
@@ -301,12 +301,12 @@ add_counter_to_timestamp (uint64_t timestamp, Counter *counter)
        }
 
        /* If timestamp do not exist and section does not exist */
-       csection = calloc (1, sizeof (CounterSection));
+       csection = (CounterSection *)calloc (1, sizeof (CounterSection));
        csection->value = counter->section;
        csection->counters = clist;
        csection->counters_last = clist;
 
-       ctimestamp = calloc (1, sizeof (CounterTimestamp));
+       ctimestamp = (CounterTimestamp *)calloc (1, sizeof (CounterTimestamp));
        ctimestamp->value = timestamp;
        ctimestamp->sections = csection;
        ctimestamp->sections_last = csection;
@@ -564,7 +564,7 @@ static void
 add_image (intptr_t image, char *name)
 {
        int slot = ((image >> 2) & 0xffff) % SMALL_HASH_SIZE;
-       ImageDesc *cd = malloc (sizeof (ImageDesc));
+       ImageDesc *cd = (ImageDesc *)malloc (sizeof (ImageDesc));
        cd->image = image;
        cd->filename = pstrdup (name);
        cd->next = image_hash [slot];
@@ -587,7 +587,7 @@ static void
 add_assembly (intptr_t assembly, char *name)
 {
        int slot = ((assembly >> 2) & 0xffff) % SMALL_HASH_SIZE;
-       AssemblyDesc *cd = malloc (sizeof (AssemblyDesc));
+       AssemblyDesc *cd = (AssemblyDesc *)malloc (sizeof (AssemblyDesc));
        cd->assembly = assembly;
        cd->asmname = pstrdup (name);
        cd->next = assembly_hash [slot];
@@ -635,7 +635,7 @@ add_class (intptr_t klass, const char *name)
                cd->name = pstrdup (name);
                return cd;
        }
-       cd = calloc (sizeof (ClassDesc), 1);
+       cd = (ClassDesc *)calloc (sizeof (ClassDesc), 1);
        cd->klass = klass;
        cd->name = pstrdup (name);
        cd->next = class_hash [slot];
@@ -701,7 +701,7 @@ add_method (intptr_t method, const char *name, intptr_t code, int len)
                cd->name = pstrdup (name);
                return cd;
        }
-       cd = calloc (sizeof (MethodDesc), 1);
+       cd = (MethodDesc *)calloc (sizeof (MethodDesc), 1);
        cd->method = method;
        cd->name = pstrdup (name);
        cd->code = code;
@@ -743,8 +743,8 @@ add_stat_sample (int type, uintptr_t ip) {
                size_stat_samples *= 2;
                if (!size_stat_samples)
                size_stat_samples = 32;
-               stat_samples = realloc (stat_samples, size_stat_samples * sizeof (uintptr_t));
-               stat_sample_desc = realloc (stat_sample_desc, size_stat_samples * sizeof (int));
+               stat_samples = (uintptr_t *)realloc (stat_samples, size_stat_samples * sizeof (uintptr_t));
+               stat_sample_desc = (int *)realloc (stat_sample_desc, size_stat_samples * sizeof (int));
        }
        stat_samples [num_stat_samples] = ip;
        stat_sample_desc [num_stat_samples++] = type;
@@ -772,8 +772,8 @@ lookup_method_by_ip (uintptr_t ip)
 static int
 compare_method_samples (const void *a, const void *b)
 {
-       MethodDesc *const*A = a;
-       MethodDesc *const*B = b;
+       MethodDesc *const *A = (MethodDesc *const *)a;
+       MethodDesc *const *B = (MethodDesc *const *)b;
        if ((*A)->sample_hits == (*B)->sample_hits)
                return 0;
        if ((*B)->sample_hits < (*A)->sample_hits)
@@ -798,8 +798,8 @@ static int usymbols_num = 0;
 static int
 compare_usymbol_addr (const void *a, const void *b)
 {
-       UnmanagedSymbol *const*A = a;
-       UnmanagedSymbol *const*B = b;
+       UnmanagedSymbol *const *A = (UnmanagedSymbol *const *)a;
+       UnmanagedSymbol *const *B = (UnmanagedSymbol *const *)b;
        if ((*B)->addr == (*A)->addr)
                return 0;
        if ((*B)->addr > (*A)->addr)
@@ -810,8 +810,8 @@ compare_usymbol_addr (const void *a, const void *b)
 static int
 compare_usymbol_samples (const void *a, const void *b)
 {
-       UnmanagedSymbol *const*A = a;
-       UnmanagedSymbol *const*B = b;
+       UnmanagedSymbol *const *A = (UnmanagedSymbol *const *)a;
+       UnmanagedSymbol *const *B = (UnmanagedSymbol *const *)b;
        if ((*B)->sample_hits == (*A)->sample_hits)
                return 0;
        if ((*B)->sample_hits < (*A)->sample_hits)
@@ -827,10 +827,10 @@ add_unmanaged_symbol (uintptr_t addr, char *name, uintptr_t size)
                int new_size = usymbols_size * 2;
                if (!new_size)
                        new_size = 16;
-               usymbols = realloc (usymbols, sizeof (void*) * new_size);
+               usymbols = (UnmanagedSymbol **)realloc (usymbols, sizeof (void*) * new_size);
                usymbols_size = new_size;
        }
-       sym = calloc (sizeof (UnmanagedSymbol), 1);
+       sym = (UnmanagedSymbol *)calloc (sizeof (UnmanagedSymbol), 1);
        sym->addr = addr;
        sym->name = name;
        sym->size = size;
@@ -875,10 +875,10 @@ add_unmanaged_binary (uintptr_t addr, char *name, uintptr_t size)
                int new_size = ubinaries_size * 2;
                if (!new_size)
                        new_size = 16;
-               ubinaries = realloc (ubinaries, sizeof (void*) * new_size);
+               ubinaries = (UnmanagedSymbol **)realloc (ubinaries, sizeof (void*) * new_size);
                ubinaries_size = new_size;
        }
-       sym = calloc (sizeof (UnmanagedSymbol), 1);
+       sym = (UnmanagedSymbol *)calloc (sizeof (UnmanagedSymbol), 1);
        sym->addr = addr;
        sym->name = name;
        sym->size = size;
@@ -965,7 +965,7 @@ dump_samples (void)
                                        msize *= 2;
                                        if (!msize)
                                                msize = 4;
-                                       cachedm = realloc (cachedm, sizeof (void*) * msize);
+                                       cachedm = (MethodDesc **)realloc (cachedm, sizeof (void*) * msize);
                                }
                                cachedm [count++] = m;
                        }
@@ -983,7 +983,7 @@ dump_samples (void)
                                                usize *= 2;
                                                if (!usize)
                                                        usize = 4;
-                                               cachedus = realloc (cachedus, sizeof (void*) * usize);
+                                               cachedus = (UnmanagedSymbol **)realloc (cachedus, sizeof (void*) * usize);
                                        }
                                        cachedus [ucount++] = usym;
                                }
@@ -1091,7 +1091,7 @@ add_heap_class_rev (HeapClassDesc *from, HeapClassDesc *to)
                to->rev_hash_size *= 2;
                if (to->rev_hash_size == 0)
                        to->rev_hash_size = 4;
-               n = calloc (sizeof (HeapClassRevRef) * to->rev_hash_size, 1);
+               n = (HeapClassRevRef *)calloc (sizeof (HeapClassRevRef) * to->rev_hash_size, 1);
                for (i = 0; i < old_size; ++i) {
                        if (to->rev_hash [i].klass)
                                add_rev_class_hashed (n, to->rev_hash_size, to->rev_hash [i].klass, to->rev_hash [i].count);
@@ -1133,9 +1133,9 @@ static int num_heap_shots = 0;
 static HeapShot*
 new_heap_shot (uint64_t timestamp)
 {
-       HeapShot *hs = calloc (sizeof (HeapShot), 1);
+       HeapShot *hs = (HeapShot *)calloc (sizeof (HeapShot), 1);
        hs->hash_size = 4;
-       hs->class_hash = calloc (sizeof (void*), hs->hash_size);
+       hs->class_hash = (HeapClassDesc **)calloc (sizeof (void*), hs->hash_size);
        hs->timestamp = timestamp;
        num_heap_shots++;
        hs->next = heap_shots;
@@ -1181,7 +1181,7 @@ add_heap_hashed (HeapClassDesc **hash, HeapClassDesc **retv, uintptr_t hsize, Cl
                                hash [i] = *retv;
                                return 1;
                        }
-                       hash [i] = calloc (sizeof (HeapClassDesc), 1);
+                       hash [i] = (HeapClassDesc *)calloc (sizeof (HeapClassDesc), 1);
                        hash [i]->klass = klass;
                        hash [i]->total_size += size;
                        hash [i]->count += count;
@@ -1208,7 +1208,7 @@ add_heap_shot_class (HeapShot *hs, ClassDesc *klass, uint64_t size)
                hs->hash_size *= 2;
                if (hs->hash_size == 0)
                        hs->hash_size = 4;
-               n = calloc (sizeof (void*) * hs->hash_size, 1);
+               n = (HeapClassDesc **)calloc (sizeof (void*) * hs->hash_size, 1);
                for (i = 0; i < old_size; ++i) {
                        res = hs->class_hash [i];
                        if (hs->class_hash [i])
@@ -1228,7 +1228,7 @@ add_heap_shot_class (HeapShot *hs, ClassDesc *klass, uint64_t size)
 static HeapObjectDesc*
 alloc_heap_obj (uintptr_t objaddr, HeapClassDesc *hklass, uintptr_t num_refs)
 {
-       HeapObjectDesc* ho = calloc (sizeof (HeapObjectDesc) + num_refs * sizeof (uintptr_t), 1);
+       HeapObjectDesc* ho = (HeapObjectDesc *)calloc (sizeof (HeapObjectDesc) + num_refs * sizeof (uintptr_t), 1);
        ho->objaddr = objaddr;
        ho->hklass = hklass;
        ho->num_refs = num_refs;
@@ -1311,7 +1311,7 @@ add_heap_shot_obj (HeapShot *hs, HeapObjectDesc *obj)
                hs->objects_hash_size *= 2;
                if (hs->objects_hash_size == 0)
                        hs->objects_hash_size = 4;
-               n = calloc (sizeof (void*) * hs->objects_hash_size, 1);
+               n = (HeapObjectDesc **)calloc (sizeof (void*) * hs->objects_hash_size, 1);
                for (i = 0; i < old_size; ++i) {
                        if (hs->objects_hash [i])
                                add_heap_hashed_obj (n, hs->objects_hash_size, hs->objects_hash [i]);
@@ -1365,7 +1365,7 @@ heap_shot_mark_objects (HeapShot *hs)
        if (!debug)
                return;
        /* consistency checks: it seems not all the objects are walked in the heap in some cases */
-       marks = calloc (hs->objects_hash_size, 1);
+       marks = (unsigned char *)calloc (hs->objects_hash_size, 1);
        if (!marks)
                return;
        for (i = 0; i < hs->num_roots; ++i) {
@@ -1478,14 +1478,14 @@ add_backtrace (int count, MethodDesc **methods)
                        return bt;
                bt = bt->next;
        }
-       bt = malloc (sizeof (BackTrace) + ((count - 1) * sizeof (void*)));
+       bt = (BackTrace *)malloc (sizeof (BackTrace) + ((count - 1) * sizeof (void*)));
        bt->next = backtrace_hash [slot];
        backtrace_hash [slot] = bt;
        if (next_backtrace == num_backtraces) {
                num_backtraces *= 2;
                if (!num_backtraces)
                        num_backtraces = 16;
-               backtraces = realloc (backtraces, sizeof (void*) * num_backtraces);
+               backtraces = (BackTrace **)realloc (backtraces, sizeof (void*) * num_backtraces);
        }
        bt->id = next_backtrace++;
        backtraces [bt->id] = bt;
@@ -1562,7 +1562,7 @@ static void
 ensure_buffer (ProfContext *ctx, int size)
 {
        if (ctx->size < size) {
-               ctx->buf = realloc (ctx->buf, size);
+               ctx->buf = (unsigned char *)realloc (ctx->buf, size);
                ctx->size = size;
        }
 }
@@ -1600,16 +1600,16 @@ get_thread (ProfContext *ctx, intptr_t thread_id)
                }
                thread = thread->next;
        }
-       thread = calloc (sizeof (ThreadContext), 1);
+       thread = (ThreadContext *)calloc (sizeof (ThreadContext), 1);
        thread->next = ctx->threads;
        ctx->threads = thread;
        thread->thread_id = thread_id;
        thread->last_time = 0;
        thread->stack_id = 0;
        thread->stack_size = 32;
-       thread->stack = malloc (thread->stack_size * sizeof (void*));
-       thread->time_stack = malloc (thread->stack_size * sizeof (uint64_t));
-       thread->callee_time_stack = malloc (thread->stack_size * sizeof (uint64_t));
+       thread->stack = (MethodDesc **)malloc (thread->stack_size * sizeof (void*));
+       thread->time_stack = (uint64_t *)malloc (thread->stack_size * sizeof (uint64_t));
+       thread->callee_time_stack = (uint64_t *)malloc (thread->stack_size * sizeof (uint64_t));
        return thread;
 }
 
@@ -1628,7 +1628,7 @@ get_domain (ProfContext *ctx, intptr_t domain_id)
                domain = domain->next;
        }
 
-       domain = calloc (sizeof (DomainContext), 1);
+       domain = (DomainContext *)calloc (sizeof (DomainContext), 1);
        domain->next = ctx->domains;
        ctx->domains = domain;
        domain->domain_id = domain_id;
@@ -1651,7 +1651,7 @@ get_remctx (ProfContext *ctx, intptr_t remctx_id)
                remctx = remctx->next;
        }
 
-       remctx = calloc (sizeof (RemCtxContext), 1);
+       remctx = (RemCtxContext *)calloc (sizeof (RemCtxContext), 1);
        remctx->next = ctx->remctxs;
        ctx->remctxs = remctx;
        remctx->remctx_id = remctx_id;
@@ -1672,9 +1672,9 @@ ensure_thread_stack (ThreadContext *thread)
 {
        if (thread->stack_id == thread->stack_size) {
                thread->stack_size *= 2;
-               thread->stack = realloc (thread->stack, thread->stack_size * sizeof (void*));
-               thread->time_stack = realloc (thread->time_stack, thread->stack_size * sizeof (uint64_t));
-               thread->callee_time_stack = realloc (thread->callee_time_stack, thread->stack_size * sizeof (uint64_t));
+               thread->stack = (MethodDesc **)realloc (thread->stack, thread->stack_size * sizeof (void*));
+               thread->time_stack = (uint64_t *)realloc (thread->time_stack, thread->stack_size * sizeof (uint64_t));
+               thread->callee_time_stack = (uint64_t *)realloc (thread->callee_time_stack, thread->stack_size * sizeof (uint64_t));
        }
 }
 
@@ -1715,7 +1715,7 @@ add_trace_bt (BackTrace *bt, TraceDesc *trace, uint64_t value)
                trace->size *= 2;
                if (trace->size == 0)
                        trace->size = 4;
-               n = calloc (sizeof (CallContext) * trace->size, 1);
+               n = (CallContext *)calloc (sizeof (CallContext) * trace->size, 1);
                for (i = 0; i < old_size; ++i) {
                        if (trace->traces [i].bt)
                                add_trace_hashed (n, trace->size, trace->traces [i].bt, trace->traces [i].count);
@@ -1761,9 +1761,9 @@ thread_add_root (ThreadContext *ctx, uintptr_t obj, int root_type, uintptr_t ext
                int new_size = ctx->size_roots * 2;
                if (!new_size)
                        new_size = 4;
-               ctx->roots = realloc (ctx->roots, new_size * sizeof (uintptr_t));
-               ctx->roots_extra = realloc (ctx->roots_extra, new_size * sizeof (uintptr_t));
-               ctx->roots_types = realloc (ctx->roots_types, new_size * sizeof (int));
+               ctx->roots = (uintptr_t *)realloc (ctx->roots, new_size * sizeof (uintptr_t));
+               ctx->roots_extra = (uintptr_t *)realloc (ctx->roots_extra, new_size * sizeof (uintptr_t));
+               ctx->roots_types = (int *)realloc (ctx->roots_types, new_size * sizeof (int));
                ctx->size_roots = new_size;
        }
        ctx->roots_types [ctx->num_roots] = root_type;
@@ -1774,8 +1774,8 @@ thread_add_root (ThreadContext *ctx, uintptr_t obj, int root_type, uintptr_t ext
 static int
 compare_callc (const void *a, const void *b)
 {
-       const CallContext *A = a;
-       const CallContext *B = b;
+       const CallContext *A = (const CallContext *)a;
+       const CallContext *B = (const CallContext *)b;
        if (B->count == A->count)
                return 0;
        if (B->count < A->count)
@@ -1908,7 +1908,7 @@ lookup_monitor (uintptr_t objid)
        while (cd && cd->objid != objid)
                cd = cd->next;
        if (!cd) {
-               cd = calloc (sizeof (MonitorDesc), 1);
+               cd = (MonitorDesc *)calloc (sizeof (MonitorDesc), 1);
                cd->objid = objid;
                cd->next = monitor_hash [slot];
                monitor_hash [slot] = cd;
@@ -1963,7 +1963,7 @@ decode_bt (MethodDesc** sframes, int *size, unsigned char *p, unsigned char **en
        if (flags != 0)
                return NULL;
        if (count > *size)
-               frames = malloc (count * sizeof (void*));
+               frames = (MethodDesc **)malloc (count * sizeof (void*));
        else
                frames = sframes;
        for (i = 0; i < count; ++i) {
@@ -2033,7 +2033,7 @@ static void
 found_object (uintptr_t obj)
 {
        num_tracked_objects ++;
-       tracked_objects = realloc (tracked_objects, num_tracked_objects * sizeof (tracked_objects [0]));
+       tracked_objects = (uintptr_t *)realloc (tracked_objects, num_tracked_objects * sizeof (tracked_objects [0]));
        tracked_objects [num_tracked_objects - 1] = obj;
 }
 
@@ -2120,8 +2120,8 @@ static void
 gather_coverage_statements (void)
 {
        for (guint i = 0; i < coverage_statements->len; i++) {
-               CoverageCoverage *coverage = coverage_statements->pdata[i];
-               CoverageMethod *method = g_hash_table_lookup (coverage_methods_hash, GINT_TO_POINTER (coverage->method_id));
+               CoverageCoverage *coverage = (CoverageCoverage *)coverage_statements->pdata[i];
+               CoverageMethod *method = (CoverageMethod *)g_hash_table_lookup (coverage_methods_hash, GINT_TO_POINTER (coverage->method_id));
                if (method == NULL) {
                        fprintf (outfile, "Cannot find method with ID: %d\n", coverage->method_id);
                        continue;
@@ -2163,7 +2163,7 @@ coverage_add_class (CoverageClass *klass)
        }
 
        g_ptr_array_add (coverage_classes, klass);
-       classes = g_hash_table_lookup (coverage_assembly_classes, klass->assembly_name);
+       classes = (GPtrArray *)g_hash_table_lookup (coverage_assembly_classes, klass->assembly_name);
        if (classes == NULL) {
                classes = g_ptr_array_new ();
                g_hash_table_insert (coverage_assembly_classes, klass->assembly_name, classes);
@@ -2768,7 +2768,7 @@ decode_buffer (ProfContext *ctx)
                                int codelen = decode_uleb128 (p, &p);
                                const char *name;
                                if (type == MONO_PROFILER_CODE_BUFFER_SPECIFIC_TRAMPOLINE) {
-                                       name = (void*)p;
+                                       name = (const char *)p;
                                        while (*p) p++;
                                                p++;
                                } else {
@@ -2877,7 +2877,7 @@ decode_buffer (ProfContext *ctx)
 
                                        type = decode_uleb128 (p, &p);
 
-                                       value = calloc (1, sizeof (CounterValue));
+                                       value = (CounterValue *)calloc (1, sizeof (CounterValue));
                                        value->timestamp = timestamp;
 
                                        switch (type) {
@@ -2885,11 +2885,11 @@ decode_buffer (ProfContext *ctx)
 #if SIZEOF_VOID_P == 4
                                        case MONO_COUNTER_WORD:
 #endif
-                                               value->buffer = malloc (sizeof (int32_t));
+                                               value->buffer = (unsigned char *)malloc (sizeof (int32_t));
                                                *(int32_t*)value->buffer = (int32_t)decode_sleb128 (p, &p) + (previous ? (*(int32_t*)previous->buffer) : 0);
                                                break;
                                        case MONO_COUNTER_UINT:
-                                               value->buffer = malloc (sizeof (uint32_t));
+                                               value->buffer = (unsigned char *)malloc (sizeof (uint32_t));
                                                *(uint32_t*)value->buffer = (uint32_t)decode_uleb128 (p, &p) + (previous ? (*(uint32_t*)previous->buffer) : 0);
                                                break;
                                        case MONO_COUNTER_LONG:
@@ -2897,15 +2897,15 @@ decode_buffer (ProfContext *ctx)
                                        case MONO_COUNTER_WORD:
 #endif
                                        case MONO_COUNTER_TIME_INTERVAL:
-                                               value->buffer = malloc (sizeof (int64_t));
+                                               value->buffer = (unsigned char *)malloc (sizeof (int64_t));
                                                *(int64_t*)value->buffer = (int64_t)decode_sleb128 (p, &p) + (previous ? (*(int64_t*)previous->buffer) : 0);
                                                break;
                                        case MONO_COUNTER_ULONG:
-                                               value->buffer = malloc (sizeof (uint64_t));
+                                               value->buffer = (unsigned char *)malloc (sizeof (uint64_t));
                                                *(uint64_t*)value->buffer = (uint64_t)decode_uleb128 (p, &p) + (previous ? (*(uint64_t*)previous->buffer) : 0);
                                                break;
                                        case MONO_COUNTER_DOUBLE:
-                                               value->buffer = malloc (sizeof (double));
+                                               value->buffer = (unsigned char *)malloc (sizeof (double));
 #if TARGET_BYTE_ORDER == G_LITTLE_ENDIAN
                                                for (i = 0; i < sizeof (double); i++)
 #else
@@ -2939,11 +2939,11 @@ decode_buffer (ProfContext *ctx)
                                int token, n_offsets, method_id;
 
                                p++;
-                               assembly = (void *)p; while (*p) p++; p++;
-                               klass = (void *)p; while (*p) p++; p++;
-                               name = (void *)p; while (*p) p++; p++;
-                               sig = (void *)p; while (*p) p++; p++;
-                               filename = (void *)p; while (*p) p++; p++;
+                               assembly = (const char *)p; while (*p) p++; p++;
+                               klass = (const char *)p; while (*p) p++; p++;
+                               name = (const char *)p; while (*p) p++; p++;
+                               sig = (const char *)p; while (*p) p++; p++;
+                               filename = (const char *)p; while (*p) p++; p++;
 
                                token = decode_uleb128 (p, &p);
                                method_id = decode_uleb128 (p, &p);
@@ -2989,9 +2989,9 @@ decode_buffer (ProfContext *ctx)
                                int number_of_methods, fully_covered, partially_covered;
                                p++;
 
-                               name = (void *)p; while (*p) p++; p++;
-                               guid = (void *)p; while (*p) p++; p++;
-                               filename = (void *)p; while (*p) p++; p++;
+                               name = (char *)p; while (*p) p++; p++;
+                               guid = (char *)p; while (*p) p++; p++;
+                               filename = (char *)p; while (*p) p++; p++;
                                number_of_methods = decode_uleb128 (p, &p);
                                fully_covered = decode_uleb128 (p, &p);
                                partially_covered = decode_uleb128 (p, &p);
@@ -3012,8 +3012,8 @@ decode_buffer (ProfContext *ctx)
                                int number_of_methods, fully_covered, partially_covered;
                                p++;
 
-                               assembly_name = (void *)p; while (*p) p++; p++;
-                               class_name = (void *)p; while (*p) p++; p++;
+                               assembly_name = (char *)p; while (*p) p++; p++;
+                               class_name = (char *)p; while (*p) p++; p++;
                                number_of_methods = decode_uleb128 (p, &p);
                                fully_covered = decode_uleb128 (p, &p);
                                partially_covered = decode_uleb128 (p, &p);
@@ -3049,7 +3049,7 @@ static ProfContext*
 load_file (char *name)
 {
        unsigned char *p;
-       ProfContext *ctx = calloc (sizeof (ProfContext), 1);
+       ProfContext *ctx = (ProfContext *)calloc (sizeof (ProfContext), 1);
        if (strcmp (name, "-") == 0)
                ctx->file = stdin;
        else
@@ -3091,8 +3091,8 @@ static int alloc_sort_mode = ALLOC_SORT_BYTES;
 static int
 compare_class (const void *a, const void *b)
 {
-       ClassDesc *const*A = a;
-       ClassDesc *const*B = b;
+       ClassDesc *const *A = (ClassDesc *const *)a;
+       ClassDesc *const *B = (ClassDesc *const *)b;
        uint64_t vala, valb;
        if (alloc_sort_mode == ALLOC_SORT_BYTES) {
                vala = (*A)->alloc_size;
@@ -3190,8 +3190,8 @@ dump_exceptions (void)
 static int
 compare_monitor (const void *a, const void *b)
 {
-       MonitorDesc *const*A = a;
-       MonitorDesc *const*B = b;
+       MonitorDesc *const *A = (MonitorDesc *const *)a;
+       MonitorDesc *const *B = (MonitorDesc *const *)b;
        if ((*B)->wait_time == (*A)->wait_time)
                return 0;
        if ((*B)->wait_time < (*A)->wait_time)
@@ -3206,7 +3206,7 @@ dump_monitors (void)
        int i, j;
        if (!num_monitors)
                return;
-       monitors = malloc (sizeof (void*) * num_monitors);
+       monitors = (MonitorDesc **)malloc (sizeof (void*) * num_monitors);
        for (i = 0, j = 0; i < SMALL_HASH_SIZE; ++i) {
                MonitorDesc *mdesc = monitor_hash [i];
                while (mdesc) {
@@ -3288,7 +3288,7 @@ dump_allocations (void)
        intptr_t allocs = 0;
        uint64_t size = 0;
        int header_done = 0;
-       ClassDesc **classes = malloc (num_classes * sizeof (void*));
+       ClassDesc **classes = (ClassDesc **)malloc (num_classes * sizeof (void*));
        ClassDesc *cd;
        c = 0;
        for (i = 0; i < HASH_SIZE; ++i) {
@@ -3331,8 +3331,8 @@ static int method_sort_mode = METHOD_SORT_TOTAL;
 static int
 compare_method (const void *a, const void *b)
 {
-       MethodDesc *const*A = a;
-       MethodDesc *const*B = b;
+       MethodDesc *const *A = (MethodDesc *const *)a;
+       MethodDesc *const *B = (MethodDesc *const *)b;
        uint64_t vala, valb;
        if (method_sort_mode == METHOD_SORT_SELF) {
                vala = (*A)->self_time;
@@ -3387,7 +3387,7 @@ dump_methods (void)
        int i, c;
        uint64_t calls = 0;
        int header_done = 0;
-       MethodDesc **methods = malloc (num_methods * sizeof (void*));
+       MethodDesc **methods = (MethodDesc **)malloc (num_methods * sizeof (void*));
        MethodDesc *cd;
        c = 0;
        for (i = 0; i < HASH_SIZE; ++i) {
@@ -3428,8 +3428,8 @@ dump_methods (void)
 static int
 compare_heap_class (const void *a, const void *b)
 {
-       HeapClassDesc *const*A = a;
-       HeapClassDesc *const*B = b;
+       HeapClassDesc *const *A = (HeapClassDesc *const *)a;
+       HeapClassDesc *const *B = (HeapClassDesc *const *)b;
        uint64_t vala, valb;
        if (alloc_sort_mode == ALLOC_SORT_BYTES) {
                vala = (*A)->total_size;
@@ -3448,8 +3448,8 @@ compare_heap_class (const void *a, const void *b)
 static int
 compare_rev_class (const void *a, const void *b)
 {
-       const HeapClassRevRef *A = a;
-       const HeapClassRevRef *B = b;
+       const HeapClassRevRef *A = (const HeapClassRevRef *)a;
+       const HeapClassRevRef *B = (const HeapClassRevRef *)b;
        if (B->count == A->count)
                return 0;
        if (B->count < A->count)
@@ -3482,7 +3482,7 @@ heap_shot_summary (HeapShot *hs, int hs_num, HeapShot *last_hs)
        int i;
        HeapClassDesc *cd;
        HeapClassDesc **sorted;
-       sorted = malloc (sizeof (void*) * hs->class_count);
+       sorted = (HeapClassDesc **)malloc (sizeof (void*) * hs->class_count);
        for (i = 0; i < hs->hash_size; ++i) {
                cd = hs->class_hash [i];
                if (!cd)
@@ -3523,7 +3523,7 @@ heap_shot_summary (HeapShot *hs, int hs_num, HeapShot *last_hs)
                }
                if (!collect_traces)
                        continue;
-               rev_sorted = malloc (cd->rev_count * sizeof (HeapClassRevRef));
+               rev_sorted = (HeapClassRevRef *)malloc (cd->rev_count * sizeof (HeapClassRevRef));
                k = 0;
                for (j = 0; j < cd->rev_hash_size; ++j) {
                        if (cd->rev_hash [j].klass)
@@ -3542,8 +3542,8 @@ heap_shot_summary (HeapShot *hs, int hs_num, HeapShot *last_hs)
 static int
 compare_heap_shots (const void *a, const void *b)
 {
-       HeapShot *const*A = a;
-       HeapShot *const*B = b;
+       HeapShot *const *A = (HeapShot *const *)a;
+       HeapShot *const *B = (HeapShot *const *)b;
        if ((*B)->timestamp == (*A)->timestamp)
                return 0;
        if ((*B)->timestamp > (*A)->timestamp)
@@ -3560,7 +3560,7 @@ dump_heap_shots (void)
        int i;
        if (!heap_shots)
                return;
-       hs_sorted = malloc (num_heap_shots * sizeof (void*));
+       hs_sorted = (HeapShot **)malloc (num_heap_shots * sizeof (void*));
        fprintf (outfile, "\nHeap shot summary\n");
        i = 0;
        for (hs = heap_shots; hs; hs = hs->next)
@@ -3650,7 +3650,7 @@ dump_coverage (void)
        g_ptr_array_sort (coverage_assemblies, sort_assemblies);
 
        for (guint i = 0; i < coverage_assemblies->len; i++) {
-               CoverageAssembly *assembly = coverage_assemblies->pdata[i];
+               CoverageAssembly *assembly = (CoverageAssembly *)coverage_assemblies->pdata[i];
                GPtrArray *classes;
 
                if (assembly->number_of_methods != 0) {
@@ -3670,10 +3670,10 @@ dump_coverage (void)
                        g_free (escaped_filename);
                }
 
-               classes = g_hash_table_lookup (coverage_assembly_classes, assembly->name);
+               classes = (GPtrArray *)g_hash_table_lookup (coverage_assembly_classes, assembly->name);
                if (classes) {
                        for (guint j = 0; j < classes->len; j++) {
-                               CoverageClass *klass = classes->pdata[j];
+                               CoverageClass *klass = (CoverageClass *)classes->pdata [j];
 
                                if (klass->number_of_methods > 0) {
                                        int percentage = ((klass->fully_covered + klass->partially_covered) * 100) / klass->number_of_methods;
@@ -3693,7 +3693,7 @@ dump_coverage (void)
        }
 
        for (guint i = 0; i < coverage_methods->len; i++) {
-               CoverageMethod *method = coverage_methods->pdata[i];
+               CoverageMethod *method = (CoverageMethod *)coverage_methods->pdata [i];
 
                if (coverage_outfile) {
                        char *escaped_assembly, *escaped_class, *escaped_method, *escaped_sig, *escaped_filename;
@@ -3713,7 +3713,7 @@ dump_coverage (void)
                        g_free (escaped_filename);
 
                        for (guint j = 0; j < method->coverage->len; j++) {
-                               CoverageCoverage *coverage = method->coverage->pdata[j];
+                               CoverageCoverage *coverage = (CoverageCoverage *)method->coverage->pdata [j];
                                fprintf (coverage_outfile, "\t\t<statement offset=\"%d\" counter=\"%d\" line=\"%d\" column=\"%d\"/>\n", coverage->offset, coverage->count, coverage->line, coverage->column);
                        }
                        fprintf (coverage_outfile, "\t</method>\n");
index ba614b4de7e0f6c55e4cd49ce7c433522f6344c1..79d80717aaabb9fed6e46a05a8403e7a5f2cd43e 100644 (file)
@@ -124,7 +124,7 @@ prof_jit_leave (MonoProfiler *prof, MonoMethod *method, int result)
        MonoImage *image = mono_class_get_image (mono_method_get_class (method));
        PerImageData *data;
 
-       data = g_hash_table_lookup (prof->images, image);
+       data = (PerImageData *)g_hash_table_lookup (prof->images, image);
        if (!data) {
                data = g_new0 (PerImageData, 1);
                g_hash_table_insert (prof->images, image, data);
index cfefcf6dae7ae3564a34652d3de1cb973333983e..0dff9e980880e9e276e33182ceb53ea43ff693e4 100644 (file)
@@ -112,7 +112,7 @@ static void mismatched_stats_foreach_func (gpointer key, gpointer value, gpointe
                return;
        }
 
-       location = g_hash_table_lookup (prof->string_locations_hash, &hash);
+       location = (StringLocation *)g_hash_table_lookup (prof->string_locations_hash, &hash);
        while (location) {
                if (location->hint && strlen (location->hint) > 0) {
                        if (!bannerShown) {
@@ -243,7 +243,7 @@ static gboolean saved_strings_find_func (gpointer key, gpointer value, gpointer
 
 static inline void store_string_location (MonoProfiler *prof, const gchar *string, guint32 hash, size_t len)
 {
-       StringLocation *location = g_hash_table_lookup (prof->string_locations_hash, &hash);
+       StringLocation *location = (StringLocation *)g_hash_table_lookup (prof->string_locations_hash, &hash);
        SavedString *saved;
        SavedStringFindInfo info;
        guint32 *hashptr;
@@ -542,5 +542,5 @@ void mono_profiler_startup (const char *desc)
        mono_profiler_install_iomap (mono_portability_iomap_event);
        mono_profiler_install_allocation (mono_portability_remember_alloc);
 
-       mono_profiler_set_events (MONO_PROFILE_ALLOCATIONS | MONO_PROFILE_IOMAP_EVENTS);
+       mono_profiler_set_events ((MonoProfileFlags)(MONO_PROFILE_ALLOCATIONS | MONO_PROFILE_IOMAP_EVENTS));
 }
index 9494ec445f056844018c0d2251022a68467e63fa..9120ae06916850b4154f96828b7bb34757b40a41 100644 (file)
@@ -522,7 +522,7 @@ static char*
 pstrdup (const char *s)
 {
        int len = strlen (s) + 1;
-       char *p = malloc (len);
+       char *p = (char *)malloc (len);
        memcpy (p, s, len);
        return p;
 }
@@ -530,7 +530,7 @@ pstrdup (const char *s)
 static StatBuffer*
 create_stat_buffer (void)
 {
-       StatBuffer* buf = alloc_buffer (BUFFER_SIZE);
+       StatBuffer* buf = (StatBuffer *)alloc_buffer (BUFFER_SIZE);
        buf->size = BUFFER_SIZE;
        buf->data_end = (uintptr_t*)((unsigned char*)buf + buf->size);
        buf->data = buf->buf;
@@ -540,7 +540,7 @@ create_stat_buffer (void)
 static LogBuffer*
 create_buffer (void)
 {
-       LogBuffer* buf = alloc_buffer (BUFFER_SIZE);
+       LogBuffer* buf = (LogBuffer *)alloc_buffer (BUFFER_SIZE);
        buf->size = BUFFER_SIZE;
        buf->time_base = current_time ();
        buf->last_time = buf->time_base;
@@ -571,29 +571,29 @@ ensure_logbuf_inner (LogBuffer *old, int bytes)
        if (old && old->data + bytes + 100 < old->data_end)
                return old;
 
-       LogBuffer *new = create_buffer ();
-       new->thread_id = thread_id ();
-       new->next = old;
+       LogBuffer *new_ = (LogBuffer *)create_buffer ();
+       new_->thread_id = thread_id ();
+       new_->next = old;
 
        if (old)
-               new->call_depth = old->call_depth;
+               new_->call_depth = old->call_depth;
 
-       return new;
+       return new_;
 }
 
 static LogBuffer*
 ensure_logbuf (int bytes)
 {
        LogBuffer *old = TLS_GET (LogBuffer, tlsbuffer);
-       LogBuffer *new = ensure_logbuf_inner (old, bytes);
+       LogBuffer *new_ = ensure_logbuf_inner (old, bytes);
 
-       if (new == old)
+       if (new_ == old)
                return old; // Still enough space.
 
-       TLS_SET (tlsbuffer, new);
+       TLS_SET (tlsbuffer, new_);
        init_thread ();
 
-       return new;
+       return new_;
 }
 
 static void
@@ -720,7 +720,7 @@ register_method_local (MonoProfiler *prof, MonoMethod *method, MonoJitInfo *ji)
                 */
                //g_assert (ji);
 
-               MethodInfo *info = malloc (sizeof (MethodInfo));
+               MethodInfo *info = (MethodInfo *)malloc (sizeof (MethodInfo));
 
                info->method = method;
                info->ji = ji;
@@ -845,7 +845,7 @@ dump_header (MonoProfiler *profiler)
 static void
 send_buffer (MonoProfiler *prof, GPtrArray *methods, LogBuffer *buffer)
 {
-       WriterQueueEntry *entry = calloc (1, sizeof (WriterQueueEntry));
+       WriterQueueEntry *entry = (WriterQueueEntry *)calloc (1, sizeof (WriterQueueEntry));
        mono_lock_free_queue_node_init (&entry->node, FALSE);
        entry->methods = methods;
        entry->buffer = buffer;
@@ -1056,7 +1056,7 @@ static int num_frames = MAX_FRAMES;
 static mono_bool
 walk_stack (MonoMethod *method, int32_t native_offset, int32_t il_offset, mono_bool managed, void* data)
 {
-       FrameData *frame = data;
+       FrameData *frame = (FrameData *)data;
        if (method && frame->count < num_frames) {
                frame->il_offsets [frame->count] = il_offset;
                frame->native_offsets [frame->count] = native_offset;
@@ -1271,7 +1271,7 @@ type_name (MonoClass *klass)
        char buf [1024];
        char *p;
        push_nesting (buf, klass);
-       p = malloc (strlen (buf) + 1);
+       p = (char *)malloc (strlen (buf) + 1);
        strcpy (p, buf);
        return p;
 }
@@ -1595,7 +1595,7 @@ code_buffer_new (MonoProfiler *prof, void *buffer, int size, MonoProfilerCodeBuf
        char *name;
        LogBuffer *logbuffer;
        if (type == MONO_PROFILER_CODE_BUFFER_SPECIFIC_TRAMPOLINE) {
-               name = data;
+               name = (char *)data;
                nlen = strlen (name) + 1;
        } else {
                name = NULL;
@@ -1959,7 +1959,7 @@ typedef struct {
 static mono_bool
 async_walk_stack (MonoMethod *method, MonoDomain *domain, void *base_address, int offset, void *data)
 {
-       AsyncFrameData *frame = data;
+       AsyncFrameData *frame = (AsyncFrameData *)data;
        if (frame->count < num_frames) {
                frame->data [frame->count].method = method;
                frame->data [frame->count].domain = domain;
@@ -2017,7 +2017,7 @@ mono_sample_hit (MonoProfiler *profiler, unsigned char *ip, void *context)
                do {
                        oldsb = profiler->stat_buffers;
                        sbuf->next = oldsb;
-                       foundsb = InterlockedCompareExchangePointer ((void * volatile*)&profiler->stat_buffers, sbuf, oldsb);
+                       foundsb = (StatBuffer *)InterlockedCompareExchangePointer ((void * volatile*)&profiler->stat_buffers, sbuf, oldsb);
                } while (foundsb != oldsb);
                if (do_debug)
                        ign_res (write (2, "overflow\n", 9));
@@ -2032,7 +2032,7 @@ mono_sample_hit (MonoProfiler *profiler, unsigned char *ip, void *context)
        do {
                old_data = sbuf->data;
                new_data = old_data + SAMPLE_EVENT_SIZE_IN_SLOTS (bt_data.count);
-               data = InterlockedCompareExchangePointer ((void * volatile*)&sbuf->data, new_data, old_data);
+               data = (uintptr_t *)InterlockedCompareExchangePointer ((void * volatile*)&sbuf->data, new_data, old_data);
        } while (data != old_data);
        if (old_data >= sbuf->data_end)
                return; /* lost event */
@@ -2089,7 +2089,7 @@ add_code_pointer (uintptr_t ip)
                size_code_pages *= 2;
                if (size_code_pages == 0)
                        size_code_pages = 16;
-               n = calloc (sizeof (uintptr_t) * size_code_pages, 1);
+               n = (uintptr_t *)calloc (sizeof (uintptr_t) * size_code_pages, 1);
                for (i = 0; i < old_size; ++i) {
                        if (code_pages [i])
                                add_code_page (n, size_code_pages, code_pages [i]);
@@ -2425,7 +2425,7 @@ dump_sample_hits (MonoProfiler *prof, StatBuffer *sbuf)
        g_ptr_array_sort (prof->sorted_sample_events, compare_sample_events);
 
        for (guint sidx = 0; sidx < prof->sorted_sample_events->len; sidx++) {
-               uintptr_t *sample = g_ptr_array_index (prof->sorted_sample_events, sidx);
+               uintptr_t *sample = (uintptr_t *)g_ptr_array_index (prof->sorted_sample_events, sidx);
                int count = sample [0] & 0xff;
                int mbt_count = (sample [0] & 0xff00) >> 8;
                int type = sample [0] >> 16;
@@ -2438,7 +2438,7 @@ dump_sample_hits (MonoProfiler *prof, StatBuffer *sbuf)
                        void *address = (void*)managed_sample_base [i * 4 + 2];
 
                        if (!method) {
-                               MonoJitInfo *ji = mono_jit_info_table_find (domain, address);
+                               MonoJitInfo *ji = mono_jit_info_table_find (domain, (char *)address);
 
                                if (ji)
                                        managed_sample_base [i * 4 + 0] = (uintptr_t)mono_jit_info_get_method (ji);
@@ -2795,7 +2795,7 @@ counters_add_agent (MonoCounter *counter)
                }
        }
 
-       agent = malloc (sizeof (MonoCounterAgent));
+       agent = (MonoCounterAgent *)malloc (sizeof (MonoCounterAgent));
        agent->counter = counter;
        agent->value = NULL;
        agent->value_size = 0;
@@ -3275,7 +3275,7 @@ parse_generic_type_names(char *name)
        if (name == NULL || *name == '\0')
                return g_strdup ("");
 
-       if (!(ret = new_name = calloc (strlen (name) * 4 + 1, sizeof (char))))
+       if (!(ret = new_name = (char *)calloc (strlen (name) * 4 + 1, sizeof (char))))
                return NULL;
 
        do {
@@ -3340,7 +3340,7 @@ build_method_buffer (gpointer key, gpointer value, gpointer userdata)
        method_name = mono_method_get_name (method);
 
        if (coverage_data->len != 0) {
-               CoverageEntry *entry = coverage_data->pdata[0];
+               CoverageEntry *entry = (CoverageEntry *)coverage_data->pdata[0];
                first_filename = entry->filename ? entry->filename : "";
        } else
                first_filename = "";
@@ -3377,7 +3377,7 @@ build_method_buffer (gpointer key, gpointer value, gpointer userdata)
        safe_send (prof, logbuffer);
 
        for (i = 0; i < coverage_data->len; i++) {
-               CoverageEntry *entry = coverage_data->pdata[i];
+               CoverageEntry *entry = (CoverageEntry *)coverage_data->pdata[i];
 
                logbuffer = ensure_logbuf (
                        EVENT_SIZE /* event */ +
@@ -3473,7 +3473,7 @@ build_class_buffer (gpointer key, gpointer value, gpointer userdata)
 static void
 get_coverage_for_image (MonoImage *image, int *number_of_methods, guint *fully_covered, int *partially_covered)
 {
-       MonoLockFreeQueue *image_methods = mono_conc_hashtable_lookup (image_to_methods, image);
+       MonoLockFreeQueue *image_methods = (MonoLockFreeQueue *)mono_conc_hashtable_lookup (image_to_methods, image);
 
        *number_of_methods = mono_image_get_table_rows (image, MONO_TABLE_METHOD);
        if (image_methods)
@@ -3570,7 +3570,7 @@ process_method_enter_coverage (MonoProfiler *prof, MonoMethod *method)
 static MonoLockFreeQueueNode *
 create_method_node (MonoMethod *method)
 {
-       MethodNode *node = g_malloc (sizeof (MethodNode));
+       MethodNode *node = (MethodNode *)g_malloc (sizeof (MethodNode));
        mono_lock_free_queue_node_init ((MonoLockFreeQueueNode *) node, FALSE);
        node->method = method;
 
@@ -3631,7 +3631,7 @@ coverage_filter (MonoProfiler *prof, MonoMethod *method)
                has_positive = FALSE;
                found = FALSE;
                for (guint i = 0; i < prof->coverage_filters->len; ++i) {
-                       char *filter = g_ptr_array_index (prof->coverage_filters, i);
+                       char *filter = (char *)g_ptr_array_index (prof->coverage_filters, i);
 
                        if (filter [0] == '+') {
                                filter = &filter [1];
@@ -3662,7 +3662,7 @@ coverage_filter (MonoProfiler *prof, MonoMethod *method)
 
                for (guint i = 0; i < prof->coverage_filters->len; ++i) {
                        // FIXME: Is substring search sufficient?
-                       char *filter = g_ptr_array_index (prof->coverage_filters, i);
+                       char *filter = (char *)g_ptr_array_index (prof->coverage_filters, i);
                        if (filter [0] == '+')
                                continue;
 
@@ -3701,10 +3701,10 @@ coverage_filter (MonoProfiler *prof, MonoMethod *method)
        mono_conc_hashtable_insert (coverage_assemblies, assembly, assembly);
        mono_os_mutex_unlock (&coverage_mutex);
 
-       image_methods = mono_conc_hashtable_lookup (image_to_methods, image);
+       image_methods = (MonoLockFreeQueue *)mono_conc_hashtable_lookup (image_to_methods, image);
 
        if (image_methods == NULL) {
-               image_methods = g_malloc (sizeof (MonoLockFreeQueue));
+               image_methods = (MonoLockFreeQueue *)g_malloc (sizeof (MonoLockFreeQueue));
                mono_lock_free_queue_init (image_methods);
                mono_os_mutex_lock (&coverage_mutex);
                mono_conc_hashtable_insert (image_to_methods, image, image_methods);
@@ -3714,10 +3714,10 @@ coverage_filter (MonoProfiler *prof, MonoMethod *method)
        node = create_method_node (method);
        mono_lock_free_queue_enqueue (image_methods, node);
 
-       class_methods = mono_conc_hashtable_lookup (coverage_classes, klass);
+       class_methods = (MonoLockFreeQueue *)mono_conc_hashtable_lookup (coverage_classes, klass);
 
        if (class_methods == NULL) {
-               class_methods = g_malloc (sizeof (MonoLockFreeQueue));
+               class_methods = (MonoLockFreeQueue *)g_malloc (sizeof (MonoLockFreeQueue));
                mono_lock_free_queue_init (class_methods);
                mono_os_mutex_lock (&coverage_mutex);
                mono_conc_hashtable_insert (coverage_classes, klass, class_methods);
@@ -3756,7 +3756,7 @@ get_file_content (FILE *stream)
        if (filesize > MAX_FILE_SIZE)
          return NULL;
 
-       buffer = g_malloc ((filesize + 1) * sizeof (char));
+       buffer = (char *)g_malloc ((filesize + 1) * sizeof (char));
        while ((bytes_read = fread (buffer + offset, 1, LINE_BUFFER_SIZE, stream)) > 0)
                offset += bytes_read;
 
@@ -3932,7 +3932,7 @@ new_filename (const char* filename)
                1900 + ts->tm_year, 1 + ts->tm_mon, ts->tm_mday, ts->tm_hour, ts->tm_min, ts->tm_sec);
        s_date = strlen (time_buf);
        s_pid = strlen (pid_buf);
-       d = res = malloc (strlen (filename) + s_date * count_dates + s_pid * count_pids);
+       d = res = (char *)malloc (strlen (filename) + s_date * count_dates + s_pid * count_pids);
        for (p = filename; *p; p++) {
                if (*p != '%') {
                        *d++ = *p;
@@ -3967,7 +3967,7 @@ extern void mono_threads_attach_tools_thread (void);
 static void*
 helper_thread (void* arg)
 {
-       MonoProfiler* prof = arg;
+       MonoProfiler* prof = (MonoProfiler *)arg;
        int command_socket;
        int len;
        char buf [64];
@@ -4153,7 +4153,7 @@ start_helper_thread (MonoProfiler* prof)
 static void *
 writer_thread (void *arg)
 {
-       MonoProfiler *prof = arg;
+       MonoProfiler *prof = (MonoProfiler *)arg;
 
        mono_threads_attach_tools_thread ();
 
@@ -4175,7 +4175,7 @@ writer_thread (void *arg)
                         * methods have metadata emitted before they're referenced.
                         */
                        for (guint i = 0; i < entry->methods->len; i++) {
-                               MethodInfo *info = g_ptr_array_index (entry->methods, i);
+                               MethodInfo *info = (MethodInfo *)g_ptr_array_index (entry->methods, i);
 
                                if (mono_conc_hashtable_lookup (prof->method_table, info->method))
                                        continue;
@@ -4274,7 +4274,7 @@ create_profiler (const char *filename, GPtrArray *filters)
        MonoProfiler *prof;
        char *nf;
        int force_delete = 0;
-       prof = calloc (1, sizeof (MonoProfiler));
+       prof = (MonoProfiler *)calloc (1, sizeof (MonoProfiler));
 
        prof->command_port = command_port;
        if (filename && *filename == '-') {
@@ -4291,7 +4291,7 @@ create_profiler (const char *filename, GPtrArray *filters)
                nf = new_filename (filename);
                if (do_report) {
                        int s = strlen (nf) + 32;
-                       char *p = malloc (s);
+                       char *p = (char *)malloc (s);
                        snprintf (p, s, "|mprof-report '--out=%s' -", nf);
                        free (nf);
                        nf = p;
@@ -4404,7 +4404,7 @@ match_option (const char* p, const char *opt, char **rval)
                                } else {
                                        l = end - opt;
                                }
-                               val = malloc (l + 1);
+                               val = (char *)malloc (l + 1);
                                memcpy (val, opt, l);
                                val [l] = 0;
                                *rval = val;
@@ -4756,7 +4756,7 @@ mono_profiler_startup (const char *desc)
                mono_profiler_install_statistical (mono_sample_hit);
        }
 
-       mono_profiler_set_events (events);
+       mono_profiler_set_events ((MonoProfileFlags)events);
 
        TLS_INIT (tlsbuffer);
        TLS_INIT (tlsmethodlist);
index 6b8a1a3dda85bab21a230052341e579d1f390806..a609c69d86fdb5e8185662c48775eea22ce5bb87 100644 (file)
@@ -67,7 +67,7 @@ typedef enum {
 
 #define MONO_GC_HANDLE_TYPE_SHIFT (3)
 #define MONO_GC_HANDLE_TYPE_MASK ((1 << MONO_GC_HANDLE_TYPE_SHIFT) - 1)
-#define MONO_GC_HANDLE_TYPE(x) (((x) & MONO_GC_HANDLE_TYPE_MASK) - 1)
+#define MONO_GC_HANDLE_TYPE(x) ((GCHandleType)(((x) & MONO_GC_HANDLE_TYPE_MASK) - 1))
 #define MONO_GC_HANDLE_SLOT(x) ((x) >> MONO_GC_HANDLE_TYPE_SHIFT)
 #define MONO_GC_HANDLE_TYPE_IS_WEAK(x) ((x) <= HANDLE_WEAK_TRACK)
 #define MONO_GC_HANDLE(slot, type) (((slot) << MONO_GC_HANDLE_TYPE_SHIFT) | (((type) & MONO_GC_HANDLE_TYPE_MASK) + 1))
index 413388810f8b4ec8053fe82bd6acd65f235a9af1..0832bc161fe896cbef159ba53ac33473d584bb41 100644 (file)
@@ -196,7 +196,7 @@ sgen_alloc_obj_nolock (GCVTable vtable, size_t size)
         */
 
        if (real_size > SGEN_MAX_SMALL_OBJ_SIZE) {
-               p = sgen_los_alloc_large_inner (vtable, ALIGN_UP (real_size));
+               p = (void **)sgen_los_alloc_large_inner (vtable, ALIGN_UP (real_size));
        } else {
                /* tlab_next and tlab_temp_end are TLS vars so accessing them might be expensive */
 
@@ -252,7 +252,7 @@ sgen_alloc_obj_nolock (GCVTable vtable, size_t size)
                        available_in_tlab = (int)(TLAB_REAL_END - TLAB_NEXT);//We'll never have tlabs > 2Gb
                        if (size > tlab_size || available_in_tlab > SGEN_MAX_NURSERY_WASTE) {
                                /* Allocate directly from the nursery */
-                               p = sgen_nursery_alloc (size);
+                               p = (void **)sgen_nursery_alloc (size);
                                if (!p) {
                                        /*
                                         * We couldn't allocate from the nursery, so we try
@@ -273,7 +273,7 @@ sgen_alloc_obj_nolock (GCVTable vtable, size_t size)
                                         */
                                        sgen_ensure_free_space (real_size);
                                        if (!degraded_mode)
-                                               p = sgen_nursery_alloc (size);
+                                               p = (void **)sgen_nursery_alloc (size);
                                }
                                if (!p)
                                        return alloc_degraded (vtable, size, FALSE);
@@ -285,12 +285,12 @@ sgen_alloc_obj_nolock (GCVTable vtable, size_t size)
                                        SGEN_LOG (3, "Retire TLAB: %p-%p [%ld]", TLAB_START, TLAB_REAL_END, (long)(TLAB_REAL_END - TLAB_NEXT - size));
                                sgen_nursery_retire_region (p, available_in_tlab);
 
-                               p = sgen_nursery_alloc_range (tlab_size, size, &alloc_size);
+                               p = (void **)sgen_nursery_alloc_range (tlab_size, size, &alloc_size);
                                if (!p) {
                                        /* See comment above in similar case. */
                                        sgen_ensure_free_space (tlab_size);
                                        if (!degraded_mode)
-                                               p = sgen_nursery_alloc_range (tlab_size, size, &alloc_size);
+                                               p = (void **)sgen_nursery_alloc_range (tlab_size, size, &alloc_size);
                                }
                                if (!p)
                                        return alloc_degraded (vtable, size, FALSE);
@@ -304,7 +304,7 @@ sgen_alloc_obj_nolock (GCVTable vtable, size_t size)
                                zero_tlab_if_necessary (TLAB_START, alloc_size);
 
                                /* Allocate from the TLAB */
-                               p = (void*)TLAB_NEXT;
+                               p = (void **)TLAB_NEXT;
                                TLAB_NEXT += size;
                                sgen_set_nursery_scan_start ((char*)p);
                        }
@@ -349,7 +349,7 @@ sgen_try_alloc_obj_nolock (GCVTable vtable, size_t size)
 
        if (G_UNLIKELY (size > tlab_size)) {
                /* Allocate directly from the nursery */
-               p = sgen_nursery_alloc (size);
+               p = (void **)sgen_nursery_alloc (size);
                if (!p)
                        return NULL;
                sgen_set_nursery_scan_start ((char*)p);
@@ -380,7 +380,7 @@ sgen_try_alloc_obj_nolock (GCVTable vtable, size_t size)
                        }
                } else if (available_in_tlab > SGEN_MAX_NURSERY_WASTE) {
                        /* Allocate directly from the nursery */
-                       p = sgen_nursery_alloc (size);
+                       p = (void **)sgen_nursery_alloc (size);
                        if (!p)
                                return NULL;
 
@@ -389,7 +389,7 @@ sgen_try_alloc_obj_nolock (GCVTable vtable, size_t size)
                        size_t alloc_size = 0;
 
                        sgen_nursery_retire_region (p, available_in_tlab);
-                       new_next = sgen_nursery_alloc_range (tlab_size, size, &alloc_size);
+                       new_next = (char *)sgen_nursery_alloc_range (tlab_size, size, &alloc_size);
                        p = (void**)new_next;
                        if (!p)
                                return NULL;
@@ -478,7 +478,7 @@ sgen_alloc_obj_pinned (GCVTable vtable, size_t size)
 
        if (size > SGEN_MAX_SMALL_OBJ_SIZE) {
                /* large objects are always pinned anyway */
-               p = sgen_los_alloc_large_inner (vtable, size);
+               p = (GCObject *)sgen_los_alloc_large_inner (vtable, size);
        } else {
                SGEN_ASSERT (9, sgen_client_vtable_is_inited (vtable), "class %s:%s is not initialized", sgen_client_vtable_get_namespace (vtable), sgen_client_vtable_get_name (vtable));
                p = major_collector.alloc_small_pinned_obj (vtable, size, SGEN_VTABLE_HAS_REFERENCES (vtable));
index a5bc104d98b5f8ae04ab1e1a9d6c72a571619428..b6e9479f1479e6a7f65a4acbd2433b470ed9dee1 100644 (file)
@@ -86,8 +86,8 @@ sgen_card_table_wbarrier_set_field (GCObject *obj, gpointer field_ptr, GCObject*
 static void
 sgen_card_table_wbarrier_arrayref_copy (gpointer dest_ptr, gpointer src_ptr, int count)
 {
-       gpointer *dest = dest_ptr;
-       gpointer *src = src_ptr;
+       gpointer *dest = (gpointer *)dest_ptr;
+       gpointer *src = (gpointer *)src_ptr;
 
        /*overlapping that required backward copying*/
        if (src < dest && (src + count) > dest) {
@@ -284,7 +284,7 @@ sgen_card_table_find_address (char *addr)
 static gboolean
 sgen_card_table_find_address_with_cards (char *cards_start, guint8 *cards, char *addr)
 {
-       cards_start = sgen_card_table_align_pointer (cards_start);
+       cards_start = (char *)sgen_card_table_align_pointer (cards_start);
        return cards [(addr - cards_start) >> CARD_BITS];
 }
 
@@ -303,7 +303,7 @@ guint8*
 sgen_card_table_alloc_mod_union (char *obj, mword obj_size)
 {
        size_t num_cards = sgen_card_table_number_of_cards_in_range ((mword) obj, obj_size);
-       guint8 *mod_union = sgen_alloc_internal_dynamic (num_cards, INTERNAL_MEM_CARDTABLE_MOD_UNION, TRUE);
+       guint8 *mod_union = (guint8 *)sgen_alloc_internal_dynamic (num_cards, INTERNAL_MEM_CARDTABLE_MOD_UNION, TRUE);
        memset (mod_union, 0, num_cards);
        return mod_union;
 }
@@ -573,10 +573,10 @@ sgen_card_tables_collect_stats (gboolean begin)
 void
 sgen_card_table_init (SgenRememberedSet *remset)
 {
-       sgen_cardtable = sgen_alloc_os_memory (CARD_COUNT_IN_BYTES, SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE, "card table");
+       sgen_cardtable = (guint8 *)sgen_alloc_os_memory (CARD_COUNT_IN_BYTES, (SgenAllocFlags)(SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE), "card table");
 
 #ifdef SGEN_HAVE_OVERLAPPING_CARDS
-       sgen_shadow_cardtable = sgen_alloc_os_memory (CARD_COUNT_IN_BYTES, SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE, "shadow card table");
+       sgen_shadow_cardtable = (guint8 *)sgen_alloc_os_memory (CARD_COUNT_IN_BYTES, (SgenAllocFlags)(SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE), "shadow card table");
 #endif
 
 #ifdef HEAVY_STATISTICS
index 847269d5d72b575174d6366fd6236e8652b6dc7b..2b7bc60670a3751b20566b5c35f100d1b0d8ecf8 100644 (file)
@@ -50,15 +50,15 @@ par_copy_object_no_checks (char *destination, GCVTable vt, void *obj, mword objs
        obj = destination;
        if (queue) {
                SGEN_LOG (9, "Enqueuing gray object %p (%s)", obj, sgen_client_vtable_get_name (vt));
-               GRAY_OBJECT_ENQUEUE (queue, obj, sgen_vtable_get_descriptor (vt));
+               GRAY_OBJECT_ENQUEUE (queue, (GCObject *)obj, sgen_vtable_get_descriptor (vt));
        }
 }
 
 /*
  * This can return OBJ itself on OOM.
  */
-static MONO_NEVER_INLINE void*
-copy_object_no_checks (void *obj, SgenGrayQueue *queue)
+static MONO_NEVER_INLINE GCObject *
+copy_object_no_checks (GCObject *obj, SgenGrayQueue *queue)
 {
        GCVTable vt = SGEN_LOAD_VTABLE_UNCHECKED (obj);
        gboolean has_references = SGEN_VTABLE_HAS_REFERENCES (vt);
@@ -76,11 +76,11 @@ copy_object_no_checks (void *obj, SgenGrayQueue *queue)
        if (!has_references)
                queue = NULL;
 
-       par_copy_object_no_checks (destination, vt, obj, objsize, queue);
+       par_copy_object_no_checks ((char *)destination, vt, obj, objsize, queue);
        /* FIXME: mark mod union cards if necessary */
 
        /* set the forwarding pointer */
        SGEN_FORWARD_OBJECT (obj, destination);
 
-       return destination;
+       return (GCObject *)destination;
 }
index 79e23ed453bea3003b1ed3947e7fdc786770ec73..a7f61cc8f4eacc5a7ee0f731b0e4ed434193d3a5 100644 (file)
@@ -113,7 +113,7 @@ describe_pointer (char *ptr, gboolean need_setup)
        if (object_is_pinned (ptr))
                printf ("Object is pinned.\n");
 
-       if ((forwarded = object_is_forwarded (ptr))) {
+       if ((forwarded = (char *)object_is_forwarded (ptr))) {
                printf ("Object is forwarded to %p:\n", forwarded);
                ptr = forwarded;
                goto restart;
@@ -334,7 +334,7 @@ static void
 setup_valid_nursery_objects (void)
 {
        if (!valid_nursery_objects)
-               valid_nursery_objects = sgen_alloc_os_memory (DEFAULT_NURSERY_SIZE, SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE, "debugging data");
+               valid_nursery_objects = (GCObject **)sgen_alloc_os_memory (DEFAULT_NURSERY_SIZE, (SgenAllocFlags)(SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE), "debugging data");
        valid_nursery_object_count = 0;
        sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data, setup_mono_sgen_scan_area_with_callback, NULL, FALSE, FALSE);
 }
@@ -542,7 +542,7 @@ find_pinning_reference (char *obj, size_t size)
        RootRecord *root;
        char *endobj = obj + size;
 
-       SGEN_HASH_TABLE_FOREACH (&roots_hash [ROOT_TYPE_NORMAL], start, root) {
+       SGEN_HASH_TABLE_FOREACH (&roots_hash [ROOT_TYPE_NORMAL], char **, start, RootRecord *, root) {
                /* if desc is non-null it has precise info */
                if (!root->root_desc) {
                        while (start < (char**)root->end_root) {
@@ -786,7 +786,7 @@ scan_roots_for_specific_ref (GCObject *key, int root_type)
        RootRecord *root;
        check_key = key;
 
-       SGEN_HASH_TABLE_FOREACH (&roots_hash [root_type], start_root, root) {
+       SGEN_HASH_TABLE_FOREACH (&roots_hash [root_type], void **, start_root, RootRecord *, root) {
                SgenDescriptor desc = root->root_desc;
 
                check_root = root;
@@ -796,13 +796,13 @@ scan_roots_for_specific_ref (GCObject *key, int root_type)
                        desc >>= ROOT_DESC_TYPE_SHIFT;
                        while (desc) {
                                if (desc & 1)
-                                       check_root_obj_specific_ref (root, key, *start_root);
+                                       check_root_obj_specific_ref (root, key, (GCObject *)*start_root);
                                desc >>= 1;
                                start_root++;
                        }
                        return;
                case ROOT_DESC_COMPLEX: {
-                       gsize *bitmap_data = sgen_get_complex_descriptor_bitmap (desc);
+                       gsize *bitmap_data = (gsize *)sgen_get_complex_descriptor_bitmap (desc);
                        int bwords = (int) ((*bitmap_data) - 1);
                        void **start_run = start_root;
                        bitmap_data++;
@@ -811,7 +811,7 @@ scan_roots_for_specific_ref (GCObject *key, int root_type)
                                void **objptr = start_run;
                                while (bmap) {
                                        if (bmap & 1)
-                                               check_root_obj_specific_ref (root, key, *objptr);
+                                               check_root_obj_specific_ref (root, key, (GCObject *)*objptr);
                                        bmap >>= 1;
                                        ++objptr;
                                }
@@ -853,9 +853,9 @@ mono_gc_scan_for_specific_ref (GCObject *key, gboolean precise)
        scan_roots_for_specific_ref (key, ROOT_TYPE_NORMAL);
        scan_roots_for_specific_ref (key, ROOT_TYPE_WBARRIER);
 
-       SGEN_HASH_TABLE_FOREACH (&roots_hash [ROOT_TYPE_PINNED], ptr, root) {
+       SGEN_HASH_TABLE_FOREACH (&roots_hash [ROOT_TYPE_PINNED], void **, ptr, RootRecord *, root) {
                while (ptr < (void**)root->end_root) {
-                       check_root_obj_specific_ref (root, *ptr, key);
+                       check_root_obj_specific_ref (root, (GCObject *)*ptr, key);
                        ++ptr;
                }
        } SGEN_HASH_TABLE_FOREACH_END;
@@ -887,7 +887,7 @@ sgen_scan_for_registered_roots_in_domain (MonoDomain *domain, int root_type)
        void **start_root;
        RootRecord *root;
        check_domain = domain;
-       SGEN_HASH_TABLE_FOREACH (&roots_hash [root_type], start_root, root) {
+       SGEN_HASH_TABLE_FOREACH (&roots_hash [root_type], void **, start_root, RootRecord *, root) {
                SgenDescriptor desc = root->root_desc;
 
                /* The MonoDomain struct is allowed to hold
@@ -900,13 +900,13 @@ sgen_scan_for_registered_roots_in_domain (MonoDomain *domain, int root_type)
                        desc >>= ROOT_DESC_TYPE_SHIFT;
                        while (desc) {
                                if ((desc & 1) && *start_root)
-                                       check_obj_not_in_domain (*start_root);
+                                       check_obj_not_in_domain ((MonoObject **)*start_root);
                                desc >>= 1;
                                start_root++;
                        }
                        break;
                case ROOT_DESC_COMPLEX: {
-                       gsize *bitmap_data = sgen_get_complex_descriptor_bitmap (desc);
+                       gsize *bitmap_data = (gsize *)sgen_get_complex_descriptor_bitmap (desc);
                        int bwords = (int)((*bitmap_data) - 1);
                        void **start_run = start_root;
                        bitmap_data++;
@@ -915,7 +915,7 @@ sgen_scan_for_registered_roots_in_domain (MonoDomain *domain, int root_type)
                                void **objptr = start_run;
                                while (bmap) {
                                        if ((bmap & 1) && *objptr)
-                                               check_obj_not_in_domain (*objptr);
+                                               check_obj_not_in_domain ((MonoObject **)*objptr);
                                        bmap >>= 1;
                                        ++objptr;
                                }
@@ -985,7 +985,7 @@ check_reference_for_xdomain (GCObject **ptr, GCObject *obj, MonoDomain *domain)
 {
        MonoObject *ref = *ptr;
        size_t offset = (char*)(ptr) - (char*)obj;
-       MonoClass *class;
+       MonoClass *klass;
        MonoClassField *field;
        char *str;
 
@@ -995,12 +995,12 @@ check_reference_for_xdomain (GCObject **ptr, GCObject *obj, MonoDomain *domain)
                return;
 
        field = NULL;
-       for (class = obj->vtable->klass; class; class = class->parent) {
+       for (klass = obj->vtable->klass; klass; klass = klass->parent) {
                int i;
 
-               for (i = 0; i < class->field.count; ++i) {
-                       if (class->fields[i].offset == offset) {
-                               field = &class->fields[i];
+               for (i = 0; i < klass->field.count; ++i) {
+                       if (klass->fields[i].offset == offset) {
+                               field = &klass->fields[i];
                                break;
                        }
                }
@@ -1113,7 +1113,7 @@ dump_object (GCObject *obj, gboolean dump_location)
 #ifndef SGEN_WITHOUT_MONO
        static char class_name [1024];
 
-       MonoClass *class = mono_object_class (obj);
+       MonoClass *klass = mono_object_class (obj);
        int i, j;
 
        /*
@@ -1121,16 +1121,16 @@ dump_object (GCObject *obj, gboolean dump_location)
         * in strings, so we just ignore them;
         */
        i = j = 0;
-       while (class->name [i] && j < sizeof (class_name) - 1) {
-               if (!strchr ("<>\"", class->name [i]))
-                       class_name [j++] = class->name [i];
+       while (klass->name [i] && j < sizeof (class_name) - 1) {
+               if (!strchr ("<>\"", klass->name [i]))
+                       class_name [j++] = klass->name [i];
                ++i;
        }
        g_assert (j < sizeof (class_name));
        class_name [j] = 0;
 
        fprintf (heap_dump_file, "<object class=\"%s.%s\" size=\"%zd\"",
-                       class->name_space, class_name,
+                       klass->name_space, class_name,
                        safe_object_get_size (obj));
        if (dump_location) {
                const char *location;
@@ -1181,7 +1181,7 @@ sgen_debug_dump_heap (const char *type, int num, const char *reason)
        fprintf (heap_dump_file, "<pinned-objects>\n");
        pinned_objects = sgen_pin_stats_get_object_list ();
        for (i = 0; i < pinned_objects->next_slot; ++i)
-               dump_object (pinned_objects->data [i], TRUE);
+               dump_object ((GCObject *)pinned_objects->data [i], TRUE);
        fprintf (heap_dump_file, "</pinned-objects>\n");
 
        sgen_dump_section (nursery_section, "nursery");
@@ -1201,7 +1201,7 @@ static GCObject *found_obj;
 static void
 find_object_for_ptr_callback (GCObject *obj, size_t size, void *user_data)
 {
-       char *ptr = user_data;
+       char *ptr = (char *)user_data;
 
        if (ptr >= (char*)obj && ptr < (char*)obj + size) {
                g_assert (!found_obj);
index 1cae87f4bc201ba3fe8ba2810bedc3bf87a94910..177ba02c8745981eb62ba9ea08f94399681d09d6 100644 (file)
@@ -95,7 +95,7 @@ alloc_complex_descriptor (gsize *bitmap, int numbits)
        }
        if (complex_descriptors_next + nwords > complex_descriptors_size) {
                int new_size = complex_descriptors_size * 2 + nwords;
-               complex_descriptors = g_realloc (complex_descriptors, new_size * sizeof (gsize));
+               complex_descriptors = (gsize *)g_realloc (complex_descriptors, new_size * sizeof (gsize));
                complex_descriptors_size = new_size;
        }
        SGEN_LOG (6, "Complex descriptor %d, size: %d (total desc memory: %d)", res, nwords, complex_descriptors_size);
@@ -293,7 +293,7 @@ mono_gc_make_root_descr_all_refs (int numbits)
        if (numbits < 32 && all_ref_root_descrs [numbits])
                return all_ref_root_descrs [numbits];
 
-       gc_bitmap = g_malloc0 (ALIGN_TO (ALIGN_TO (numbits, 8) + 1, sizeof (gsize)));
+       gc_bitmap = (gsize *)g_malloc0 (ALIGN_TO (ALIGN_TO (numbits, 8) + 1, sizeof (gsize)));
        memset (gc_bitmap, 0xff, num_bytes);
        if (numbits < ((sizeof (*gc_bitmap) * 8) - ROOT_DESC_TYPE_SHIFT)) 
                gc_bitmap[0] = GUINT64_TO_LE(gc_bitmap[0]);
index 9641594483eec65cc456942dfaf37e235916ea16..a8ffed926faca04cd3ac14f5d3138eb7a47b78b1 100644 (file)
@@ -121,7 +121,7 @@ sgen_collect_bridge_objects (int generation, ScanCopyContext ctx)
        if (no_finalize)
                return;
 
-       SGEN_HASH_TABLE_FOREACH (hash_table, object, dummy) {
+       SGEN_HASH_TABLE_FOREACH (hash_table, GCObject *, object, gpointer, dummy) {
                int tag = tagged_object_get_tag (object);
                object = tagged_object_get_object (object);
 
@@ -191,7 +191,7 @@ sgen_finalize_in_range (int generation, ScanCopyContext ctx)
 
        if (no_finalize)
                return;
-       SGEN_HASH_TABLE_FOREACH (hash_table, object, dummy) {
+       SGEN_HASH_TABLE_FOREACH (hash_table, GCObject *, object, gpointer, dummy) {
                int tag = tagged_object_get_tag (object);
                object = tagged_object_get_object (object);
                if (!major_collector.is_object_live (object)) {
@@ -578,7 +578,7 @@ finalizers_with_predicate (SgenObjectPredicateFunc predicate, void *user_data, G
        if (no_finalize || !out_size || !out_array)
                return 0;
        count = 0;
-       SGEN_HASH_TABLE_FOREACH (hash_table, object, dummy) {
+       SGEN_HASH_TABLE_FOREACH (hash_table, GCObject *, object, gpointer, dummy) {
                object = tagged_object_get_object (object);
 
                if (predicate (object, user_data)) {
@@ -634,7 +634,7 @@ sgen_remove_finalizers_if (SgenObjectPredicateFunc predicate, void *user_data, i
        GCObject *object;
        gpointer dummy G_GNUC_UNUSED;
 
-       SGEN_HASH_TABLE_FOREACH (hash_table, object, dummy) {
+       SGEN_HASH_TABLE_FOREACH (hash_table, GCObject *, object, gpointer, dummy) {
                object = tagged_object_get_object (object);
 
                if (predicate (object, user_data)) {
index 7189811c50e98cacd2faa9ecbe9d3db45fae72a4..b73c1d88ff1d2d1330fccfa95dd7c106ee86724c 100644 (file)
@@ -438,7 +438,7 @@ gray_queue_redirect (SgenGrayQueue *queue)
                GrayQueueSection *section = sgen_gray_object_dequeue_section (queue);
                if (!section)
                        break;
-               sgen_section_gray_queue_enqueue (queue->alloc_prepare_data, section);
+               sgen_section_gray_queue_enqueue ((SgenSectionGrayQueue *)queue->alloc_prepare_data, section);
                wake = TRUE;
        }
 
@@ -471,7 +471,7 @@ sgen_scan_area_with_callback (char *start, char *end, IterateObjectCallbackFunc
                }
 
                if (allow_flags) {
-                       if (!(obj = SGEN_OBJECT_IS_FORWARDED (start)))
+                       if (!(obj = (char *)SGEN_OBJECT_IS_FORWARDED (start)))
                                obj = start;
                } else {
                        obj = start;
@@ -500,7 +500,7 @@ sgen_scan_area_with_callback (char *start, char *end, IterateObjectCallbackFunc
  * lock must be held.  For serial collectors that is not necessary.
  */
 void
-sgen_add_to_global_remset (gpointer ptr, gpointer obj)
+sgen_add_to_global_remset (gpointer ptr, GCObject *obj)
 {
        SGEN_ASSERT (5, sgen_ptr_in_nursery (obj), "Target pointer of global remset must be in the nursery");
 
@@ -862,7 +862,7 @@ pin_from_roots (void *start_nursery, void *end_nursery, ScanCopyContext ctx)
        RootRecord *root;
        SGEN_LOG (2, "Scanning pinned roots (%d bytes, %d/%d entries)", (int)roots_size, roots_hash [ROOT_TYPE_NORMAL].num_entries, roots_hash [ROOT_TYPE_PINNED].num_entries);
        /* objects pinned from the API are inside these roots */
-       SGEN_HASH_TABLE_FOREACH (&roots_hash [ROOT_TYPE_PINNED], start_root, root) {
+       SGEN_HASH_TABLE_FOREACH (&roots_hash [ROOT_TYPE_PINNED], void **, start_root, RootRecord *, root) {
                SGEN_LOG (6, "Pinned roots %p-%p", start_root, root->end_root);
                sgen_conservatively_pin_objects_from (start_root, (void**)root->end_root, start_nursery, end_nursery, PIN_TYPE_OTHER);
        } SGEN_HASH_TABLE_FOREACH_END;
@@ -879,7 +879,7 @@ pin_from_roots (void *start_nursery, void *end_nursery, ScanCopyContext ctx)
 static void
 single_arg_user_copy_or_mark (GCObject **obj, void *gc_data)
 {
-       ScanCopyContext *ctx = gc_data;
+       ScanCopyContext *ctx = (ScanCopyContext *)gc_data;
        ctx->ops->copy_or_mark_object (obj, ctx->queue);
 }
 
@@ -910,7 +910,7 @@ precisely_scan_objects_from (void** start_root, void** end_root, char* n_start,
                }
                return;
        case ROOT_DESC_COMPLEX: {
-               gsize *bitmap_data = sgen_get_complex_descriptor_bitmap (desc);
+               gsize *bitmap_data = (gsize *)sgen_get_complex_descriptor_bitmap (desc);
                gsize bwords = (*bitmap_data) - 1;
                void **start_run = start_root;
                bitmap_data++;
@@ -986,21 +986,21 @@ alloc_nursery (void)
         * objects in the existing nursery.
         */
        /* FIXME: handle OOM */
-       section = sgen_alloc_internal (INTERNAL_MEM_SECTION);
+       section = (GCMemSection *)sgen_alloc_internal (INTERNAL_MEM_SECTION);
 
        alloc_size = sgen_nursery_size;
 
        /* If there isn't enough space even for the nursery we should simply abort. */
        g_assert (sgen_memgov_try_alloc_space (alloc_size, SPACE_NURSERY));
 
-       data = major_collector.alloc_heap (alloc_size, alloc_size, DEFAULT_NURSERY_BITS);
+       data = (char *)major_collector.alloc_heap (alloc_size, alloc_size, DEFAULT_NURSERY_BITS);
        sgen_update_heap_boundaries ((mword)data, (mword)(data + sgen_nursery_size));
        SGEN_LOG (4, "Expanding nursery size (%p-%p): %lu, total: %lu", data, data + alloc_size, (unsigned long)sgen_nursery_size, (unsigned long)sgen_gc_get_total_heap_allocation ());
        section->data = section->next_data = data;
        section->size = alloc_size;
        section->end_data = data + sgen_nursery_size;
        scan_starts = (alloc_size + SCAN_START_SIZE - 1) / SCAN_START_SIZE;
-       section->scan_starts = sgen_alloc_internal_dynamic (sizeof (char*) * scan_starts, INTERNAL_MEM_SCAN_STARTS, TRUE);
+       section->scan_starts = (char **)sgen_alloc_internal_dynamic (sizeof (char*) * scan_starts, INTERNAL_MEM_SCAN_STARTS, TRUE);
        section->num_scan_start = scan_starts;
 
        nursery_section = section;
@@ -1022,7 +1022,7 @@ scan_finalizer_entries (SgenPointerQueue *fin_queue, ScanCopyContext ctx)
        size_t i;
 
        for (i = 0; i < fin_queue->next_slot; ++i) {
-               GCObject *obj = fin_queue->data [i];
+               GCObject *obj = (GCObject *)fin_queue->data [i];
                if (!obj)
                        continue;
                SGEN_LOG (5, "Scan of fin ready object: %p (%s)\n", obj, sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (obj)));
@@ -1217,7 +1217,7 @@ scan_from_registered_roots (char *addr_start, char *addr_end, int root_type, Sca
 {
        void **start_root;
        RootRecord *root;
-       SGEN_HASH_TABLE_FOREACH (&roots_hash [root_type], start_root, root) {
+       SGEN_HASH_TABLE_FOREACH (&roots_hash [root_type], void **, start_root, RootRecord *, root) {
                SGEN_LOG (6, "Precise root scan %p-%p (desc: %p)", start_root, root->end_root, (void*)root->root_desc);
                precisely_scan_objects_from (start_root, (void**)root->end_root, addr_start, addr_end, root->root_desc, ctx);
        } SGEN_HASH_TABLE_FOREACH_END;
@@ -1325,7 +1325,7 @@ typedef struct {
 static void
 job_remembered_set_scan (void *worker_data_untyped, SgenThreadPoolJob *job)
 {
-       WorkerData *worker_data = worker_data_untyped;
+       WorkerData *worker_data = (WorkerData *)worker_data_untyped;
        ScanJob *job_data = (ScanJob*)job;
        ScanCopyContext ctx = CONTEXT_FROM_OBJECT_OPERATIONS (job_data->ops, sgen_workers_get_job_gray_queue (worker_data));
        remset.scan_remsets (ctx);
@@ -1342,7 +1342,7 @@ typedef struct {
 static void
 job_scan_from_registered_roots (void *worker_data_untyped, SgenThreadPoolJob *job)
 {
-       WorkerData *worker_data = worker_data_untyped;
+       WorkerData *worker_data = (WorkerData *)worker_data_untyped;
        ScanFromRegisteredRootsJob *job_data = (ScanFromRegisteredRootsJob*)job;
        ScanCopyContext ctx = CONTEXT_FROM_OBJECT_OPERATIONS (job_data->ops, sgen_workers_get_job_gray_queue (worker_data));
 
@@ -1359,7 +1359,7 @@ typedef struct {
 static void
 job_scan_thread_data (void *worker_data_untyped, SgenThreadPoolJob *job)
 {
-       WorkerData *worker_data = worker_data_untyped;
+       WorkerData *worker_data = (WorkerData *)worker_data_untyped;
        ScanThreadDataJob *job_data = (ScanThreadDataJob*)job;
        ScanCopyContext ctx = CONTEXT_FROM_OBJECT_OPERATIONS (job_data->ops, sgen_workers_get_job_gray_queue (worker_data));
 
@@ -1375,7 +1375,7 @@ typedef struct {
 static void
 job_scan_finalizer_entries (void *worker_data_untyped, SgenThreadPoolJob *job)
 {
-       WorkerData *worker_data = worker_data_untyped;
+       WorkerData *worker_data = (WorkerData *)worker_data_untyped;
        ScanFinalizerEntriesJob *job_data = (ScanFinalizerEntriesJob*)job;
        ScanCopyContext ctx = CONTEXT_FROM_OBJECT_OPERATIONS (job_data->ops, sgen_workers_get_job_gray_queue (worker_data));
 
@@ -1385,7 +1385,7 @@ job_scan_finalizer_entries (void *worker_data_untyped, SgenThreadPoolJob *job)
 static void
 job_scan_major_mod_union_card_table (void *worker_data_untyped, SgenThreadPoolJob *job)
 {
-       WorkerData *worker_data = worker_data_untyped;
+       WorkerData *worker_data = (WorkerData *)worker_data_untyped;
        ScanJob *job_data = (ScanJob*)job;
        ScanCopyContext ctx = CONTEXT_FROM_OBJECT_OPERATIONS (job_data->ops, sgen_workers_get_job_gray_queue (worker_data));
 
@@ -1396,7 +1396,7 @@ job_scan_major_mod_union_card_table (void *worker_data_untyped, SgenThreadPoolJo
 static void
 job_scan_los_mod_union_card_table (void *worker_data_untyped, SgenThreadPoolJob *job)
 {
-       WorkerData *worker_data = worker_data_untyped;
+       WorkerData *worker_data = (WorkerData *)worker_data_untyped;
        ScanJob *job_data = (ScanJob*)job;
        ScanCopyContext ctx = CONTEXT_FROM_OBJECT_OPERATIONS (job_data->ops, sgen_workers_get_job_gray_queue (worker_data));
 
@@ -2432,11 +2432,11 @@ sgen_gc_invoke_finalizers (void)
                if (!sgen_pointer_queue_is_empty (&fin_ready_queue)) {
                        pending_unqueued_finalizer = TRUE;
                        mono_memory_write_barrier ();
-                       obj = sgen_pointer_queue_pop (&fin_ready_queue);
+                       obj = (GCObject *)sgen_pointer_queue_pop (&fin_ready_queue);
                } else if (!sgen_pointer_queue_is_empty (&critical_fin_queue)) {
                        pending_unqueued_finalizer = TRUE;
                        mono_memory_write_barrier ();
-                       obj = sgen_pointer_queue_pop (&critical_fin_queue);
+                       obj = (GCObject *)sgen_pointer_queue_pop (&critical_fin_queue);
                } else {
                        obj = NULL;
                }
@@ -2485,7 +2485,7 @@ sgen_register_root (char *start, size_t size, SgenDescriptor descr, int root_typ
        int i;
        LOCK_GC;
        for (i = 0; i < ROOT_TYPE_NUM; ++i) {
-               RootRecord *root = sgen_hash_table_lookup (&roots_hash [i], start);
+               RootRecord *root = (RootRecord *)sgen_hash_table_lookup (&roots_hash [i], start);
                /* we allow changing the size and the descriptor (for thread statics etc) */
                if (root) {
                        size_t old_size = root->end_root - start;
@@ -2646,7 +2646,7 @@ mono_gc_wbarrier_generic_store_atomic (gpointer ptr, GCObject *value)
 
        SGEN_LOG (8, "Wbarrier atomic store at %p to %p (%s)", ptr, value, value ? sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (value)) : "null");
 
-       InterlockedWritePointer (ptr, value);
+       InterlockedWritePointer ((volatile gpointer *)ptr, value);
 
        if (ptr_in_nursery (value) || concurrent_collection_in_progress)
                mono_gc_wbarrier_generic_nostore (ptr);
@@ -2657,8 +2657,8 @@ mono_gc_wbarrier_generic_store_atomic (gpointer ptr, GCObject *value)
 void
 sgen_wbarrier_value_copy_bitmap (gpointer _dest, gpointer _src, int size, unsigned bitmap)
 {
-       GCObject **dest = _dest;
-       GCObject **src = _src;
+       GCObject **dest = (GCObject **)_dest;
+       GCObject **src = (GCObject **)_src;
 
        while (size) {
                if (bitmap & 0x1)
index 089ba85a1fbebfb5cee6aa5f7ee5dfc0945dcc19..9e022e12ba902d4bac866957dc71ccbfe3c4c1e3 100644 (file)
@@ -237,8 +237,8 @@ sgen_get_nursery_end (void)
 #define SGEN_POINTER_UNTAG_VTABLE(p)           SGEN_POINTER_UNTAG_ALL((p))
 
 /* returns NULL if not forwarded, or the forwarded address */
-#define SGEN_VTABLE_IS_FORWARDED(vtable) (SGEN_POINTER_IS_TAGGED_FORWARDED ((vtable)) ? SGEN_POINTER_UNTAG_VTABLE ((vtable)) : NULL)
-#define SGEN_OBJECT_IS_FORWARDED(obj) (SGEN_VTABLE_IS_FORWARDED (((mword*)(obj))[0]))
+#define SGEN_VTABLE_IS_FORWARDED(vtable) ((GCVTable *)(SGEN_POINTER_IS_TAGGED_FORWARDED ((vtable)) ? SGEN_POINTER_UNTAG_VTABLE ((vtable)) : NULL))
+#define SGEN_OBJECT_IS_FORWARDED(obj) ((GCObject *)SGEN_VTABLE_IS_FORWARDED (((mword*)(obj))[0]))
 
 #define SGEN_VTABLE_IS_PINNED(vtable) SGEN_POINTER_IS_TAGGED_PINNED ((vtable))
 #define SGEN_OBJECT_IS_PINNED(obj) (SGEN_VTABLE_IS_PINNED (((mword*)(obj))[0]))
@@ -264,7 +264,7 @@ sgen_get_nursery_end (void)
  * Since we set bits in the vtable, use the macro to load it from the pointer to
  * an object that is potentially pinned.
  */
-#define SGEN_LOAD_VTABLE(obj)          ((GCVTable)(SGEN_POINTER_UNTAG_ALL (SGEN_LOAD_VTABLE_UNCHECKED ((obj)))))
+#define SGEN_LOAD_VTABLE(obj)          ((GCVTable)(SGEN_POINTER_UNTAG_ALL (SGEN_LOAD_VTABLE_UNCHECKED ((GCObject *)(obj)))))
 
 /*
 List of what each bit on of the vtable gc bits means. 
@@ -441,7 +441,7 @@ void sgen_pin_stats_register_global_remset (GCObject *obj);
 void sgen_pin_stats_print_class_stats (void);
 
 void sgen_sort_addresses (void **array, size_t size);
-void sgen_add_to_global_remset (gpointer ptr, gpointer obj);
+void sgen_add_to_global_remset (gpointer ptr, GCObject *obj);
 
 int sgen_get_current_collection_generation (void);
 gboolean sgen_collection_is_concurrent (void);
index 11216ffd21d410171c5a4ae171e5eff1338c99c4..f4b352eac1185d6befd2f9fb5ac8d440d0376a3c 100644 (file)
@@ -105,17 +105,17 @@ static void
 protocol_gchandle_update (int handle_type, gpointer link, gpointer old_value, gpointer new_value)
 {
        gboolean old = MONO_GC_HANDLE_IS_OBJECT_POINTER (old_value);
-       gboolean new = MONO_GC_HANDLE_IS_OBJECT_POINTER (new_value);
+       gboolean new_ = MONO_GC_HANDLE_IS_OBJECT_POINTER (new_value);
        gboolean track = handle_type == HANDLE_WEAK_TRACK;
 
        if (!MONO_GC_HANDLE_TYPE_IS_WEAK (handle_type))
                return;
 
-       if (!old && new)
+       if (!old && new_)
                binary_protocol_dislink_add (link, MONO_GC_REVEAL_POINTER (new_value, TRUE), track);
-       else if (old && !new)
+       else if (old && !new_)
                binary_protocol_dislink_remove (link, track);
-       else if (old && new && old_value != new_value)
+       else if (old && new_ && old_value != new_value)
                binary_protocol_dislink_update (link, MONO_GC_REVEAL_POINTER (new_value, TRUE), track);
 }
 
@@ -123,15 +123,15 @@ protocol_gchandle_update (int handle_type, gpointer link, gpointer old_value, gp
 static inline gpointer
 try_set_slot (volatile gpointer *slot, GCObject *obj, gpointer old, GCHandleType type)
 {
-       gpointer new;
+       gpointer new_;
        if (obj)
-               new = MONO_GC_HANDLE_OBJECT_POINTER (obj, GC_HANDLE_TYPE_IS_WEAK (type));
+               new_ = MONO_GC_HANDLE_OBJECT_POINTER (obj, GC_HANDLE_TYPE_IS_WEAK (type));
        else
-               new = MONO_GC_HANDLE_METADATA_POINTER (sgen_client_default_metadata (), GC_HANDLE_TYPE_IS_WEAK (type));
-       SGEN_ASSERT (0, new, "Why is the occupied bit not set?");
-       if (InterlockedCompareExchangePointer (slot, new, old) == old) {
-               protocol_gchandle_update (type, (gpointer)slot, old, new);
-               return new;
+               new_ = MONO_GC_HANDLE_METADATA_POINTER (sgen_client_default_metadata (), GC_HANDLE_TYPE_IS_WEAK (type));
+       SGEN_ASSERT (0, new_, "Why is the occupied bit not set?");
+       if (InterlockedCompareExchangePointer (slot, new_, old) == old) {
+               protocol_gchandle_update (type, (gpointer)slot, old, new_);
+               return new_;
        }
        return NULL;
 }
@@ -143,7 +143,7 @@ try_occupy_slot (HandleData *handles, guint bucket, guint offset, GCObject *obj,
        volatile gpointer *link_addr = &(handles->entries [bucket] [offset]);
        if (MONO_GC_HANDLE_OCCUPIED (*link_addr))
                return FALSE;
-       return try_set_slot (link_addr, obj, NULL, handles->type) != NULL;
+       return try_set_slot (link_addr, obj, NULL, (GCHandleType)handles->type) != NULL;
 }
 
 static HandleData gc_handles [] = {
@@ -216,7 +216,7 @@ handle_data_grow (HandleData *handles, guint32 old_capacity)
        const size_t new_bucket_size = sizeof (**handles->entries) * growth;
        if (handles->capacity >= new_capacity)
                return;
-       entries = g_malloc0 (new_bucket_size);
+       entries = (gpointer *)g_malloc0 (new_bucket_size);
        if (handles->type == HANDLE_PINNED)
                sgen_register_root ((char *)entries, new_bucket_size, SGEN_DESCRIPTOR_NULL, ROOT_TYPE_PINNED, MONO_ROOT_SOURCE_GC_HANDLE, "pinned gc handles");
        /* The zeroing of the newly allocated bucket must be complete before storing
@@ -446,7 +446,7 @@ GCObject*
 mono_gchandle_get_target (guint32 gchandle)
 {
        guint index = MONO_GC_HANDLE_SLOT (gchandle);
-       guint type = MONO_GC_HANDLE_TYPE (gchandle);
+       GCHandleType type = MONO_GC_HANDLE_TYPE (gchandle);
        HandleData *handles = gc_handles_for_type (type);
        /* Invalid handles are possible; accessing one should produce NULL. (#34276) */
        if (!handles)
@@ -461,7 +461,7 @@ void
 sgen_gchandle_set_target (guint32 gchandle, GCObject *obj)
 {
        guint index = MONO_GC_HANDLE_SLOT (gchandle);
-       guint type = MONO_GC_HANDLE_TYPE (gchandle);
+       GCHandleType type = MONO_GC_HANDLE_TYPE (gchandle);
        HandleData *handles = gc_handles_for_type (type);
        if (!handles)
                return;
@@ -474,7 +474,7 @@ sgen_gchandle_set_target (guint32 gchandle, GCObject *obj)
        do {
                slot = handles->entries [bucket] [offset];
                SGEN_ASSERT (0, MONO_GC_HANDLE_OCCUPIED (slot), "Why are we setting the target on an unoccupied slot?");
-       } while (!try_set_slot (&handles->entries [bucket] [offset], obj, slot, handles->type));
+       } while (!try_set_slot (&handles->entries [bucket] [offset], obj, slot, (GCHandleType)handles->type));
 }
 
 static gpointer
@@ -487,7 +487,7 @@ retry:
        if (!MONO_GC_HANDLE_OCCUPIED (slot))
                return NULL;
        if (MONO_GC_HANDLE_IS_OBJECT_POINTER (slot)) {
-               GCObject *obj = MONO_GC_REVEAL_POINTER (slot, is_weak);
+               GCObject *obj = (GCObject *)MONO_GC_REVEAL_POINTER (slot, is_weak);
                /* See note [dummy use]. */
                sgen_dummy_use (obj);
                /*
@@ -511,7 +511,7 @@ gpointer
 sgen_gchandle_get_metadata (guint32 gchandle)
 {
        guint index = MONO_GC_HANDLE_SLOT (gchandle);
-       guint type = MONO_GC_HANDLE_TYPE (gchandle);
+       GCHandleType type = MONO_GC_HANDLE_TYPE (gchandle);
        HandleData *handles = gc_handles_for_type (type);
        if (!handles)
                return NULL;
@@ -534,7 +534,7 @@ void
 mono_gchandle_free (guint32 gchandle)
 {
        guint index = MONO_GC_HANDLE_SLOT (gchandle);
-       guint type = MONO_GC_HANDLE_TYPE (gchandle);
+       GCHandleType type = MONO_GC_HANDLE_TYPE (gchandle);
        HandleData *handles = gc_handles_for_type (type);
        if (!handles)
                return;
@@ -566,7 +566,7 @@ null_link_if_necessary (gpointer hidden, GCHandleType handle_type, int max_gener
        if (!MONO_GC_HANDLE_VALID (hidden))
                return hidden;
 
-       obj = MONO_GC_REVEAL_POINTER (hidden, MONO_GC_HANDLE_TYPE_IS_WEAK (handle_type));
+       obj = (GCObject *)MONO_GC_REVEAL_POINTER (hidden, MONO_GC_HANDLE_TYPE_IS_WEAK (handle_type));
        SGEN_ASSERT (0, obj, "Why is the hidden pointer NULL?");
 
        if (object_older_than (obj, max_generation))
@@ -607,7 +607,7 @@ null_link_if (gpointer hidden, GCHandleType handle_type, int max_generation, gpo
        if (!MONO_GC_HANDLE_VALID (hidden))
                return hidden;
 
-       obj = MONO_GC_REVEAL_POINTER (hidden, MONO_GC_HANDLE_TYPE_IS_WEAK (handle_type));
+       obj = (GCObject *)MONO_GC_REVEAL_POINTER (hidden, MONO_GC_HANDLE_TYPE_IS_WEAK (handle_type));
        SGEN_ASSERT (0, obj, "Why is the hidden pointer NULL?");
 
        if (object_older_than (obj, max_generation))
index 4ecdf00796f1d1a174d3c1f7eb8d46e242d63dd8..cb6694342fe484cc50bfdff9b940ca12ad0d6e92 100644 (file)
@@ -66,7 +66,7 @@ sgen_gray_object_alloc_queue_section (SgenGrayQueue *queue)
                STATE_TRANSITION (section, GRAY_QUEUE_SECTION_STATE_FREE_LIST, GRAY_QUEUE_SECTION_STATE_FLOATING);
        } else {
                /* Allocate a new section */
-               section = sgen_alloc_internal (INTERNAL_MEM_GRAY_QUEUE);
+               section = (GrayQueueSection *)sgen_alloc_internal (INTERNAL_MEM_GRAY_QUEUE);
                STATE_SET (section, GRAY_QUEUE_SECTION_STATE_FLOATING);
        }
 
index 61c78e9bf56b703bc1c96edf51de6e0a827338df..42856fc65d846a016638bf1ed9b043792540d17e 100644 (file)
@@ -53,7 +53,7 @@ rehash (SgenHashTable *hash_table)
                new_size = g_spaced_primes_closest (hash_table->num_entries);
        }
 
-       new_hash = sgen_alloc_internal_dynamic (new_size * sizeof (SgenHashTableEntry*), hash_table->table_mem_type, TRUE);
+       new_hash = (SgenHashTableEntry **)sgen_alloc_internal_dynamic (new_size * sizeof (SgenHashTableEntry*), hash_table->table_mem_type, TRUE);
        for (i = 0; i < old_hash_size; ++i) {
                for (entry = old_hash [i]; entry; entry = next) {
                        hash = hash_table->hash_func (entry->key) % new_size;
@@ -132,7 +132,7 @@ sgen_hash_table_replace (SgenHashTable *hash_table, gpointer key, gpointer new_v
                return FALSE;
        }
 
-       entry = sgen_alloc_internal (hash_table->entry_mem_type);
+       entry = (SgenHashTableEntry *)sgen_alloc_internal (hash_table->entry_mem_type);
        entry->key = key;
        memcpy (entry->data, new_value, hash_table->data_size);
 
index e6cfe43a5a051b65ee7408724afa9e84c0a24b85..5144cab12702b55ce432e22ae37c785bbc429fb6 100644 (file)
@@ -42,9 +42,9 @@ void sgen_init_hash_table (void);
 
 #define sgen_hash_table_num_entries(h) ((h)->num_entries)
 
-#define sgen_hash_table_key_for_value_pointer(v)       (((SgenHashTableEntry*)((char*)(v) - G_STRUCT_OFFSET (SgenHashTableEntry, data)))->key)
+#define sgen_hash_table_key_for_value_pointer(v)       ((GCObject *)(((SgenHashTableEntry*)((char*)(v) - G_STRUCT_OFFSET (SgenHashTableEntry, data)))->key))
 
-#define SGEN_HASH_TABLE_FOREACH(h,k,v) do {                            \
+#define SGEN_HASH_TABLE_FOREACH(h,tk,k,tv,v) do {                              \
                SgenHashTable *__hash_table = (h);                      \
                SgenHashTableEntry **__table = __hash_table->table;     \
                guint __i;                                              \
@@ -53,8 +53,8 @@ void sgen_init_hash_table (void);
                        for (__iter = &__table [__i]; *__iter; __iter = __next) {       \
                                SgenHashTableEntry *__entry = *__iter;  \
                                __next = &__entry->next;        \
-                               (k) = __entry->key;                     \
-                               (v) = (gpointer)__entry->data;
+                               (k) = (tk)__entry->key;                 \
+                               (v) = (tv)__entry->data;
 
 /* The loop must be continue'd after using this! */
 #define SGEN_HASH_TABLE_FOREACH_REMOVE(free)   do {                    \
index 4ccff748aef06c97f0e39bee2255358a76611921..e5327399c584f0a83868b64313fb7679b7e2a26b 100644 (file)
@@ -165,7 +165,7 @@ sgen_alloc_internal_dynamic (size_t size, int type, gboolean assert_on_failure)
        void *p;
 
        if (size > allocator_sizes [NUM_ALLOCATORS - 1]) {
-               p = sgen_alloc_os_memory (size, SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE, NULL);
+               p = sgen_alloc_os_memory (size, (SgenAllocFlags)(SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE), NULL);
                if (!p)
                        sgen_assert_memory_alloc (NULL, size, description_for_type (type));
        } else {
index ea1ba4692ea64a635a639476aba2be9c22ba16d6..2421150fcfb93ba9bf7087d8e5fe9c587ecf16b5 100644 (file)
@@ -238,7 +238,7 @@ get_los_section_memory (size_t size)
        if (!sgen_memgov_try_alloc_space (LOS_SECTION_SIZE, SPACE_LOS))
                return NULL;
 
-       section = sgen_alloc_os_memory_aligned (LOS_SECTION_SIZE, LOS_SECTION_SIZE, SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE, NULL);
+       section = (LOSSection *)sgen_alloc_os_memory_aligned (LOS_SECTION_SIZE, LOS_SECTION_SIZE, (SgenAllocFlags)(SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE), NULL);
 
        if (!section)
                return NULL;
@@ -379,7 +379,7 @@ sgen_los_alloc_large_inner (GCVTable vtable, size_t size)
                alloc_size += pagesize - 1;
                alloc_size &= ~(pagesize - 1);
                if (sgen_memgov_try_alloc_space (alloc_size, SPACE_LOS)) {
-                       obj = sgen_alloc_os_memory (alloc_size, SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE, NULL);
+                       obj = (LOSObject *)sgen_alloc_os_memory (alloc_size, (SgenAllocFlags)(SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE), NULL);
                }
        } else {
                obj = get_los_section_memory (size + sizeof (LOSObject));
@@ -593,7 +593,7 @@ get_cardtable_mod_union_for_object (LOSObject *obj)
        if (mod_union)
                return mod_union;
        mod_union = sgen_card_table_alloc_mod_union ((char*)obj->data, size);
-       other = SGEN_CAS_PTR ((gpointer*)&obj->cardtable_mod_union, mod_union, NULL);
+       other = (guint8 *)SGEN_CAS_PTR ((gpointer*)&obj->cardtable_mod_union, mod_union, NULL);
        if (!other) {
                SGEN_ASSERT (0, obj->cardtable_mod_union == mod_union, "Why did CAS not replace?");
                return mod_union;
index bfddff0d891dcfd36a2c1fb05e0f7c1a11ee6571..56efcf2694d669d25ba25535ffa9867d15237ec1 100644 (file)
@@ -74,7 +74,7 @@ COPY_OR_MARK_FUNCTION_NAME (GCObject **ptr, GCObject *obj, SgenGrayQueue *queue)
                        HEAVY_STAT (++stat_optimized_copy_nursery_pinned);
                        return TRUE;
                }
-               if ((forwarded = SGEN_VTABLE_IS_FORWARDED (vtable_word))) {
+               if ((forwarded = (GCObject *)SGEN_VTABLE_IS_FORWARDED (vtable_word))) {
                        HEAVY_STAT (++stat_optimized_copy_nursery_forwarded);
                        SGEN_UPDATE_REFERENCE (ptr, forwarded);
                        return sgen_ptr_in_nursery (forwarded);
@@ -142,7 +142,7 @@ COPY_OR_MARK_FUNCTION_NAME (GCObject **ptr, GCObject *obj, SgenGrayQueue *queue)
 #ifdef COPY_OR_MARK_WITH_EVACUATION
                {
                        GCObject *forwarded;
-                       if ((forwarded = SGEN_VTABLE_IS_FORWARDED (vtable_word))) {
+                       if ((forwarded = (GCObject *)SGEN_VTABLE_IS_FORWARDED (vtable_word))) {
                                HEAVY_STAT (++stat_optimized_copy_major_forwarded);
                                SGEN_UPDATE_REFERENCE (ptr, forwarded);
                                SGEN_ASSERT (9, !sgen_ptr_in_nursery (forwarded), "Cannot be forwarded to nursery.");
@@ -241,12 +241,12 @@ SCAN_OBJECT_FUNCTION_NAME (GCObject *full_object, SgenDescriptor desc, SgenGrayQ
                } while (0)
 #else
 #define HANDLE_PTR(ptr,obj)    do {                                    \
-               void *__old = *(ptr);                                   \
+               GCObject *__old = *(ptr);                                       \
                binary_protocol_scan_process_reference ((full_object), (ptr), __old); \
                if (__old) {                                            \
                        gboolean __still_in_nursery = COPY_OR_MARK_FUNCTION_NAME ((ptr), __old, queue); \
                        if (G_UNLIKELY (__still_in_nursery && !sgen_ptr_in_nursery ((ptr)) && !SGEN_OBJECT_IS_CEMENTED (*(ptr)))) { \
-                               void *__copy = *(ptr);                  \
+                               GCObject *__copy = *(ptr);                      \
                                sgen_add_to_global_remset ((ptr), __copy); \
                        }                                               \
                }                                                       \
index ab234e126952acb6c0ce29ecf28ef371ec0740df..541a0a2b52fec22415a6468147e50a8aec241584 100644 (file)
 
 #undef HANDLE_PTR
 #define HANDLE_PTR(ptr,obj)     do {                                    \
-                void *__old = *(ptr);                                   \
+                GCObject *__old = *(ptr);                                   \
                 binary_protocol_scan_process_reference ((full_object), (ptr), __old); \
                 if (__old) {                                            \
                         gboolean __still_in_nursery = major_copy_or_mark_object_with_evacuation ((ptr), __old, queue); \
                         if (G_UNLIKELY (__still_in_nursery && !sgen_ptr_in_nursery ((ptr)) && !SGEN_OBJECT_IS_CEMENTED (*(ptr)))) { \
-                                void *__copy = *(ptr);                  \
+                                GCObject *__copy = *(ptr);                  \
                                 sgen_add_to_global_remset ((ptr), __copy); \
                         }                                              \
                 }                                                       \
index 5b344b6d6580c068ac38a6f2a0321337c909290d..ba92ab36e729c385e29eef1870151a17cd7e7612 100644 (file)
@@ -121,7 +121,7 @@ struct _MSBlockInfo {
 
 #define MS_BLOCK_FOR_BLOCK_INFO(b)     ((char*)(b))
 
-#define MS_BLOCK_OBJ(b,i)              ((void*)(MS_BLOCK_FOR_BLOCK_INFO(b) + MS_BLOCK_SKIP + (b)->obj_size * (i)))
+#define MS_BLOCK_OBJ(b,i)              ((GCObject *)(MS_BLOCK_FOR_BLOCK_INFO(b) + MS_BLOCK_SKIP + (b)->obj_size * (i)))
 #define MS_BLOCK_OBJ_FOR_SIZE(b,i,obj_size)            (MS_BLOCK_FOR_BLOCK_INFO(b) + MS_BLOCK_SKIP + (obj_size) * (i))
 #define MS_BLOCK_DATA_FOR_OBJ(o)       ((char*)((mword)(o) & ~(mword)(MS_BLOCK_SIZE - 1)))
 
@@ -192,7 +192,7 @@ static gboolean concurrent_sweep = TRUE;
 #define BLOCK_IS_TAGGED_CHECKING(bl)           SGEN_POINTER_IS_TAGGED_2 ((bl))
 #define BLOCK_TAG_CHECKING(bl)                 SGEN_POINTER_TAG_2 ((bl))
 
-#define BLOCK_UNTAG(bl)                                SGEN_POINTER_UNTAG_12 ((bl))
+#define BLOCK_UNTAG(bl)                                ((MSBlockInfo *)SGEN_POINTER_UNTAG_12 ((bl)))
 
 #define BLOCK_TAG(bl)                          ((bl)->has_references ? BLOCK_TAG_HAS_REFERENCES ((bl)) : (bl))
 
@@ -214,7 +214,7 @@ static size_t num_empty_blocks = 0;
        size_t __index;                                                 \
        SGEN_ASSERT (0, sgen_is_world_stopped () && !sweep_in_progress (), "Can't iterate blocks while the world is running or sweep is in progress."); \
        for (__index = 0; __index < allocated_blocks.next_slot; ++__index) { \
-               (bl) = allocated_blocks.data [__index];                 \
+               (bl) = (MSBlockInfo *)allocated_blocks.data [__index];                  \
                (hr) = BLOCK_IS_TAGGED_HAS_REFERENCES ((bl));           \
                (bl) = BLOCK_UNTAG ((bl));
 #define END_FOREACH_BLOCK_NO_LOCK      } }
@@ -301,9 +301,9 @@ major_alloc_heap (mword nursery_size, mword nursery_align, int the_nursery_bits)
 {
        char *start;
        if (nursery_align)
-               start = sgen_alloc_os_memory_aligned (nursery_size, nursery_align, SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE, "nursery");
+               start = (char *)sgen_alloc_os_memory_aligned (nursery_size, nursery_align, (SgenAllocFlags)(SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE), "nursery");
        else
-               start = sgen_alloc_os_memory (nursery_size, SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE, "nursery");
+               start = (char *)sgen_alloc_os_memory (nursery_size, (SgenAllocFlags)(SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE), "nursery");
 
        return start;
 }
@@ -333,8 +333,9 @@ ms_get_empty_block (void)
                 */
                int alloc_num = MS_BLOCK_ALLOC_NUM;
                for (;;) {
-                       p = sgen_alloc_os_memory_aligned (MS_BLOCK_SIZE * alloc_num, MS_BLOCK_SIZE, SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE,
-                                       alloc_num == 1 ? "major heap section" : NULL);
+                       p = (char *)sgen_alloc_os_memory_aligned (MS_BLOCK_SIZE * alloc_num, MS_BLOCK_SIZE,
+                               (SgenAllocFlags)(SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE),
+                               alloc_num == 1 ? "major heap section" : NULL);
                        if (p)
                                break;
                        alloc_num >>= 1;
@@ -499,7 +500,7 @@ add_free_block (MSBlockInfo * volatile *free_blocks, int size_index, MSBlockInfo
        MSBlockInfo *old;
        do {
                block->next_free = old = free_blocks [size_index];
-       } while (SGEN_CAS_PTR ((gpointer)&free_blocks [size_index], block, old) != old);
+       } while (SGEN_CAS_PTR ((volatile gpointer *)&free_blocks [size_index], block, old) != old);
 }
 
 static void major_finish_sweep_checking (void);
@@ -628,12 +629,12 @@ unlink_slot_from_free_list_uncontested (MSBlockInfo * volatile *free_blocks, int
 
        next_free_slot = *(void**)obj;
        if (next_free_slot) {
-               block->free_list = next_free_slot;
+               block->free_list = (gpointer *)next_free_slot;
                return obj;
        }
 
        next_free_block = block->next_free;
-       if (SGEN_CAS_PTR ((gpointer)&free_blocks [size_index], next_free_block, block) != block)
+       if (SGEN_CAS_PTR ((volatile gpointer *)&free_blocks [size_index], next_free_block, block) != block)
                goto retry;
 
        block->free_list = NULL;
@@ -659,7 +660,7 @@ alloc_obj (GCVTable vtable, size_t size, gboolean pinned, gboolean has_reference
        /* FIXME: assumes object layout */
        *(GCVTable*)obj = vtable;
 
-       return obj;
+       return (GCObject *)obj;
 }
 
 static GCObject*
@@ -724,7 +725,7 @@ major_alloc_small_pinned_obj (GCVTable vtable, size_t size, gboolean has_referen
                sgen_perform_collection (0, GENERATION_OLD, "pinned alloc failure", TRUE);
                res = alloc_obj (vtable, size, TRUE, has_references);
         }
-        return res;
+        return (GCObject *)res;
 }
 
 static void
@@ -790,7 +791,7 @@ major_ptr_is_in_non_pinned_space (char *ptr, char **start)
                        *start = NULL;
                        for (i = 0; i <= count; ++i) {
                                if (ptr >= (char*)MS_BLOCK_OBJ (block, i) && ptr < (char*)MS_BLOCK_OBJ (block, i + 1)) {
-                                       *start = MS_BLOCK_OBJ (block, i);
+                                       *start = (char *)MS_BLOCK_OBJ (block, i);
                                        break;
                                }
                        }
@@ -801,16 +802,16 @@ major_ptr_is_in_non_pinned_space (char *ptr, char **start)
 }
 
 static gboolean
-try_set_sweep_state (int new, int expected)
+try_set_sweep_state (int new_, int expected)
 {
-       int old = SGEN_CAS (&sweep_state, new, expected);
+       int old = SGEN_CAS (&sweep_state, new_, expected);
        return old == expected;
 }
 
 static void
-set_sweep_state (int new, int expected)
+set_sweep_state (int new_, int expected)
 {
-       gboolean success = try_set_sweep_state (new, expected);
+       gboolean success = try_set_sweep_state (new_, expected);
        SGEN_ASSERT (0, success, "Could not set sweep state.");
 }
 
@@ -984,8 +985,8 @@ static void
 major_dump_heap (FILE *heap_dump_file)
 {
        MSBlockInfo *block;
-       int *slots_available = alloca (sizeof (int) * num_block_obj_sizes);
-       int *slots_used = alloca (sizeof (int) * num_block_obj_sizes);
+       int *slots_available = (int *)alloca (sizeof (int) * num_block_obj_sizes);
+       int *slots_used = (int *)alloca (sizeof (int) * num_block_obj_sizes);
        int i;
 
        for (i = 0; i < num_block_obj_sizes; ++i)
@@ -1022,7 +1023,7 @@ major_dump_heap (FILE *heap_dump_file)
                                        start = i;
                        } else {
                                if (start >= 0) {
-                                       sgen_dump_occupied (MS_BLOCK_OBJ (block, start), MS_BLOCK_OBJ (block, i), MS_BLOCK_FOR_BLOCK_INFO (block));
+                                       sgen_dump_occupied ((char *)MS_BLOCK_OBJ (block, start), (char *)MS_BLOCK_OBJ (block, i), MS_BLOCK_FOR_BLOCK_INFO (block));
                                        start = -1;
                                }
                        }
@@ -1042,7 +1043,7 @@ get_cardtable_mod_union_for_block (MSBlockInfo *block, gboolean allocate)
        else if (!allocate)
                return NULL;
        mod_union = sgen_card_table_alloc_mod_union (MS_BLOCK_FOR_BLOCK_INFO (block), MS_BLOCK_SIZE);
-       other = SGEN_CAS_PTR ((gpointer*)&block->cardtable_mod_union, mod_union, NULL);
+       other = (guint8 *)SGEN_CAS_PTR ((gpointer*)&block->cardtable_mod_union, mod_union, NULL);
        if (!other) {
                SGEN_ASSERT (0, block->cardtable_mod_union == mod_union, "Why did CAS not replace?");
                return mod_union;
@@ -1283,7 +1284,7 @@ sweep_block_for_size (MSBlockInfo *block, int count, int obj_size)
                                memset (obj, 0, obj_size);
                        }
                        *(void**)obj = block->free_list;
-                       block->free_list = obj;
+                       block->free_list = (void **)obj;
                }
        }
 }
@@ -1363,9 +1364,9 @@ sweep_block (MSBlockInfo *block)
                void *next = *(void**)block->free_list;
                *(void**)block->free_list = reversed;
                reversed = block->free_list;
-               block->free_list = next;
+               block->free_list = (void **)next;
        }
-       block->free_list = reversed;
+       block->free_list = (void **)reversed;
 
        mono_memory_write_barrier ();
 
@@ -2378,16 +2379,16 @@ sgen_marksweep_init_internal (SgenMajorCollector *collector, gboolean is_concurr
        sgen_register_fixed_internal_mem_type (INTERNAL_MEM_MS_BLOCK_INFO, sizeof (MSBlockInfo));
 
        num_block_obj_sizes = ms_calculate_block_obj_sizes (MS_BLOCK_OBJ_SIZE_FACTOR, NULL);
-       block_obj_sizes = sgen_alloc_internal_dynamic (sizeof (int) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
+       block_obj_sizes = (int *)sgen_alloc_internal_dynamic (sizeof (int) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
        ms_calculate_block_obj_sizes (MS_BLOCK_OBJ_SIZE_FACTOR, block_obj_sizes);
 
-       evacuate_block_obj_sizes = sgen_alloc_internal_dynamic (sizeof (gboolean) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
+       evacuate_block_obj_sizes = (gboolean *)sgen_alloc_internal_dynamic (sizeof (gboolean) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
        for (i = 0; i < num_block_obj_sizes; ++i)
                evacuate_block_obj_sizes [i] = FALSE;
 
-       sweep_slots_available = sgen_alloc_internal_dynamic (sizeof (size_t) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
-       sweep_slots_used = sgen_alloc_internal_dynamic (sizeof (size_t) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
-       sweep_num_blocks = sgen_alloc_internal_dynamic (sizeof (size_t) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
+       sweep_slots_available = (size_t *)sgen_alloc_internal_dynamic (sizeof (size_t) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
+       sweep_slots_used = (size_t *)sgen_alloc_internal_dynamic (sizeof (size_t) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
+       sweep_num_blocks = (size_t *)sgen_alloc_internal_dynamic (sizeof (size_t) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
 
        /*
        {
@@ -2399,7 +2400,7 @@ sgen_marksweep_init_internal (SgenMajorCollector *collector, gboolean is_concurr
        */
 
        for (i = 0; i < MS_BLOCK_TYPE_MAX; ++i)
-               free_block_lists [i] = sgen_alloc_internal_dynamic (sizeof (MSBlockInfo*) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
+               free_block_lists [i] = (MSBlockInfo *volatile *)sgen_alloc_internal_dynamic (sizeof (MSBlockInfo*) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
 
        for (i = 0; i < MS_NUM_FAST_BLOCK_OBJ_SIZE_INDEXES; ++i)
                fast_block_obj_size_indexes [i] = ms_find_block_obj_size_index (i * 8);
index dc6152c77e77b854cde2b55053d4edf837c4062d..e42e3bf64aa75efc7001025dbb4a124c254d0576 100644 (file)
@@ -253,7 +253,7 @@ sgen_fragment_allocator_alloc (void)
                frag->next = frag->next_in_order = NULL;
                return frag;
        }
-       frag = sgen_alloc_internal (INTERNAL_MEM_FRAGMENT);
+       frag = (SgenFragment *)sgen_alloc_internal (INTERNAL_MEM_FRAGMENT);
        frag->next = frag->next_in_order = NULL;
        return frag;
 }
@@ -267,7 +267,7 @@ sgen_fragment_allocator_add (SgenFragmentAllocator *allocator, char *start, char
        fragment->fragment_start = start;
        fragment->fragment_next = start;
        fragment->fragment_end = end;
-       fragment->next_in_order = fragment->next = unmask (allocator->region_head);
+       fragment->next_in_order = fragment->next = (SgenFragment *)unmask (allocator->region_head);
 
        allocator->region_head = allocator->alloc_head = fragment;
        g_assert (fragment->fragment_end > fragment->fragment_start);
@@ -304,7 +304,7 @@ try_again:
                printf ("retry count for fppf is %d\n", count);
 #endif
 
-       cur = unmask (*prev);
+       cur = (SgenFragment *)unmask (*prev);
 
        while (1) {
                if (cur == NULL)
@@ -326,14 +326,14 @@ try_again:
                                return prev;
                        prev = &cur->next;
                } else {
-                       next = unmask (next);
+                       next = (SgenFragment *)unmask (next);
                        if (InterlockedCompareExchangePointer ((volatile gpointer*)prev, next, cur) != cur)
                                goto try_again;
                        /*we must make sure that the next from cur->next happens after*/
                        mono_memory_write_barrier ();
                }
 
-               cur = unmask (next);
+               cur = (SgenFragment *)unmask (next);
        }
        return NULL;
 }
@@ -448,7 +448,7 @@ sgen_fragment_allocator_par_alloc (SgenFragmentAllocator *allocator, size_t size
 #endif
 
 restart:
-       for (frag = unmask (allocator->alloc_head); unmask (frag); frag = unmask (frag->next)) {
+       for (frag = (SgenFragment *)unmask (allocator->alloc_head); unmask (frag); frag = (SgenFragment *)unmask (frag->next)) {
                HEAVY_STAT (++stat_alloc_iterations);
 
                if (size <= (size_t)(frag->fragment_end - frag->fragment_next)) {
@@ -478,7 +478,7 @@ sgen_fragment_allocator_serial_alloc (SgenFragmentAllocator *allocator, size_t s
        previous = &allocator->alloc_head;
 
        for (frag = *previous; frag; frag = *previous) {
-               char *p = serial_alloc_from_fragment (previous, frag, size);
+               char *p = (char *)serial_alloc_from_fragment (previous, frag, size);
 
                HEAVY_STAT (++stat_alloc_iterations);
 
@@ -558,7 +558,7 @@ restart:
        InterlockedIncrement (&alloc_count);
 #endif
 
-       for (frag = unmask (allocator->alloc_head); frag; frag = unmask (frag->next)) {
+       for (frag = (SgenFragment *)unmask (allocator->alloc_head); frag; frag = (SgenFragment *)unmask (frag->next)) {
                size_t frag_size = frag->fragment_end - frag->fragment_next;
 
                HEAVY_STAT (++stat_alloc_range_iterations);
@@ -618,7 +618,7 @@ sgen_clear_allocator_fragments (SgenFragmentAllocator *allocator)
 {
        SgenFragment *frag;
 
-       for (frag = unmask (allocator->alloc_head); frag; frag = unmask (frag->next)) {
+       for (frag = (SgenFragment *)unmask (allocator->alloc_head); frag; frag = (SgenFragment *)unmask (frag->next)) {
                SGEN_LOG (4, "Clear nursery frag %p-%p", frag->fragment_next, frag->fragment_end);
                sgen_clear_range (frag->fragment_next, frag->fragment_end);
 #ifdef NALLOC_DEBUG
@@ -747,7 +747,7 @@ sgen_build_nursery_fragments (GCMemSection *nursery_section, SgenGrayQueue *unpi
 
                addr0 = addr1 = sgen_nursery_end;
                if (pin_entry < pin_end)
-                       addr0 = *pin_entry;
+                       addr0 = (char *)*pin_entry;
                if (frags_ranges)
                        addr1 = frags_ranges->fragment_start;
 
@@ -802,7 +802,7 @@ sgen_build_nursery_fragments (GCMemSection *nursery_section, SgenGrayQueue *unpi
        if (!unmask (mutator_allocator.alloc_head)) {
                SGEN_LOG (1, "Nursery fully pinned");
                for (pin_entry = pin_start; pin_entry < pin_end; ++pin_entry) {
-                       void *p = *pin_entry;
+                       GCObject *p = (GCObject *)*pin_entry;
                        SGEN_LOG (3, "Bastard pinning obj %p (%s), size: %zd", p, sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (p)), sgen_safe_object_get_size (p));
                }
        }
@@ -833,7 +833,7 @@ sgen_can_alloc_size (size_t size)
 
        size = SGEN_ALIGN_UP (size);
 
-       for (frag = unmask (mutator_allocator.alloc_head); frag; frag = unmask (frag->next)) {
+       for (frag = (SgenFragment *)unmask (mutator_allocator.alloc_head); frag; frag = (SgenFragment *)unmask (frag->next)) {
                if ((size_t)(frag->fragment_end - frag->fragment_next) >= size)
                        return TRUE;
        }
@@ -918,7 +918,7 @@ sgen_nursery_allocator_set_nursery_bounds (char *start, char *end)
         * since the nursery size must be a power of 2.
         */
        sgen_space_bitmap_size = (end - start + SGEN_TO_SPACE_GRANULE_IN_BYTES * 8 - 1) / (SGEN_TO_SPACE_GRANULE_IN_BYTES * 8);
-       sgen_space_bitmap = g_malloc0 (sgen_space_bitmap_size);
+       sgen_space_bitmap = (char *)g_malloc0 (sgen_space_bitmap_size);
 
        /* Setup the single first large fragment */
        sgen_minor_collector.init_nursery (&mutator_allocator, start, end);
index 546f895583c44cb8017e67bee75ff895160a19f7..5edccfaabec10720fcb6658f1eb8e7d54b8ccc24 100644 (file)
@@ -107,7 +107,7 @@ sgen_pin_stats_register_address (char *addr, int pin_type)
                        node_ptr = &node->right;
        }
 
-       node = sgen_alloc_internal_dynamic (sizeof (PinStatAddress), INTERNAL_MEM_STATISTICS, TRUE);
+       node = (PinStatAddress *)sgen_alloc_internal_dynamic (sizeof (PinStatAddress), INTERNAL_MEM_STATISTICS, TRUE);
        node->addr = addr;
        node->pin_types = pin_type_bit;
        node->left = node->right = NULL;
@@ -161,7 +161,7 @@ register_vtable (GCVTable vtable, int pin_types)
        int i;
 
        memset (&empty_entry, 0, sizeof (PinnedClassEntry));
-       entry = lookup_vtable_entry (&pinned_class_hash_table, vtable, &empty_entry);
+       entry = (PinnedClassEntry *)lookup_vtable_entry (&pinned_class_hash_table, vtable, &empty_entry);
 
        for (i = 0; i < PIN_TYPE_MAX; ++i) {
                if (pin_types & (1 << i))
@@ -194,7 +194,7 @@ sgen_pin_stats_register_global_remset (GCObject *obj)
                return;
 
        memset (&empty_entry, 0, sizeof (GlobalRemsetClassEntry));
-       entry = lookup_vtable_entry (&global_remset_class_hash_table, SGEN_LOAD_VTABLE (obj), &empty_entry);
+       entry = (GlobalRemsetClassEntry *)lookup_vtable_entry (&global_remset_class_hash_table, SGEN_LOAD_VTABLE (obj), &empty_entry);
 
        ++entry->num_remsets;
 }
@@ -210,7 +210,7 @@ sgen_pin_stats_print_class_stats (void)
                return;
 
        mono_gc_printf (gc_debug_file, "\n%-50s  %10s  %10s  %10s\n", "Class", "Stack", "Static", "Other");
-       SGEN_HASH_TABLE_FOREACH (&pinned_class_hash_table, name, pinned_entry) {
+       SGEN_HASH_TABLE_FOREACH (&pinned_class_hash_table, char *, name, PinnedClassEntry *, pinned_entry) {
                int i;
                mono_gc_printf (gc_debug_file, "%-50s", name);
                for (i = 0; i < PIN_TYPE_MAX; ++i)
@@ -219,7 +219,7 @@ sgen_pin_stats_print_class_stats (void)
        } SGEN_HASH_TABLE_FOREACH_END;
 
        mono_gc_printf (gc_debug_file, "\n%-50s  %10s\n", "Class", "#Remsets");
-       SGEN_HASH_TABLE_FOREACH (&global_remset_class_hash_table, name, remset_entry) {
+       SGEN_HASH_TABLE_FOREACH (&global_remset_class_hash_table, char *, name, GlobalRemsetClassEntry *, remset_entry) {
                mono_gc_printf (gc_debug_file, "%-50s  %10ld\n", name, remset_entry->num_remsets);
        } SGEN_HASH_TABLE_FOREACH_END;
 
index fc0ba0bbdf6c6e977ed1b5a9c33205d90fcdd615..a94af9ddf4494db961697faac801a9273bece46b 100644 (file)
@@ -173,7 +173,7 @@ sgen_dump_pin_queue (void)
        int i;
 
        for (i = 0; i < last_num_pinned; ++i) {
-               void *ptr = pin_queue.data [i];
+               GCObject *ptr = (GCObject *)pin_queue.data [i];
                SGEN_LOG (3, "Bastard pinning obj %p (%s), size: %zd", ptr, sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (ptr)), sgen_safe_object_get_size (ptr));
        }
 }
index 0e3fea65318f4973b78fb47040f410f80dfa95d1..196bc3010716ef21708b019d4bddafb2656b4618 100644 (file)
@@ -43,7 +43,7 @@ static void
 realloc_queue (SgenPointerQueue *queue)
 {
        size_t new_size = queue->size ? queue->size + queue->size/2 : 1024;
-       void **new_data = sgen_alloc_internal_dynamic (sizeof (void*) * new_size, queue->mem_type, TRUE);
+       void **new_data = (void **)sgen_alloc_internal_dynamic (sizeof (void*) * new_size, queue->mem_type, TRUE);
 
        memcpy (new_data, queue->data, sizeof (void*) * queue->next_slot);
        sgen_free_internal_dynamic (queue->data, sizeof (void*) * queue->size, queue->mem_type);
index 94acad1f56f8805235498ee88afb68161273bed0..6d76952b0af8a57077aa2cc475916a2209b59a62 100644 (file)
@@ -112,7 +112,7 @@ MATCH_INDEX (matches_interval (ptr, entry->addr, entry->size) ? 0 : BINARY_PROTO
 IS_VTABLE_MATCH (FALSE)
 END_PROTOCOL_ENTRY_HEAVY
 
-BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_block_set_state, TYPE_POINTER, addr, TYPE_SIZE, size, TYPE_INT, old, TYPE_INT, new)
+BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_block_set_state, TYPE_POINTER, addr, TYPE_SIZE, size, TYPE_INT, old, TYPE_INT, new_)
 DEFAULT_PRINT ()
 IS_ALWAYS_MATCH (FALSE)
 MATCH_INDEX (matches_interval (ptr, entry->addr, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
index 4ea1ac391c9a4e083a5fa3f842d1e8ed3548ff53..5b30cbce11b832f65c640596ba7469f72be9ffb6 100644 (file)
@@ -69,7 +69,7 @@ filename_for_index (int index)
 
        SGEN_ASSERT (0, file_size_limit > 0, "Indexed binary protocol filename must only be used with file size limit");
 
-       filename = sgen_alloc_internal_dynamic (strlen (filename_or_prefix) + 32, INTERNAL_MEM_BINARY_PROTOCOL, TRUE);
+       filename = (char *)sgen_alloc_internal_dynamic (strlen (filename_or_prefix) + 32, INTERNAL_MEM_BINARY_PROTOCOL, TRUE);
        sprintf (filename, "%s.%d", filename_or_prefix, index);
 
        return filename;
@@ -108,7 +108,7 @@ void
 binary_protocol_init (const char *filename, long long limit)
 {
 #ifdef HAVE_UNISTD_H
-       filename_or_prefix = sgen_alloc_internal_dynamic (strlen (filename) + 1, INTERNAL_MEM_BINARY_PROTOCOL, TRUE);
+       filename_or_prefix = (char *)sgen_alloc_internal_dynamic (strlen (filename) + 1, INTERNAL_MEM_BINARY_PROTOCOL, TRUE);
        strcpy (filename_or_prefix, filename);
 
        file_size_limit = limit;
@@ -251,7 +251,7 @@ binary_protocol_flush_buffers (gboolean force)
 
        for (buf = binary_protocol_buffers; buf != NULL; buf = buf->next)
                ++num_buffers;
-       bufs = sgen_alloc_internal_dynamic (num_buffers * sizeof (BinaryProtocolBuffer*), INTERNAL_MEM_BINARY_PROTOCOL, TRUE);
+       bufs = (BinaryProtocolBuffer **)sgen_alloc_internal_dynamic (num_buffers * sizeof (BinaryProtocolBuffer*), INTERNAL_MEM_BINARY_PROTOCOL, TRUE);
        for (buf = binary_protocol_buffers, i = 0; buf != NULL; buf = buf->next, i++)
                bufs [i] = buf;
        SGEN_ASSERT (0, i == num_buffers, "Binary protocol buffer count error");
@@ -280,7 +280,7 @@ binary_protocol_get_buffer (int length)
        if (buffer && buffer->index + length <= BINARY_PROTOCOL_BUFFER_SIZE)
                return buffer;
 
-       new_buffer = sgen_alloc_os_memory (sizeof (BinaryProtocolBuffer), SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE, "debugging memory");
+       new_buffer = (BinaryProtocolBuffer *)sgen_alloc_os_memory (sizeof (BinaryProtocolBuffer), (SgenAllocFlags)(SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE), "debugging memory");
        new_buffer->next = buffer;
        new_buffer->index = 0;
 
index ea427f6a21fee793d5738222aa793cdf3ee52bf8..588651fbc0b67965c946fadc800602c16ca05b0d 100644 (file)
@@ -179,8 +179,8 @@ mark_bit (char *space_bitmap, char *pos)
 static void
 mark_bits_in_range (char *space_bitmap, char *start, char *end)
 {
-       start = align_down (start, SGEN_TO_SPACE_GRANULE_BITS);
-       end = align_up (end, SGEN_TO_SPACE_GRANULE_BITS);
+       start = (char *)align_down (start, SGEN_TO_SPACE_GRANULE_BITS);
+       end = (char *)align_up (end, SGEN_TO_SPACE_GRANULE_BITS);
 
        for (;start < end; start += SGEN_TO_SPACE_GRANULE_IN_BYTES)
                mark_bit (space_bitmap, start);
@@ -244,7 +244,7 @@ alloc_for_promotion_slow_path (int age, size_t objsize)
        size_t allocated_size;
        size_t aligned_objsize = (size_t)align_up (objsize, SGEN_TO_SPACE_GRANULE_BITS);
 
-       p = sgen_fragment_allocator_serial_range_alloc (
+       p = (char *)sgen_fragment_allocator_serial_range_alloc (
                &collector_allocator,
                MAX (aligned_objsize, AGE_ALLOC_BUFFER_DESIRED_SIZE),
                MAX (aligned_objsize, AGE_ALLOC_BUFFER_MIN_SIZE),
@@ -336,8 +336,8 @@ prepare_to_space (char *to_space_bitmap, size_t space_bitmap_size)
        previous = &collector_allocator.alloc_head;
 
        for (frag = *previous; frag; frag = *previous) {
-               char *start = align_up (frag->fragment_next, SGEN_TO_SPACE_GRANULE_BITS);
-               char *end = align_down (frag->fragment_end, SGEN_TO_SPACE_GRANULE_BITS);
+               char *start = (char *)align_up (frag->fragment_next, SGEN_TO_SPACE_GRANULE_BITS);
+               char *end = (char *)align_down (frag->fragment_end, SGEN_TO_SPACE_GRANULE_BITS);
 
                /* Fragment is too small to be usable. */
                if ((end - start) < SGEN_MAX_NURSERY_WASTE) {
@@ -378,12 +378,12 @@ static void
 init_nursery (SgenFragmentAllocator *allocator, char *start, char *end)
 {
        int alloc_quote = (int)((end - start) * alloc_ratio);
-       promotion_barrier = align_down (start + alloc_quote, 3);
+       promotion_barrier = (char *)align_down (start + alloc_quote, 3);
        sgen_fragment_allocator_add (allocator, start, promotion_barrier);
        sgen_fragment_allocator_add (&collector_allocator, promotion_barrier, end);
 
        region_age_size = (end - start) >> SGEN_TO_SPACE_GRANULE_BITS;
-       region_age = g_malloc0 (region_age_size);
+       region_age = (char *)g_malloc0 (region_age_size);
 }
 
 static gboolean
index 056c248789e60ff668ce414e6be81d5fb7e4836d..e9706943f847803dc38b88b633b6464aefe85c75 100644 (file)
@@ -52,7 +52,7 @@ static SgenThreadPoolJob*
 get_job_and_set_in_progress (void)
 {
        for (size_t i = 0; i < job_queue.next_slot; ++i) {
-               SgenThreadPoolJob *job = job_queue.data [i];
+               SgenThreadPoolJob *job = (SgenThreadPoolJob *)job_queue.data [i];
                if (job->state == STATE_WAITING) {
                        job->state = STATE_IN_PROGRESS;
                        return job;
@@ -171,7 +171,7 @@ sgen_thread_pool_init (int num_threads, SgenThreadPoolThreadInitFunc init_func,
 SgenThreadPoolJob*
 sgen_thread_pool_job_alloc (const char *name, SgenThreadPoolJobFunc func, size_t size)
 {
-       SgenThreadPoolJob *job = sgen_alloc_internal_dynamic (size, INTERNAL_MEM_THREAD_POOL_JOB, TRUE);
+       SgenThreadPoolJob *job = (SgenThreadPoolJob *)sgen_alloc_internal_dynamic (size, INTERNAL_MEM_THREAD_POOL_JOB, TRUE);
        job->name = name;
        job->size = size;
        job->state = STATE_WAITING;
index 40d0ed103595b9a75ba1a338599267e5a80e44d5..8f1af1331299b951daef97af52ceeb1c4d137bb7 100644 (file)
@@ -191,7 +191,7 @@ init_private_gray_queue (WorkerData *data)
 static void
 thread_pool_init_func (void *data_untyped)
 {
-       WorkerData *data = data_untyped;
+       WorkerData *data = (WorkerData *)data_untyped;
        SgenMajorCollector *major = sgen_get_major_collector ();
 
        sgen_client_thread_register_worker ();
@@ -211,7 +211,7 @@ continue_idle_func (void)
 static void
 marker_idle_func (void *data_untyped)
 {
-       WorkerData *data = data_untyped;
+       WorkerData *data = (WorkerData *)data_untyped;
 
        SGEN_ASSERT (0, continue_idle_func (), "Why are we called when we're not supposed to work?");
        SGEN_ASSERT (0, sgen_concurrent_collection_in_progress (), "The worker should only mark in concurrent collections.");
@@ -258,7 +258,7 @@ void
 sgen_workers_init (int num_workers)
 {
        int i;
-       void **workers_data_ptrs = alloca(num_workers * sizeof(void *));
+       void **workers_data_ptrs = (void **)alloca(num_workers * sizeof(void *));
 
        if (!sgen_get_major_collector ()->is_concurrent) {
                sgen_thread_pool_init (num_workers, thread_pool_init_func, NULL, NULL, NULL);
@@ -269,7 +269,7 @@ sgen_workers_init (int num_workers)
 
        workers_num = num_workers;
 
-       workers_data = sgen_alloc_internal_dynamic (sizeof (WorkerData) * num_workers, INTERNAL_MEM_WORKER_DATA, TRUE);
+       workers_data = (WorkerData *)sgen_alloc_internal_dynamic (sizeof (WorkerData) * num_workers, INTERNAL_MEM_WORKER_DATA, TRUE);
        memset (workers_data, 0, sizeof (WorkerData) * num_workers);
 
        init_distribute_gray_queue ();
index f784c41bfdcb5254988f24156497a91607202c97..1535dec49d884584e8319b269935bc31ba1c5086 100644 (file)
@@ -363,6 +363,7 @@ BASE_TEST_CS_SRC=           \
        bug-324535.cs   \
        modules.cs      \
        bug-81673.cs    \
+       bug-36848.cs    \
        bug-81691.cs    \
        bug-80307.cs    \
        bug-415577.cs   \
@@ -1198,6 +1199,12 @@ bug-81673.exe bug-81673-interface.dll: $(srcdir)/bug-81673.cs $(srcdir)/bug-8167
        $(MCS) -out:bug-81673.exe -r:bug-81673-interface.dll $(srcdir)/bug-81673.cs
        $(MCS) -define:WITH_STOP -target:library -out:bug-81673-interface.dll $(srcdir)/bug-81673-interface.cs
 
+EXTRA_DIST += bug-36848-a.cs.cs
+bug-36848.exe bug-36848-a.dll: $(srcdir)/bug-36848.cs $(srcdir)/bug-36848-a.cs
+       $(MCS) -target:library -out:bug-36848-a.dll $(srcdir)/bug-36848-a.cs
+       $(MCS) -r:bug-36848-a.dll -out:bug-36848.exe $(srcdir)/bug-36848.cs
+       $(MCS) -target:library -out:bug-36848-a.dll $(srcdir)/bug-36848-a.cs /define:WITH_STOP
+
 EXTRA_DIST += bug-81691-a.cs bug-81691-b.cs
 bug-81691.exe bug-81691-b.dll: $(srcdir)/bug-81691.cs $(srcdir)/bug-81691-a.cs $(srcdir)/bug-81691-b.cs
        $(MCS) -target:library -out:bug-81691-a.dll $(srcdir)/bug-81691-a.cs
diff --git a/mono/tests/bug-36848-a.cs b/mono/tests/bug-36848-a.cs
new file mode 100644 (file)
index 0000000..5af4354
--- /dev/null
@@ -0,0 +1,12 @@
+using System;
+
+namespace Application
+{
+       public interface IMyInterface
+       {
+               void Run ();
+#if WITH_STOP
+               void Stop ();
+#endif
+       }
+}
diff --git a/mono/tests/bug-36848.cs b/mono/tests/bug-36848.cs
new file mode 100644 (file)
index 0000000..f91447a
--- /dev/null
@@ -0,0 +1,52 @@
+// Load an interface from an invalid DLL and ensure the failure is clean.
+// Notice this is very similar to bug-81673, except the interface is loaded
+// through a transparent proxy instead of directly.
+
+using System;
+using System.Runtime.Remoting;
+using System.Runtime.Remoting.Proxies;
+using System.Runtime.Remoting.Messaging;
+
+namespace Application
+{
+       public class App
+       {
+               public static void Test ()
+               {
+               RemoteProxy remote2 = new RemoteProxy (typeof(App).Assembly.GetType("Application.Remote"));
+               remote2.GetTransparentProxy ();
+               }
+
+               public static int Main ()
+               {
+                       int numCaught = 0;
+
+                       for (int i = 0; i < 10; ++i) {
+                               try {
+                                       Test ();
+                               } catch (Exception) {
+                                       ++numCaught;
+                               }
+                       }
+                       if (numCaught == 10)
+                               return 0;
+                       return 1;
+               }
+       }
+
+       class Remote : MarshalByRefObject, IMyInterface {
+               public void Run ()
+               {
+               }
+       }
+
+       class RemoteProxy : RealProxy {
+               public RemoteProxy (Type t) : base (t) {
+
+               }
+
+               public override IMessage Invoke (IMessage request) {
+                       return null;
+               }
+       }
+}
index 60983ef323e4f863a97cdd7857158d20407a337c..de80d9f693f06a8e96a032c2da3cbb9423792e19 100644 (file)
@@ -99,7 +99,7 @@ static gunichar2* marshal_bstr_alloc(const gchar* str)
        int slen = strlen (str);
        gunichar2* temp;
        /* allocate len + 1 utf16 characters plus 4 byte integer for length*/
-       ret = g_malloc ((slen + 1) * sizeof(gunichar2) + sizeof(guint32));
+       ret = (gchar *)g_malloc ((slen + 1) * sizeof(gunichar2) + sizeof(guint32));
        if (ret == NULL)
                return NULL;
        temp = g_utf8_to_utf16 (str, -1, NULL, NULL, NULL);
@@ -129,7 +129,7 @@ test_lpwstr_marshal (unsigned short* chars, long length)
        int i = 0;
        unsigned short *res;
 
-       res = marshal_alloc (2 * (length + 1));
+       res = (unsigned short *)marshal_alloc (2 * (length + 1));
 
        // printf("test_lpwstr_marshal()\n");
        
@@ -152,7 +152,7 @@ test_lpwstr_marshal_out (unsigned short** chars)
        const char abc[] = "ABC";
        glong len = strlen(abc);
 
-       *chars = marshal_alloc (2 * (len + 1));
+       *chars = (unsigned short *)marshal_alloc (2 * (len + 1));
        
        while ( i < len ) {
                (*chars) [i] = abc[i];
@@ -515,7 +515,7 @@ mono_test_marshal_out_byref_array_out_size_param (int **out_arr, int *out_len)
        int i, len;
 
        len = 4;
-       arr = marshal_alloc (sizeof (gint32) * len);
+       arr = (gint32 *)marshal_alloc (sizeof (gint32) * len);
        for (i = 0; i < len; ++i)
                arr [i] = i;
        *out_arr = arr;
@@ -623,7 +623,7 @@ LIBTEST_API int STDCALL
 mono_test_marshal_out_struct (int a, simplestruct *ss, int b, OutVTypeDelegate func)
 {
        /* Check that the input pointer is ignored */
-       ss->d = (gpointer)0x12345678;
+       ss->d = (const char *)0x12345678;
 
        func (a, ss, b);
 
@@ -1018,7 +1018,7 @@ mono_test_marshal_delegate7 (SimpleDelegate7 delegate)
        simplestruct *ptr;
 
        /* Check that the input pointer is ignored */
-       ptr = (gpointer)0x12345678;
+       ptr = (simplestruct *)0x12345678;
 
        res = delegate (&ptr);
        if (res != 0)
@@ -1067,7 +1067,7 @@ typedef int (STDCALL *SimpleDelegate9) (return_int_fnt d);
 LIBTEST_API int STDCALL 
 mono_test_marshal_delegate9 (SimpleDelegate9 delegate, gpointer ftn)
 {
-       return delegate (ftn);
+       return delegate ((return_int_fnt)ftn);
 }
 
 static int STDCALL 
@@ -1172,7 +1172,7 @@ mono_test_marshal_stringbuilder_out (char **s)
        const char m[] = "This is my message.  Isn't it nice?";
        char *str;
 
-       str = marshal_alloc (strlen (m) + 1);
+       str = (char *)marshal_alloc (strlen (m) + 1);
        memcpy (str, m, strlen (m) + 1);
        
        *s = str;
@@ -1188,7 +1188,7 @@ mono_test_marshal_stringbuilder_out_unicode (gunichar2 **s)
        s2 = g_utf8_to_utf16 (m, -1, NULL, &len, NULL);
        
        len = (len * 2) + 2;
-       *s = marshal_alloc (len);
+       *s = (gunichar2 *)marshal_alloc (len);
        memcpy (*s, s2, len);
 
        g_free (s2);
@@ -1205,18 +1205,21 @@ mono_test_marshal_stringbuilder_ref (char **s)
        if (strcmp (*s, "ABC"))
                return 1;
 
-       str = marshal_alloc (strlen (m) + 1);
+       str = (char *)marshal_alloc (strlen (m) + 1);
        memcpy (str, m, strlen (m) + 1);
        
        *s = str;
        return 0;
 }
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++-compat"
 typedef struct {
 #ifndef __GNUC__
     char a;
 #endif
 } EmptyStruct;
+#pragma GCC diagnostic pop
 
 LIBTEST_API int STDCALL 
 mono_test_marshal_empty_string_array (char **array)
@@ -1334,7 +1337,7 @@ mono_test_byvalstr_gen (void)
 {
        ByValStrStruct *ret;
        
-       ret = malloc(sizeof(ByValStrStruct));
+       ret = (ByValStrStruct *)malloc (sizeof (ByValStrStruct));
        memset(ret, 'a', sizeof(ByValStrStruct)-1);
        ret->a[sizeof(ByValStrStruct)-1] = 0;
 
@@ -1490,7 +1493,7 @@ class_marshal_test4 (SimpleObj *obj1)
 LIBTEST_API void STDCALL
 class_marshal_test1 (SimpleObj **obj1)
 {
-       SimpleObj *res = malloc (sizeof (SimpleObj));
+       SimpleObj *res = (SimpleObj *)malloc (sizeof (SimpleObj));
 
        res->str = marshal_strdup ("ABC");
        res->i = 5;
@@ -1733,7 +1736,7 @@ mono_test_asany (void *ptr, int what)
                GError *error = NULL;
                char *s;
 
-               s = g_utf16_to_utf8 (ptr, -1, NULL, NULL, &error);
+               s = g_utf16_to_utf8 ((const gunichar2 *)ptr, -1, NULL, NULL, &error);
 
                if (!s)
                        return 1;
@@ -1765,7 +1768,7 @@ typedef struct
 LIBTEST_API int STDCALL 
 mono_test_marshal_asany_in (void* ptr)
 {
-       AsAnyStruct* asAny = ptr;
+       AsAnyStruct *asAny = (AsAnyStruct *)ptr;
        int res = asAny->i + asAny->j + asAny->k;
 
        return res;
@@ -1774,7 +1777,7 @@ mono_test_marshal_asany_in (void* ptr)
 LIBTEST_API int STDCALL 
 mono_test_marshal_asany_inout (void* ptr)
 {
-       AsAnyStruct* asAny = ptr;
+       AsAnyStruct *asAny = (AsAnyStruct *)ptr;
        int res = asAny->i + asAny->j + asAny->k;
 
        marshal_free (asAny->s);
@@ -1790,7 +1793,7 @@ mono_test_marshal_asany_inout (void* ptr)
 LIBTEST_API int STDCALL 
 mono_test_marshal_asany_out (void* ptr)
 {
-       AsAnyStruct* asAny = ptr;
+       AsAnyStruct *asAny = (AsAnyStruct *)ptr;
        int res = asAny->i + asAny->j + asAny->k;
 
        asAny->i = 10;
@@ -1976,7 +1979,7 @@ mono_test_marshal_pass_return_custom_in_delegate (PassReturnPtrDelegate del)
        buf [0] = 0;
        buf [1] = 10;
 
-       ptr = del (&buf);
+       ptr = (guint32 *)del (&buf);
 
        res = ptr [1];
 
@@ -3586,22 +3589,22 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
        int ret = 0;
 
        gpointer (*mono_method_get_unmanaged_thunk)(gpointer)
-               = lookup_mono_symbol ("mono_method_get_unmanaged_thunk");
+               = (gpointer (*)(gpointer))lookup_mono_symbol ("mono_method_get_unmanaged_thunk");
 
        gpointer (*mono_string_new_wrapper)(const char *)
-               = lookup_mono_symbol ("mono_string_new_wrapper");
+               = (gpointer (*)(const char *))lookup_mono_symbol ("mono_string_new_wrapper");
 
-       char(*mono_string_to_utf8)(gpointer)
-               = lookup_mono_symbol ("mono_string_to_utf8");
+       char *(*mono_string_to_utf8)(gpointer)
+               = (char *(*)(gpointer))lookup_mono_symbol ("mono_string_to_utf8");
 
        gpointer (*mono_object_unbox)(gpointer)
-               = lookup_mono_symbol ("mono_object_unbox");
+               = (gpointer (*)(gpointer))lookup_mono_symbol ("mono_object_unbox");
 
        gpointer (*mono_threads_enter_gc_unsafe_region) (gpointer)
-               = lookup_mono_symbol ("mono_threads_enter_gc_unsafe_region");
+               = (gpointer (*)(gpointer))lookup_mono_symbol ("mono_threads_enter_gc_unsafe_region");
 
        void (*mono_threads_exit_gc_unsafe_region) (gpointer, gpointer)
-               = lookup_mono_symbol ("mono_threads_exit_gc_unsafe_region");
+               = (void (*)(gpointer, gpointer))lookup_mono_symbol ("mono_threads_exit_gc_unsafe_region");
 
        
 
@@ -3621,7 +3624,7 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                goto done;
        }
 
-       CreateObject = mono_method_get_unmanaged_thunk (create_object_method_handle);
+       CreateObject = (gpointer (STDCALL *)(gpointer *))mono_method_get_unmanaged_thunk (create_object_method_handle);
        if (!CreateObject) {
                ret = 3;
                goto done;
@@ -3632,14 +3635,14 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
 
        case 0: {
                /* thunks.cs:Test.Test0 */
-               void (STDCALL *F)(gpointer*) = test_method;
+               void (STDCALL *F)(gpointer *) = (void (STDCALL *)(gpointer *))test_method;
                F (&ex);
                break;
        }
 
        case 1: {
                /* thunks.cs:Test.Test1 */
-               int (STDCALL *F)(gpointer*) = test_method;
+               int (STDCALL *F)(gpointer *) = (int (STDCALL *)(gpointer *))test_method;
                if (F (&ex) != 42) {
                        ret = 4;
                        goto done;
@@ -3649,7 +3652,7 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
 
        case 2: {
                /* thunks.cs:Test.Test2 */
-               gpointer (STDCALL *F)(gpointer, gpointer*) = test_method;
+               gpointer (STDCALL *F)(gpointer, gpointer*) = (gpointer (STDCALL *)(gpointer, gpointer *))test_method;
                gpointer str = mono_string_new_wrapper ("foo");
                if (str != F (str, &ex)) {
                        ret = 4;
@@ -3664,7 +3667,7 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                gpointer obj;
                gpointer str;
 
-               F = test_method;
+               F = (gpointer (STDCALL *)(gpointer, gpointer, gpointer *))test_method;
                obj = CreateObject (&ex);
                str = mono_string_new_wrapper ("bar");
 
@@ -3681,7 +3684,7 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                gpointer obj;
                gpointer str;
 
-               F = test_method;
+               F = (int (STDCALL *)(gpointer, gpointer, int, gpointer *))test_method;
                obj = CreateObject (&ex);
                str = mono_string_new_wrapper ("bar");
 
@@ -3699,7 +3702,7 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                gpointer obj;
                gpointer str;
 
-               F = test_method;
+               F = (int (STDCALL *)(gpointer, gpointer, int, gpointer *))test_method;
                obj = CreateObject (&ex);
                str = mono_string_new_wrapper ("bar");
 
@@ -3720,7 +3723,7 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                gpointer str = mono_string_new_wrapper ("Test6");
                int res;
 
-               F = test_method;
+               F = (int (STDCALL *)(gpointer, guint8, gint16, gint32, gint64, float, double, gpointer, gpointer *))test_method;
                obj = CreateObject (&ex);
 
                res = F (obj, 254, 32700, -245378, 6789600, 3.1415, 3.1415, str, &ex);
@@ -3739,7 +3742,7 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
 
        case 7: {
                /* thunks.cs:Test.Test7 */
-               gint64 (STDCALL *F)(gpointer*) = test_method;
+               gint64 (STDCALL *F)(gpointer*) = (gint64 (STDCALL *)(gpointer *))test_method;
                if (F (&ex) != G_MAXINT64) {
                        ret = 4;
                        goto done;
@@ -3760,7 +3763,8 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                double a6;
                gpointer a7;
 
-               F = test_method;
+               F = (void (STDCALL *)(guint8 *, gint16 *, gint32 *, gint64 *, float *, double *,
+                       gpointer *, gpointer *))test_method;
 
                F (&a1, &a2, &a3, &a4, &a5, &a6, &a7, &ex);
                if (ex) {
@@ -3785,7 +3789,7 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
        case 9: {
                /* thunks.cs:Test.Test9 */
                void (STDCALL *F)(guint8*, gint16*, gint32*, gint64*, float*, double*,
-                                gpointer*, gpointer*);
+                       gpointer*, gpointer*);
 
                guint8 a1;
                gint16 a2;
@@ -3795,7 +3799,8 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                double a6;
                gpointer a7;
 
-               F = test_method;
+               F = (void (STDCALL *)(guint8 *, gint16 *, gint32 *, gint64 *, float *, double *,
+                       gpointer *, gpointer *))test_method;
 
                F (&a1, &a2, &a3, &a4, &a5, &a6, &a7, &ex);
                if (!ex) {
@@ -3818,7 +3823,7 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                        goto done;
                }
 
-               F = test_method;
+               F = (void (STDCALL *)(gpointer *, gpointer *))test_method;
 
                F (&obj1, &ex);
                if (ex) {
@@ -3853,7 +3858,7 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                        goto done;
                }
 
-               a1 = mono_object_unbox (obj);
+               a1 = (TestStruct *)mono_object_unbox (obj);
                if (!a1) {
                        ret = 6;
                        goto done;
@@ -3862,9 +3867,9 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                a1->A = 42;
                a1->B = 3.1415;
 
-               F = test_method;
+               F = (int (STDCALL *)(gpointer *, gpointer *))test_method;
 
-               res = F (obj, &ex);
+               res = F ((gpointer *)obj, &ex);
                if (ex) {
                        ret = 7;
                        goto done;
@@ -3902,13 +3907,13 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                        goto done;
                }
 
-               a1 = mono_object_unbox (obj);
+               a1 = (TestStruct *)mono_object_unbox (obj);
                if (!a1) {
                        ret = 6;
                        goto done;
                }
 
-               F = test_method;
+               F = (void (STDCALL *)(gpointer, gpointer *))test_method;
 
                F (obj, &ex);
                if (ex) {
@@ -3936,7 +3941,7 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                TestStruct *a1;
                gpointer obj;
 
-               F = test_method;
+               F = (gpointer (STDCALL *)(gpointer *))test_method;
 
                obj = F (&ex);
                if (ex) {
@@ -3949,7 +3954,7 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                        goto done;
                }
 
-               a1 = mono_object_unbox (obj);
+               a1 = (TestStruct *)mono_object_unbox (obj);
 
                if (a1->A != 42) {
                        ret = 5;
@@ -3982,7 +3987,7 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                        goto done;
                }
                
-               a1 = mono_object_unbox (obj);
+               a1 = (TestStruct *)mono_object_unbox (obj);
 
                if (!a1) {
                        ret = 6;
@@ -3992,7 +3997,7 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                a1->A = 42;
                a1->B = 3.1415;
 
-               F = test_method;
+               F = (void (STDCALL *)(gpointer, gpointer *))test_method;
 
                F (obj, &ex);
                if (ex) {
@@ -5406,7 +5411,7 @@ static int call_managed_res;
 static void
 call_managed (gpointer arg)
 {
-       SimpleDelegate del = arg;
+       SimpleDelegate del = (SimpleDelegate)arg;
 
        call_managed_res = del (42);
 }
@@ -5420,7 +5425,7 @@ mono_test_marshal_thread_attach (SimpleDelegate del)
        int res;
        pthread_t t;
 
-       res = pthread_create (&t, NULL, (gpointer)call_managed, del);
+       res = pthread_create (&t, NULL, (gpointer (*)(gpointer))call_managed, del);
        g_assert (res == 0);
        pthread_join (t, NULL);
 
@@ -5466,7 +5471,7 @@ mono_test_marshal_lpwstr (gunichar2 *str)
 LIBTEST_API char* STDCALL
 mono_test_marshal_return_lpstr (void)
 {
-       char *res = marshal_alloc (4);
+       char *res = (char *)marshal_alloc (4);
        strcpy (res, "XYZ");
        return res;
 }
@@ -5475,7 +5480,7 @@ mono_test_marshal_return_lpstr (void)
 LIBTEST_API gunichar2* STDCALL
 mono_test_marshal_return_lpwstr (void)
 {
-       gunichar2 *res = marshal_alloc (8);
+       gunichar2 *res = (gunichar2 *)marshal_alloc (8);
        gunichar2* tmp = g_utf8_to_utf16 ("XYZ", -1, NULL, NULL, NULL);
 
        memcpy (res, tmp, 8);
index a2b86bbd825a35c59a56ee68e8bc5726d8cc0a30..2fb1498f60995e14dde7add344b9f5722e030ec2 100644 (file)
@@ -40,9 +40,9 @@
 int
 main (void)
 {
-       unsigned char *random_mem = malloc (POOL_SIZE);
-       unsigned char *reference = malloc (POOL_SIZE);
-       unsigned char *playground = malloc (POOL_SIZE);
+       unsigned char *random_mem = (unsigned char *)malloc (POOL_SIZE);
+       unsigned char *reference = (unsigned char *)malloc (POOL_SIZE);
+       unsigned char *playground = (unsigned char *)malloc (POOL_SIZE);
        long *long_random_mem;
        int i, offset, size, src_offset, dest_offset;
 
index 7d5cac53085e4ff5f6148fb3a3095a0a5c4f81cd..a5e01ebe09ec6e5f913e1ad936c822596d39ecde 100644 (file)
@@ -48,7 +48,7 @@ mono_hazard_pointer_clear_all (MonoThreadHazardPointers *hp, int retain)
 static void
 free_node (void *n)
 {
-       node_t *node = n;
+       node_t *node = (node_t *)n;
        assert (node->state == STATE_BUSY);
        node->state = STATE_OUT;
 }
@@ -56,7 +56,7 @@ free_node (void *n)
 static void*
 worker (void *arg)
 {
-       thread_data_t *thread_data = arg;
+       thread_data_t *thread_data = (thread_data_t *)arg;
        MonoThreadHazardPointers *hp;
        int skip = thread_data->skip;
        int i, j;
index 40ca64cb01f1d64db54abc270b47d5c2f652aa07..951b1b7321bb04a0f35ef4d9408308265748ac41 100644 (file)
@@ -100,7 +100,7 @@ compare_sorts2 (void *base, size_t nel)
        memcpy (b2, base, len);
 
        qsort (b1, nel, sizeof (teststruct_t*), compare_teststructs2);
-       qsort_test_struct (b2, nel);
+       qsort_test_struct ((teststruct_t **)b2, nel);
 
        assert (!memcmp (b1, b2, len));
 
index 47be44419ae42b1c98341dd2dc4c4c627dcb6156..399a5c609a9b7ec323b5e3afc7264d3e8a9511c0 100644 (file)
@@ -42,7 +42,7 @@ mono_binary_search (
        size_t member_size,
        BinarySearchComparer comparer)
 {
-       const char *base = array;
+       const char *base = (const char *)array;
        size_t lim;
        int cmp;
        const void *p;
index c2a39d22b84287af5dbdab56066025cfaf13eb3e..f657b5532ee76999e868360a7dbc69f3e5fe4b0b 100644 (file)
@@ -188,7 +188,7 @@ mono_gc_memmove_aligned (void *dest, const void *src, size_t size)
                        while (p > align_end)
                                *--p = *--s;
 
-                       word_start = align_up (start);
+                       word_start = (char *)align_up (start);
                        bytes_to_memmove = p - word_start;
                        p -= bytes_to_memmove;
                        s -= bytes_to_memmove;
index 30521b2af9ef81e221add9051db5cbf3f46a299f..e0b2dcbbb0e36c49e649da110e62f8a6fd87d247 100644 (file)
@@ -48,7 +48,7 @@ conc_table_new (int size)
 static void
 conc_table_free (gpointer ptr)
 {
-       conc_table *table = ptr;
+       conc_table *table = (conc_table *)ptr;
        g_free (table->kvs);
        g_free (table);
 }
@@ -164,7 +164,7 @@ mono_conc_hashtable_lookup (MonoConcurrentHashTable *hash_table, gpointer key)
        hp = mono_hazard_pointer_get ();
 
 retry:
-       table = get_hazardous_pointer ((gpointer volatile*)&hash_table->table, hp, 0);
+       table = (conc_table *)get_hazardous_pointer ((gpointer volatile*)&hash_table->table, hp, 0);
        table_mask = table->table_size - 1;
        kvs = table->kvs;
        i = hash & table_mask;
index 8f609d0e44d4e618e927e6b253902cd29a86449e..0abcee98f15730a8d73b7a2f4dec99dc81409b06 100644 (file)
@@ -71,7 +71,7 @@ Requires the world to be stoped
 
 #define MONO_LLS_FOREACH_FILTERED(list, element, filter_func, type) {\
        MonoLinkedListSetNode *__cur;   \
-       for (__cur = (list)->head; __cur; __cur = mono_lls_pointer_unmask (__cur->next)) \
+       for (__cur = (list)->head; __cur; __cur = (MonoLinkedListSetNode *)mono_lls_pointer_unmask (__cur->next)) \
                if (!mono_lls_pointer_get_mark (__cur->next)) { \
                        (element) = (type)__cur;                        \
                        if (!filter_func (element)) continue;
index 7766729c65552e301e146a025fe8382c80f6bd9a..c4e20e4ed42400bad8e38c6ddb3a8ff100d13b87 100644 (file)
@@ -161,7 +161,7 @@ mono_process_list (int *size)
                                count = 16;
                        else
                                count *= 2;
-                       buf = g_realloc (buf, count * sizeof (void*));
+                       buf = (void **)g_realloc (buf, count * sizeof (void*));
                }
                buf [i++] = GINT_TO_POINTER (pid);
        }
index d58f3ad507e4ef6a17a4397afbea49be5ebb2ef5..dcf1a786e40b458bd0a67de0cd9a5175b5cf7699 100644 (file)
@@ -157,7 +157,7 @@ mono_threads_finish_blocking (void *cookie, void* stackdata)
        if (!mono_threads_is_coop_enabled ())
                return;
 
-       info = cookie;
+       info = (MonoThreadInfo *)cookie;
        if (!info)
                return;
 
@@ -227,7 +227,7 @@ mono_threads_reset_blocking_end (void *cookie, void* stackdata)
        if (!mono_threads_is_coop_enabled ())
                return;
 
-       info = cookie;
+       info = (MonoThreadInfo *)cookie;
        if (!info)
                return;
 
index d7ca72fada93b443acd421cd16983f0389199919..155f830a0fa15bcda4b9e803617f938c6c513889 100644 (file)
@@ -64,7 +64,7 @@ signal_add_handler (int signo, gpointer handler, int flags)
        struct sigaction previous_sa;
        int ret;
 
-       sa.sa_sigaction = handler;
+       sa.sa_sigaction = (void (*)(int, siginfo_t *, void *))handler;
        sigfillset (&sa.sa_mask);
 
        sa.sa_flags = SA_SIGINFO | flags;
@@ -216,7 +216,8 @@ suspend_signal_handler (int _dummy, siginfo_t *info, void *context)
 #if MONO_ARCH_HAS_MONO_CONTEXT
                MonoContext tmp = current->thread_saved_state [ASYNC_SUSPEND_STATE_INDEX].ctx;
                mono_threads_get_runtime_callbacks ()->setup_async_callback (&tmp, current->async_target, current->user_data);
-               current->async_target = current->user_data = NULL;
+               current->user_data = NULL;
+               current->async_target = NULL;
                mono_monoctx_to_sigctx (&tmp, context);
 #else
                g_error ("The new interruption machinery requires a working mono-context");
index 4f49588757f583c3666c7b03525dcf48ec57aa85..e677ada8457e84592b1d7a4c61273de6635e71f9 100644 (file)
@@ -664,45 +664,6 @@ mono_threads_get_runtime_callbacks (void)
        return &runtime_callbacks;
 }
 
-/*
-The return value is only valid until a matching mono_thread_info_resume is called
-*/
-static MonoThreadInfo*
-mono_thread_info_suspend_sync (MonoNativeThreadId tid, gboolean interrupt_kernel, const char **error_condition)
-{
-       MonoThreadHazardPointers *hp = mono_hazard_pointer_get ();      
-       MonoThreadInfo *info = mono_thread_info_lookup (tid); /*info on HP1*/
-       if (!info) {
-               *error_condition = "Thread not found";
-               return NULL;
-       }
-
-       switch (mono_threads_transition_request_async_suspension (info)) {
-       case AsyncSuspendAlreadySuspended:
-               mono_hazard_pointer_clear (hp, 1); //XXX this is questionable we got to clean the suspend/resume nonsense of critical sections
-               return info;
-       case AsyncSuspendWait:
-               mono_threads_add_to_pending_operation_set (info);
-               break;
-       case AsyncSuspendInitSuspend:
-               if (!begin_async_suspend (info, interrupt_kernel)) {
-                       mono_hazard_pointer_clear (hp, 1);
-                       *error_condition = "Could not suspend thread";
-                       return NULL;
-               }
-       }
-
-       //Wait for the pending suspend to finish
-       mono_threads_wait_pending_operations ();
-
-       if (!check_async_suspend (info)) {
-               mono_hazard_pointer_clear (hp, 1);
-               *error_condition = "Post suspend failed";
-               return NULL;
-       }
-       return info;
-}
-
 /*
 Signal that the current thread wants to be suspended.
 This function can be called without holding the suspend lock held.
@@ -887,14 +848,48 @@ mono_thread_info_in_critical_location (MonoThreadInfo *info)
        return is_thread_in_critical_region (info);
 }
 
+/*
+The return value is only valid until a matching mono_thread_info_resume is called
+*/
+static MonoThreadInfo*
+suspend_sync (MonoNativeThreadId tid, gboolean interrupt_kernel)
+{
+       MonoThreadHazardPointers *hp = mono_hazard_pointer_get ();
+       MonoThreadInfo *info = mono_thread_info_lookup (tid); /*info on HP1*/
+       if (!info)
+               return NULL;
+
+       switch (mono_threads_transition_request_async_suspension (info)) {
+       case AsyncSuspendAlreadySuspended:
+               mono_hazard_pointer_clear (hp, 1); //XXX this is questionable we got to clean the suspend/resume nonsense of critical sections
+               return info;
+       case AsyncSuspendWait:
+               mono_threads_add_to_pending_operation_set (info);
+               break;
+       case AsyncSuspendInitSuspend:
+               if (!begin_async_suspend (info, interrupt_kernel)) {
+                       mono_hazard_pointer_clear (hp, 1);
+                       return NULL;
+               }
+       }
+
+       //Wait for the pending suspend to finish
+       mono_threads_wait_pending_operations ();
+
+       if (!check_async_suspend (info)) {
+               mono_hazard_pointer_clear (hp, 1);
+               return NULL;
+       }
+       return info;
+}
+
 static MonoThreadInfo*
 suspend_sync_nolock (MonoNativeThreadId id, gboolean interrupt_kernel)
 {
        MonoThreadInfo *info = NULL;
        int sleep_duration = 0;
        for (;;) {
-               const char *suspend_error = "Unknown error";
-               if (!(info = mono_thread_info_suspend_sync (id, interrupt_kernel, &suspend_error))) {
+               if (!(info = suspend_sync (id, interrupt_kernel))) {
                        mono_hazard_pointer_clear (mono_hazard_pointer_get (), 1);
                        return NULL;
                }
@@ -912,16 +907,11 @@ suspend_sync_nolock (MonoNativeThreadId id, gboolean interrupt_kernel)
                /* Wait for the pending resume to finish */
                mono_threads_wait_pending_operations ();
 
-               if (!sleep_duration) {
-#ifdef HOST_WIN32
-                       SwitchToThread ();
-#else
-                       sched_yield ();
-#endif
-               }
-               else {
+               if (sleep_duration == 0)
+                       mono_thread_info_yield ();
+               else
                        g_usleep (sleep_duration);
-               }
+
                sleep_duration += 10;
        }
        return info;
@@ -964,38 +954,6 @@ done:
        mono_thread_info_suspend_unlock ();
 }
 
-/*
-WARNING:
-If we are trying to suspend a target that is on a critical region
-and running a syscall we risk looping forever if @interrupt_kernel is FALSE.
-So, be VERY carefull in calling this with @interrupt_kernel == FALSE.
-
-Info is not put on a hazard pointer as a suspended thread cannot exit and be freed.
-
-This function MUST be matched with mono_thread_info_finish_suspend or mono_thread_info_finish_suspend_and_resume
-*/
-MonoThreadInfo*
-mono_thread_info_safe_suspend_sync (MonoNativeThreadId id, gboolean interrupt_kernel)
-{
-       MonoThreadInfo *info = NULL;
-
-       THREADS_SUSPEND_DEBUG ("SUSPENDING tid %p\n", (void*)id);
-       /*FIXME: unify this with self-suspend*/
-       g_assert (id != mono_native_thread_id_get ());
-
-       mono_thread_info_suspend_lock ();
-       mono_threads_begin_global_suspend ();
-
-       info = suspend_sync_nolock (id, interrupt_kernel);
-
-       /* XXX this clears HP 1, so we restated it again */
-       // mono_atomic_store_release (&mono_thread_info_current ()->inside_critical_region, TRUE);
-       mono_threads_end_global_suspend ();
-       mono_thread_info_suspend_unlock ();
-
-       return info;
-}
-
 /**
 Inject an assynchronous call into the target thread. The target thread must be suspended and
 only a single async call can be setup for a given suspend cycle.
@@ -1278,6 +1236,15 @@ mono_thread_info_sleep (guint32 ms, gboolean *alerted)
        return 0;
 }
 
+gint
+mono_thread_info_usleep (guint64 us)
+{
+       MONO_PREPARE_BLOCKING;
+       g_usleep (us);
+       MONO_FINISH_BLOCKING;
+       return 0;
+}
+
 gpointer
 mono_thread_info_tls_get (THREAD_INFO_TYPE *info, MonoTlsKey key)
 {
@@ -1380,7 +1347,7 @@ mono_thread_info_install_interrupt (void (*callback) (gpointer data), gpointer d
        token->callback = callback;
        token->data = data;
 
-       previous_token = InterlockedCompareExchangePointer ((gpointer*) &info->interrupt_token, token, NULL);
+       previous_token = (MonoThreadInfoInterruptToken *)InterlockedCompareExchangePointer ((gpointer*) &info->interrupt_token, token, NULL);
 
        if (previous_token) {
                if (previous_token != INTERRUPT_STATE)
@@ -1407,7 +1374,7 @@ mono_thread_info_uninstall_interrupt (gboolean *interrupted)
        info = mono_thread_info_current ();
        g_assert (info);
 
-       previous_token = InterlockedExchangePointer ((gpointer*) &info->interrupt_token, NULL);
+       previous_token = (MonoThreadInfoInterruptToken *)InterlockedExchangePointer ((gpointer*) &info->interrupt_token, NULL);
 
        /* only the installer can uninstall the token */
        g_assert (previous_token);
@@ -1516,7 +1483,7 @@ mono_thread_info_clear_self_interrupt ()
        info = mono_thread_info_current ();
        g_assert (info);
 
-       previous_token = InterlockedCompareExchangePointer ((gpointer*) &info->interrupt_token, NULL, INTERRUPT_STATE);
+       previous_token = (MonoThreadInfoInterruptToken *)InterlockedCompareExchangePointer ((gpointer*) &info->interrupt_token, NULL, INTERRUPT_STATE);
        g_assert (previous_token == NULL || previous_token == INTERRUPT_STATE);
 
        THREADS_INTERRUPT_DEBUG ("interrupt clear self tid %p previous_token %p\n", mono_thread_info_get_tid (info), previous_token);
index 367b0bed9daeba1cdd187472f2415bf08b99e96a..5fe411dbe1ae05f60bfcd355b1b436204d57ae5a 100644 (file)
@@ -358,9 +358,6 @@ mono_thread_info_list_head (void);
 THREAD_INFO_TYPE*
 mono_thread_info_lookup (MonoNativeThreadId id);
 
-THREAD_INFO_TYPE*
-mono_thread_info_safe_suspend_sync (MonoNativeThreadId tid, gboolean interrupt_kernel);
-
 gboolean
 mono_thread_info_resume (MonoNativeThreadId tid);
 
@@ -409,6 +406,9 @@ mono_thread_info_yield (void);
 gint
 mono_thread_info_sleep (guint32 ms, gboolean *alerted);
 
+gint
+mono_thread_info_usleep (guint64 us);
+
 gpointer
 mono_thread_info_tls_get (THREAD_INFO_TYPE *info, MonoTlsKey key);
 
index ad4a623eda77cd5faaaa7c25ed8fe0bc668e6234..58ab1378a90ab147b5794d7e8752e545cbf46053 100644 (file)
@@ -182,7 +182,7 @@ mono_get_local_interfaces (int family, int *interface_count)
 
        memset (&ifc, 0, sizeof (ifc));
        ifc.ifc_len = IFCONF_BUFF_SIZE;
-       ifc.ifc_buf = g_malloc (IFCONF_BUFF_SIZE); /* We can't have such huge buffers on the stack. */
+       ifc.ifc_buf = (char *)g_malloc (IFCONF_BUFF_SIZE); /* We can't have such huge buffers on the stack. */
        if (ioctl (fd, SIOCGIFCONF, &ifc) < 0)
                goto done;
 
@@ -219,7 +219,8 @@ mono_get_local_interfaces (int family, int *interface_count)
                ++if_count;
        }
 
-       result_ptr = result = g_malloc (if_count * mono_address_size_for_family (family));
+       result = (char *)g_malloc (if_count * mono_address_size_for_family (family));
+       result_ptr = (char *)result;
        FOREACH_IFR (ifr, ifc) {
                if (ifr->ifr_name [0] == '\0')
                        continue;
index bbaac3d85d83fb77666c534ed51697a713a5f1f7..e615aef425d006ff1b3657a161234b3dd45638d2 100644 (file)
@@ -1,2 +1,2 @@
 #!/bin/sh
-exec @bindir@/mono $MONO_OPTIONS @mono_instdir@/xbuild/12.0/bin/xbuild.exe "$@"
+exec @bindir@/mono $MONO_OPTIONS @mono_instdir@/xbuild/14.0/bin/xbuild.exe "$@"
index 64c8ba1b3a5247a7838b3b82d6bf093759bd9f86..1a9a35eb18ae5136db406fb8c8770e462c39d4e3 100644 (file)
@@ -67,9 +67,6 @@
 /* Disable reflection emit support */
 /* #undef DISABLE_REFLECTION_EMIT */
 
-/* Disable inter-process shared handles */
-/* #undef DISABLE_SHARED_HANDLES */
-
 /* Disable advanced SSA JIT optimizations */
 /* #undef DISABLE_SSA */