From fe777c5c826a679b6824862c9bfa52d87528b15b Mon Sep 17 00:00:00 2001 From: Jo Shields Date: Thu, 4 Sep 2014 09:07:35 +0100 Subject: [PATCH] Imported Upstream version 3.8.0 Former-commit-id: 6a76a29bd07d86e57c6c8da45c65ed5447d38a61 --- Makefile.am | 6 +- Makefile.in | 11 +- README.md | 6 + acinclude.m4 | 4 +- config.h.in | 5 +- configure.REMOVED.git-id | 2 +- configure.ac.REMOVED.git-id | 2 +- data/Makefile.in | 4 + data/config.in | 12 +- data/net_2_0/Browsers/Makefile.in | 4 + data/net_2_0/Makefile.in | 4 + data/net_4_0/Browsers/Makefile.in | 4 + data/net_4_0/Makefile.in | 4 + data/net_4_5/Browsers/Makefile.in | 4 + data/net_4_5/Makefile.in | 4 + docs/Makefile.in | 4 + eglib/Makefile.am | 2 + eglib/Makefile.in | 2 + eglib/acinclude.m4 | 4 +- eglib/config.h.in | 3 + eglib/configure.REMOVED.git-id | 2 +- eglib/configure.ac | 8 +- eglib/m4/Makefile.in | 1 + eglib/src/Makefile.am | 3 + eglib/src/Makefile.in.REMOVED.git-id | 2 +- eglib/src/gerror.c | 2 + eglib/src/glib.h | 29 +- eglib/src/goutput.c | 2 + eglib/src/gspawn.c | 4 + eglib/src/gstr.c | 2 + eglib/src/sort.frag.h | 24 + eglib/src/vasprintf.h | 11 + eglib/test/Makefile.in | 1 + eglib/test/file.c | 2 +- .../tools/Aga.Controls.dll.REMOVED.git-id | 1 - .../tools/Gallio.Ambience.Server.exe | Bin 12288 -> 0 bytes .../tools/Gallio.Ambience.UI.dll | Bin 9216 -> 0 bytes .../tools/Gallio.Ambience.dll.REMOVED.git-id | 1 - .../tools/Gallio.Common.Splash.dll | Bin 66048 -> 0 bytes .../tools/Gallio.ControlPanel.exe | Bin 91136 -> 0 bytes .../tools/Gallio.Copy.exe.REMOVED.git-id | 1 - .../tools/Gallio.Echo.exe.REMOVED.git-id | 1 - .../tools/Gallio.Host.Elevated.exe | Bin 15872 -> 0 bytes .../tools/Gallio.Host.Elevated.x86.exe | Bin 15872 -> 0 bytes .../lib/Gallio.3.2.750/tools/Gallio.Host.exe | Bin 15872 -> 0 bytes .../Gallio.3.2.750/tools/Gallio.Host.x86.exe | Bin 15872 -> 0 bytes .../tools/Gallio.Icarus.XmlSerializers.dll | Bin 36864 -> 0 bytes .../tools/Gallio.Icarus.exe.REMOVED.git-id | 1 - .../tools/Gallio.MSBuildTasks.dll | Bin 20480 -> 0 bytes .../tools/Gallio.Navigator.exe.REMOVED.git-id | 1 - .../tools/Gallio.PowerShellCommands.dll | Bin 23040 -> 0 bytes .../Gallio.3.2.750/tools/Gallio.Reports.dll | Bin 17408 -> 0 bytes .../tools/Gallio.UI.dll.REMOVED.git-id | 1 - .../Gallio.3.2.750/tools/Gallio.Utility.exe | Bin 73216 -> 0 bytes .../tools/Gallio.VisualStudio.Interop.dll | Bin 24064 -> 0 bytes .../Gallio.XmlSerializers.dll.REMOVED.git-id | 1 - .../tools/Gallio.dll.REMOVED.git-id | 1 - .../lib/Gallio.3.2.750/tools/Gallio35.dll | Bin 26624 -> 0 bytes .../lib/Gallio.3.2.750/tools/Gallio40.dll | Bin 36352 -> 0 bytes .../ICSharpCode.TextEditor.dll.REMOVED.git-id | 1 - .../tools/MbUnit.Compatibility.dll | Bin 59904 -> 0 bytes .../tools/MbUnit.dll.REMOVED.git-id | 1 - .../lib/Gallio.3.2.750/tools/MbUnit35.dll | Bin 5632 -> 0 bytes .../lib/Gallio.3.2.750/tools/MbUnit40.dll | Bin 5120 -> 0 bytes .../tools/NCover/Gallio.NCoverIntegration.dll | Bin 17408 -> 0 bytes .../lib/Gallio.3.2.750/tools/NHamcrest.dll | Bin 23040 -> 0 bytes .../Latest/Gallio.NUnitAdapterLatest.dll | Bin 24576 -> 0 bytes .../Latest/nunit.core.dll.REMOVED.git-id | 1 - .../NUnit/Latest/nunit.core.interfaces.dll | Bin 57344 -> 0 bytes .../Latest/nunit.framework.dll.REMOVED.git-id | 1 - .../tools/NUnit/Latest/nunit.mocks.dll | Bin 20480 -> 0 bytes .../Latest/nunit.util.dll.REMOVED.git-id | 1 - .../tools/TDNet/Gallio.TDNetRunner.UI.dll | Bin 22016 -> 0 bytes .../tools/TDNet/Gallio.TDNetRunner.dll | Bin 61440 -> 0 bytes .../Gallio.VisualStudio.Shell.dll | Bin 12288 -> 0 bytes ...o.VisualStudio.Shell100.dll.REMOVED.git-id | 1 - ...sualStudio.Tip100.Proxy.dll.REMOVED.git-id | 1 - .../v10.0/Gallio.VisualStudio.Tip100.dll | Bin 45056 -> 0 bytes ...io.VisualStudio.Shell90.dll.REMOVED.git-id | 1 - ...isualStudio.Tip90.Proxy.dll.REMOVED.git-id | 1 - .../v9.0/Gallio.VisualStudio.Tip90.dll | Bin 41984 -> 0 bytes ...nLuo.WinFormsUI.Docking.dll.REMOVED.git-id | 1 - ...ICSharpCode.SharpZipLib.dll.REMOVED.git-id | 1 - .../nunit.framework.dll.REMOVED.git-id | 1 - .../bin/net-1.1/framework/nunit.mocks.dll | Bin 10752 -> 0 bytes .../net-1.1/framework/pnunit.framework.dll | Bin 6656 -> 0 bytes .../NUnit/2.5.9/bin/net-1.1/lib/fit.dll | Bin 49152 -> 0 bytes .../net-1.1/lib/log4net.dll.REMOVED.git-id | 1 - .../bin/net-1.1/lib/nunit-console-runner.dll | Bin 32768 -> 0 bytes .../net-1.1/lib/nunit.core.dll.REMOVED.git-id | 1 - .../bin/net-1.1/lib/nunit.core.interfaces.dll | Bin 57344 -> 0 bytes .../2.5.9/bin/net-1.1/lib/nunit.fixtures.dll | Bin 9728 -> 0 bytes .../net-1.1/lib/nunit.util.dll.REMOVED.git-id | 1 - .../NUnit/2.5.9/bin/net-1.1/nunit-agent.exe | Bin 7168 -> 0 bytes .../NUnit/2.5.9/bin/net-1.1/nunit-console.exe | Bin 4608 -> 0 bytes .../nunit.framework.dll.REMOVED.git-id | 1 - .../NUnit/2.5.9/bin/net-1.1/pnunit-agent.exe | Bin 13824 -> 0 bytes .../2.5.9/bin/net-1.1/pnunit-launcher.exe | Bin 24576 -> 0 bytes .../2.5.9/bin/net-1.1/pnunit.framework.dll | Bin 6656 -> 0 bytes .../NUnit/2.5.9/bin/net-1.1/pnunit.tests.dll | Bin 4608 -> 0 bytes .../NUnit/2.5.9/bin/net-1.1/runFile.exe | Bin 3072 -> 0 bytes .../bin/net-1.1/tests/loadtest-assembly.dll | Bin 53248 -> 0 bytes .../2.5.9/bin/net-1.1/tests/mock-assembly.dll | Bin 9216 -> 0 bytes .../net-1.1/tests/nonamespace-assembly.dll | Bin 4608 -> 0 bytes .../bin/net-1.1/tests/nunit-console.tests.dll | Bin 24576 -> 0 bytes .../tests/nunit.core.tests.dll.REMOVED.git-id | 1 - .../net-1.1/tests/nunit.fixtures.tests.dll | Bin 8192 -> 0 bytes .../tests/nunit.framework.dll.REMOVED.git-id | 1 - .../nunit.framework.tests.dll.REMOVED.git-id | 1 - .../bin/net-1.1/tests/nunit.mocks.tests.dll | Bin 24576 -> 0 bytes .../tests/nunit.util.tests.dll.REMOVED.git-id | 1 - .../2.5.9/bin/net-1.1/tests/test-assembly.dll | Bin 57344 -> 0 bytes .../bin/net-1.1/tests/test-utilities.dll | Bin 24576 -> 0 bytes .../2.5.9/bin/net-1.1/tests/timing-tests.dll | Bin 6656 -> 0 bytes .../nunit.framework.dll.REMOVED.git-id | 1 - .../bin/net-2.0/framework/nunit.mocks.dll | Bin 20480 -> 0 bytes .../net-2.0/framework/pnunit.framework.dll | Bin 6656 -> 0 bytes .../NUnit/2.5.9/bin/net-2.0/lib/fit.dll | Bin 49152 -> 0 bytes .../net-2.0/lib/log4net.dll.REMOVED.git-id | 1 - .../bin/net-2.0/lib/nunit-console-runner.dll | Bin 32768 -> 0 bytes .../lib/nunit-gui-runner.dll.REMOVED.git-id | 1 - .../net-2.0/lib/nunit.core.dll.REMOVED.git-id | 1 - .../bin/net-2.0/lib/nunit.core.interfaces.dll | Bin 57344 -> 0 bytes .../2.5.9/bin/net-2.0/lib/nunit.fixtures.dll | Bin 9728 -> 0 bytes .../bin/net-2.0/lib/nunit.uiexception.dll | Bin 90112 -> 0 bytes .../lib/nunit.uikit.dll.REMOVED.git-id | 1 - .../net-2.0/lib/nunit.util.dll.REMOVED.git-id | 1 - .../2.5.9/bin/net-2.0/nunit-agent-x86.exe | Bin 7680 -> 0 bytes .../NUnit/2.5.9/bin/net-2.0/nunit-agent.exe | Bin 7680 -> 0 bytes .../2.5.9/bin/net-2.0/nunit-console-x86.exe | Bin 4608 -> 0 bytes .../NUnit/2.5.9/bin/net-2.0/nunit-console.exe | Bin 4608 -> 0 bytes .../NUnit/2.5.9/bin/net-2.0/nunit-x86.exe | Bin 5632 -> 0 bytes .../NUnit/2.5.9/bin/net-2.0/nunit.exe | Bin 5632 -> 0 bytes .../nunit.framework.dll.REMOVED.git-id | 1 - .../NUnit/2.5.9/bin/net-2.0/pnunit-agent.exe | Bin 13824 -> 0 bytes .../2.5.9/bin/net-2.0/pnunit-launcher.exe | Bin 24576 -> 0 bytes .../2.5.9/bin/net-2.0/pnunit.framework.dll | Bin 6656 -> 0 bytes .../NUnit/2.5.9/bin/net-2.0/pnunit.tests.dll | Bin 4608 -> 0 bytes .../NUnit/2.5.9/bin/net-2.0/runFile.exe | Bin 3072 -> 0 bytes .../bin/net-2.0/tests/loadtest-assembly.dll | Bin 40960 -> 0 bytes .../2.5.9/bin/net-2.0/tests/mock-assembly.dll | Bin 8704 -> 0 bytes .../net-2.0/tests/nonamespace-assembly.dll | Bin 4608 -> 0 bytes .../bin/net-2.0/tests/nunit-console.tests.dll | Bin 24576 -> 0 bytes .../bin/net-2.0/tests/nunit-gui.tests.dll | Bin 8704 -> 0 bytes .../tests/nunit.core.tests.dll.REMOVED.git-id | 1 - .../net-2.0/tests/nunit.fixtures.tests.dll | Bin 8192 -> 0 bytes .../tests/nunit.framework.dll.REMOVED.git-id | 1 - .../nunit.framework.tests.dll.REMOVED.git-id | 1 - .../bin/net-2.0/tests/nunit.mocks.tests.dll | Bin 24576 -> 0 bytes ...nunit.uiexception.tests.dll.REMOVED.git-id | 1 - .../bin/net-2.0/tests/nunit.uikit.tests.dll | Bin 36864 -> 0 bytes .../tests/nunit.util.tests.dll.REMOVED.git-id | 1 - .../2.5.9/bin/net-2.0/tests/test-assembly.dll | Bin 57344 -> 0 bytes .../bin/net-2.0/tests/test-utilities.dll | Bin 24576 -> 0 bytes .../2.5.9/bin/net-2.0/tests/timing-tests.dll | Bin 6656 -> 0 bytes .../lib/Nuget/NuGet.exe.REMOVED.git-id | 1 - .../Lucene.Net/lib/Spatial4n/NET35/GeoAPI.dll | Bin 52224 -> 0 bytes .../NET35/NetTopologySuite.dll.REMOVED.git-id | 1 - .../NET35/PowerCollections.dll.REMOVED.git-id | 1 - .../Spatial4n/NET35/Spatial4n.Core.NTS.dll | Bin 43520 -> 0 bytes .../lib/Spatial4n/NET35/Spatial4n.Core.dll | Bin 33792 -> 0 bytes .../Lucene.Net/lib/Spatial4n/NET40/GeoAPI.dll | Bin 52224 -> 0 bytes .../NET40/NetTopologySuite.dll.REMOVED.git-id | 1 - .../NET40/PowerCollections.dll.REMOVED.git-id | 1 - .../Spatial4n/NET40/Spatial4n.Core.NTS.dll | Bin 43520 -> 0 bytes .../lib/Spatial4n/NET40/Spatial4n.Core.dll | Bin 33792 -> 0 bytes .../StyleCop.CSharp.Rules.dll.REMOVED.git-id | 1 - .../StyleCop.CSharp.dll.REMOVED.git-id | 1 - .../StyleCop.VSPackage.dll.REMOVED.git-id | 1 - .../StyleCop.4.5/StyleCop.dll.REMOVED.git-id | 1 - .../StyleCopSettingsEditor.exe.REMOVED.git-id | 1 - .../Src/Lib/NUnit/Compact/NUnitLite.dll | Bin 81920 -> 0 bytes .../Src/Lib/NUnit/DotNet/nunit.framework.dll | Bin 77824 -> 0 bytes .../Lib/NUnit/Silverlight/nunit.framework.dll | Bin 73728 -> 0 bytes .../Tools/7-zip/7za.exe.REMOVED.git-id | 1 - .../nunit.framework.dll.REMOVED.git-id | 1 - .../Tools/NUnit/framework/nunit.mocks.dll | Bin 20480 -> 0 bytes .../Tools/NUnit/lib/nunit-console-runner.dll | Bin 36864 -> 0 bytes .../lib/nunit-gui-runner.dll.REMOVED.git-id | 1 - .../NUnit/lib/nunit.core.dll.REMOVED.git-id | 1 - .../Tools/NUnit/lib/nunit.core.interfaces.dll | Bin 57344 -> 0 bytes .../Tools/NUnit/lib/nunit.uiexception.dll | Bin 90112 -> 0 bytes .../NUnit/lib/nunit.uikit.dll.REMOVED.git-id | 1 - .../NUnit/lib/nunit.util.dll.REMOVED.git-id | 1 - .../Tools/NUnit/nunit-agent-x86.exe | Bin 7680 -> 0 bytes .../Tools/NUnit/nunit-agent.exe | Bin 7680 -> 0 bytes .../Tools/NUnit/nunit-console-x86.exe | Bin 4608 -> 0 bytes .../Tools/NUnit/nunit-console.exe | Bin 4608 -> 0 bytes .../Newtonsoft.Json/Tools/NUnit/nunit-x86.exe | Bin 5632 -> 0 bytes .../Newtonsoft.Json/Tools/NUnit/nunit.exe | Bin 5632 -> 0 bytes .../Tools/NuGet/NuGet.exe.REMOVED.git-id | 1 - .../System.Web.WebPages.Deployment.dll | Bin 3584 -> 0 bytes .../System.Web.WebPages.Deployment.dll | Bin 3072 -> 0 bytes .../assemblies/PortableClassLibrary.dll | Bin 5632 -> 0 bytes .../Test/Resources/assemblies/boxedoptarg.dll | Bin 3072 -> 0 bytes .../cecil/Test/Resources/assemblies/catch.exe | Bin 3584 -> 0 bytes .../Test/Resources/assemblies/cppcli.dll | Bin 50176 -> 0 bytes .../Test/Resources/assemblies/cscgpbug.dll | Bin 3584 -> 0 bytes .../Test/Resources/assemblies/decsec-att.dll | Bin 4096 -> 0 bytes .../Test/Resources/assemblies/decsec-xml.dll | Bin 5120 -> 0 bytes .../Test/Resources/assemblies/decsec1-xml.dll | Bin 4096 -> 0 bytes .../Resources/assemblies/delay-signed.dll | Bin 3584 -> 0 bytes .../Resources/assemblies/empty-decsec-att.dll | Bin 3584 -> 0 bytes .../cecil/Test/Resources/assemblies/fptr.exe | Bin 2048 -> 0 bytes .../Test/Resources/assemblies/gifaceref.exe | Bin 5120 -> 0 bytes .../Resources/assemblies/hello.anycpu.exe | Bin 3584 -> 0 bytes .../cecil/Test/Resources/assemblies/hello.exe | Bin 3584 -> 0 bytes .../Test/Resources/assemblies/hello.ia64.exe | Bin 3072 -> 0 bytes .../Test/Resources/assemblies/hello.x64.exe | Bin 3072 -> 0 bytes .../Test/Resources/assemblies/hello.x86.exe | Bin 3584 -> 0 bytes .../Test/Resources/assemblies/hello1.exe | Bin 3072 -> 0 bytes .../Test/Resources/assemblies/hellow.exe | Bin 3584 -> 0 bytes .../Test/Resources/assemblies/iterator.exe | Bin 5632 -> 0 bytes .../Test/Resources/assemblies/libhello.dll | Bin 3072 -> 0 bytes .../Test/Resources/assemblies/libres.dll | Bin 3072 -> 0 bytes .../Test/Resources/assemblies/marshal.dll | Bin 3584 -> 0 bytes .../cecil/Test/Resources/assemblies/metro.exe | Bin 15872 -> 0 bytes .../cecil/Test/Resources/assemblies/mma.exe | Bin 3584 -> 0 bytes .../Test/Resources/assemblies/noblob.dll | Bin 3072 -> 0 bytes .../Test/Resources/assemblies/pinvoke.exe | Bin 4096 -> 0 bytes .../Test/Resources/assemblies/switch.exe | Bin 3584 -> 0 bytes .../Test/Resources/assemblies/varargs.exe | Bin 2048 -> 0 bytes .../cecil/Test/Resources/assemblies/wp7.dll | Bin 10752 -> 0 bytes .../nunit-2.6.2/nunit.core.dll.REMOVED.git-id | 1 - .../nunit-2.6.2/nunit.core.interfaces.dll | Bin 61440 -> 0 bytes .../nunit.framework.dll.REMOVED.git-id | 1 - .../Test/Resources/assemblies/decsec-att.dll | Bin 4096 -> 0 bytes .../Test/Resources/assemblies/decsec-xml.dll | Bin 5120 -> 0 bytes .../mdb/Test/Resources/assemblies/hello.exe | Bin 3072 -> 0 bytes .../Test/Resources/assemblies/VBConsApp.exe | Bin 15360 -> 0 bytes .../pdb/Test/Resources/assemblies/fsapp.exe | Bin 5120 -> 0 bytes .../pdb/Test/Resources/assemblies/test.exe | Bin 4096 -> 0 bytes ...Data.SqlServerCe.Entity.dll.REMOVED.git-id | 1 - .../ikdasm/IKVM.Reflection.dll.REMOVED.git-id | 1 - ...ICSharpCode.SharpZipLib.dll.REMOVED.git-id | 1 - .../System.Reactive.Core.dll.REMOVED.git-id | 1 - .../References/System.Reactive.Interfaces.dll | Bin 24160 -> 0 bytes .../System.Reactive.Linq.dll.REMOVED.git-id | 1 - .../System.Reactive.PlatformServices.dll | Bin 39000 -> 0 bytes .../Portable/.nuget/NuGet.exe.REMOVED.git-id | 1 - .../References/System.Reactive.Core.dll | Bin 88056 -> 0 bytes .../References/System.Reactive.Interfaces.dll | Bin 23544 -> 0 bytes .../System.Reactive.Linq.dll.REMOVED.git-id | 1 - .../System.Reactive.PlatformServices.dll | Bin 35824 -> 0 bytes .../System.Reactive.Runtime.Remoting.dll | Bin 25080 -> 0 bytes .../System.Reactive.Windows.Forms.dll | Bin 25592 -> 0 bytes .../Source/.nuget/NuGet.exe.REMOVED.git-id | 1 - ...lStudio.QualityTools.UnitTestFramework.dll | Bin 77824 -> 0 bytes ...lStudio.QualityTools.UnitTestFramework.dll | Bin 81328 -> 0 bytes ...oft.Silverlight.Testing.dll.REMOVED.git-id | 1 - ...lStudio.QualityTools.UnitTestFramework.dll | Bin 63320 -> 0 bytes ...o.QualityTools.UnitTesting.Silverlight.dll | Bin 63320 -> 0 bytes ...oft.Silverlight.Testing.dll.REMOVED.git-id | 1 - ...lStudio.QualityTools.UnitTestFramework.dll | Bin 63336 -> 0 bytes ...o.QualityTools.UnitTesting.Silverlight.dll | Bin 63336 -> 0 bytes ...oft.Silverlight.Testing.dll.REMOVED.git-id | 1 - ...lStudio.QualityTools.UnitTestFramework.dll | Bin 63336 -> 0 bytes ...o.QualityTools.UnitTesting.Silverlight.dll | Bin 63336 -> 0 bytes ...lStudio.QualityTools.UnitTestFramework.dll | Bin 51200 -> 0 bytes ...o.QualityTools.UnitTesting.Silverlight.dll | Bin 51200 -> 0 bytes ...lStudio.QualityTools.UnitTestFramework.dll | Bin 63336 -> 0 bytes .../iOS/libs/System.Reactive.Core.dll | Bin 89600 -> 0 bytes .../iOS/libs/System.Reactive.Debugger.dll | Bin 4096 -> 0 bytes .../iOS/libs/System.Reactive.Experimental.dll | Bin 26624 -> 0 bytes .../iOS/libs/System.Reactive.Interfaces.dll | Bin 8192 -> 0 bytes .../System.Reactive.Linq.dll.REMOVED.git-id | 1 - .../libs/System.Reactive.PlatformServices.dll | Bin 21504 -> 0 bytes .../lib/net40/System.Runtime.dll | Bin 22128 -> 0 bytes .../lib/net40/System.Threading.Tasks.dll | Bin 34960 -> 0 bytes .../System.Runtime.dll | Bin 39024 -> 0 bytes .../System.Threading.Tasks.dll.REMOVED.git-id | 1 - .../System.Runtime.dll | Bin 22128 -> 0 bytes .../System.Threading.Tasks.dll.REMOVED.git-id | 1 - .../System.Runtime.dll | Bin 22128 -> 0 bytes .../System.Threading.Tasks.dll.REMOVED.git-id | 1 - .../System.Runtime.dll | Bin 22128 -> 0 bytes .../System.Threading.Tasks.dll | Bin 34960 -> 0 bytes .../System.Runtime.dll | Bin 22128 -> 0 bytes .../System.Threading.Tasks.dll | Bin 34960 -> 0 bytes .../portable-net40+win8/System.Runtime.dll | Bin 22128 -> 0 bytes .../System.Threading.Tasks.dll | Bin 34960 -> 0 bytes .../lib/sl4-windowsphone71/System.Runtime.dll | Bin 39024 -> 0 bytes .../System.Threading.Tasks.dll.REMOVED.git-id | 1 - .../lib/sl4/System.Runtime.dll | Bin 22128 -> 0 bytes .../System.Threading.Tasks.dll.REMOVED.git-id | 1 - .../lib/sl5/System.Runtime.dll | Bin 22128 -> 0 bytes .../lib/sl5/System.Threading.Tasks.dll | Bin 34960 -> 0 bytes ...oft.Threading.Tasks.Extensions.Desktop.dll | Bin 47344 -> 0 bytes .../Microsoft.Threading.Tasks.Extensions.dll | Bin 31440 -> 0 bytes .../lib/net40/Microsoft.Threading.Tasks.dll | Bin 37024 -> 0 bytes .../Microsoft.Threading.Tasks.Extensions.dll | Bin 31440 -> 0 bytes .../lib/net45/Microsoft.Threading.Tasks.dll | Bin 37024 -> 0 bytes .../Microsoft.Threading.Tasks.Extensions.dll | Bin 31440 -> 0 bytes .../Microsoft.Threading.Tasks.dll | Bin 37024 -> 0 bytes .../Microsoft.Threading.Tasks.Extensions.dll | Bin 31440 -> 0 bytes .../Microsoft.Threading.Tasks.dll | Bin 37024 -> 0 bytes .../Microsoft.Threading.Tasks.Extensions.dll | Bin 31440 -> 0 bytes .../Microsoft.Threading.Tasks.dll | Bin 37024 -> 0 bytes ...osoft.Threading.Tasks.Extensions.Phone.dll | Bin 28896 -> 0 bytes .../Microsoft.Threading.Tasks.Extensions.dll | Bin 31440 -> 0 bytes .../Microsoft.Threading.Tasks.dll | Bin 37024 -> 0 bytes ...Threading.Tasks.Extensions.Silverlight.dll | Bin 28928 -> 0 bytes .../Microsoft.Threading.Tasks.Extensions.dll | Bin 31440 -> 0 bytes .../lib/sl4/Microsoft.Threading.Tasks.dll | Bin 37024 -> 0 bytes .../Microsoft.Threading.Tasks.Extensions.dll | Bin 31440 -> 0 bytes .../lib/win8/Microsoft.Threading.Tasks.dll | Bin 37024 -> 0 bytes ...osoft.Threading.Tasks.Extensions.Phone.dll | Bin 28896 -> 0 bytes .../Microsoft.Threading.Tasks.Extensions.dll | Bin 31440 -> 0 bytes .../lib/wp8/Microsoft.Threading.Tasks.dll | Bin 37024 -> 0 bytes .../tools/Microsoft.Bcl.Build.Tasks.dll | Bin 17920 -> 0 bytes ikvm-native/Makefile.in | 4 + ikvm-native/jni.c | 8 +- ikvm-native/os.c | 12 + libgc/Makefile.am | 2 +- libgc/Makefile.in | 3 +- libgc/acinclude.m4 | 4 +- libgc/configure.REMOVED.git-id | 2 +- libgc/configure.ac | 6 + libgc/doc/Makefile.in | 1 + libgc/finalize.c | 13 + libgc/include/Makefile.in | 1 + libgc/include/gc.h | 4 + libgc/include/private/Makefile.in | 1 + libgc/m4/Makefile.in | 1 + libgc/mark_rts.c | 7 + m4/Makefile.in | 4 + man/Makefile.in | 4 + man/mprof-report.1 | 21 + mcs/Makefile | 1 - mcs/build/common/Consts.cs | 2 +- mcs/build/profiles/basic.make | 2 +- .../TypeForwarders.cs | 3 +- mcs/class/Makefile | 16 +- mcs/class/Managed.Windows.Forms/Makefile | 10 +- .../System.Windows.Forms/BindingSource.cs | 15 + .../System.Windows.Forms/CurrencyManager.cs | 5 +- .../System.Windows.Forms/ImageListStreamer.cs | 4 +- .../ListView.cs.REMOVED.git-id | 2 +- .../System.Windows.Forms/NumericUpDown.cs | 2 +- .../XplatUIX11.cs.REMOVED.git-id | 2 +- .../Test/DummyAssembly/AnotherSerializable.cs | 88 ++ .../Test/DummyAssembly/Convertable.cs | 119 ++ .../DummyAssembly/Properties/AssemblyInfo.cs | 36 + .../Test/System.Resources/ResXDataNodeTest.cs | 9 +- .../System.Windows.Forms/ClipboardTest.cs | 1 + .../System.Windows.Forms/DataBindingTests.cs | 30 + .../System.Windows.Forms/FormEventTest.cs | 1 + .../resources/keyboards.resx.REMOVED.git-id | 2 +- .../ConditionParser.cs | 30 +- .../ConditionTokenizer.cs | 23 + .../Microsoft.Build.BuildEngine/Expression.cs | 131 +- .../Microsoft.Build.BuildEngine/Import.cs | 6 +- .../MemberInvocationReference.cs | 18 +- .../Test/various/Conditions.cs | 18 + .../Test/various/Properties.cs | 35 +- .../CommandLineBuilder.cs | 9 +- .../ToolLocationHelper.cs | 5 +- ...Microsoft.Build.Utilities_test.dll.sources | 1 + .../ToolLocationHelperTest.cs | 21 + .../ProjectRootElement.cs | 2 + .../ProjectCollection.cs | 5 + .../ProjectInstance.cs | 5 +- .../Microsoft.Build.Internal/BuildEngine4.cs | 41 +- .../ExpressionConstructs.cs | 10 + .../ExpressionEvaluator.cs | 28 +- .../ExpressionParserManual.cs | 45 +- .../ProjectCollectionTest.cs | 4 + .../Microsoft.Build.Evaluation/ProjectTest.cs | 12 + .../ProjectInstanceTest.cs | 50 + .../ExpressionParserTest.cs | 16 + mcs/class/Mono.Cairo/Mono.Cairo/Context.cs | 20 +- .../Mono.Cairo/Mono.Cairo/NativeMethods.cs | 8 + .../Mono.Data.Sqlite_2.0/SQLite3.cs | 60 +- .../UnsafeNativeMethods.cs | 16 +- .../Test/SqliteFunctionTests.cs | 22 + mcs/class/Mono.Debugger.Soft/Makefile | 12 + .../Mono.Debugger.Soft/Connection.cs | 112 +- .../Mono.Debugger.Soft/ILInterpreter.cs | 318 ++++- .../Mono.Debugger.Soft/InvokeOptions.cs | 11 +- .../Mono.Debugger.Soft/ObjectMirror.cs | 79 +- .../Mono.Debugger.Soft/PrimitiveValue.cs | 11 +- .../Mono.Debugger.Soft/StructMirror.cs | 51 +- .../Mono.Debugger.Soft/ThreadMirror.cs | 69 +- .../Mono.Debugger.Soft/TypeMirror.cs | 4 + .../Mono.Debugger.Soft/VirtualMachine.cs | 51 +- .../Mono.Debugger.Soft/Test/dtest-app.cs | 11 + mcs/class/Mono.Debugger.Soft/Test/dtest.cs | 33 + .../IMonoTaskScheduler.xml | 68 - .../MonoTaskExtensions.xml | 53 - .../en/Mono.Threading.Tasks/ThreadWorker.xml | 351 ----- .../Mono.Parallel/Documentation/en/index.xml | 28 - .../Mono.Parallel/Mono.Parallel.dll.sources | 4 - .../Mono.Parallel_test.dll.sources | 2 - .../FixedTaskScheduler.cs | 139 -- .../MonoTaskExtensions.cs | 54 - .../Mono.Threading.Tasks/MonoTaskScheduler.cs | 42 - .../Mono.Threading.Tasks/ThreadWorker.cs | 421 ------ .../MonoTaskExtensionsTests.cs | 67 - .../MonoTaskSchedulerTests.cs | 108 -- .../Syscall.cs.REMOVED.git-id | 2 +- .../DiffieHellmanManaged.cs | 6 +- ...tem.ComponentModel.Composition.dll.sources | 2 - .../Collections/ReadOnlyDictionary.cs | 106 -- .../ReadOnlyDictionaryDebuggerProxy.cs | 34 - .../Mono.Data.SqlExpressions/Tokenizer.cs | 10 +- .../System.Data/System.Data/DataColumn.cs | 2 +- mcs/class/System.Data/System.Data/DataRow.cs | 33 +- .../Test/System.Data/DataColumnTest2.cs | 17 + .../Test/System.Data/DataRowTest2.cs | 53 + .../System.Drawing/System.Drawing/Graphics.cs | 2 +- .../TestHatchBrush.cs | 2 + .../TestImageAttributes.cs | 7 +- .../Test/System.IO.Compression/ZipTest.cs | 27 + .../System.IO.Compression/ZipArchiveEntry.cs | 10 +- .../System.Json/System.Json/JsonPrimitive.cs | 11 +- .../System.Json/System.Json/JsonValue.cs | 31 +- .../Test/System.Json/JsonValueTest.cs | 146 ++ .../ContentDispositionHeaderValue.cs | 6 +- .../System.Net.Http/DelegatingHandler.cs | 16 +- .../System.Net.Http_test.dll.sources | 1 + .../ContentDispositionHeaderValueTest.cs | 8 + .../System.Net.Http/DelegatingHandlerTest.cs | 63 + .../System.Numerics/BigInteger.cs | 6 +- .../Test/System.Numerics/BigIntegerTest.cs | 15 +- .../System.Runtime.Caching/MemoryCacheTest.cs | 8 +- .../JavaScriptReader.cs | 105 +- .../WebServiceHostTest.cs | 10 +- .../HttpChannelFactory.cs | 6 +- .../MetadataExchangeBindingsTest.cs | 4 +- .../ServiceMetadataBehaviorTest.cs | 28 +- .../DispatchRuntimeTest.cs | 6 +- .../CustomPeerResolverServiceTest.cs | 2 + .../ChannelFactory_1Test.cs | 4 +- .../ServiceHostBaseTest.cs | 22 +- .../JavaScriptSerializer.cs | 22 +- .../JavaScriptSerializerTest.cs | 23 + .../System.Web/System.Web/HttpResponse.cs | 2 +- mcs/class/System.Web/System.Web/MimeTypes.cs | 7 +- .../System.Web.Caching/OutputCacheTest.cs | 6 +- .../System.Web.UI.Adapters/PageAdapterTest.cs | 1 - .../Test/mainsoft/NunitWeb/NunitWeb/MyHost.cs | 41 +- mcs/class/System.XML/Makefile | 8 +- mcs/class/System.Xaml/Makefile | 2 +- .../System.Windows.Markup/AmbientAttribute.cs | 2 - .../System.Windows.Markup/ArrayExtension.cs | 4 - .../ConstructorArgumentAttribute.cs | 2 - .../ContentPropertyAttribute.cs | 2 - .../ContentWrapperAttribute.cs | 5 +- .../DateTimeValueSerializer.cs | 2 - .../DependsOnAttribute.cs | 4 +- .../DictionaryKeyPropertyAttribute.cs | 2 - .../IComponentConnector.cs | 2 - .../System.Windows.Markup/INameScope.cs | 2 - .../IProvideValueTarget.cs | 2 - .../System.Windows.Markup/IUriContext.cs | 2 - .../IValueSerializerContext.cs | 2 - .../IXamlTypeResolver.cs | 2 - .../System.Windows.Markup/MarkupExtension.cs | 2 - .../NameScopePropertyAttribute.cs | 2 - .../System.Windows.Markup/NullExtension.cs | 2 - .../RootNamespaceAttribute.cs | 2 - .../RuntimeNamePropertyAttribute.cs | 2 - .../System.Windows.Markup/StaticExtension.cs | 2 - .../TrimSurroundingWhitespaceAttribute.cs | 2 - .../System.Windows.Markup/TypeExtension.cs | 4 - .../UidPropertyAttribute.cs | 2 - .../System.Windows.Markup/ValueSerializer.cs | 6 - .../ValueSerializerAttribute.cs | 2 - ...hitespaceSignificantCollectionAttribute.cs | 2 - .../XmlLangPropertyAttribute.cs | 2 - .../XmlnsCompatibleWithAttribute.cs | 2 - .../XmlnsDefinitionAttribute.cs | 2 - .../XmlnsPrefixAttribute.cs | 2 - .../XamlDuplicateMemberException.cs | 6 - .../System.Xaml/System.Xaml/XamlException.cs | 6 - .../System.Xaml/XamlInternalException.cs | 4 - .../System.Xaml/System.Xaml/XamlMember.cs | 2 - .../System.Xaml/XamlObjectReaderException.cs | 4 - .../System.Xaml/XamlObjectWriterException.cs | 4 - .../System.Xaml/XamlObjectWriterSettings.cs | 6 +- .../System.Xaml/XamlParseException.cs | 4 - .../System.Xaml/XamlSchemaContext.cs | 8 +- .../System.Xaml/XamlSchemaException.cs | 4 - .../System.Xaml/System.Xaml/XamlServices.cs | 2 - .../System.Xaml/XamlXmlWriterException.cs | 4 - .../System/System.Net.Mail/SmtpClient.cs | 10 +- .../MacOsNetworkInterfaceMarshal.cs | 19 + .../NetworkInterface.cs | 19 +- .../SocketAsyncEventArgs.cs | 8 +- .../System/System.Net.Sockets/Socket_2_1.cs | 2 +- .../System.Net.WebSockets/ClientWebSocket.cs | 27 +- .../WebSocketMessageType.cs | 6 +- mcs/class/System/System.Net/ChunkStream.cs | 7 +- mcs/class/System/System.Net/DigestClient.cs | 2 +- mcs/class/System/System.Net/WebClient.cs | 8 +- mcs/class/System/System.Net/WebConnection.cs | 22 +- .../System/System.Net/WebConnectionData.cs | 1 + .../X509Certificate2.cs | 14 +- mcs/class/System/System_test.dll.sources | 1 + .../System.ComponentModel/BindingListTest.cs | 56 + .../SocketConnectAsyncTest.cs | 133 ++ .../SocketTest.cs.REMOVED.git-id | 2 +- .../Test/System.Net.Sockets/UdpClientTest.cs | 21 + mcs/class/System/Test/System.Net/DnsTest.cs | 8 +- .../Test/System.Net/HttpListener2Test.cs | 36 +- .../HttpWebRequestTest.cs.REMOVED.git-id | 2 +- .../System/Test/System.Net/WebClientTest.cs | 92 ++ .../X509Certificate2Test.cs.REMOVED.git-id | 2 +- .../System.IO.Packaging/PackagePart.cs | 2 +- .../PackagePropertiesPart.cs | 17 +- mcs/class/corlib/Makefile | 2 +- .../ConcurrentDictionary.cs | 6 +- .../ConcurrentQueue.cs | 27 +- .../System.Collections.Generic/Dictionary.cs | 30 +- mcs/class/corlib/System.IO/FileInfo.cs | 11 +- .../System.Reflection.Emit/TypeBuilder.cs | 26 +- .../System.Security.Claims/ClaimTypes.cs | 46 +- .../System.Security.Claims/ClaimsIdentity.cs | 13 +- .../System.Security.Claims/ClaimsPrincipal.cs | 8 +- .../CryptographicException.cs | 2 +- ...yptographicUnexpectedOperationExcpetion.cs | 2 +- .../DecoderReplacementFallbackBuffer.cs | 2 +- .../EncoderReplacementFallbackBuffer.cs | 2 +- .../CancellationTokenRegistration.cs | 9 +- mcs/class/corlib/System/AggregateException.cs | 4 +- mcs/class/corlib/System/AndroidPlatform.cs | 22 +- mcs/class/corlib/System/Array.cs | 24 +- mcs/class/corlib/System/DateTime.cs | 7 + mcs/class/corlib/System/Delegate.cs | 75 +- .../System/DelegateSerializationHolder.cs | 30 +- mcs/class/corlib/System/Enum.cs | 6 +- mcs/class/corlib/System/Environment.cs | 18 +- mcs/class/corlib/System/Int32.cs | 11 +- mcs/class/corlib/System/TimeZone.cs | 6 +- .../ConcurrentDictionaryTests.cs | 13 + .../ConcurrentQueueTests.cs | 53 + .../Test/System.Reflection/MethodInfoTest.cs | 45 + .../ConditionalWeakTableTest.cs | 10 +- .../TaskAwaiterTest.cs | 40 +- .../SerializationTest.cs | 48 + .../Test/System.Threading.Tasks/TaskTest.cs | 10 +- .../CancellationTokenSourceTest.cs | 4 +- mcs/class/corlib/Test/System/DateTimeTest.cs | 9 + mcs/class/corlib/Test/System/DelegateTest.cs | 115 +- mcs/class/corlib/Test/System/EnumTest.cs | 4 + mcs/class/corlib/Test/System/LazyTest.cs | 7 +- .../monolite/Mono.Security.dll.REMOVED.git-id | 2 +- .../monolite/System.Core.dll.REMOVED.git-id | 2 +- .../monolite/System.Xml.dll.REMOVED.git-id | 2 +- .../lib/monolite/System.dll.REMOVED.git-id | 2 +- .../lib/monolite/basic.exe.REMOVED.git-id | 2 +- .../lib/monolite/mscorlib.dll.REMOVED.git-id | 2 +- .../Monodoc/generators/html/Ecma2Html.cs | 112 +- .../Monodoc/providers/xhtml-provider.cs | 2 +- .../AvoidCDataTextReaderTests.cs | 86 -- mcs/class/monodoc/monodoc_test.dll.sources | 1 - mcs/errors/CS0012-23-lib.il | 26 + mcs/errors/{CS1607-3-lib.cs => CS8009-lib.cs} | 0 mcs/errors/Makefile | 5 +- mcs/errors/cs0012-23.cs | 11 + mcs/errors/cs0070-2.cs | 24 + mcs/errors/cs0100-8.cs | 7 + mcs/errors/cs0102-99.cs | 11 - mcs/errors/{cs9006.cs => cs0103-13.cs} | 2 +- mcs/errors/cs0103-14.cs | 10 + mcs/errors/cs0121-25.cs | 33 + mcs/errors/cs0133-6.cs | 10 + mcs/errors/cs0133-7.cs | 10 + mcs/errors/cs0136-18.cs | 13 + mcs/errors/cs0136-19.cs | 13 + mcs/errors/cs0138.cs | 1 + mcs/errors/cs0151-3.cs | 19 + mcs/errors/cs0151-4.cs | 30 + mcs/errors/cs0151-5.cs | 19 + mcs/errors/{cs0182-10.cs => cs0181-2.cs} | 2 +- mcs/errors/{cs0182-12.cs => cs0181-3.cs} | 2 +- mcs/errors/{cs0182-13.cs => cs0181-4.cs} | 2 +- mcs/errors/{cs0182-2.cs => cs0181.cs} | 2 +- mcs/errors/cs0253-3.cs | 15 + mcs/errors/cs0457-4.cs | 27 + mcs/errors/cs0573-2.cs | 6 - mcs/errors/cs0573.cs | 13 - mcs/errors/cs0579-9.cs | 22 + mcs/errors/cs0591-2.cs | 9 + mcs/errors/{cs0647-12.cs => cs0591-3.cs} | 2 +- mcs/errors/{cs0647-13.cs => cs0591-4.cs} | 2 +- mcs/errors/cs0591-5.cs | 12 + mcs/errors/cs0591-6.cs | 12 + mcs/errors/cs0591.cs | 2 +- mcs/errors/cs0647-15.cs | 12 - mcs/errors/cs0647-18.cs | 6 - mcs/errors/cs0647-19.cs | 6 - mcs/errors/cs0647-20.cs | 12 - mcs/errors/cs0647.cs | 9 - mcs/errors/cs0657-23.cs | 14 + mcs/errors/cs0837-2.cs | 5 +- mcs/errors/cs0837-3.cs | 12 + mcs/errors/{cs1953.cs => cs0837-4.cs} | 2 +- mcs/errors/cs0837.cs | 2 +- mcs/errors/cs0840.cs | 8 - mcs/errors/cs1501-17.cs | 14 + mcs/errors/cs1525-42.cs | 2 +- mcs/errors/cs1607-2.cs | 7 - mcs/errors/cs1607-3.cs | 13 - mcs/errors/cs1617.cs | 2 +- mcs/errors/cs1644-19.cs | 2 +- mcs/errors/cs1644-35.cs | 17 + mcs/errors/cs1644-36.cs | 8 + mcs/errors/cs1644-37.cs | 7 + mcs/errors/cs1644-38.cs | 8 + mcs/errors/cs1644-39.cs | 8 + mcs/errors/cs1644-40.cs | 8 + mcs/errors/cs1650-3.cs | 19 + mcs/errors/cs1700.cs | 2 +- mcs/errors/cs1984.cs | 21 - mcs/errors/cs1985-2.cs | 27 - mcs/errors/cs1985.cs | 21 - mcs/errors/cs1997-2.cs | 17 - mcs/errors/cs4017.cs | 2 +- mcs/errors/cs4024.cs | 17 + mcs/errors/cs4025.cs | 17 + mcs/errors/cs4026.cs | 17 + mcs/errors/cs4029.cs | 19 + mcs/errors/cs7007.cs | 9 + mcs/errors/cs7023-2.cs | 10 + mcs/errors/cs7023.cs | 10 + mcs/errors/cs7025.cs | 13 + mcs/errors/cs7030.cs | 6 + mcs/errors/cs7034-2.cs | 6 + mcs/errors/cs7034-3.cs | 6 + mcs/errors/{cs0647-17.cs => cs7034.cs} | 2 +- mcs/errors/cs7035.cs | 7 + mcs/errors/cs7042-2.cs | 10 + mcs/errors/cs7042.cs | 10 + mcs/errors/{cs0647-9.cs => cs7049.cs} | 4 +- mcs/errors/{cs0647-2.cs => cs7050.cs} | 4 +- mcs/errors/{cs0647-3.cs => cs7051.cs} | 4 +- mcs/errors/{cs0647-11.cs => cs7055-2.cs} | 2 +- mcs/errors/{cs0647-10.cs => cs7055.cs} | 2 +- mcs/errors/{cs0647-16.cs => cs7059.cs} | 2 +- mcs/errors/{cs0647-5.cs => cs7070-2.cs} | 4 +- mcs/errors/{cs0647-7.cs => cs7070-3.cs} | 4 +- mcs/errors/{cs0647-6.cs => cs7070-4.cs} | 4 +- mcs/errors/{cs0647-4.cs => cs7070.cs} | 4 +- mcs/errors/cs7080.cs | 12 + mcs/errors/cs7081.cs | 12 + mcs/errors/cs7082.cs | 12 + mcs/errors/cs7083-2.cs | 10 + mcs/errors/cs7083.cs | 10 + mcs/errors/cs7094.cs | 15 + mcs/errors/cs8009.cs | 13 + mcs/errors/{cs0127-4.cs => cs8030-2.cs} | 2 +- mcs/errors/{cs0127-2.cs => cs8030-3.cs} | 2 +- mcs/errors/{cs0127-3.cs => cs8030.cs} | 2 +- mcs/errors/cs8031.cs | 17 + mcs/errors/{cs9001.cs => cs8036.cs} | 0 mcs/errors/{cs9002.cs => cs8037.cs} | 0 mcs/errors/{cs9003.cs => cs8038.cs} | 2 +- mcs/errors/{cs9004.cs => cs8039.cs} | 2 +- mcs/errors/cs8041.cs | 13 + mcs/errors/cs8043.cs | 10 + mcs/errors/cs8049.cs | 11 + mcs/errors/cs8050.cs | 7 + mcs/errors/cs8051.cs | 7 + mcs/errors/cs8052.cs | 7 + mcs/errors/cs8053.cs | 7 + mcs/errors/cs8054-2.cs | 6 + mcs/errors/cs8054-3.cs | 6 + mcs/errors/cs8054.cs | 7 + mcs/errors/cs9005.cs | 10 - mcs/errors/cs9007.cs | 12 - mcs/jay/main.c | 12 +- mcs/mcs/anonymous.cs | 46 +- mcs/mcs/argument.cs | 21 +- mcs/mcs/assembly.cs | 18 +- mcs/mcs/assign.cs | 1 + mcs/mcs/async.cs | 55 +- mcs/mcs/attribute.cs | 61 +- mcs/mcs/cfold.cs | 8 +- mcs/mcs/class.cs.REMOVED.git-id | 2 +- mcs/mcs/codegen.cs | 40 +- mcs/mcs/constant.cs | 40 +- mcs/mcs/context.cs | 2 +- mcs/mcs/convert.cs | 102 +- mcs/mcs/cs-parser.jay.REMOVED.git-id | 2 +- mcs/mcs/cs-tokenizer.cs | 28 +- mcs/mcs/delegate.cs | 3 +- mcs/mcs/ecore.cs.REMOVED.git-id | 2 +- mcs/mcs/eval.cs | 77 +- mcs/mcs/expression.cs.REMOVED.git-id | 2 +- mcs/mcs/flowanalysis.cs | 17 +- mcs/mcs/generic.cs | 21 +- mcs/mcs/import.cs | 2 + mcs/mcs/iterators.cs | 43 +- mcs/mcs/membercache.cs | 3 + mcs/mcs/method.cs | 91 +- mcs/mcs/namespace.cs | 125 +- mcs/mcs/nullable.cs | 30 +- mcs/mcs/parameter.cs | 103 +- mcs/mcs/property.cs | 60 +- mcs/mcs/report.cs | 4 +- mcs/mcs/settings.cs | 8 +- mcs/mcs/statement.cs.REMOVED.git-id | 2 +- mcs/mcs/typemanager.cs | 5 +- mcs/mcs/typespec.cs | 11 + mcs/tests/Makefile | 2 +- mcs/tests/dlls/test-883.il | 27 + mcs/tests/dtest-056.cs | 17 + mcs/tests/gtest-311.cs | 18 - mcs/tests/gtest-391.cs | 6 +- mcs/tests/gtest-409.cs | 23 +- mcs/tests/gtest-502.cs | 7 + mcs/tests/gtest-614.cs | 28 + mcs/tests/gtest-616.cs | 37 + mcs/tests/gtest-617.cs | 29 + mcs/tests/gtest-618.cs | 73 + mcs/tests/gtest-619.cs | 35 + mcs/tests/gtest-620.cs | 28 + mcs/tests/gtest-autoproperty-09.cs | 52 + mcs/tests/gtest-collectioninit-04.cs | 18 + mcs/tests/gtest-initialize-13.cs | 18 + mcs/tests/gtest-lambda-35.cs | 30 + mcs/tests/gtest-named-05.cs | 26 + mcs/tests/gtest-optional-32.cs | 23 + mcs/tests/gtest-optional-33.cs | 72 + mcs/tests/test-640.cs | 10 + mcs/tests/test-671.cs | 2 +- mcs/tests/test-77.cs | 10 +- mcs/tests/test-894.cs | 19 + mcs/tests/test-896.cs | 13 + mcs/tests/test-897.cs | 26 + mcs/tests/test-898.cs | 79 ++ mcs/tests/test-899.cs | 15 + mcs/tests/test-900.cs | 17 + mcs/tests/test-901.cs | 23 + mcs/tests/test-902.cs | 24 + mcs/tests/test-async-13.cs | 34 + mcs/tests/test-async-15.cs | 38 +- mcs/tests/test-async-22.cs | 9 + mcs/tests/test-async-35.cs | 31 + mcs/tests/test-async-63.cs | 85 ++ mcs/tests/test-async-64.cs | 18 + mcs/tests/test-async-65.cs | 54 + mcs/tests/test-async-66.cs | 42 + mcs/tests/test-async-67.cs | 24 + mcs/tests/test-async-69.cs | 151 +++ mcs/tests/test-async-70.cs | 97 ++ mcs/tests/test-async-71.cs | 25 + mcs/tests/test-async-72.cs | 88 ++ mcs/tests/test-async-73.cs | 31 + mcs/tests/test-async-74.cs | 27 + mcs/tests/test-ex-filter-03.cs | 21 + mcs/tests/test-ex-filter-04.cs | 74 + mcs/tests/test-ex-filter-05.cs | 40 + mcs/tests/test-ex-filter-06.cs | 29 + mcs/tests/test-expression-bodied-01.cs | 54 + mcs/tests/test-partial-26.cs | 30 +- mcs/tests/test-primary-ctor-01.cs | 12 +- mcs/tests/test-primary-ctor-02.cs | 19 +- mcs/tests/test-primary-ctor-03.cs | 2 +- mcs/tests/test-primary-ctor-05.cs | 14 +- mcs/tests/test-primary-ctor-06.cs | 15 + mcs/tests/test-primary-ctor-07.cs | 29 + mcs/tests/test-primary-ctor-08.cs | 31 + mcs/tests/test-primary-ctor-09.cs | 30 + mcs/tests/test-static-using-01.cs | 28 + mcs/tests/test-static-using-02.cs | 42 + mcs/tests/test-static-using-03.cs | 42 + mcs/tests/test-static-using-04.cs | 42 + mcs/tests/test-static-using-05.cs | 11 + mcs/tests/test-static-using-06.cs | 44 + mcs/tests/ver-il-net_4_5.xml.REMOVED.git-id | 2 +- .../linker/Mono.Linker.Steps/MarkStep.cs | 16 + mcs/tools/linker/Mono.Linker/LinkContext.cs | 8 + mcs/tools/mono-shlib-cop/Makefile | 2 +- mcs/tools/mono-shlib-cop/test.cs | 6 +- mcs/tools/xbuild/Makefile | 3 + mcs/tools/xbuild/SolutionParser.cs | 4 + .../xbuild/data/12.0/Microsoft.CSharp.targets | 15 +- .../xbuild/data/12.0/Microsoft.Common.targets | 4 +- .../xbuild/data/4.0/Microsoft.CSharp.targets | 15 +- mcs/tools/xbuild/frameworks/net_4.5.1.xml | 3 + mono-core.spec | 12 +- mono-core.spec.in | 10 - mono/Makefile.in | 4 + mono/arch/Makefile.in | 4 + mono/arch/amd64/Makefile.in | 4 + mono/arch/arm/Makefile.in | 4 + mono/arch/arm64/Makefile.in | 4 + mono/arch/ia64/Makefile.in | 4 + mono/arch/mips/Makefile.in | 4 + mono/arch/ppc/Makefile.in | 4 + mono/arch/s390x/Makefile.in | 4 + mono/arch/s390x/s390x-codegen.h | 212 ++- mono/arch/sparc/Makefile.in | 4 + mono/arch/x86/Makefile.in | 4 + mono/benchmark/Makefile.in | 4 + mono/cil/Makefile.in | 4 + mono/dis/Makefile.in | 4 + mono/dis/util.c | 1 + mono/interpreter/Makefile.in | 4 + mono/io-layer/Makefile.in | 4 + mono/io-layer/io.c.REMOVED.git-id | 2 +- mono/io-layer/misc-private.h | 1 + mono/io-layer/processes.c | 2 + mono/io-layer/security.c | 13 - mono/io-layer/wapi_glob.c | 12 +- mono/metadata/Makefile.am | 11 +- mono/metadata/Makefile.am.in | 11 +- mono/metadata/Makefile.in.REMOVED.git-id | 2 +- mono/metadata/abi-details.h | 31 + mono/metadata/appdomain.c | 31 +- mono/metadata/appdomain.h | 3 + mono/metadata/assembly.c | 6 +- mono/metadata/attach.c | 7 +- mono/metadata/attach.h | 3 + mono/metadata/boehm-gc.c | 35 +- .../char-conversions.h.REMOVED.git-id | 2 +- mono/metadata/class-internals.h | 94 +- mono/metadata/class.c.REMOVED.git-id | 2 +- mono/metadata/cominterop.c | 11 +- mono/metadata/console-io.h | 1 + mono/metadata/console-unix.c | 3 + mono/metadata/coree.c | 14 +- mono/metadata/coree.h | 2 + mono/metadata/culture-info.h | 1 + mono/metadata/debug-helpers.c | 2 +- mono/metadata/decimal.h | 5 + mono/metadata/domain-internals.h | 3 +- mono/metadata/domain.c | 10 +- mono/metadata/file-mmap-posix.c | 19 +- mono/metadata/filewatcher.h | 4 - mono/metadata/gc-internal.h | 32 +- mono/metadata/gc.c | 29 +- mono/metadata/icall.c.REMOVED.git-id | 2 +- mono/metadata/image.c | 30 +- mono/metadata/loader.c | 52 +- mono/metadata/locales.h | 30 +- mono/metadata/marshal.c.REMOVED.git-id | 2 +- mono/metadata/marshal.h | 6 +- mono/metadata/metadata-cross-helpers.c | 6 + mono/metadata/metadata-internals.h | 29 +- mono/metadata/metadata.c.REMOVED.git-id | 2 +- mono/metadata/metadata.h | 1 + mono/metadata/method-builder.c | 5 +- mono/metadata/monitor.c | 75 +- mono/metadata/monitor.h | 15 + mono/metadata/mono-basic-block.h | 5 +- mono/metadata/mono-debug.c | 6 +- mono/metadata/mono-hash.c | 12 +- mono/metadata/null-gc.c | 10 +- mono/metadata/object-internals.h | 13 +- mono/metadata/object-offsets.h | 231 ++++ mono/metadata/object.c.REMOVED.git-id | 2 +- mono/metadata/object.h | 2 +- mono/metadata/process.c | 3 - mono/metadata/process.h | 10 +- mono/metadata/rand.c | 4 +- mono/metadata/rand.h | 1 + mono/metadata/reflection.c.REMOVED.git-id | 2 +- mono/metadata/reflection.h | 2 + mono/metadata/runtime.h | 3 + mono/metadata/security-core-clr.h | 8 +- mono/metadata/security.h | 3 + mono/metadata/sgen-alloc.c | 39 +- mono/metadata/sgen-bridge.c | 3 +- mono/metadata/sgen-bridge.h | 2 +- mono/metadata/sgen-cardtable.c | 10 +- mono/metadata/sgen-conf.h | 2 + mono/metadata/sgen-debug.c | 27 +- mono/metadata/sgen-descriptor.c | 4 +- mono/metadata/sgen-descriptor.h | 8 +- mono/metadata/sgen-fin-weak-hash.c | 2 +- mono/metadata/sgen-gc.c.REMOVED.git-id | 2 +- mono/metadata/sgen-gc.h | 148 +- mono/metadata/sgen-gray.c | 50 +- mono/metadata/sgen-gray.h | 34 +- mono/metadata/sgen-los.c | 13 +- mono/metadata/sgen-marksweep.c | 57 +- mono/metadata/sgen-memory-governor.c | 18 +- mono/metadata/sgen-memory-governor.h | 2 +- mono/metadata/sgen-new-bridge.c | 14 +- mono/metadata/sgen-nursery-allocator.c | 24 +- mono/metadata/sgen-pinning.c | 36 +- mono/metadata/sgen-pinning.h | 6 +- mono/metadata/sgen-protocol.c | 14 + mono/metadata/sgen-protocol.h | 19 +- mono/metadata/sgen-simple-nursery.c | 2 +- mono/metadata/sgen-split-nursery.c | 14 +- mono/metadata/sgen-tarjan-bridge.c | 31 +- mono/metadata/sgen-workers.c | 29 +- mono/metadata/sgen-workers.h | 1 + mono/metadata/socket-io.c | 2 +- mono/metadata/socket-io.h | 2 +- mono/metadata/string-icalls.h | 1 + mono/metadata/threadpool-internals.h | 4 + mono/metadata/threads-types.h | 5 +- mono/metadata/threads.c.REMOVED.git-id | 2 +- mono/metadata/verify-internals.h | 5 +- mono/metadata/verify.c.REMOVED.git-id | 2 +- mono/mini/Makefile.am | 9 +- mono/mini/Makefile.am.in | 9 +- mono/mini/Makefile.in.REMOVED.git-id | 2 +- mono/mini/alias-analysis.c | 50 +- mono/mini/aot-compiler.c.REMOVED.git-id | 2 +- mono/mini/aot-runtime.c.REMOVED.git-id | 2 +- mono/mini/basic-calls.cs | 8 +- mono/mini/basic-long.cs | 52 + mono/mini/cpu-amd64.md | 7 +- mono/mini/cpu-arm.md | 2 +- mono/mini/cpu-arm64.md | 4 +- mono/mini/cpu-ia64.md | 8 +- mono/mini/cpu-ppc.md | 3 +- mono/mini/cpu-ppc64.md | 9 +- mono/mini/cpu-s390x.md | 32 +- mono/mini/cpu-x86.md | 5 +- mono/mini/debug-mini.c | 2 +- mono/mini/debugger-agent.c.REMOVED.git-id | 2 +- mono/mini/decompose.c | 42 +- mono/mini/driver.c | 6 +- mono/mini/exceptions-amd64.c | 100 +- mono/mini/exceptions-arm.c | 20 +- mono/mini/exceptions-mips.c | 7 +- mono/mini/exceptions-ppc.c | 7 +- mono/mini/exceptions-s390x.c | 16 +- mono/mini/exceptions-sparc.c | 5 - mono/mini/exceptions-x86.c | 83 +- mono/mini/gshared.cs | 46 + mono/mini/helpers.c | 10 +- mono/mini/image-writer.c | 2 +- mono/mini/ir-emit.h | 6 +- mono/mini/jit-icalls.c | 6 +- mono/mini/main.c | 2 +- mono/mini/method-to-ir.c.REMOVED.git-id | 2 +- mono/mini/mini-amd64.c.REMOVED.git-id | 2 +- mono/mini/mini-amd64.h | 39 +- mono/mini/mini-arm.c.REMOVED.git-id | 2 +- mono/mini/mini-arm.h | 36 +- mono/mini/mini-codegen.c | 4 +- mono/mini/mini-cross-helpers.c | 13 + mono/mini/mini-exceptions.c | 42 +- mono/mini/mini-gc.c | 27 +- mono/mini/mini-generic-sharing.c | 7 +- mono/mini/mini-ia64.c.REMOVED.git-id | 2 +- mono/mini/mini-ia64.h | 2 - mono/mini/mini-llvm-cpp.cpp | 6 - mono/mini/mini-llvm.c.REMOVED.git-id | 2 +- mono/mini/mini-mips.c.REMOVED.git-id | 2 +- mono/mini/mini-mips.h | 1 - mono/mini/mini-ops.h | 47 +- mono/mini/mini-posix.c | 2 + mono/mini/mini-ppc.c.REMOVED.git-id | 2 +- mono/mini/mini-ppc.h | 3 - mono/mini/mini-s390x.c.REMOVED.git-id | 2 +- mono/mini/mini-s390x.h | 68 +- mono/mini/mini-sparc.c.REMOVED.git-id | 2 +- mono/mini/mini-sparc.h | 1 - mono/mini/mini-trampolines.c | 89 +- mono/mini/mini-unwind.h | 20 +- mono/mini/mini-windows.c | 5 +- mono/mini/mini-x86.c.REMOVED.git-id | 2 +- mono/mini/mini-x86.h | 10 +- mono/mini/mini.c.REMOVED.git-id | 2 +- mono/mini/mini.h.REMOVED.git-id | 2 +- mono/mini/objects.cs | 14 + mono/mini/simd-intrinsics.c | 3 +- mono/mini/ssa.c | 5 +- mono/mini/ssapre.c | 2 +- mono/mini/tasklets.c | 2 +- mono/mini/tramp-amd64.c | 29 +- mono/mini/tramp-arm.c | 41 +- mono/mini/tramp-mips.c | 5 +- mono/mini/tramp-ppc.c | 3 +- mono/mini/tramp-s390x.c | 172 ++- mono/mini/tramp-x86.c | 306 ++--- mono/mini/unwind.c | 97 +- mono/mini/version.h | 2 +- mono/monograph/Makefile.in | 4 + mono/profiler/Makefile.in | 4 + mono/profiler/decode.c | 118 +- mono/profiler/proflog.c | 28 +- mono/profiler/utils.c | 2 +- mono/tests/Makefile.am | 18 +- mono/tests/Makefile.in | 26 +- mono/tests/assemblyresolve/Makefile.in | 4 + mono/tests/cas/Makefile.in | 4 + mono/tests/cas/assembly/Makefile.in | 4 + mono/tests/cas/demand/Makefile.in | 4 + mono/tests/cas/inheritance/Makefile.in | 4 + mono/tests/cas/linkdemand/Makefile.in | 4 + mono/tests/cas/threads/Makefile.in | 4 + mono/tests/finalizer-exception.cs | 4 +- mono/tests/finalizer-wait.cs | 30 +- mono/tests/gc-descriptors/Makefile.am | 2 +- mono/tests/gc-descriptors/Makefile.in | 6 +- mono/tests/gc-graystack-stress.cs | 59 + mono/tests/marshal2.cs | 45 + mono/tests/marshal7.cs | 4 +- mono/tests/stress-runner.pl | 7 + mono/unit-tests/Makefile.am | 11 +- mono/unit-tests/Makefile.in | 101 +- mono/unit-tests/test-conc-hashtable.c | 324 +++++ mono/unit-tests/test-gc-memfuncs.c | 2 +- mono/utils/Makefile.am | 4 +- mono/utils/Makefile.in | 14 +- mono/utils/atomic.c | 81 +- mono/utils/atomic.h | 10 +- mono/utils/lock-free-alloc.c | 2 +- mono/utils/mono-codeman.c | 6 +- mono/utils/mono-compiler.h | 3 + mono/utils/mono-conc-hashtable.c | 371 +++++ mono/utils/mono-conc-hashtable.h | 27 + mono/utils/mono-context.h | 7 +- mono/utils/mono-counters.c | 4 +- mono/utils/mono-error.h | 2 +- mono/utils/mono-hwcap-s390x.c | 37 +- mono/utils/mono-hwcap-s390x.h | 80 +- mono/utils/mono-linked-list-set.c | 2 +- mono/utils/mono-mmap.c | 14 +- mono/utils/mono-poll.h | 4 + mono/utils/mono-proclib.c | 15 +- mono/utils/mono-threads-windows.c | 15 +- mono/utils/mono-threads.c | 4 +- mono/utils/mono-threads.h | 2 +- msvc/Makefile.in | 4 + msvc/libmono.vcxproj | 8 +- msvc/libmonoruntime.vcxproj | 9 +- msvc/libmonoutils.vcxproj | 12 +- msvc/mono.def | 1 + msvc/mono.props | 6 +- po/Makefile.in | 4 + po/mcs/de.gmo | Bin 5546 -> 5406 bytes po/mcs/de.po | 1188 +++++++++-------- po/mcs/es.gmo | Bin 16487 -> 16329 bytes po/mcs/es.po.REMOVED.git-id | 2 +- po/mcs/ja.gmo | Bin 21042 -> 20863 bytes po/mcs/ja.po.REMOVED.git-id | 2 +- po/mcs/mcs.pot | 1178 ++++++++-------- po/mcs/pt_BR.gmo | Bin 74674 -> 74197 bytes po/mcs/pt_BR.po.REMOVED.git-id | 2 +- runtime/Makefile.am | 4 +- runtime/Makefile.in | 8 +- samples/Makefile.in | 4 + scripts/Makefile.in | 4 + support/Makefile.in | 4 + support/grp.c | 2 + support/macros.c | 9 + support/minizip/zip.c | 3 +- support/nl.c | 4 + support/old-map.c | 2 + support/serial.c | 7 +- support/supportw.c | 9 + support/sys-statvfs.c | 2 + support/sys-time.c | 17 - support/syslog.c | 3 + support/x-struct-str.c | 2 +- support/zlib-helper.c | 2 +- tools/Makefile.in | 4 + tools/locale-builder/Makefile.in | 4 + tools/sgen/Makefile.in | 4 + tools/sgen/sgen-grep-binprot.c | 444 +++--- winconfig.h | 11 +- 1062 files changed, 12460 insertions(+), 5983 deletions(-) create mode 100644 eglib/src/vasprintf.h delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/Aga.Controls.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Ambience.Server.exe delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Ambience.UI.dll delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Ambience.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Common.Splash.dll delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.ControlPanel.exe delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Copy.exe.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Echo.exe.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Host.Elevated.exe delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Host.Elevated.x86.exe delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Host.exe delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Host.x86.exe delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Icarus.XmlSerializers.dll delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Icarus.exe.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.MSBuildTasks.dll delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Navigator.exe.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.PowerShellCommands.dll delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Reports.dll delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.UI.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Utility.exe delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.VisualStudio.Interop.dll delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.XmlSerializers.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio35.dll delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio40.dll delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/ICSharpCode.TextEditor.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/MbUnit.Compatibility.dll delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/MbUnit.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/MbUnit35.dll delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/MbUnit40.dll delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/NCover/Gallio.NCoverIntegration.dll delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/NHamcrest.dll delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/Gallio.NUnitAdapterLatest.dll delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.core.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.core.interfaces.dll delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.framework.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.mocks.dll delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.util.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/TDNet/Gallio.TDNetRunner.UI.dll delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/TDNet/Gallio.TDNetRunner.dll delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/Gallio.VisualStudio.Shell.dll delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v10.0/Gallio.VisualStudio.Shell100.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v10.0/Gallio.VisualStudio.Tip100.Proxy.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v10.0/Gallio.VisualStudio.Tip100.dll delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v9.0/Gallio.VisualStudio.Shell90.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v9.0/Gallio.VisualStudio.Tip90.Proxy.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v9.0/Gallio.VisualStudio.Tip90.dll delete mode 100644 external/Lucene.Net/lib/Gallio.3.2.750/tools/WeifenLuo.WinFormsUI.Docking.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/ICSharpCode/SharpZipLib/0.85/ICSharpCode.SharpZipLib.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/framework/nunit.framework.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/framework/nunit.mocks.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/framework/pnunit.framework.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/fit.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/log4net.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/nunit-console-runner.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/nunit.core.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/nunit.core.interfaces.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/nunit.fixtures.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/nunit.util.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/nunit-agent.exe delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/nunit-console.exe delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/nunit.framework.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/pnunit-agent.exe delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/pnunit-launcher.exe delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/pnunit.framework.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/pnunit.tests.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/runFile.exe delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/loadtest-assembly.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/mock-assembly.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nonamespace-assembly.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit-console.tests.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.core.tests.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.fixtures.tests.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.framework.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.framework.tests.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.mocks.tests.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.util.tests.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/test-assembly.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/test-utilities.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/timing-tests.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/framework/nunit.framework.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/framework/nunit.mocks.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/framework/pnunit.framework.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/fit.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/log4net.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit-console-runner.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit-gui-runner.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.core.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.core.interfaces.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.fixtures.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.uiexception.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.uikit.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.util.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit-agent-x86.exe delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit-agent.exe delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit-console-x86.exe delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit-console.exe delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit-x86.exe delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit.exe delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit.framework.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/pnunit-agent.exe delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/pnunit-launcher.exe delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/pnunit.framework.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/pnunit.tests.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/runFile.exe delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/loadtest-assembly.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/mock-assembly.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nonamespace-assembly.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit-console.tests.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit-gui.tests.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.core.tests.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.fixtures.tests.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.framework.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.framework.tests.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.mocks.tests.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.uiexception.tests.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.uikit.tests.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.util.tests.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/test-assembly.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/test-utilities.dll delete mode 100644 external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/timing-tests.dll delete mode 100644 external/Lucene.Net/lib/Nuget/NuGet.exe.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/Spatial4n/NET35/GeoAPI.dll delete mode 100644 external/Lucene.Net/lib/Spatial4n/NET35/NetTopologySuite.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/Spatial4n/NET35/PowerCollections.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/Spatial4n/NET35/Spatial4n.Core.NTS.dll delete mode 100644 external/Lucene.Net/lib/Spatial4n/NET35/Spatial4n.Core.dll delete mode 100644 external/Lucene.Net/lib/Spatial4n/NET40/GeoAPI.dll delete mode 100644 external/Lucene.Net/lib/Spatial4n/NET40/NetTopologySuite.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/Spatial4n/NET40/PowerCollections.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/Spatial4n/NET40/Spatial4n.Core.NTS.dll delete mode 100644 external/Lucene.Net/lib/Spatial4n/NET40/Spatial4n.Core.dll delete mode 100644 external/Lucene.Net/lib/StyleCop.4.5/StyleCop.CSharp.Rules.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/StyleCop.4.5/StyleCop.CSharp.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/StyleCop.4.5/StyleCop.VSPackage.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/StyleCop.4.5/StyleCop.dll.REMOVED.git-id delete mode 100644 external/Lucene.Net/lib/StyleCop.4.5/StyleCopSettingsEditor.exe.REMOVED.git-id delete mode 100644 external/Newtonsoft.Json/Src/Lib/NUnit/Compact/NUnitLite.dll delete mode 100644 external/Newtonsoft.Json/Src/Lib/NUnit/DotNet/nunit.framework.dll delete mode 100644 external/Newtonsoft.Json/Src/Lib/NUnit/Silverlight/nunit.framework.dll delete mode 100644 external/Newtonsoft.Json/Tools/7-zip/7za.exe.REMOVED.git-id delete mode 100644 external/Newtonsoft.Json/Tools/NUnit/framework/nunit.framework.dll.REMOVED.git-id delete mode 100644 external/Newtonsoft.Json/Tools/NUnit/framework/nunit.mocks.dll delete mode 100644 external/Newtonsoft.Json/Tools/NUnit/lib/nunit-console-runner.dll delete mode 100644 external/Newtonsoft.Json/Tools/NUnit/lib/nunit-gui-runner.dll.REMOVED.git-id delete mode 100644 external/Newtonsoft.Json/Tools/NUnit/lib/nunit.core.dll.REMOVED.git-id delete mode 100644 external/Newtonsoft.Json/Tools/NUnit/lib/nunit.core.interfaces.dll delete mode 100644 external/Newtonsoft.Json/Tools/NUnit/lib/nunit.uiexception.dll delete mode 100644 external/Newtonsoft.Json/Tools/NUnit/lib/nunit.uikit.dll.REMOVED.git-id delete mode 100644 external/Newtonsoft.Json/Tools/NUnit/lib/nunit.util.dll.REMOVED.git-id delete mode 100644 external/Newtonsoft.Json/Tools/NUnit/nunit-agent-x86.exe delete mode 100644 external/Newtonsoft.Json/Tools/NUnit/nunit-agent.exe delete mode 100644 external/Newtonsoft.Json/Tools/NUnit/nunit-console-x86.exe delete mode 100644 external/Newtonsoft.Json/Tools/NUnit/nunit-console.exe delete mode 100644 external/Newtonsoft.Json/Tools/NUnit/nunit-x86.exe delete mode 100644 external/Newtonsoft.Json/Tools/NUnit/nunit.exe delete mode 100644 external/Newtonsoft.Json/Tools/NuGet/NuGet.exe.REMOVED.git-id delete mode 100644 external/aspnetwebstack/test/System.Web.WebPages.Deployment.Test/TestFiles/ConfigTestAssemblies/V2_Signed/System.Web.WebPages.Deployment.dll delete mode 100644 external/aspnetwebstack/test/System.Web.WebPages.Deployment.Test/TestFiles/ConfigTestAssemblies/V2_Unsigned/System.Web.WebPages.Deployment.dll delete mode 100644 external/cecil/Test/Resources/assemblies/PortableClassLibrary.dll delete mode 100644 external/cecil/Test/Resources/assemblies/boxedoptarg.dll delete mode 100644 external/cecil/Test/Resources/assemblies/catch.exe delete mode 100644 external/cecil/Test/Resources/assemblies/cppcli.dll delete mode 100755 external/cecil/Test/Resources/assemblies/cscgpbug.dll delete mode 100644 external/cecil/Test/Resources/assemblies/decsec-att.dll delete mode 100644 external/cecil/Test/Resources/assemblies/decsec-xml.dll delete mode 100755 external/cecil/Test/Resources/assemblies/decsec1-xml.dll delete mode 100644 external/cecil/Test/Resources/assemblies/delay-signed.dll delete mode 100644 external/cecil/Test/Resources/assemblies/empty-decsec-att.dll delete mode 100644 external/cecil/Test/Resources/assemblies/fptr.exe delete mode 100644 external/cecil/Test/Resources/assemblies/gifaceref.exe delete mode 100644 external/cecil/Test/Resources/assemblies/hello.anycpu.exe delete mode 100644 external/cecil/Test/Resources/assemblies/hello.exe delete mode 100644 external/cecil/Test/Resources/assemblies/hello.ia64.exe delete mode 100644 external/cecil/Test/Resources/assemblies/hello.x64.exe delete mode 100644 external/cecil/Test/Resources/assemblies/hello.x86.exe delete mode 100644 external/cecil/Test/Resources/assemblies/hello1.exe delete mode 100644 external/cecil/Test/Resources/assemblies/hellow.exe delete mode 100644 external/cecil/Test/Resources/assemblies/iterator.exe delete mode 100644 external/cecil/Test/Resources/assemblies/libhello.dll delete mode 100644 external/cecil/Test/Resources/assemblies/libres.dll delete mode 100644 external/cecil/Test/Resources/assemblies/marshal.dll delete mode 100644 external/cecil/Test/Resources/assemblies/metro.exe delete mode 100644 external/cecil/Test/Resources/assemblies/mma.exe delete mode 100644 external/cecil/Test/Resources/assemblies/noblob.dll delete mode 100644 external/cecil/Test/Resources/assemblies/pinvoke.exe delete mode 100644 external/cecil/Test/Resources/assemblies/switch.exe delete mode 100644 external/cecil/Test/Resources/assemblies/varargs.exe delete mode 100644 external/cecil/Test/Resources/assemblies/wp7.dll delete mode 100644 external/cecil/Test/libs/nunit-2.6.2/nunit.core.dll.REMOVED.git-id delete mode 100755 external/cecil/Test/libs/nunit-2.6.2/nunit.core.interfaces.dll delete mode 100644 external/cecil/Test/libs/nunit-2.6.2/nunit.framework.dll.REMOVED.git-id delete mode 100644 external/cecil/rocks/Test/Resources/assemblies/decsec-att.dll delete mode 100644 external/cecil/rocks/Test/Resources/assemblies/decsec-xml.dll delete mode 100644 external/cecil/symbols/mdb/Test/Resources/assemblies/hello.exe delete mode 100755 external/cecil/symbols/pdb/Test/Resources/assemblies/VBConsApp.exe delete mode 100755 external/cecil/symbols/pdb/Test/Resources/assemblies/fsapp.exe delete mode 100644 external/cecil/symbols/pdb/Test/Resources/assemblies/test.exe delete mode 100644 external/entityframework/src/NuGet/EntityFramework.SqlServerCompact/lib/net40/System.Data.SqlServerCe.Entity.dll.REMOVED.git-id delete mode 100644 external/ikdasm/IKVM.Reflection.dll.REMOVED.git-id delete mode 100644 external/ikvm/bin/ICSharpCode.SharpZipLib.dll.REMOVED.git-id delete mode 100644 external/rx/Rx/NET/Samples/HistoricalScheduling/References/System.Reactive.Core.dll.REMOVED.git-id delete mode 100644 external/rx/Rx/NET/Samples/HistoricalScheduling/References/System.Reactive.Interfaces.dll delete mode 100644 external/rx/Rx/NET/Samples/HistoricalScheduling/References/System.Reactive.Linq.dll.REMOVED.git-id delete mode 100644 external/rx/Rx/NET/Samples/HistoricalScheduling/References/System.Reactive.PlatformServices.dll delete mode 100644 external/rx/Rx/NET/Samples/Portable/.nuget/NuGet.exe.REMOVED.git-id delete mode 100644 external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.Core.dll delete mode 100644 external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.Interfaces.dll delete mode 100644 external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.Linq.dll.REMOVED.git-id delete mode 100644 external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.PlatformServices.dll delete mode 100644 external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.Runtime.Remoting.dll delete mode 100644 external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.Windows.Forms.dll delete mode 100644 external/rx/Rx/NET/Source/.nuget/NuGet.exe.REMOVED.git-id delete mode 100644 external/rx/Rx/NET/Source/References/DESKTOPCLR20/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll delete mode 100644 external/rx/Rx/NET/Source/References/DESKTOPCLR40/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll delete mode 100644 external/rx/Rx/NET/Source/References/SILVERLIGHT3/Microsoft.Silverlight.Testing.dll.REMOVED.git-id delete mode 100644 external/rx/Rx/NET/Source/References/SILVERLIGHT3/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll delete mode 100644 external/rx/Rx/NET/Source/References/SILVERLIGHT3/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll delete mode 100644 external/rx/Rx/NET/Source/References/SILVERLIGHT4/Microsoft.Silverlight.Testing.dll.REMOVED.git-id delete mode 100644 external/rx/Rx/NET/Source/References/SILVERLIGHT4/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll delete mode 100644 external/rx/Rx/NET/Source/References/SILVERLIGHT4/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll delete mode 100644 external/rx/Rx/NET/Source/References/SILVERLIGHT5/Microsoft.Silverlight.Testing.dll.REMOVED.git-id delete mode 100644 external/rx/Rx/NET/Source/References/SILVERLIGHT5/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll delete mode 100644 external/rx/Rx/NET/Source/References/SILVERLIGHT5/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll delete mode 100644 external/rx/Rx/NET/Source/References/SILVERLIGHTM7/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll delete mode 100644 external/rx/Rx/NET/Source/References/SILVERLIGHTM7/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll delete mode 100644 external/rx/Rx/NET/Source/References/WINDOWS_PHONE8/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll delete mode 100755 external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.Core.dll delete mode 100755 external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.Debugger.dll delete mode 100755 external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.Experimental.dll delete mode 100755 external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.Interfaces.dll delete mode 100644 external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.Linq.dll.REMOVED.git-id delete mode 100755 external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.PlatformServices.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/net40/System.Runtime.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/net40/System.Threading.Tasks.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8+wp71/System.Runtime.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8+wp71/System.Threading.Tasks.dll.REMOVED.git-id delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8+wp8/System.Runtime.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8+wp8/System.Threading.Tasks.dll.REMOVED.git-id delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8/System.Runtime.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8/System.Threading.Tasks.dll.REMOVED.git-id delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl5+win8+wp8/System.Runtime.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl5+win8+wp8/System.Threading.Tasks.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+win8+wp8/System.Runtime.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+win8+wp8/System.Threading.Tasks.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+win8/System.Runtime.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+win8/System.Threading.Tasks.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl4-windowsphone71/System.Runtime.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl4-windowsphone71/System.Threading.Tasks.dll.REMOVED.git-id delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl4/System.Runtime.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl4/System.Threading.Tasks.dll.REMOVED.git-id delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl5/System.Runtime.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl5/System.Threading.Tasks.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/net40/Microsoft.Threading.Tasks.Extensions.Desktop.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/net40/Microsoft.Threading.Tasks.Extensions.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/net40/Microsoft.Threading.Tasks.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/net45/Microsoft.Threading.Tasks.Extensions.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/net45/Microsoft.Threading.Tasks.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net40+sl4+win8+wp71/Microsoft.Threading.Tasks.Extensions.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net40+sl4+win8+wp71/Microsoft.Threading.Tasks.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net45+win8+wp8/Microsoft.Threading.Tasks.Extensions.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net45+win8+wp8/Microsoft.Threading.Tasks.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net45+win8/Microsoft.Threading.Tasks.Extensions.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net45+win8/Microsoft.Threading.Tasks.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4-windowsphone71/Microsoft.Threading.Tasks.Extensions.Phone.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4-windowsphone71/Microsoft.Threading.Tasks.Extensions.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4-windowsphone71/Microsoft.Threading.Tasks.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4/Microsoft.Threading.Tasks.Extensions.Silverlight.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4/Microsoft.Threading.Tasks.Extensions.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4/Microsoft.Threading.Tasks.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/win8/Microsoft.Threading.Tasks.Extensions.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/win8/Microsoft.Threading.Tasks.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/wp8/Microsoft.Threading.Tasks.Extensions.Phone.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/wp8/Microsoft.Threading.Tasks.Extensions.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/wp8/Microsoft.Threading.Tasks.dll delete mode 100644 external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Build.1.0.4/tools/Microsoft.Bcl.Build.Tasks.dll create mode 100644 mcs/class/Managed.Windows.Forms/Test/DummyAssembly/AnotherSerializable.cs create mode 100644 mcs/class/Managed.Windows.Forms/Test/DummyAssembly/Convertable.cs create mode 100644 mcs/class/Managed.Windows.Forms/Test/DummyAssembly/Properties/AssemblyInfo.cs create mode 100644 mcs/class/Microsoft.Build.Utilities/Test/Microsoft.Build.Utilities/ToolLocationHelperTest.cs delete mode 100644 mcs/class/Mono.Parallel/Documentation/en/Mono.Threading.Tasks/IMonoTaskScheduler.xml delete mode 100644 mcs/class/Mono.Parallel/Documentation/en/Mono.Threading.Tasks/MonoTaskExtensions.xml delete mode 100644 mcs/class/Mono.Parallel/Documentation/en/Mono.Threading.Tasks/ThreadWorker.xml delete mode 100644 mcs/class/Mono.Parallel/Mono.Threading.Tasks/FixedTaskScheduler.cs delete mode 100644 mcs/class/Mono.Parallel/Mono.Threading.Tasks/MonoTaskExtensions.cs delete mode 100644 mcs/class/Mono.Parallel/Mono.Threading.Tasks/MonoTaskScheduler.cs delete mode 100644 mcs/class/Mono.Parallel/Mono.Threading.Tasks/ThreadWorker.cs delete mode 100644 mcs/class/Mono.Parallel/Test/Mono.Threading.Tasks/MonoTaskExtensionsTests.cs delete mode 100644 mcs/class/Mono.Parallel/Test/Mono.Threading.Tasks/MonoTaskSchedulerTests.cs delete mode 100644 mcs/class/System.ComponentModel.Composition.4.5/src/ComponentModel/Microsoft/Internal/Collections/ReadOnlyDictionary.cs delete mode 100644 mcs/class/System.ComponentModel.Composition.4.5/src/ComponentModel/Microsoft/Internal/Collections/ReadOnlyDictionaryDebuggerProxy.cs create mode 100644 mcs/class/System.Net.Http/Test/System.Net.Http/DelegatingHandlerTest.cs create mode 100644 mcs/class/System/Test/System.Net.Sockets/SocketConnectAsyncTest.cs delete mode 100644 mcs/class/monodoc/Test/Monodoc.Generators/AvoidCDataTextReaderTests.cs create mode 100644 mcs/errors/CS0012-23-lib.il rename mcs/errors/{CS1607-3-lib.cs => CS8009-lib.cs} (100%) create mode 100644 mcs/errors/cs0012-23.cs create mode 100644 mcs/errors/cs0070-2.cs create mode 100644 mcs/errors/cs0100-8.cs delete mode 100644 mcs/errors/cs0102-99.cs rename mcs/errors/{cs9006.cs => cs0103-13.cs} (52%) create mode 100644 mcs/errors/cs0103-14.cs create mode 100644 mcs/errors/cs0121-25.cs create mode 100644 mcs/errors/cs0133-6.cs create mode 100644 mcs/errors/cs0133-7.cs create mode 100644 mcs/errors/cs0136-18.cs create mode 100644 mcs/errors/cs0136-19.cs create mode 100644 mcs/errors/cs0151-3.cs create mode 100644 mcs/errors/cs0151-4.cs create mode 100644 mcs/errors/cs0151-5.cs rename mcs/errors/{cs0182-10.cs => cs0181-2.cs} (68%) rename mcs/errors/{cs0182-12.cs => cs0181-3.cs} (56%) rename mcs/errors/{cs0182-13.cs => cs0181-4.cs} (57%) rename mcs/errors/{cs0182-2.cs => cs0181.cs} (60%) create mode 100644 mcs/errors/cs0253-3.cs create mode 100644 mcs/errors/cs0457-4.cs delete mode 100644 mcs/errors/cs0573-2.cs delete mode 100644 mcs/errors/cs0573.cs create mode 100644 mcs/errors/cs0579-9.cs create mode 100644 mcs/errors/cs0591-2.cs rename mcs/errors/{cs0647-12.cs => cs0591-3.cs} (55%) rename mcs/errors/{cs0647-13.cs => cs0591-4.cs} (55%) create mode 100644 mcs/errors/cs0591-5.cs create mode 100644 mcs/errors/cs0591-6.cs delete mode 100644 mcs/errors/cs0647-15.cs delete mode 100644 mcs/errors/cs0647-18.cs delete mode 100644 mcs/errors/cs0647-19.cs delete mode 100644 mcs/errors/cs0647-20.cs delete mode 100644 mcs/errors/cs0647.cs create mode 100644 mcs/errors/cs0657-23.cs create mode 100644 mcs/errors/cs0837-3.cs rename mcs/errors/{cs1953.cs => cs0837-4.cs} (60%) delete mode 100644 mcs/errors/cs0840.cs create mode 100644 mcs/errors/cs1501-17.cs delete mode 100644 mcs/errors/cs1607-2.cs delete mode 100644 mcs/errors/cs1607-3.cs create mode 100644 mcs/errors/cs1644-35.cs create mode 100644 mcs/errors/cs1644-36.cs create mode 100644 mcs/errors/cs1644-37.cs create mode 100644 mcs/errors/cs1644-38.cs create mode 100644 mcs/errors/cs1644-39.cs create mode 100644 mcs/errors/cs1644-40.cs create mode 100644 mcs/errors/cs1650-3.cs delete mode 100644 mcs/errors/cs1984.cs delete mode 100644 mcs/errors/cs1985-2.cs delete mode 100644 mcs/errors/cs1985.cs delete mode 100644 mcs/errors/cs1997-2.cs create mode 100644 mcs/errors/cs4024.cs create mode 100644 mcs/errors/cs4025.cs create mode 100644 mcs/errors/cs4026.cs create mode 100644 mcs/errors/cs4029.cs create mode 100644 mcs/errors/cs7007.cs create mode 100644 mcs/errors/cs7023-2.cs create mode 100644 mcs/errors/cs7023.cs create mode 100644 mcs/errors/cs7025.cs create mode 100644 mcs/errors/cs7030.cs create mode 100644 mcs/errors/cs7034-2.cs create mode 100644 mcs/errors/cs7034-3.cs rename mcs/errors/{cs0647-17.cs => cs7034.cs} (52%) create mode 100644 mcs/errors/cs7035.cs create mode 100644 mcs/errors/cs7042-2.cs create mode 100644 mcs/errors/cs7042.cs rename mcs/errors/{cs0647-9.cs => cs7049.cs} (56%) rename mcs/errors/{cs0647-2.cs => cs7050.cs} (50%) rename mcs/errors/{cs0647-3.cs => cs7051.cs} (57%) rename mcs/errors/{cs0647-11.cs => cs7055-2.cs} (59%) rename mcs/errors/{cs0647-10.cs => cs7055.cs} (59%) rename mcs/errors/{cs0647-16.cs => cs7059.cs} (57%) rename mcs/errors/{cs0647-5.cs => cs7070-2.cs} (76%) rename mcs/errors/{cs0647-7.cs => cs7070-3.cs} (76%) rename mcs/errors/{cs0647-6.cs => cs7070-4.cs} (75%) rename mcs/errors/{cs0647-4.cs => cs7070.cs} (73%) create mode 100644 mcs/errors/cs7080.cs create mode 100644 mcs/errors/cs7081.cs create mode 100644 mcs/errors/cs7082.cs create mode 100644 mcs/errors/cs7083-2.cs create mode 100644 mcs/errors/cs7083.cs create mode 100644 mcs/errors/cs7094.cs create mode 100644 mcs/errors/cs8009.cs rename mcs/errors/{cs0127-4.cs => cs8030-2.cs} (56%) rename mcs/errors/{cs0127-2.cs => cs8030-3.cs} (56%) rename mcs/errors/{cs0127-3.cs => cs8030.cs} (53%) create mode 100644 mcs/errors/cs8031.cs rename mcs/errors/{cs9001.cs => cs8036.cs} (100%) rename mcs/errors/{cs9002.cs => cs8037.cs} (100%) rename mcs/errors/{cs9003.cs => cs8038.cs} (52%) rename mcs/errors/{cs9004.cs => cs8039.cs} (51%) create mode 100644 mcs/errors/cs8041.cs create mode 100644 mcs/errors/cs8043.cs create mode 100644 mcs/errors/cs8049.cs create mode 100644 mcs/errors/cs8050.cs create mode 100644 mcs/errors/cs8051.cs create mode 100644 mcs/errors/cs8052.cs create mode 100644 mcs/errors/cs8053.cs create mode 100644 mcs/errors/cs8054-2.cs create mode 100644 mcs/errors/cs8054-3.cs create mode 100644 mcs/errors/cs8054.cs delete mode 100644 mcs/errors/cs9005.cs delete mode 100644 mcs/errors/cs9007.cs create mode 100644 mcs/tests/dlls/test-883.il delete mode 100644 mcs/tests/gtest-311.cs create mode 100644 mcs/tests/gtest-614.cs create mode 100644 mcs/tests/gtest-616.cs create mode 100644 mcs/tests/gtest-617.cs create mode 100644 mcs/tests/gtest-618.cs create mode 100644 mcs/tests/gtest-619.cs create mode 100644 mcs/tests/gtest-620.cs create mode 100644 mcs/tests/gtest-autoproperty-09.cs create mode 100644 mcs/tests/gtest-collectioninit-04.cs create mode 100644 mcs/tests/gtest-initialize-13.cs create mode 100644 mcs/tests/gtest-lambda-35.cs create mode 100644 mcs/tests/gtest-named-05.cs create mode 100644 mcs/tests/gtest-optional-32.cs create mode 100644 mcs/tests/gtest-optional-33.cs create mode 100644 mcs/tests/test-894.cs create mode 100644 mcs/tests/test-896.cs create mode 100644 mcs/tests/test-897.cs create mode 100644 mcs/tests/test-898.cs create mode 100644 mcs/tests/test-899.cs create mode 100644 mcs/tests/test-900.cs create mode 100644 mcs/tests/test-901.cs create mode 100644 mcs/tests/test-902.cs create mode 100644 mcs/tests/test-async-63.cs create mode 100644 mcs/tests/test-async-64.cs create mode 100644 mcs/tests/test-async-65.cs create mode 100644 mcs/tests/test-async-66.cs create mode 100644 mcs/tests/test-async-67.cs create mode 100644 mcs/tests/test-async-69.cs create mode 100644 mcs/tests/test-async-70.cs create mode 100644 mcs/tests/test-async-71.cs create mode 100644 mcs/tests/test-async-72.cs create mode 100644 mcs/tests/test-async-73.cs create mode 100644 mcs/tests/test-async-74.cs create mode 100644 mcs/tests/test-ex-filter-03.cs create mode 100644 mcs/tests/test-ex-filter-04.cs create mode 100644 mcs/tests/test-ex-filter-05.cs create mode 100644 mcs/tests/test-ex-filter-06.cs create mode 100644 mcs/tests/test-expression-bodied-01.cs create mode 100644 mcs/tests/test-primary-ctor-06.cs create mode 100644 mcs/tests/test-primary-ctor-07.cs create mode 100644 mcs/tests/test-primary-ctor-08.cs create mode 100644 mcs/tests/test-primary-ctor-09.cs create mode 100644 mcs/tests/test-static-using-01.cs create mode 100644 mcs/tests/test-static-using-02.cs create mode 100644 mcs/tests/test-static-using-03.cs create mode 100644 mcs/tests/test-static-using-04.cs create mode 100644 mcs/tests/test-static-using-05.cs create mode 100644 mcs/tests/test-static-using-06.cs create mode 100644 mcs/tools/xbuild/frameworks/net_4.5.1.xml create mode 100644 mono/metadata/abi-details.h create mode 100644 mono/metadata/metadata-cross-helpers.c create mode 100644 mono/metadata/object-offsets.h create mode 100644 mono/mini/mini-cross-helpers.c create mode 100644 mono/tests/gc-graystack-stress.cs create mode 100644 mono/unit-tests/test-conc-hashtable.c create mode 100644 mono/utils/mono-conc-hashtable.c create mode 100644 mono/utils/mono-conc-hashtable.h diff --git a/Makefile.am b/Makefile.am index 3542279772..c44c4b93c0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,5 +1,7 @@ ACLOCAL_AMFLAGS = -I m4 +AM_CFLAGS = $(WERROR_CFLAGS) + MONOTOUCH_SUBDIRS = $(libgc_dir) eglib/src mono if CROSS_COMPILING @@ -48,7 +50,9 @@ GIT_DIR ?= $(srcdir)/.git dist-hook: test -d $(distdir)/mcs || mkdir $(distdir)/mcs d=`cd $(distdir)/mcs && pwd`; cd $(mcs_topdir) && $(MAKE) distdir=$$d dist-recursive - rm -rf `find $(top_distdir)/external -path '*\.git' -and -type d` + rm -rf `find $(top_distdir)/external -path '*\.git'` + rm -f `find $(top_distdir)/external -path '*\.exe'` + rm -f `find $(top_distdir)/external -path '*\.dll'` cp mcs/class/lib/basic/System.Configuration.dll mcs/class/lib/monolite/ cp mcs/class/lib/basic/System.Security.dll mcs/class/lib/monolite/ # Disable this for now because it is very slow and causes wrench to timeout: diff --git a/Makefile.in b/Makefile.in index 7ab824852e..b419fadcd2 100644 --- a/Makefile.in +++ b/Makefile.in @@ -85,7 +85,7 @@ DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(srcdir)/config.h.in mkinstalldirs \ $(srcdir)/mono-core.spec.in $(srcdir)/mono-uninstalled.pc.in \ AUTHORS COPYING.LIB ChangeLog NEWS compile config.guess \ - config.rpath config.sub install-sh missing ltmain.sh + config.rpath config.sub depcomp install-sh missing ltmain.sh ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ @@ -246,6 +246,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -254,6 +255,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -320,6 +322,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -369,6 +372,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ @@ -403,6 +407,7 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I m4 +AM_CFLAGS = $(WERROR_CFLAGS) MONOTOUCH_SUBDIRS = $(libgc_dir) eglib/src mono @CROSS_COMPILING_FALSE@@ONLY_MONOTOUCH_FALSE@@ONLY_XAMMAC_FALSE@SUBDIRS = po $(libgc_dir) eglib mono $(ikvm_native_dir) support data runtime scripts man samples msvc $(docs_dir) @CROSS_COMPILING_FALSE@@ONLY_MONOTOUCH_FALSE@@ONLY_XAMMAC_TRUE@SUBDIRS = $(libgc_dir) eglib/src mono runtime @@ -936,7 +941,9 @@ GIT_DIR ?= $(srcdir)/.git dist-hook: test -d $(distdir)/mcs || mkdir $(distdir)/mcs d=`cd $(distdir)/mcs && pwd`; cd $(mcs_topdir) && $(MAKE) distdir=$$d dist-recursive - rm -rf `find $(top_distdir)/external -path '*\.git' -and -type d` + rm -rf `find $(top_distdir)/external -path '*\.git'` + rm -f `find $(top_distdir)/external -path '*\.exe'` + rm -f `find $(top_distdir)/external -path '*\.dll'` cp mcs/class/lib/basic/System.Configuration.dll mcs/class/lib/monolite/ cp mcs/class/lib/basic/System.Security.dll mcs/class/lib/monolite/ .PHONY: get-monolite-latest diff --git a/README.md b/README.md index 07c950004d..d600ce4ad1 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ Mono is a software platform designed to allow developers to easily create cross platform applications. Mono is an open source implementation of Microsoft's .NET Framework based on the ECMA standards for C# and the Common Language Runtime. +[![Build Status](http://monojenkins.cloudapp.net/job/Mono/badge/icon)](http://monojenkins.cloudapp.net/job/Mono/) + 1. [Installation](#compilation-and-installation) 2. [Using Mono](#using-mono) 3. [Directory Roadmap](#directory-roadmap) @@ -34,6 +36,10 @@ a. Build Requirements * libzlib - This library and the development headers are required for compression file support in the 2.0 profile. + 4. Mono is required to build Mono. Use a system package or monolite (explained further below) + + 5. If you have a system Mono (not monolite), you will need to read this: http://mono-project.com/Parallel_Mono_Environments#Setting_up_a_Build_Environment + b. Building the Software ------------------------ diff --git a/acinclude.m4 b/acinclude.m4 index 16fecf7f86..5216cd14a5 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -22,7 +22,7 @@ if test x$GCC != xyes; then dolt_supported=no fi case $host in -i?86-*-linux*|x86_64-*-linux*|powerpc-*-linux*|powerpc64-*-linux* \ +i?86-*-linux*|i?86-apple-darwin*|x86_64-*-linux*|powerpc-*-linux*|powerpc64-*-linux* \ |amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*|arm*-*-linux*|sparc*-*-linux*|mips*-*-linux*|x86_64-apple-darwin*|aarch64*) pic_options='-fPIC' ;; @@ -158,7 +158,7 @@ modeok=false tagok=false for arg in "$[]@"; do case "$arg" in - --silent) ;; + --silent) ;; --mode=compile) modeok=true ;; --tag=CC|--tag=CXX) tagok=true ;; --quiet) ;; diff --git a/config.h.in b/config.h.in index 3d03795cde..b8c09f6b4a 100644 --- a/config.h.in +++ b/config.h.in @@ -320,7 +320,7 @@ /* Define to 1 if you have the `getpriority' function. */ #undef HAVE_GETPRIORITY -/* Define to 1 if you have the `GetProcessId' function. */ +/* Define if GetProcessId is available */ #undef HAVE_GETPROCESSID /* Define to 1 if you have the `getpwent' function. */ @@ -924,9 +924,6 @@ /* native types */ #undef MONO_NATIVE_TYPES -/* Sizeof sock_un.sun_path */ -#undef MONO_SIZEOF_SUNPATH - /* Reduce runtime requirements (and capabilities) */ #undef MONO_SMALL_CONFIG diff --git a/configure.REMOVED.git-id b/configure.REMOVED.git-id index ad3f1c707f..d901c34140 100644 --- a/configure.REMOVED.git-id +++ b/configure.REMOVED.git-id @@ -1 +1 @@ -9f9229ff6a1b6a8b0e8d4e4cb7632a66927b37d3 \ No newline at end of file +e2d46ae5f394ada396886d241225ad895d4fa194 \ No newline at end of file diff --git a/configure.ac.REMOVED.git-id b/configure.ac.REMOVED.git-id index 049281c6e9..aefe5b6d2e 100644 --- a/configure.ac.REMOVED.git-id +++ b/configure.ac.REMOVED.git-id @@ -1 +1 @@ -8be4fb39c41e5d71d787a6c58748fed22d78f9eb \ No newline at end of file +9ad91a3e3e9b4a437dedfc1a32a3c9092d967f5e \ No newline at end of file diff --git a/data/Makefile.in b/data/Makefile.in index 2bbc6658ce..75be628ba0 100644 --- a/data/Makefile.in +++ b/data/Makefile.in @@ -270,6 +270,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -278,6 +279,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -344,6 +346,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -393,6 +396,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/data/config.in b/data/config.in index 44fefc0802..51cac3f0b4 100644 --- a/data/config.in +++ b/data/config.in @@ -10,12 +10,14 @@ - + + + @@ -27,8 +29,8 @@ - - - - + + + + diff --git a/data/net_2_0/Browsers/Makefile.in b/data/net_2_0/Browsers/Makefile.in index d250537399..ab93576d60 100644 --- a/data/net_2_0/Browsers/Makefile.in +++ b/data/net_2_0/Browsers/Makefile.in @@ -191,6 +191,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -199,6 +200,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -265,6 +267,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -314,6 +317,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/data/net_2_0/Makefile.in b/data/net_2_0/Makefile.in index 8207e36f43..c2af614394 100644 --- a/data/net_2_0/Makefile.in +++ b/data/net_2_0/Makefile.in @@ -251,6 +251,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -259,6 +260,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -325,6 +327,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -374,6 +377,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/data/net_4_0/Browsers/Makefile.in b/data/net_4_0/Browsers/Makefile.in index 3e8c51213f..aa143f1761 100644 --- a/data/net_4_0/Browsers/Makefile.in +++ b/data/net_4_0/Browsers/Makefile.in @@ -191,6 +191,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -199,6 +200,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -265,6 +267,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -314,6 +317,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/data/net_4_0/Makefile.in b/data/net_4_0/Makefile.in index bed5f8155a..8ab3173274 100644 --- a/data/net_4_0/Makefile.in +++ b/data/net_4_0/Makefile.in @@ -251,6 +251,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -259,6 +260,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -325,6 +327,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -374,6 +377,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/data/net_4_5/Browsers/Makefile.in b/data/net_4_5/Browsers/Makefile.in index a96424fd72..705e6f5f4f 100644 --- a/data/net_4_5/Browsers/Makefile.in +++ b/data/net_4_5/Browsers/Makefile.in @@ -191,6 +191,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -199,6 +200,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -265,6 +267,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -314,6 +317,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/data/net_4_5/Makefile.in b/data/net_4_5/Makefile.in index 7a2ae670ae..90ace16ee4 100644 --- a/data/net_4_5/Makefile.in +++ b/data/net_4_5/Makefile.in @@ -251,6 +251,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -259,6 +260,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -325,6 +327,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -374,6 +377,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/docs/Makefile.in b/docs/Makefile.in index fb1c30eeb3..d52148580a 100644 --- a/docs/Makefile.in +++ b/docs/Makefile.in @@ -191,6 +191,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -199,6 +200,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -265,6 +267,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -314,6 +317,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/eglib/Makefile.am b/eglib/Makefile.am index b7e5cd6389..84cc8353c9 100644 --- a/eglib/Makefile.am +++ b/eglib/Makefile.am @@ -1,5 +1,7 @@ ACLOCAL_AMFLAGS = -I m4 +AM_CFLAGS = $(WERROR_CFLAGS) + if HOST_WIN32 SUBDIRS = m4 src else diff --git a/eglib/Makefile.in b/eglib/Makefile.in index e4837191da..2aee28e2d6 100644 --- a/eglib/Makefile.in +++ b/eglib/Makefile.in @@ -291,6 +291,7 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -348,6 +349,7 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I m4 +AM_CFLAGS = $(WERROR_CFLAGS) @CROSS_COMPILING_FALSE@@HOST_WIN32_FALSE@@PLATFORM_DARWIN_FALSE@SUBDIRS = m4 src test @CROSS_COMPILING_TRUE@@HOST_WIN32_FALSE@@PLATFORM_DARWIN_FALSE@SUBDIRS = m4 src @HOST_WIN32_FALSE@@PLATFORM_DARWIN_TRUE@SUBDIRS = m4 src diff --git a/eglib/acinclude.m4 b/eglib/acinclude.m4 index 526d00c1be..5216cd14a5 100644 --- a/eglib/acinclude.m4 +++ b/eglib/acinclude.m4 @@ -22,8 +22,8 @@ if test x$GCC != xyes; then dolt_supported=no fi case $host in -i?86-*-linux*|x86_64-*-linux*|powerpc-*-linux*|powerpc64-*-linux* \ -|amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*|arm*-*-linux*|sparc*-*-linux*|mips*-*-linux*) +i?86-*-linux*|i?86-apple-darwin*|x86_64-*-linux*|powerpc-*-linux*|powerpc64-*-linux* \ +|amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*|arm*-*-linux*|sparc*-*-linux*|mips*-*-linux*|x86_64-apple-darwin*|aarch64*) pic_options='-fPIC' ;; ?86-pc-cygwin*|i?86-pc-cygwin*) diff --git a/eglib/config.h.in b/eglib/config.h.in index dec81e46e0..50b2eb2421 100644 --- a/eglib/config.h.in +++ b/eglib/config.h.in @@ -60,6 +60,9 @@ /* Define to 1 if you have the `strtok_r' function. */ #undef HAVE_STRTOK_R +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SELECT_H + /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H diff --git a/eglib/configure.REMOVED.git-id b/eglib/configure.REMOVED.git-id index 6ca6af8e50..7c814b9dcb 100644 --- a/eglib/configure.REMOVED.git-id +++ b/eglib/configure.REMOVED.git-id @@ -1 +1 @@ -14cd313adbe67ed6c268aa152076066abd759556 \ No newline at end of file +8efa2ac8877cc4d116d3625738612cdba7e474a4 \ No newline at end of file diff --git a/eglib/configure.ac b/eglib/configure.ac index fab5724769..1ff6c42ff2 100644 --- a/eglib/configure.ac +++ b/eglib/configure.ac @@ -179,7 +179,7 @@ if test "x$have_iso_varargs" = "xyes"; then fi AC_SUBST(G_HAVE_ISO_VARARGS) -AC_CHECK_HEADERS(getopt.h sys/time.h sys/wait.h pwd.h langinfo.h iconv.h localcharset.h sys/types.h) +AC_CHECK_HEADERS(getopt.h sys/select.h sys/time.h sys/wait.h pwd.h langinfo.h iconv.h localcharset.h sys/types.h) AC_CHECK_HEADER(alloca.h, [HAVE_ALLOCA_H=1], [HAVE_ALLOCA_H=0]) AC_SUBST(HAVE_ALLOCA_H) @@ -235,6 +235,12 @@ AC_ARG_WITH(crosspkgdir, [ --with-crosspkgdir=/path/to/pkg-config/dir Chan fi ) +AC_ARG_ENABLE(werror, [ --enable-werror Pass -Werror to the C compiler], werror_flag=$enableval, werror_flag=no) +if test x$werror_flag = xyes; then + WERROR_CFLAGS="-Werror" +fi +AC_SUBST([WERROR_CFLAGS]) + AC_SUBST(GPOINTER_TO_INT) AC_SUBST(GPOINTER_TO_UINT) AC_SUBST(GINT_TO_POINTER) diff --git a/eglib/m4/Makefile.in b/eglib/m4/Makefile.in index 5fd63e0d80..42f6211d8c 100644 --- a/eglib/m4/Makefile.in +++ b/eglib/m4/Makefile.in @@ -205,6 +205,7 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ diff --git a/eglib/src/Makefile.am b/eglib/src/Makefile.am index 0d0e90354e..70d519ea22 100644 --- a/eglib/src/Makefile.am +++ b/eglib/src/Makefile.am @@ -1,5 +1,7 @@ noinst_LTLIBRARIES = libeglib.la libeglib-static.la +AM_CFLAGS = $(WERROR_CFLAGS) + win_files = \ eglib-config.hw \ gdate-win32.c gdir-win32.c gfile-win32.c gmisc-win32.c \ @@ -30,6 +32,7 @@ libeglib_la_SOURCES = \ garray.c \ gbytearray.c \ gerror.c \ + vasprintf.h \ ghashtable.c \ giconv.c \ gmem.c \ diff --git a/eglib/src/Makefile.in.REMOVED.git-id b/eglib/src/Makefile.in.REMOVED.git-id index 91ee94333a..28469772a0 100644 --- a/eglib/src/Makefile.in.REMOVED.git-id +++ b/eglib/src/Makefile.in.REMOVED.git-id @@ -1 +1 @@ -46a89f9f9808c4792e331b8cbb738a6d8db1c519 \ No newline at end of file +155511dfa6f6ef3805f7a5fad5fe5c9a6dbe2a8b \ No newline at end of file diff --git a/eglib/src/gerror.c b/eglib/src/gerror.c index 790c388c7a..2ec089c995 100644 --- a/eglib/src/gerror.c +++ b/eglib/src/gerror.c @@ -30,6 +30,8 @@ #include #include +#include "vasprintf.h" + GError * g_error_new (gpointer domain, gint code, const char *format, ...) { diff --git a/eglib/src/glib.h b/eglib/src/glib.h index 6d6dadff44..7cb8e6179c 100644 --- a/eglib/src/glib.h +++ b/eglib/src/glib.h @@ -49,12 +49,6 @@ G_BEGIN_DECLS -#ifdef G_OS_WIN32 -/* MSC and Cross-compilatin will use this */ -int vasprintf (char **strp, const char *fmt, va_list ap); -#endif - - /* * Basic data types */ @@ -727,8 +721,16 @@ GUnicodeBreakType g_unichar_break_type (gunichar c); #define G_UNLIKELY(x) (x) #endif +#if defined(_MSC_VER) +#define eg_unreachable() __assume(0) +#elif defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4 && (__GNUC_MINOR__ >= 5))) +#define eg_unreachable() __builtin_unreachable() +#else +#define eg_unreachable() +#endif + #define g_assert(x) G_STMT_START { if (G_UNLIKELY (!(x))) g_assertion_message ("* Assertion at %s:%d, condition `%s' not met\n", __FILE__, __LINE__, #x); } G_STMT_END -#define g_assert_not_reached() G_STMT_START { g_assertion_message ("* Assertion: should not be reached at %s:%d\n", __FILE__, __LINE__); } G_STMT_END +#define g_assert_not_reached() G_STMT_START { g_assertion_message ("* Assertion: should not be reached at %s:%d\n", __FILE__, __LINE__); eg_unreachable(); } G_STMT_END /* * Unicode conversion @@ -1008,19 +1010,6 @@ glong g_utf8_pointer_to_offset (const gchar *str, const gchar *pos); #define G_PRIORITY_DEFAULT 0 #define G_PRIORITY_DEFAULT_IDLE 200 -/* - * Empty thread functions, not used by eglib - */ -#define g_thread_supported() TRUE -#define g_thread_init(x) G_STMT_START { if (x != NULL) { g_error ("No vtable supported in g_thread_init"); } } G_STMT_END - -#define G_LOCK_DEFINE(name) int name; -#define G_LOCK_DEFINE_STATIC(name) static int name; -#define G_LOCK_EXTERN(name) -#define G_LOCK(name) -#define G_TRYLOCK(name) -#define G_UNLOCK(name) - #define GUINT16_SWAP_LE_BE_CONSTANT(x) ((((guint16) x) >> 8) | ((((guint16) x) << 8))) #define GUINT16_SWAP_LE_BE(x) ((guint16) (((guint16) x) >> 8) | ((((guint16)(x)) & 0xff) << 8)) diff --git a/eglib/src/goutput.c b/eglib/src/goutput.c index aff9f460c5..73ef1f383d 100644 --- a/eglib/src/goutput.c +++ b/eglib/src/goutput.c @@ -31,6 +31,8 @@ #include #include +#include "vasprintf.h" + /* The current fatal levels, error is always fatal */ static GLogLevelFlags fatal = G_LOG_LEVEL_ERROR; diff --git a/eglib/src/gspawn.c b/eglib/src/gspawn.c index 4f4e5bef53..836e6f2aa9 100644 --- a/eglib/src/gspawn.c +++ b/eglib/src/gspawn.c @@ -41,6 +41,10 @@ #include #endif +#ifdef HAVE_SYS_SELECT_H +#include +#endif + #ifdef HAVE_SYS_TIME_H #include #endif diff --git a/eglib/src/gstr.c b/eglib/src/gstr.c index 335ccff936..3e976c5a2e 100644 --- a/eglib/src/gstr.c +++ b/eglib/src/gstr.c @@ -32,6 +32,8 @@ #include #include +#include "vasprintf.h" + /* This is not a macro, because I dont want to put _GNU_SOURCE in the glib.h header */ gchar * g_strndup (const gchar *str, gsize n) diff --git a/eglib/src/sort.frag.h b/eglib/src/sort.frag.h index 2cf5a9ba1f..6dc1950ae4 100644 --- a/eglib/src/sort.frag.h +++ b/eglib/src/sort.frag.h @@ -88,12 +88,24 @@ merge_lists (list_node *first, list_node *second, GCompareFunc func) static inline list_node * sweep_up (struct sort_info *si, list_node *list, int upto) { +#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 406) + /* + * GCC incorrectly thinks we're writing below si->ranks array bounds. + */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Warray-bounds" +#endif + int i; for (i = si->min_rank; i < upto; ++i) { list = merge_lists (si->ranks [i], list, si->func); si->ranks [i] = NULL; } return list; + +#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 406) +#pragma GCC diagnostic pop +#endif } /* @@ -124,6 +136,14 @@ sweep_up (struct sort_info *si, list_node *list, int upto) static inline void insert_list (struct sort_info *si, list_node* list, int rank) { +#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 406) + /* + * GCC incorrectly thinks we're writing below si->ranks array bounds. + */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Warray-bounds" +#endif + int i; if (rank > si->n_ranks) { @@ -149,6 +169,10 @@ insert_list (struct sort_info *si, list_node* list, int rank) si->n_ranks = i + 1; si->min_rank = i; si->ranks [i] = list; + +#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 406) +#pragma GCC diagnostic pop +#endif } #undef stringify2 diff --git a/eglib/src/vasprintf.h b/eglib/src/vasprintf.h new file mode 100644 index 0000000000..3d294541a5 --- /dev/null +++ b/eglib/src/vasprintf.h @@ -0,0 +1,11 @@ +#ifndef __VASPRINTF_H +#define __VASPRINTF_H + +#include +#include + +#ifndef HAVE_VASPRINTF +int vasprintf(char **ret, const char *fmt, va_list ap); +#endif + +#endif /* __VASPRINTF_H */ diff --git a/eglib/test/Makefile.in b/eglib/test/Makefile.in index 9d22bd654f..99c1c07cd1 100644 --- a/eglib/test/Makefile.in +++ b/eglib/test/Makefile.in @@ -267,6 +267,7 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ diff --git a/eglib/test/file.c b/eglib/test/file.c index 411c945296..19276c990c 100644 --- a/eglib/test/file.c +++ b/eglib/test/file.c @@ -115,7 +115,7 @@ test_file () #ifndef G_OS_WIN32 /* FIXME */ gchar *sympath; - gint ignored; + gint ignored G_GNUC_UNUSED; #endif res = g_file_test (NULL, 0); diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Aga.Controls.dll.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Aga.Controls.dll.REMOVED.git-id deleted file mode 100644 index 4ada5a22e2..0000000000 --- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Aga.Controls.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -0fc198aa785b43ebc2084334bc85336072e00bfe \ No newline at end of file diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Ambience.Server.exe b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Ambience.Server.exe deleted file mode 100644 index d625e473a8f9ba4c8a556247a5b4ea49f5707ba4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 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 diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Ambience.dll.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Ambience.dll.REMOVED.git-id deleted file mode 100644 index 2d02bafabd..0000000000 --- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Ambience.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -ba0226882e0c101eda00edc3c2592a4cfdc741f8 \ No newline at end of file diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Common.Splash.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Common.Splash.dll deleted file mode 100644 index 4d00dfba04f7a285f09ac5e3b7ff075ed4239d48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66048 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 diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Host.Elevated.x86.exe b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Host.Elevated.x86.exe deleted file mode 100644 index 812e9b5d027591044a6cfefa429eaf6f3ecd6ac4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15872 zcmeHOdw3j2k*}Fu&Caf*jaRZQKjX1%#~WK(J^YRzSe9g4v1}`r{0K4Fqur4-&hE}; zW>&H=HWDE~2!Vv~NC+2_5RUk`goE%3e1JoM;}sGfIS2$NAr}H4kC1~v!to{dtDYI{ zN>&2*@!em?+EdeAU0q#WU0vN>)7t&&>nKD-VLUIrMD$s_`L|WTR|aD!jxYLLoIV+S zVDV?A?gtk44VjKsu&qH`&uM8rpSN7C-_Y!0UNiGr$KGBoXJw33b#-j1&$_3Rs9Orr zk-ubi2dzC$vQ#OlM6JNYJnR>H@Ye7g#lzBRc*&mJND2A*O}F9!zVcuAwe>2Z8RCEG z?Pr-5zajAL<-}2<8x>AW`Hc}(0rlu!q6JfmUNNf?p$8K`75SYLIii$n9CwlbN;3e; zL|-9y`A>sXDciBrKnmH8BEd{o<0<=Xg+fxck+nd`veFnH=Cuh=*>5Y+wz8~9-pYE# zk7bjof`%?6axZ}XkUx(|Ii4i?9nw9T#}>&~{H>dD=FG_1j^8bP@++?$tb6I(@!0DQ z?f=T5ciniPMLp&GX2GmqfA5K_@2Gf9?Xu40Kdn3egL3R6?thH^=*~G0$AA3u4Od^e z>3hqzw|(mFkz3FE)s_GC&||%qR7elc`_S!Q>osp$cj%i}{nmNlUst~K?r-6i*N59Yrn?OPiB^PqR3^1&VovpZFcI+%ED@X!@e=}xK1%_BU z-&aekd;(R&*7>N!I-1`crhD;58;O}Q2SO;7k&v^9c`~7Vf;l%Ny|>a>9eGhfj}=D) zMNF|4mrS@jd?hH4LIEdi==K}59asXhtM5c3e$vQiQz8EXjFRh@0|TTGO3Xb8`# zIy>j=Os`r)rC*%~@zL2URPG1&SEiYC?QH<~p})&fyy9Xx35$=(Nnn*EDADWr(0c?* zhv7hf)=D57RoTK&#OhYa$ws_SV4j5=eB^8(kyp+k!Xyeeo+l?$sNpmLR7Y1*P5ce}YKW8`1FDq&cGG0-&Y(E8o ztj)|b&^Wk-8=Cw|oJnp$apOYSzD%M*IbL*bQeB?+RkN#CE>olLk11ZoS+e~IDk`2X z1bOAzozc2O)lu~wX6wT~$4GgzoJqdQZ}wI4M6&{4)@wPp0!}O)tToy?K2GqXNk>uk9y5TBgFXzWYg)d%hjq zV-LX<$jKc@Rw@x|C*H{}fQWT5ptTFYWr`}lBCEbunOz%MS({K2k@r`tQ48fr)*Y&i zBq9j~%6`fxW>-DCb%R=#wZK4WyZ{>bRY^vsdpnvgn;}1a4!!d032SQ#&9(=_6WwB5 z$?Ss`7;Ax>va%KA_m#-m5T~>d)Zrov2B`S0p*P{#Epy6p* z(88lD+TbCW!2vwI=+S9Ba4h1-cz*5y?o(y>?G8MJlI#JcoV)~ZMX&-8@%)7`^Hw8q z3LZZ^Gua1<2F<=6vOI(V@y1^azOx@iF=dSD1o4V_r?3Eo!Ea2w4Hcf7VRzGDiEX%Z>cz{&nm0HR&~LTQ;m(Z8Wdn zu;kpvih0+}8A0p4hRaH0;rQ3n*1`WjyWnR}a`rJi=eJP-|FUFKnsjpUwkS_~kj|08 zR3ugI(6d?7(so*oyRG-)ZIaIrYXuFn@N1gawZet7r_2JbhQgPe!WI_qZ-Zz_uWOt6 zL5C@_(C;5$bW8U4(ot*z*jSeA*xv;oK?UT)@Y74SWvzZD#t-642N&HQjk1OPdD$w$ zSa5e>F+AtR{s1Vk&tv>SJWRS651JRWoX6Y{c&6bzzxlx!`fr8aP1hoKFWnAL_pnI6 zL{A_+Lt^}c(!ElQ{vh3sbV9zJ;?yoT%L;u|z7{l}28_{*^3%W^3tbvg=;qLy0gK^u zSfO_b_)!7BEZ}1Tz9?W_1=BPOxJ$qR0dJ{zLxn=05b#U|^ZZ#wv+U3xdD7A{r9x4t z6EH?;JPv#scM$vRH%A&Rh+H{tkkpM890C>DN5C_G6@^2Hslma z0K=7bBR2~zz}*5rAZfr4i}YKi zrAXf(;7tPFDd63J5-Yjp$%=m$y zyIJm}FlqH(y)VfZqrcC4Ine@~=Mquo=VprBSLl9uKjc}zl*_KCZ^@TomiCFNa#60k?W z17*;|za|`l^^9Uw+K3)8yjsBP1-wbX+XOr<;Kv2LSHSxO{087%^j(pDM8GEiKS9p| zZlxChF@DlL(yOJJbVg}XqXILRcwAe2$TTftZ0CYcFCs_DlxC=JQ@f<4>T>Fm)~ZKgY23;cpkEH1 zdhnRK5$RLvKS7h%g0hOd`i6@=?vW@J+FRFT`W=bjH**@ z^lR#AX@B%PfJXFY$V|~6sP{^@MSlX!-O=Abo-an9WvQae=|1U+=pVuP=h2Py4XHBr z-|BY-d_>6egn+-43NbbMf^=2vH|n#}=~!*_S?N2m`O$>@LTp`hv8+|L0dB0kIJ!Z$ zDtnNAQ{}1LS%c7UkJ(YTN0s1uv%$F*2(Jq<$c!~UU(btZLWL{S{9Nyd+&iYm~)+?^D_Uf3N6( zmq*3{zY%#{Isy7#wO_qK{h3P9B~drZUR}c6ITrdL;GaTw0KODD4PTOg2a%};zCxl} zKt8EPkV>js)$kavyfSEodqsqfr>U10NYr_gNCZ@ziP6mhH<|8Qfn&gO+=7W55vw{f zn|527V%FF~-liqRo0gPu+#pW0*@MNLk$0W)Qc=>G&lD^(?}|*17x@$EKEuwLdELcE z4Ldl;%2Tkpn#3f9It9aaO~avJhezJ_jP~{)Gt#c#WYBWEmCIRq><)95i_H;rTlv9m zbJ)o2)@^4<&u$ytXAJl?yE;s#U^#k!)(EQa^EP^^b}R2#S);dDC|I^je%9~6(H82= z7jx8ANcW(0kDfEAFI^DnVy@q?sSle)tLXL`X)B*`Xzxhguu&QNR;MdNZG{51pQ7*E zbjRp0ZS=#kM`H)_k1- zEeBjnNT@qNVl!T@U)od5W_d_4N<0j`1s%3k6i-*KkfrSw&JUf(O_vUUe@1tWbIdoe zf^KVYkd3H|6HpuQfk7WM-61goQ}DD~H}f>CXN$&>BSH5vbWnHGLm6w(Hw-RdJ!E`a zo;b}o6VqU~p4XYT?Vos%4~TbQAJ3{0WSO%VGy8Z_J^!Mq9>GA<~0%F>K4 zvrJ*t0o_#mP?@2Q;xy_{0+H}$Kw-k#N2YXLw{c_{&|N)CSx>D(TS4bAJ+qh&@Cy`} zCtJRMsB3d^=IJlGuo&N1U$&snbhE~}^c{wiw#@=JaBktG2{&DF4%Re!ZUJmNQ%t+( z7Vu29&B38*iu!C!#hh+mK20s}z*;H@4y3+!>dLzY{36d!6FvogB6q-aOc;Hs%8sI$ zDdqNfN8i8}oNhfoScH9*C_H24i8B?4835;xW~NAiRtp#zyIc$)gjMb{vifn6a!Ty{ zX~p$W)Nf|tw@Rh#x%GUe+ssc)$X6`fp4DMU{&K{X;r83DtZzIHb><3SZ`=APJV969 zarJ!Kplw)m>{0lX$31Ga8^Y>n z)0Xs+BkcIH`e=I=PPaAaMc{XMO=Z6$RxyKfzK&_AEZsQ_2Mpik&?Z#e(tqSgGx2&- zPA_P7Lai7l(lePO?D*hzc;a{Fd9?TGu$=s$AasPo*r_`{RT(GW+xnIV$p%dXWNdbW zfg?Vso9=$ZNwU2|MHj17UT`b-e0JyY0v5Xr8>}#$9R?Ogc;GTiWyz+xn;xv)6Gj0$ z9I{5l5+_{N#NMN8pP3%Q2=c-$nhw%sc;Aup8sR4=FQ7iM12VCz7HsxdBfMzjU>GP4 z=s6vXn{RzRu>AoLQitX4F4ZJ)hsL23eZc6m zd^2XfbUFKZTz6Y}i(rcFMcanC1dH%4Gn>UGX4tf?Jn!6Ko>&lBv7NSU*}Jh(fp-XI zeAiwqSivR*ln!=!Vmso`zQArhAHtUFZ!m%tGFW?pJl5=Dfx3chP&|QPiGxD$!bXRe zLa$qJ3VM17M&u=eQn)sFO&{531s&}$n0gA4hum&kxqu87*J0(bbbH#I$Wps)@D3p; zCNWTDgXYaGmX}MIrH={LCn5DjX0p4QX07wu2fLt3w}rh`kM0f$M%!Vy-pVZG3fvmE z+m_Gl&yUzT^qO~9wG!ik4e0)S78^h6?Q82BLdCM_wg;Yg*a&8d&~V@?eRtmu-w)lu zw|a9Hef1|Tmy}#|pyNGOe!qilf8FiY57l^qyLn<{+$_QS?}wxL>a-a||^OZ^DQrg0La+AIRJ z9IDOI5K<1#n{?q$Kc$JhPByRxWk?etT@7c=W;#hJqRsoLi12P6VP1GWlyfcvS{rGP zir+1u)_~(u4heH87_~3lF8FcV8ZgHphk@X65H!AMg2z;eED>a$R-$4j_`B$fCqol* z1@LVI#5NHnns{r}gmfC%@{$}RWDRK0j{)eQ+yIqH19-T-24M5x;L-4V2tAQb_K6m! ztHC;(E+o!v=xBl4$$+~pT5^SSqrffq^|xGIKLWfv#(V`dn*90~z`uV@;(~dT9aKR@H%?8%R+V=EiKzl`4+#vF7Ypgeh zUU^{2u(93kC@I3i*m{GJW9b6kte3x;+pZ4K1~vb>R0ELBg0)X8*(K9S#mh|$pXYy5kd*C)eGhvq_B;;C_lY-KvkmPrju!p3&uw>aea9{DZ2554 zJ%=A!bM&tDYf1gg>kc27yZZ5~)n9$!&x5}`c28cJRg;ivR9T73iW*WD;w6VPl0r(& zTs#Z$EXK1etVvRwfeIk2F-=O$oRzpxN;FnzlDaS+MqrsM%E(GJEr{6x8B!865$47R zGl>C*-N0)No((|PtYNSLq*BcWd`63hRmK5q2&u?{k>Hjnj@?R2QGbl^RSjROm=E&% zdfQs?SpiWyi9YtL+y7lUIO~x46Yas_e}2Sxs%67Vsl;uIb~VH{etpKN+ykp~R~%`5 z$BotZzU!{b9{c4ZuKSYp{ZA~~cH_0{ZhK(y8EJX*(#U_uToI``qc;>z+CD!#kdO{lhPO=d$5%UAkcIWAi@!fondYRK4#f(bv5Fn{%3f zwBln5giVZHHFh0$ls^#m#VgCs+*|sF3@wj{nPv@WF4A2+?Hb1oG}qG7VpF5xxT0nG zc#+qvyoMdMW*b)&4eUBoeeoEgHbtXb?>Dk)5P0Z|s~qR!jge{=(v6Joi$}4YwMBF; z3}j*Kjnhk%Vu||Ndps!+*Fyl0h51_~h?OE9TCA7!qK}|2k6E(f)Vjqiu8v=5pnmM55Ev<*EFTy}ZFe(Uhj`)<^jcW;3^yF~x36aCW^Arlx0I3){jW!v?Xqz!{X}j5I=nrh}`T zICQzDi?9sXLt-!1r7d*ANDluYh7x$vx3=9xOWA z0Cum;H}A!Qv<%`MjR>huF@cD$sWR8B=D^n(2HAc>`8~vhk8D*<*vLs{4ctd)B zIfHp+qutn#<9=f%IGRnKX^YsT%7`^4#t{4GxXH4HfFHX{!Z${5%9fg!hss-zbL8*k zT0D#>E~2(pUe8XngD|#MbTH~XjrkD5wuo4@cN)lOx);V{GM@Gp8=96e3T!HQ*hR2$ zKUdrVmS$`FWm!JI1~*^;(ZRFEgbvk%r2+ zhllVrWHR$QKl+BAz%g;T5IxnmFs}BF=B@l_&SAdNtFS2;yBf>AvQT_?i^t;?nk>at z#arWojrQ$zi2t?86aMSWq)|I*Nrc*e3uphZoA4v5%{`%?_%X zh0#a|*_s83nb=>jyAA+0m%zBW6##KM6i(=hved2 zQM0Tzg3V6N*mGPs_5z9$;}uZ~*Nj&~3$lt%jwcf1vsl9MxuVhWx!Crwf)+qcgbh(O zZ-HvzRM6A$>hmKpK-8+KihGJk%!CL*5}l|Szfjd=6+K?)={detqE$iIx#S8gE9;~X zKfs!w9p$)7CJ1bAE1Fq+;EJsF?tbxg5?Nj#6cvY<;fPeTM$w?Vnhj#3GQL5T{Eww^ zd@5g+YE7+Mjmo&2B9VVVOML6Zl}L$Zd*K^lc|3W2FOF7(6;{H3dK83Dz_eu|_^*BW zwAR|(yr!|Wxuse2ne^Bef4|fkwISCnT-4MwGBT1H6j#DhmOY63z!yriRM%TuS_fJ( zjs5Fat!`YsCapKFPaAsUK+D=y>ju)zdRiaA=Uj;@jC><5e-Zkl3MXIjL!o2*lU#IQ-w@F z(RH|K82s+$v=-zhzi%z0^Gc4iTL>!~;tYy6KBI-oSygM9^(Bc{^~20L*RPQrPeBPSdwldaH0IZ^g3?l&kS( z*|)+{B%v)Y3cwM7EXE_a{yKeIDeyjy2jfm#P`?}LK~a;nP(ZYRr5;3|5uFv9nT*ru zG#p2((Bm3JG&$9RN1N0)j`MI_;TX7c^hEycw&1-b|k(I!MS_+QFzJ%~(j>}C+9 zJT~0Fy}mqNgacO#ARSu?_tv}S``7x}j2kwRFHZ&$4VI^*rO9K0W-;e@EIj!G`l%x_ z-FU3Wq9EZWCP%ys$kq=zIlB6Cb({Th+~jXgN44X*Y~I;iU$pZVIr#jN)1AhgnYJy* z8gQ}Q&0VBBxzun=y@rpt<^axg{wJ)>^)0F9`YjWTx_DoY55FP^u({q_D8vd;uMPV* zx9fQw#?|e5tuXnfcD>QRAw8h4U1u0;_5M|B4N!PTGRtnW(?j^SnHE>Q>yNKri$kY{G}^;QRj;tYO0@5E>4ayc73%O|0*HX7N{R^w9f0!JBLxXgMN*qZF!`!#ElY z8XA_iVe!Q~wW+DRkxhJbIJdW{PC<_|I7H=}RQ1}B&Nq|>H`n*>Y-?fZx#pHlu3dCo zzTWXSjzKG`;#gedYe8E!`Jodd(-TPQ{Ed88fzL#3EV1b#pY6JFM96B8-Nk9J4WnBARa zW>&J|m`EWnN}TX$NeC$gLR#E>kOuMq@{yR*v`tbT`4XCv5CcgmrD;m|8Yraspuclx zM!S*)p)H~+Q@`1W8N#qlK% z#_223N0;6&bw9eaf7o=iqHPV?dS1)ug@Wa31BPao3YuBaI`{Nxc`IwAYHMQ``mB4q zh`OZ^9r5F)BTBi(aToc& zX#qf)=qu!|{Amy=Wjl5TNFm!%B$(+MJQcsKP)N!)aux_#RvO2{yf)#f_-!THR*@CS z+gPvov1~F`(eTAY?nOjVH2kz0VQ?2JRLmDkR`sP1n3=YQ+S zJn{Ui;U||W2e<#_f)}5wU)S^AkA3q8|9H=5qYs@r@}tK-_Qal>{^EPzTK2VHJ$UC2 zZ>qiPS06m|WXCm!XD|Bj-fwT)__II%WpCdd@|=_CdRSg^-pLTZ=bVIThvlp4U`i)3 zz+pLAkK{`9BGe)ihE@FJ6LFL^)_HGhHb~^zCmAQ7fF48%zk?D^%O`665`J5AygHm- z`5~{YsakgCa>I=DP$6p`H~&dFFPtKse_!mf5eYZ>ge2NQbh7Y=eC< z?|oONdkg@vu05h zhFH45S4*3G0#(D-1*pV2TG$e%2k=H4iPu z6-NU_OtF^Y<(18|8Ya_?wI0q|22|6ch-lMOeG;A_<{_-*4I~ir}S+$+cXxj*9?d$@M|`+-jd8 z=54q!Dl17?oU$r{1Pn|$yQoGv-@YCk)Z`^xagy=8YM8@3`x|f3ZX}65D02gQIZaFc zo))pa6p|aj2jkcnOJ2%SYy_B_gvW`&ZbS4N=(vjY=k=4d*%EDm`e)R46eiQ2jK;baH%TppTl-wmc>#G{JU31odZ5pJppEwEn+3NWL^ zkgiIE=db1}9ieiSF0N9Qs1j8^6%;(}jh{>x(AqwNJ$v)|3`PZ#V_w_OfwV$}6@B-U zD))RlxW}G=E0B{rkgQfB)=s>WX@H1z8KAWbz-5XWzap!?UYT1TSyi7<5|Pi=s!N zJrA8w>%(dyY(e7+4^e$I5$!@sQ zN~5AAccX=;SGL1LFoXSg`p~1(c;HyXkMaE62i#XH@Y@}D3MJVKN;&y%z?H!YK*aMG z#>`ud#8vS4;n~T4P&8`x^^oNW42U=WV(^`PD2gfLOecs}o_`egyKI}}GsId!BP{&dmi29L;p{1MfNP-eWmjPfi}yc( zXjz|Yn}s2VDRR*7uVHk{_Vv+GYy#L=mhIS=hL4~k@?rStW!rMr02AW}@udSx?ubU& z!hW-SHDN5cJFpm@^J0Gh6rq~HAHbVQm*PS50>^pG4T0ynoaZ+`7(@T9&>zz&FUqGt^EJR2y&=B<%(2krA%$)U zeH5@1&V&`ZLBKBx_}2nHBj6hX&Z}aY76Eq&I4Iz)RUfQU=w1QOR58z=Rkg?ty~>l8 zmMc|?LS29{$|%pF^>G33Q*H+4I|}#WS%szg52RyM6=AptP@!!R#*ajfM9^!IzDuO< z7wK0;dXLJS?^K!dLjpdoz97fw$AAjGq%wy{lrgF3yl9L%1iT@7JPPeaStnBLzmTp2 zj8RK$UMxmC1l%X!AfQ4Yh_!&j9}CO_0zMmKsa}dPhiEm!xPWcdnQ)Bs>YddJ-7PSG z3mBuPs-MGH)YSYM_+>RMa-51a@2QE?HGn+6-YB!pO0c%`DG4j}EO-_UAW57MYGGv( zHdgJ(DU{$d11j|(HwQVk&{>!qdDNSOR0x#aFuf|+-W<@+kbJ+wbp)7K*`MC>_i_&W=xa>w+89IiMjU_pEwP>N5W{cd7>eoZp zVz&4Bx$lLpL+(9(?nj|NL2kg${XBFF&XH<`)HO8A@6oN1D^xZQiOz#-kZ7@h7YW!Z z;6?#=3D_&({tD>f-y06Wdd9FSZA6b4UL)Z30^Tg(?E;<_@XG=|AmGCSeh2Vw`o2g% zCE#;__tMLNTj_N`jGuI$^d4z8ol%J|Nv5{RuGlM1Ki+z8QU)rHZbgho$GDuY&Wx zL^slRr0UpztKS#!DIw2u0=_5}V`}tu=_9dUsxM2YWA)LOrN?3mqY3%-*!t*FS*vab z+*o~Cbc1YF_agn_>I2aQ^7Yk+qLH;67tu-%3P0+st*jw}4s0n;1rXv2}!m7Jr6Dsx6RkW0@C0)9hz9GkADY}|| z4!DZ;0G^;91Fjb7jkFKx41EExn(6@;QUl;JS`BywJr3w#dy=9K(gAmgT89AJ!T&#{ zwBWBJJt|KCz8tz8@TTy?fU~O}p$=(`9-$lMyP}WKE%F#vwQK2-s-FwIBwb5um8F26 zR@wpoQ_%shh)e)}C-SUx0`z_AfO@0)GnJytqHdJEx`erNEc9o9{}s9u@XgR^_>u%X zh)i|x6%y40@<}yY>ant=oUw(xO-qV5Eh*!;L7Zr}he~;);5wD1qNJ;kEm~&56`5Wy@+Z>$ zhMhMHx{Hk(c5seWpkQ+~g-Hr^iiYi)hC{&)kG$;}?HM>`WL&?=pyduLpSKFw9p)_; zn`8lZD&}|Z5!Kb4Eiv!O2D|Ho0c}f>Ey(rzS=MC!56h*p}A24j{$7azgxqU{)Dr6nnGg>fgRK~v5NoT3O zSj6^I^nIJ|7@ek#epvPx?S!U+9QPQ_4w^$HTaa!yA!gsOp0!3htl}7T8Uv*v>N7?R z+jPfzZDY_pPVX+629#~&ij-oW)BDwJ@opJ)2X$GF-jLq z*VJ?7`weJ0;95pP-2oDt@k;&D?ouwtLyA%2VdyLBu&t7K()nVJwp%zqbR9Qc+7JF& z-8IfJ-@ppGt)U?{qBJLpG@|E9#*rgI_p)?AcQeCTYsfbY zE?_-meOsP9%{Y_Ophqw0%-i-)Jje&cJFt&u)d;g7|8$cs3|f=KK8}VA_ee0W0)~tW z%AJZd<0~vvSam=*9Y0)QsAD*d`jbE;yctlOwD!?yUDs_KSq61i&r!}(tI$@^IZV$S zrUU!}1?I_??;q;gU7UFaN-iwMH`cc-=r`S*aV~wQ;bd&H$PJuZIAy}kRGf!3jh$Nn z+s>9U?zsg#Q*Co-c!r{W8&ff_+gHp`%R8`^3xWfw@14>G*MMK-`DwzZz)$4&n~n*i zFIU-7GPC8}Ztv(D*n-oo7lul(uQG*a%sg?X<1ho@{L#!bDbQ*WBV$*J0fey1y+%$y zE>cdJoj{FQ<=n+uvC_8y1VJc z+C6C$u)|?%R4j4AWlioq(tFL!Fh-CUZqam*uE6__oYx3HIduW`k)4oxJzPf{;2bcemmCqZ#ZWrXc&riXL;HXnNlFYSS91TuvwLX&*EW zo#=x`zvY`T>m}{%<8ke=3Kqc>J4&_^!91}bvSPbz+p>GG zQGs^|W_)@N7OY^C0!jxvJ+U3}XJ25qo)2Nm^*0#73K^_DK^|*%sYvM{8x&6>SmK}% zys**XrO@jZoPwSih7oy*pcJkRUeibRTR}%V4W^z(2VJvCr|*mzx8(qXRXpl_>_t>lYV0hY*1 z4NNm@V)weuwnoMFyxhvPf<70c6U-8JR}}|_@}>%3zx}W=pKYjKoc9n@&Cvh?vKgEN zsXm7QEr)7zG>nvk^Cn%q(@$w4uaga|L0Qs7NLRyIvxQDlifHp*Dj~dEK$sU^59OT8 zg4RabqvCffs5RiYltaQC3P$aVw+nvUwg${`$YCIO90ZLoo#ZiHB1;6BXOyVa1^zDj z;>pmAToHVm0I^L(i6-6}H6xt?wz4D-30VUg^kV=zC^tZ5(jXpguMyY+ICwPt9!5{3 zll`K_nQE}kW(tXO8#-FxcCz4ZirjQk_8*kV8Fz8t8 zzjrJ7w`(N>xeG!|L(n0XT(szg{xyNkiGKbs`n01R99;0pK(m2$v9>*Z8PHw{7B_@E z+ZyYQp;sPQGHk4;10^L`7+Y^Jax7iIoAvUJx$Wu%ZBX-fOEn1DELi)DlD&H-$ykc9jDdWOlmUfjA#B%dJsPCwMMO%QoU7~s$~GhY z9-RBZxA(0%Hy;od%eKaSXHORRDVCaNTM^Ro9L*vIM_qf~Mz7p+8>7yBXG;tG)Bvz0 z@Nr>{W6Y&}2g=zSvmR22^?Cj`1xeX%*!Qrqd&+M{=0vX0cRzyI+51#6zYM*YR-elzqR$L=dAbLtXOohmDFSy4mEV!Y&# zMp8(rTYzUVo~3w}hc!uxGf)9!HKs|4*>e&XONpi`O;Q)f!w4*MMHyMCt`#vmAVW%G zHp1NaU?wr(up4--#j^qEy0r{8fK;m6fX`_0u*x`q4IvddFcRDnrSaS7Lew88d{x8O zD&~Xy-oEx$d{#izPNFaU;*P(Q4$L`d{zQ9xd>d`{ZY8AGqP}L(jbUlLV@ ze0P4!KdtTl1I@LxjM&s@ zIId_pK3)_wtDs>=t=YzvB?G(8RDV2%s7=Y})(4E78U!Bt<0{Abcw?lR#Y_|9`{Pk; zXKfLk3j}NrBI94 zHWcG{fkPH!6sIa&l7tov&B4Kn4~80_u7vjZJgDjAc%r74T?DOfv_yf~ECx zmAtp5cQhT0u$MPDD4No=9(|1OV772uSySw`1ZUR^VQPBLwXiK5Hf#`!3!Fho-pC*{ zXgavci9?rbx(LgFJtX#GT^bWYmBYHL;oc`gMn)lPWVxZDZMg{Ycnx7-`3fjDmE02@ z=fRSr4Py7od<$MINXsJL(S(rdG!uyUnyS!##Fwwq03>((^D}F{=fE(`%qbcfbI>%h zjnfop;8^5nqfEob3b{FkTc+1c^v4fn<5I#D^Njk`>1>5`wHP_WZt{yNWt6Sr$+C=P z;|=Kpl?=|W811G39QT{D!O?8$Ok2VxRY9yVF^1Sb$4!+r1pN5j6238dQ?}f^JY3m& zoFjj4)#719aS^q(3VLp`9fYy9l7ms_Y0QTZwnfCMz0*Ke)4ebrlkv2-*wD1BQDjpo zz%GJ~`?=y?Ig_&F%wUDG>tI0T0D99PqE%CMw2*alu&0|XtxTvf;nW7hjMBXpLvU#o z`f)N9Emq?j114uv264ZsOjK(9v;Tmkg3e)`O!D@1dfTzh3KjN#c{Q7tY8(!@(%Nr-i1xU_%&GWmBr$_TRa}G z(qt*FD&C4;t%Z>B(rQHVw*e&8EmuPkNe(M@<6nrN!lJtI(@`vp!9D?)`Mglpjel9i zZFW%AEsjP)$kr`N%*Mt+#y&#hZ+#lojX&g(KE&+4U4>g$i2pp|kBH_AL8Hu`9>?maH4zP70-nEb<$0Lz&9Bp9t0+QG3#$T>$jbI}) z0m;R?s&09G1e=|@@mIKT{B;y1CaR(ouA8WZ7GxEjoJb@l=CFhl3q+$63$X2B1ucS_ z2pghW-U8Lbsi3D5wHHKUfT&eh6ZaI6m< z+BVplZ5p^_^_r$NYcqP&B^g6+8f;y+di`LgMbGGi_?#!5c{n&ue?|wDOL!v+s#l9>4RlQ`dHX<;OdJ^T<<| zeJPIe%%z9D;P+u)eCKe_z&?Dd(?+1X!v`$;io^Jegu`AR{g+VSVQb*nVSEjqN}GJpAwscrG1h;Qs=8&R&P-wxdKx z;lKXbD%f~qdkIv{wjP1 zvPzK21(g>AIG5As1WgNKiQd08i0QO|!A{(SlW<<=$O%UZIeNvHJu6Sk8cyooX*q~6 zOpR`^99waNNSf>cM{XRPn^~T6jFIUo`Ib-N{O3e`mot!iKkD1y;KeMs-fEo5+wiOh z8zi{+IGw4e3s3%l ze)@>aG#-~=QIK#GlOtXRWE+5-99?~@x-I@VZt^#$W7_e2uHbBLDA|Qe9ejSt>rPYN z%-EJ=4Z7Iw<}cNqd}^e%LBmH}a}Z}b{}a~chSpR|!vD^9(s-CzuC$PDW1)*Hq;ePH!E0~Fqo%(C0<%rL%fX2ezRhP-3u z&}wraf6(lfP56=>TmaaDMQp?bLc__Dx8gpt$pxMdE&g(iE_xp*oYbb~N*|VT-l1CCP!%WL65sUMvdNEz7};Li909)} zbl{y0&uZ|Qtc_JOQ{v-VH+KCwEyr+kgYKjYBe)iCH)tiZJ;TS{%?*S2W@E7UZ&A6j xq%0J$WucoV`wVn2DqC=GzB9dh$H9Ys;t%=%Tl#>j!RkSDhMoE!e*f<@@IN-zArb%p diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Host.x86.exe b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Host.x86.exe deleted file mode 100644 index 1963670721e5a9ad9d4c88da7d45da2dc5b2964d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15872 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 C_8fcw diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Icarus.XmlSerializers.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Icarus.XmlSerializers.dll deleted file mode 100644 index c6a342e69ea831729d21fd01d387ebe8254e3f3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36864 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 Yv_R1UMGF)yP_#hN0!0h_aaiEr0q{1FA^-pY diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Icarus.exe.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Icarus.exe.REMOVED.git-id deleted file mode 100644 index f136eb214d..0000000000 --- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Icarus.exe.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -6f431b8505b8348131ed37de7a9aa343dab2a78e \ No newline at end of file diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.MSBuildTasks.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.MSBuildTasks.dll deleted file mode 100644 index 063f01c9c5331a01674263f14b4d6cf71827b432..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 b(CTL{Gw-v{e2@98yuX~M{r`gh<{tRJw``;Z diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Navigator.exe.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Navigator.exe.REMOVED.git-id deleted file mode 100644 index 1cec578705..0000000000 --- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Navigator.exe.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -df4dffecb0b55c9e0049c912026f8c24cc5b7366 \ No newline at end of file diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.PowerShellCommands.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.PowerShellCommands.dll deleted file mode 100644 index 9572ad47312b33ae314eaaa69cae79f027c041ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23040 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 P|C{sjf42XZOW@xDvknws diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Reports.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Reports.dll deleted file mode 100644 index ebc028bc89e45bdaf2033aee028506761ec8a3ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17408 zcmeHud3YSvmG7ygOT9>Kb<37*@Y1$1$hOq()?!J3jb%#)fh8}J7r>6G?k>q~x4PO@ z-L_?8kP^P*F_to7Rw*CL=3~8^hGJu8#)#L|1oVfx`u@R;}6GXM3O@L|M^s-OFV`bF^mml~=Rs8XyakvP) z*ad(x(O2kQ{luVE+_J4Sh(fn3kkRm-kGJYs3xmWhBWHq1+Vl>Zg}kH-+f*=S!(*!_#@dyjn4dzZ+y>=wvK-^ zd-QjA|HHFinYjMBV@gZm&INK)15t4K0{JK`pe|o5E5}3z8lRa^s2iz76j98XV6%`d zn6r=zYR&Urs6km%BQR}t(`+PnGa+;`c=kzh#nmk5`fw?D4$W;LWhGEcZh{<5X$e{9 zL7qJaRga)ug%tqjnF*C1Lkc}2J|4}&5*9#o)>?BecpFs3JOil>U)O?~3EOMdbzo~c z6V#AWW5V--T8$Y*fzPe`+6Cr(P!)3lm)Q#eYrV3?Yt0z&I{7H8;8z3YBA_ROfo3gW zLe=0;H8XUotdlT;ra25J!%_9a#w2>@;G*A6+=nr$KSt1m^NZ=quX*`Ky6Kw~W;*P_ zW5D+KQnfwcy6W;)`6#F6VsJocL&7I)14ScT;p>$OM`3-nIb=P;B=kCXq|rv$2nJn|0j{Zv z{y20K?iOrx^9kg$vzstRL9=x#x7&kqZL6Xy+F+YMjuhc8V#5sZIr$j#@&G)}`Z*pf z8V2cUCW!%X?fD)E>e7~3XDdx@Xt=2zU}=kXwsnRAlXM7Ocqpumj8_@@2H?uVT?<#5 ztGHe#Koz^tTC-sQ?HF4@6SmMk)G!{J-NnoiymjTkEE7pmGA1t1s-yAwF_d099r-^@6oIX8j0u~cK8JB({la>C2NSf2X6|GLU(=;X%*y~2>rM!X zsBR;w&us*1U5?^&cYpNJM<;6|f#w=eL|k6ZYl}>~>6Bv+VDfAiQ=*WVH#?TMH_h&)kh_%RyHXGF{C=@l=+qDC9X4Ud3ELyNvmOttn$+ zE=*NWUvntzo7sdVZAD{i$SRgg;BS~(>~AwT@f|~lR5`33gJwv5$D&9b|GNu%z*Wn- zo^EZd^;tJSwz&tavZARb;!t@F^sg0bpwD`u!eX9P#Xuf|Fdxg%X16WzmdTmUGRX_< z6(~9xtZBv~E5-rKpFG8_CE?Q(6u8dw>G^c{X2++Wk&j|3t1XLVtW4ZplRZT~$~_j| zVq$U9jxmqJiNWA`@BsP`w~g33*fF_$&Ne_Sjl8O9irR!#Obb=f#qi5V*~CpLRI7E? z#5%bN3#!(j!r9Uwn;C!xU&PmF8puU_0dqv8v&~VYjzGVBl*cF_R#5ouUaq4>)Ef5X zED-pn2H$kI1d3nmLzavEk4#^ry019fO^&nhc}6g&d3@^{8`Kqjfr!decON7*CX-dB z(S%j1yX8=79ldJ&P5V(NqGGzELjlb8hn8QgSZ`sJ#YFI#Ig~Fy6aI|gL{XV`~1K^=Y` z!u#A0-}x@Qj&8)88ydHZ##nr-VVfl@ZP?}9RzuGiR]PMcOPn`(}2H!M4A=2y4I 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 diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.UI.dll.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.UI.dll.REMOVED.git-id deleted file mode 100644 index 74487f0ee1..0000000000 --- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.UI.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -4f186ae17e811b7bd6986fa77ffc0eb45ae77a13 \ No newline at end of file diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Utility.exe b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio.Utility.exe deleted file mode 100644 index 64941c894d9bbb6db2d5433d9566f8765a20d349..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73216 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 jue?=T=NQUe{`cp=N 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 diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio40.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/Gallio40.dll deleted file mode 100644 index cf3aea273074c7d811004ae4f6f7e1d994dba858..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36352 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 B``7>g diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/NHamcrest.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/NHamcrest.dll deleted file mode 100644 index f6f4d02f81eb1dc8ce6b431449a7d33acfe39a6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23040 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 diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/Gallio.NUnitAdapterLatest.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/Gallio.NUnitAdapterLatest.dll deleted file mode 100644 index 81e75673f9f68a8971b4f6fea189555a3e3b977a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24576 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 Kf6bg_f&T)O;@n37 diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.core.dll.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.core.dll.REMOVED.git-id deleted file mode 100644 index a5c18c9373..0000000000 --- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.core.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -5e9fcc037e7bad10a1afcaa0ce5a179d135b4413 \ No newline at end of file diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.core.interfaces.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.core.interfaces.dll deleted file mode 100644 index 3152dd2f082dea8551e6e3dbb25e9df04b17ad41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57344 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 diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.framework.dll.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.framework.dll.REMOVED.git-id deleted file mode 100644 index 0705485350..0000000000 --- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.framework.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -875e0984208d52e5c96a409b52996547198af17a \ No newline at end of file diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.mocks.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/NUnit/Latest/nunit.mocks.dll deleted file mode 100644 index 97b88e7ac3e1c1c70f6536e3fb5307eb28772e0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 UbhzIb?uh@D$MHA!|4$kCZx%_*0RR91 diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v10.0/Gallio.VisualStudio.Shell100.dll.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v10.0/Gallio.VisualStudio.Shell100.dll.REMOVED.git-id deleted file mode 100644 index f43a0280eb..0000000000 --- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v10.0/Gallio.VisualStudio.Shell100.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -233ab1af3ce0f3e446ff1052a91faf4902ea7200 \ No newline at end of file diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v10.0/Gallio.VisualStudio.Tip100.Proxy.dll.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v10.0/Gallio.VisualStudio.Tip100.Proxy.dll.REMOVED.git-id deleted file mode 100644 index 37edf88b33..0000000000 --- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v10.0/Gallio.VisualStudio.Tip100.Proxy.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -a95bc11a9e33e89c280fe5bd69814db68ad2cbbd \ No newline at end of file diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v10.0/Gallio.VisualStudio.Tip100.dll b/external/Lucene.Net/lib/Gallio.3.2.750/tools/VisualStudio/v10.0/Gallio.VisualStudio.Tip100.dll deleted file mode 100644 index 5bea6b4b57d98a309b6a0a638b04d4a62569b523..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45056 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
ojMg$nCdeUmR_$`b)O4;Eq?zW!0&?8V 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 LFH!q{p}>Cw5`U2) diff --git a/external/Lucene.Net/lib/Gallio.3.2.750/tools/WeifenLuo.WinFormsUI.Docking.dll.REMOVED.git-id b/external/Lucene.Net/lib/Gallio.3.2.750/tools/WeifenLuo.WinFormsUI.Docking.dll.REMOVED.git-id deleted file mode 100644 index ed331c3f02..0000000000 --- a/external/Lucene.Net/lib/Gallio.3.2.750/tools/WeifenLuo.WinFormsUI.Docking.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -dd42cc64c5a6cffaee63d6fa9b699ec4847c61cb \ No newline at end of file diff --git a/external/Lucene.Net/lib/ICSharpCode/SharpZipLib/0.85/ICSharpCode.SharpZipLib.dll.REMOVED.git-id b/external/Lucene.Net/lib/ICSharpCode/SharpZipLib/0.85/ICSharpCode.SharpZipLib.dll.REMOVED.git-id deleted file mode 100644 index 1fe5123324..0000000000 --- a/external/Lucene.Net/lib/ICSharpCode/SharpZipLib/0.85/ICSharpCode.SharpZipLib.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -e829ebf4baa5601ed650a56b821e266ef0c0d9cc \ No newline at end of file diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/framework/nunit.framework.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/framework/nunit.framework.dll.REMOVED.git-id deleted file mode 100644 index 16fbaaf046..0000000000 --- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/framework/nunit.framework.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -105213c67c9ef3d0aa0997306d0c941b293029e2 \ No newline at end of file diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/framework/nunit.mocks.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/framework/nunit.mocks.dll deleted file mode 100644 index 2250c0c1e7e95f4594caf0ba6971fdef2efb38b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10752 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 J-2bZk`agvuwI=`o diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/framework/pnunit.framework.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/framework/pnunit.framework.dll deleted file mode 100644 index 5b9a2c06b2c704e6b8aa40b14eaab201a623c904..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6656 zcmeHLZ)_aZ5ug2Y7v~Zmj_oEf*kp~}$|T`xlcc3>Aa?ASIK+;dbDWl-#_PNFWt+QO zv%8nrNiT9FKqW#Id`U%xT2QO1U;0lde<=JoE{Co3e=FNM%d*gRMOa>8|=pTMabP*%BL4h9+mLN`V`fZvntbU>U zqPG8q?x|yLV9onp!M96R&Mud|(3*8Dzf!i`vNdubYn8mblWA^F^+u*A_Ym#Z3~GOC z)p)$xYn1L@qa}%2!NI`oOh15yK8Vi1!k{a^frRqiuL<(^*i zG*9nK6Qwp&Tfa_Q8+f`=MI5GXRueoVs@P>yPn%Ut#h9ofb>`-_euEYo<{7u>TZ+2j zA!(`VYSuNpb&RJJjwGh4YZTtbI3i&kBrH{JR`}-_hhxlN&-ir;-@rHwGarddRbg29 zFw@|JzFw`oUKDg6nVOGnchqe7L(CSp)+>)TC})sg)nXs6k9|PAI&F*BYOf*~Q*W;# z4pU`PH!4V%t^{VqU|gh2h|g4c?!b4zPxCTR zEYuW5epBp6A5xN3TBmteB9yn!!>%Pa6ZY4jI4u2R^bHT&iwSN0CiQ*-`-bUZMfTUE zyRXpaxcx`rbDcj%AEHlrDC2sE4G)C^hRk^Nsxu@GjZhJM4%Riq!NE%AI98>Duz1EMnjy#QgSA)rUToYR>>2pQd(pu9oaDx9-NX~E}ysds19~#_wClA z6U_I)iGj>OX8X2VZxu@kDq`$JCH0)ay@K&RnCi)fzFRH?tgl+&=*A=Rqy3x5l5g);fjI0NB zv{dAAlDR6L?PGj|Dz0@D+jY2wY>Zey_k`finWn z87GY-T{hTe#q5)H*#q{M|61rvw38BoKLPGIDC{ddWNId&Ah%j*UNlX3%Cbd~twvld zdq8BXaT_!BeW6+@P18$1h5q!?GXkFnOwuNeVV}Sq0(WUuaQ10u0gq_s0rSFl1rG#P zh4Y~HD5T#L{Jg*?w8!B6>)HjtH?@njj^5Fprb!Df(gPb`ri0+Cb}8{!ny#bXpd-;v z5M4^VLALA<>t0IygIuf=&wCH^cwf0)N+h*;wet~mLiSe4TD56Jowu0c)$b=p()Hqal0I!_;Hm#Bl@73wUC=OC!|n`9onhxj^Z zB%+d7y@SFU^*miqKZz*ztdrLEsCg;Z8VrA3gF5{NxIs?|XOqS?|6C2%Py@{QeT}1VgI*L)J--i{2JHYe zX%}Dub;4`?T{M+V2j^LFbSen0EHKm?Y+l{ZZh9GU-z;zd@Ne`L!G{En3H-XiZwj;p zx&rSNxG3-};OnRluDk~YuA{e&H&K@#7%u@POvc*;cALx@Fy8|Fs^Fsn51IeOJ~G}R z{0_1F2z|$VAJt`2Ghh>a0dOtdP8rl+O3P52z#9Z^6ZkcO!vgOTm=$*PoDbDpHy&T%haDLQx1e7RC~ z!^|9Bi=C66e>{^f7O52EJiqA9Qg$&2oe~|G{kD?}X#zR{O->x*8KdzG8k=&0aM&vc zUeOuK<(wd(F{PAs{1Yx1#2RDeIWHCr6`XPySz_5iC#V!-Ms1cdBDxWeJs`#%f4A-X zuH)05ay~{gxzO|Juez)u>j3&I$om-4n7=!DPI=oyaU?yC)$u7xKLqXt_W{ZnL zFn7v3SSd?5lQt3%h%*u*_^d#C7Mxrqbn=od8Vj^!WiRKT5Rlr1VQ|HrD84-lIY(J8Nxn(O%5Dh4M<#wBrXbzEUuZ!a&wm3XrJ0Q?mWzD@DWJ{G#s`j)f~llRgSR z_Ys0&uQYF$7gx?e2It&D#kV>5mEyYHTq&G#!}>f#xg2rrLfH#KHy5B7W-En)JzKAK z<(Z^_W-D{#mh;X6<)kKjbzo+rLojYHa3#8S(LL2@%jHv7aKfXtx@1D?nUUrCR8(A} zOw~mu7Nk~L5Z5c?bv4Umecd|nRW1cvodES7N28u!vO`=$yC%q^kSxk!ECcf~7V+m$ z9$W`sSUJFXNL8^BZ3r}io*OR)QY}S)aP3K?y!HrM8yYHm%R|{;$ly>yB=oZ`S z?8F0Kp|ELD+O!CU@vve)bXL)I@VPgmH<_!nRx3$HI^Ef6tkTk;yV41bA7Dv9M)vnJ zrCOPBDIZL6^z=rm>NXzi$s(E*&1qc|HAGzy&CGv?d>R#m3ax%}h! zJW%5QS~?~={kWIZ-*((YT>hQ#NTXrgZzcSxTY*2EE%e?x*}Sa3h-humgIIL7icY-V z2rLA+RoRc_TR7Go#21rRi*g#eKD5G>@EA(D{bW;O6F>aZD!>olnQX%R`@kF(7=EbKLtOEr=D)z&yTu+4BM& zgN6F|mi5$5_Fxh=J$PS1Zt+%K zv!r|+k-RqQT$$Z#<#w;w7(z7stSq5AipYkA%52=FYuVx4ergQ`&A$;XabbVf{_isI EA7r4gEC2ui diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/fit.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/fit.dll deleted file mode 100644 index 40bbef0e292de5f8c0d5f291bdcb6d48dd00cac4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49152 zcmeHw3wT_`k#3#GoHKJqGxCh=k!4Hq$i`-jBwMz@7%)b*{J`KBmhc0-!DDG`50-Sq znGt>nfgHe)U|!)7a6)1T;gKgv*bP}8fk3>Fr`aVe*?>bfB%949yO2%x!rdg?zpBrf z8OestcfWhTd%t@%X8LqhS65e8S65f}=@F|hx`hlPGVy))U82YEo=$ceoFNfT|IjSuflb$r9yh7dGfZ*_}6#+al|uV#8(gg%HKnI5wJnHZ6CFa*3CN6s&)K}lf>ktIl@d6sTuKw~*p^E6~}9AHIl z!vz=XSh7mD!tMlQQGyc_>lmHF?Z}?}Y)Y)5BblUZbu8iN zep{CCJZAe`%RI4#A4iE3@jM$mxqrssbo6hW)->Da1-a{y4dj-Vq9wVHQBc8X`F^>b z36z*Y(b4VHw3@UK?cfw9VWd(i_Y&kC-Ez0$=>iMQ=!4LMIm8L_tm`38pfT>MUDZV4 zQzYt_4(*W zX;Q-|8wkqy$@Xv#p3q04FbSNTD=~~_ELCGRHAWKVp{QkhEgD*bkdBKMoMXm}V=#i+ zP29=IP5HU6SfW=A_-Dk<%TnEF2@#J#oPsX~*w@wEZA4Rb> zPBU75eTvXvE>`kzac0HUML#@WFo21a)6}RNmJ3?zSTw2|GKiRTfel-=n;fI%Rj#Mz zph-^rM0Tu~&fy>mSX*L~vqSK#QAXC;oeGsDs{SWa&`e@1+ za&^BhCd25uh9SyjYqEx>qC8**n`UPGU|oc0t}h2<1JW|Q4i*A-X?Z#1Okv@<0aEPK z&7)XkF=TFuEV`M&*jSZiFfl@R65bH18;a8xn3GHnH3!*NFwF8XyeCmQqVt$|EH6J; zUXv~gXh-+Z@P3BMzP$e}Xhp>F^@K@1T2FymFsHd0evImuZkTQwL&7o#edY-#{R-*S zuY2bst?UxyG|2O5bgv7=-VP*gBlwIX-77F=cO_;&W3H>je2g*oRAN4N9Og@-F;1XU zlXjtf$eGY^HZ4@dG1Ii%M}dmCUqjl=oSC92rW+9vL~)7Ln7RS&KxeYDYNtXFjPm#l zRjak>LQ3tTD6|5Hg#6{?DEx=_2r4MR%Pn~eOh_?9NliKjS=b37Ns zpThmhM=!whIkJB0h0~w}SyuH7rh|j8%)LM1iIpLtOEjYoV%;<|O;+fSDFF=``h3Q&nL!Rly|eHx))x6->fts)9*)lDC!x3QyLjbo-3M z_4*Vi$oq|ye8BnWAr{C)MX!yXi!-wz%B4;P(lRdU*{sk}g|?L#7iDIHHc6RQJk*-X z>sR0lm5zs4#j0BBQmGJ(NU)Yeorvv*9Hz_60V_4}Qa7R|q7@hZ9kX3ma4h1^13Y8I zf`(WE^N3f?=6NSxztB(l==vbHBWtx~@IQSeFE(1}li%I094!N)= zCt6Xt%%Q6GMi{DcPggP{JM$$}4a=0hFJZWH%2ZFgJDyh_Zionb=*bQ2~tCed#x6i&Na~(}Z1aT?(a=qKbKZG&iy4VFwNF<12qi)(uY)Zz z5vnziO!RJ6P@VKfS^;{JcaK76&IH54SxEMUYd2Me;o#?9Yqtda;Hp#Jy+Ud+KP%v8 zjo@bm{HzLoHo`;1fUHxEV=MXS8CV4r#x@JpDV&PQTucING(@i%7!0db)&`h?+KZ%y z5LTJG3ts`k48|SN4x?Hu-NkISj*a8E4L;EFwI*nK{`Sgx#3U)fU21UM<|OB54|D4Z?!W=5SEy7 zc@v?IEyvFrmZvG`uj<<*zi&~IK`k_Ttx|5osHbGO0J7t8MX*Xg?ASLv%1Qec9K3gu8f`R{YJ3$`e34rZSV|}ImrAh#d`*=M!Wpc)rP^4R@JTnC~nMX5 zo)>K>M^M84wFXrSohTSWCG1jQI7m5vV!BYX<=Ye1f|G(+ z%x@Tv$=KWM2Mdf`!ni3v@vLDWk*S-tFS7)r=}m?j-FD;@c=bpy6&g|c)sf&#Yeeb8 zBS8-4^$Z-mC6Ti-<(x%>u{+sD=VG_a}*stALC^~DnEMYI&DXl+8_}3 zZUuCoUAPc!Io>@0tidz{5_aC_1a2(BtRZV~Y6<=uDM$3B=tX|aB35+5`+F41Y<9+1 z)IlB*lUcz;F%{&<5*1J61Ab>m0)F1h$ohOnR`HIFDnZ0o+14*kR6LSK=`cj|V3pF3 z-;QcGIDf3@g0z~#Hu(~$u>vp6rBV~$17G(Z_(`MjUvtpkRINJqtl;nCk84-qCyu7C zwImG4tcOudRQf9;>M9gk#wt}y@HM(!8AtbGHgVWiMYol`tw3;sz&BA?$EIZ+;`E}85onT^1D)m(3r z)I&g4Sx@LIYRP%9SI6|5g&x*3xuUyzT}3E=GRQcT_nK5@qBmP*Y;PViq7*(%p6s0i zFtZE_w2s1|oQNUE^0g{-z%k6kAUClt$Q{S?f`I2y2VPHP^!|cz2oar_6_MyEI&EUh z($4>EtZO?6U$5D6RHMkGf3oH9@+@r|s@0e{^3Hr2f<|rCvc$~nr|}85S%bBhh~)v{ ziZUQ23f011ZftFt4yUz>j%~^)`95qDmZL44GV&uNDp&JX#f?}-N1WjsHD;%I2m<&rqSV7uHAU*(-{1eAP^jabjcS>Xfz}cOSL@x16CpcJgv_1@dD)4O zA0CNxKaMt2f6_94!Ip8y`xV~%euZCpzd{}k>0D_fDmwW$LCtB;k^PGE#!r@36qalL z=`-i8ocE*mD7?J(uO5H;7k=T$E|oc~y7}X|p_flcRMLKV9D)FbW1O$TX(0GQ3;|hT zVihNJ>FlX0hw#PM0YoXS_woyBw;N77xwIBd@= z`CZGnZ;ZgPy;%~Uvg6ae*HAiT`V=QMF@pfr(!D=2;`}L*R7wzPtvnC*iTy6Wmqq-_ zZ#E6tEo2bHT2ToEt0qdw#*QkbPA6pniOWhN;lJ%|1mtfV+U-e-Ue0=QLWbjFiT3!s z2a!CMAgj(BP#FmTW8sKe)FF=5G|#S6EbN4x@@rzxs%qL3{hBItL`~VE6+Q^7t}*fY zP&Q?Fa9nJL2eEpYvI{jlJo;7dc%cvZWwI&tK0Kl<9#oX=srRvwg+Wb@pAFdvm$_mw zU^_}<3~(lp@E%50Cr~PaG^fS#ekizT6WJ2C!d+7vXpO>Flm|NrwU1D5kKZe{Rx!Ew z7x3Uun=b3!MgEptWWlybKDxiMM%spWO$?6CK%>c7g77(a&$xjt?&`SVaS%_5}Rj|A0AL7k`9vb4XT#uVW99y%EhX@0# z+A^*@8A#Ya0xOXtB=0@A5buO4@TSyZKLEU;PMVZLI2J%dv{;q7SsAg^?1Wbf$wFcW z>b<$;kFQ1Tn*87Z=Ql78|KQazLwL7IxIl-F=o0}7 zVw2fZaYVwzCg8Xk*;HT!Dou}X39v96}Ax;khLSsZrI{&@pdBlXIt_ z9UewA6i2+|H^T!7V`4myr$G-x|Lr_qoLZc0FSwb9Pc5rBwQ=^3vEB)@f?_L$-a$B-}-Yu<*vZhqcJ5JO}R6-9AlC`3LPiZq|E@!&EGYf3uk zu2+&X;O}C@naKBj0zGJTv&-jC_2jr2-mpQ|v!< z;&UDT82VtEnd5zpgS<4vd4Dd&)zgr8qNxfL?4|MJw~$rKMFE{~ zaBO=i9HQKnkTT*hP} zTwm~JqX;?Wywtm(33TvYa^_%{3~5Urwi~=Fk-GybXyZEq66_)9lZXv5pM-kWu&ln) zL3vNR1@*?x1;@?>v6=ecel8fi2gOz>;hhfaR_DXVYNFmB0NL`kK=yRU9B*m@GtR?g z2<{{h#bQ)be*)Wo3bO%QrGz@x#-$Hs>tV;+3MQ6pZlc~W@^-~3=1mN{Td{ViZRDL5 zwEsG)%t@B{Y(>7Z-oA>m{}@%qF|jyWS#(u96KjA=BdNggX^pqw1i14?;>2ff7>Vlv z=v{FF+~JWpY2%TRxFcNm`y+9$Gwv5Bz@^5IkeT)8aZ=HbHQiCaX->@dAIF-qb%;ivnIj=+( z*NtjjE-5Ku(2S(teIj}=QP=a1?-yn>_JDl%`Xk`Aj%BaBH=?^kAQ+m7)fiXQRir)) z41x;Ax%-h%xmO`IWew;=NckU69-KH&Tq7amOa0QfC<1!W2yI@B@_XzbcV z(gja(i4k%?1TsfAL+;hcMDbR24`j9_b*}}=-3u6-m&>phL;JRxa=_e z$_OiEL=q7wBchaH<7WYsz?)|11ghsZ)00+Hvk8!Ip!Z&LyndJ}_;4Sw$`K9<-lLD9 zra5H`7((oaORQgkoH5;w_#GNILydk|>6k-CHG)UpV+2drxO|x#sqRc=<1F){3*TR6 zp7ZcQGG3+&i5#A%PIJtZ*H(ptkd95>y^^sLkSUpJNJ-d~QolK{eAqyr;viP{hWRi7 zM=J>#YMj-`L@=A!aCxZl%Y@p4*yE|6&j2aL`j6*=22yJ zxm4z~aCJ*n$6*Po+p4;nmg=pL`kh6brnV~m=!iO|y8pGVK8gO|=m__qdET{PoO!CM znYsWL34bL8{)9EugzYoLwJFQSbrE+MmDT<}YO10tJQYPMmwJRf*07%cW5Xo&2D#nxj=sCsoYQsBWvn5oV{dik&~pUOMJavRI@U^EZXgy()Km_@-6sB3$Gc z_2Kh&?0e~Av^yRjxw_$4eA{xmEqkBwxTSZ<{RrAqh0|-)xn#nO%I!#8z?u6)HRt`8 zf0M!UIq=-VW7cxIM3dfQSSm{Fy>9{v)F?Z|4Avs`TMetmT7Wf%O43B_Dh$xJu;RlZ zoX=-^jV;Sl!mg?uJzPZ$izjM2C1DzB7%`wS=_{_w$Kb`nz85=2BL;TvZECpT)(Afk zQtQ~2)bR1+@22yZ!!gT8mq|H<;WYg$+o_(J3*GS;Gi^AaH8Sj|We*A4#!3KP4Pbie zEeIwuSlr<2iwxuL9$U91=`0fiGb{vTHEfg*zZTUi>E^iF(=nGKNlGcB{9nR;^r% zlpjUdxMeK&BSjHaVYQ)9FJ1h%_Jv!)PdPCmibcf8)Qc(JVtY*J53n*gMQugGDpaYp z%CAGbU$Zb+C!Lg!g@K#i+Z9+I4e750D*-JJjKXqEBUnCHIZ@15aYs?kzHvjm8MVQe z>7&roBRKtZvMNqxb7uU z(=P**Dnodggf;^G?G*Vw#@&z?IV?BpFVA?x{R9f|Dp-~A-WVOFOHpPFzys^eaihpj z_fx_kY^d82&asJ6uO3Yrvhs@GvDI$@^+8sywYe&+53*i!rj)@csQM=iSQX3#4UZe&zSA%?D7hhgEtT5y-5|y zmU6#E#=LYo(9>BZe4rJ@r~&E}ObUH|uQ>UJIn z9qQ+z1^8^oQ7asVADaS4A_w<=s9(Lvs%f?5otX=Mav9KRzQB-}0*9jNmrU4ya66Vn zJmRd!yAObYBp7pM=6(iA)Dl_5?={ z-XNOfm>Ki<^Qea#^qDlC3aU!#8SMLTU?Y#s*eM`1u=FH$W36a4^AR4{a(k-OR=@w5 zTWjOC3V+&eZo9ZAmXsZ^(-e|3oN_H+4-N>6kVD?CD$~W>e~)qTBNHAy9v2>4{^;IK z=-?2Grt_wp7g{cFL>atbqVRR@qNNYb1qB|6woS_zI*lK4P!BrxZSdhj4;zE?b>x;E zUU?6lT0uC9?qDU|yis&)H<-YfuUyhRUOn|eZr{BTHJzr6u6_}LOX=K-DpTu4)Ry1g zI56juUMk)R2v0?CxHo~BdZ)-b!NwiFQ6JVhr`poNvF#wCu@WRlLJ(ihyOmyR5b9FU1 zh?bb1{T;$BY=xL!BC7dnTjn6pg$NRXO+y4W!LScm_Mvj*6_?11!{MK+u#5e(4SxIy z?(}m$`1^?PbTYr6&f-rNUO=?IV`<02GuB-D!{PH*d~xrY$6mblhau>a+RxmAzr%QG zuB%wsvOQnilJD)`((M-ea>Xs~K(T+IxMkZwzNeeZX7zV(qa_{ZEz$hth5h~Ib7r;9 zns<6DYyzJU^&nk1k!TwBmk;6jJbcx(j-r?E+fiVO{tVuD)dF{62i5Tb`q|Zod8^6~r+G;TVi1CDB(Nh*v zUSo6mMVm|iQ_}Ha&d-+gTuHN%ULonnBz;8E7bN|qq@jq^iquCe+7sbct`f|Xl7CUs zUr73&5pKQK;dG(Hlv^deN7APxeOFQ^%B3@-%=uJFJxOm8{Hv1wR#LNyDbtdkQN^4u zu3B4#pEgMT!;&77^g*N!y;1d2l|%1HYR6szu~v6}PKBpt41$#0bOcBDLNJocROzj64h8FOHBoYw)d zErhTOYLK$CQ5ME1rv*A+penqx=6ai@UL5B^3~d!Ci968@A+iA%oU{nETgqyw4Sywc z99@gDFv`{ngy<15)kK^#a=lLrWf~`I3_UDdW+J{}=&L9TL)yz}KcMFTjR$mvaQQVT zBX~!6P$)^`9yQa=QdW)bGIXmz9{{uvrvSGJWs6X@(47J;0u)B{|7n4i0~$xI^jU#6 z3*{XA4UH7#Gza>mJf?>z9M(HT`Oo{!G6P z(li)%0n=>U0}dP6-X}_zEScI8ViB>f^jv{M~&-{zG!?M>DSDkBYoQZ zHPY{x|AzGMO|JV>^S4NUWBwlLnCqz~HTVRK5_$Lw0Law(7 z^(IiWKnLg&P^Rd1zs%Lo$82~+pgU==-hs&HB_Fy9&}8aF6h*Mu1Ayx3y8<224(gjQ zXa9hefwlWleJg%lJ$@!bw@y5y=Kx(H(1D5f>Uls933P=1R^JEcQLOMp-_m}pUkL~i zIzEarO$!7%LadiG9afO`IJh*@^FH*?0<|`Cy(8Mc3AD+F4hnROK+kDO;|A1wx&+;d zmE-d*<@QdZrv*AfJVqzcFMWu|XgZyXZ68`79+esNiVtz$Gt`Vgom*dEHcRWjSxqo&;nfv?SUee#6)YUvrW` z&uPCimILbdAy>j+$n67&bISAr~UG5xLtMYSbVwS?>4N((|sZ7J~&-xyjFs?%1`CV`k| zqjo+$)XrtMQ%C3&Z7pqG%Fq#QduXoKK?i+kS7<(fG(z`0^LgY1KL8j z`_N;6a8AUbAA0lxpbydlf$pT&09`@{1v;X=8M3sk^t=zf11L+s^dZAqr){IH=Q5Wg zTCKH@x@f^l;VIsxi~0pRKxr$FvR8bFt*(ps*N%bJb_0AQj=tCC@RJB&hWd3zgTA(}0wKiy7w9tq4T3fVk+9VKr%yaNI{+bfBP1`|_ zmY}?rr#A#r*0YP=R%POsc5!3)90}cH?a_J^Ku1jW8a?#+b&U9y_GxPfWzS#0&~w_u z)&b3>w@c8CT0f0jugbn?-L73mzw@C-0Tt*W9Gh~zzqUT14UpNXpl@6EYkTM=A3CUi zLEA^e7pk(O);WlWo+v?osa;8@Zct@Ew4Tt0>3SdfiS?|upNbo~>>AP8hv=|C+}jtl z57DCn9id-YKhUnG`b|uEgx<2|YS+-Y0v(_~Li5*98y}DRbL<-GEJ07AtY1M?Wp72? zcfCMIh;?=?9rhvC*|qdUsa_t?(Gv6$DE}bPopiGOBkch3**07GZ2KqLb+pBY+UyRx zo}TxiPt%XI57X-csXly!{-7Xjx&4NA13iIL6YdeOe+TImAL9NUq&F3$t+RiLvhWt6 z)VA3FjIy*3?XZ6XXn_x1W^=uD3L=g*4$@(Pp3`oz-_mZRDn6XWXx?GJt=&Y;K6IC@ z>9^22A3AEKa0YO{Kx);#jh+xl+2Cz-RG=f$!fkZY2SqYjnQy1hD+s^5kLY*Mb3SyJ z9S8JFffScJDSQdnyOX|cPt)(D1tq9izl*k(pwsk2biF_a=zI1e{S)-6Ku5F}?InQz z;6p#OSLpXp{Z{6=pMGes(mzR0_|T8-4*f8V%W~Nf?HBgN`hCy*=5Y|i%y<~5!39`ZWv77XVVCcs})!sv8^%GOXq?{`Wf@eyQbNV^Gbjz@Q5-%m7{ytoZwuz#iu6Iz z%r~pJZd;7`b6*U<7b}6$XszH^KxX`%1f(VvQ40~X)a6o*c1l`<9^q{`QUftRQ}W+q z40_7_)v*f*Fgo?3mO=Zat}4AvFrPwdVoy<~Q9A!~QZ+^@eNp;b9@9YEm7{-rUX7H}?NxD>_IjimDZEPY7Z4z= z!dK=W1*J}pNiAiKJhD2yBpi-O=^K(~K7oym&IgwK??U;mq_$Xit)%azhj=y1snWS( zjk5*ABdhx(%VQnnm4u2?*)5l9^q|Q0Eon>TpQ^||Ci&5lz&4~UmQAMzB#-;q$bVDv z-}3W$x>vWb&fTl;)b~n$zoZ|Q^j1mlmh@gpAC~mXl73y%XOQ;lGpRi?!KkD2Ba@5- zeK68yY^I*bBK<|WKC;Ysk#3EwK>l!KAH6_dh@6koMN}J2xR+;JksDaE7k%EmK=N6ws_LiaN=j8(T3&0e`UU9cRQ-#2nYO6vO>?i-UG*R4eo+3=Y^0$o zZtIS!ROnV<8bWt#UjgQB?TM;9tt3wG1wM}*JEvdP;<0l=oUW2|J<{6PX31X?dImH* zkha8n1XGao$`JSWh7kASGlKamq_wf{gnlGEFVnKIf05R?cXO)#2+BECY3l`gHuhU+ z`wrYd|EYF|bH2gpT;Pp3dQIWDrM(3XoYn&K7BQc<==AtvOVc;R*BhFijbq%ko$+&l zVO_mIh4>ol%i6y9cJR4Zzsj1aeVRUEy@>QD+KVzqY!7?1Iyx9XWJPqgJ&bbvQ&xgL z8=tGOE!|`+rYFF^j-HSIfHCp^j?!PncSs-8Hu8w6B7VvdN2BIcpJcwMC94PRI{jY# zAX4T(lTNMvjW!duw4BbMMb!^bmR3u8arLLHEOl2;LR)V2cWu_;-y(ekrD2>|KZ;#v z2YnG?DnX_KVwlGaEX6`Fa}h|;rwF|FWt8#mUxnG}CA?<{D=iIb*jmh!d}? zjH`{?jUrCfK1W|MzHWTO_^I))#@hz&x|m_J-kfEgYOXLl&B^*!vtOH{_n4l!+Z;4+ zHSaSYG{0m%X@1|V)n7J$Y+AT1H9gcES{AxBbZ_YMp(jIs6FM6DIlUD6Md;1Y??Z+a z#)X!8YlgMZ`aNA}Wv#E%F3Ynnx30Brwr;cTxA4DQvL3gdwqCY=ZvBV#uI1R{?HTq0 z`yM*SZny8E4tt}$#qP3q*uA!A@3x2S>+RptZT8*vC+!F9Bz?j5=&$U@?Qh!8+dsGe z-G19P!#X^z4gW~=px%r0Pq1Vi7z61USgpTgTpPMRWDc`OMmRwq{S>DKoevT?_Xc7B z{%HPtHeGlr+?>#JQp$AK*C<>-H?r-FTfQODjwG1p6LxA9vKTAtri9Pn~XM(YRqI`h3bTHIC4yL~}PyW2C+ zTLBI96$_}=lLL8Q&I>qn<_h43|DjcGx9jZ^sB>?BZgF?EznJqnv)+zekr*BDU6=I= zIg(VU*LnHgd@+A{E+AO%?hdj_=2;M>2SP)*0xkBu?A}#*G}`X=_Gi89ww_!WSFS6( zmkbp0eYrxx?=<7e6x7j`&-E4a+w)yZ-2t$nj)C6Zthbj~8{H$dQPC&L77DrEZ9RLJ z=Dh-)n=R}tvJh18Yj?S#D)hWS-EJqB6)4{aZS;G&;%Im|`sVJ&dm_I8>ROfW+m-9~ zb+9pC+_{)p`S2QOntI%9P)?|Di7!ze4FP2Gf_md`%A415K>mt_&z!?Ai&fEbHs; z1iM0hAJ}K%gV4ryf++I8tJ_)Z?df!R@X)zl_ww8tw{HnXXBX-eXaJ5#W=D|efUhZD zFo5RDh0EZNiad=m-FmYkUx?IK$ZgyS(@Q)TZHKr&X9roj1Jc|P+fiTs?oFc6r5a+@m)?Y^^w7;GUqM9Rmpk9bcoXd4hRbB^Ue{m^gyt`SZ|tQm_VTjq!q_UtmI>PjJP%6|`D;`#2DFM7Xb(TP zZO8mC=2rG$b?d`?l{&E1C0WEkm`7c(h}G;V*lDa>nlJRb1zEOL7K7K{-;)OwdS9NV zEBh{oZ|H7^2Pz{GjlgfYm|+l8P5Z^&-RrY`J91PiTjLg&BRuIYSCd7EK*?bs8z;N+ zbF+QjaLZuC5O>7KDEsSl)f3h&i?YA6t{Ldv2H%PWnwN)OtW{aGU7+>3{vLK#?K`s` zb)Y|3=G_bX`_y+&n*$4sIb$;3cEVr122+euUH_s zRtSvQzZ2_{iVh{Vjxc`_40Swg6_wgj>+#L1M| z6~Kr)Eme20<$x7>x60j(-mO*+P_U!B`mvP7tta5BH z+^toxDIu4b%%3u{BrNOeayf8fs!|?ypUd|8u?jc1+8_0mYs(^@=fbxu%JphZW`=&2 zADu3=KSRTQ|g zuL}zt_Ane|2nN0PF@;>#>)NRn33vN;cIZ91%Ml;7bJy~zr9tnHl5qN6t$n8<-TJeGf>coDEL|WOcl`OOD1K31Mkd!MgRl-R{ z)pDu2-*GG=m@2+o6T84pgV(j?2&`m9l6V>>F7}7Ts8CuEc{{>3B3_jrVrL+>R zdkt}jk?WR<@Ur4ac%z4A)g154ckNQS^*JnfeKOTqAen6ft;qQ+eMgYN>?y#~u%fcd z7I*J&E)W_c;$r|_pyWTWHOFR?y&fA^z;szpj;Eu5xId3SiJ!%pLBhk`**;2R+mpqO z-W*Y5fI;X9Tt6Huc6XpC!f<+-LZeVKV5(UT%pTwea3?tj%*mu}J{iw0a)IlST7AeD zf!ih&+ohxrC9{A_<3tlK6(zkW?*TV<<7vTU!Ltj0%beRj6F9A*y~MQ-Eiun7$cM0p zOS@P;7rBu#saBSPGxuPxa7c@^+!Jm!2PmkUlit8H2=z!#=MY6tfz;iQ6K{1VaF2FK zPcgy4<80hkAp_q8bLj`)E=a`EQ)D6f;o-&`#j=7OfZX6QJB|AbtP$*OAOmZy%xfAg zz&(%PJC$o!FT|~ofFAJl6Ui_QZEi1pAx}-v`a(#>rxLVmq#W33(mv3gjk_yz zP9Rs;D7hAb9=G{wnJ4E)NomZ0=4PPBy=d_)=x8A{G6Ov=G8AGfpz1X4?DRpS@OXla z;oOO(+$N(ln`Jie$_IBNDas>;4J*DB-3B|$gBP@1Q_gQey*&7l?IL$6o<0m3#&5x0 z;T%c^_%|`N0d75TI9d>!f|XZK!-!y8hJXBIILKGR0gj9_A>SlZ9RrXp3;LYQKjjs8PH;bz zl>N|P5mv(TC@jx=Y$T4uUo13bU(tfr^N`{%NE^PDs~=y)lfF|N06QlpR#S?FXQlFV zQL1Ex@plKXYKrre9?3P0Azy`m${}n<-2vgjL&Oe8P1rnY?S)7mXRGW530rC2AG_nl z2>jJH5s3X*KQzYCCf8B|6{QQk;I|t%hLnHn1r*G9wgM&CN(c~iA}u=2;#Mo`n``3S z0zY+N*_57noJWrfx56HZYqK5hLQYv!7P&t3sqFQX-QiFNt!Dk+s(S2M%N7c&zG@kU zNX=m$X&#)>Eq9}}F3c^~fa)n*J9Ftm@7OMTMJ^u5e$ZmK`e#u4Gj}G>*h(o!4sT#j zXOb2v`RJjIB1>Q#Ec1zLrAy;W8GT=WW+aM#(Q;E*M5bb5*)znN>tD&+-w#>>I%eJ<%Lb{P& z0i!)-q(2@FQIu^^{iD^~9^N=1_2BzED`eoc%EdY|7ydhtlUE1!e@f0p$n$(r{)0Vw zxr}0!oN4lV^QP)iT=Iqk;oGPQRfdr4$yYjOUPnw<(onERN#(zJg)dzaqI^1Lb%ovfbhV=HH`iav968N8gtUJG9N zM-ld!?6)b#aV7gPfeb{-#$0@veh${nx%eWVsHD1>Z%;;5`zo*0zYbg|)X(Vzo+lhr ztH_Y&GO$K7q8DCkgD7F8>Pt-Z?Nr>OosamVMS7~B)3NSzbWBDTQuDlL&qdKa@C5tt z5B{LGlH>AnAFJo1->u-46Mi(Il5PoV$}V6;?GDi;`)lq!>zk#Z$UJbGgFHop9CQ>5 z@^eJ$GISc=UsCNzcrGH``OK@t0T-!Dd2p`a2Iz#fF%G3ZEmM6uqmkP1w}?-|z3>m> zRyRjTmmp4Qf-f4RA>4%I@!5h^Y$~G7lQEXFV1wt-R?-qdWEwmPzkfi)3eA==dl)l0 zfXlIMfFb=cw5JE|b?^wIk$pWQW>~Vh4klT)bC_jo7&u*v$aLe#TYhQx-x;1y~{PWmJxBP36$y zSwZ=1AJ<@v!O>mbQO9NetME&fhOzZ}Ox?QleVq_S8RVRlnf zQPP31^&%fxX&sM?OXl0VRU5&@2wgR#*B*ZiB;94k>su*@4=8{J}QE zrzX6~Un;XP*npOgJ9t)TG3LNW%{WO%NWisJ$jWl_(Qgsd(Hx)@ih+*PW<$Ld;6yp{@T7R8|qGd{lkXU5I3x34Bv^Nw5BCnt+bX5 zt4C|H6}V(LZl)<2vC=w<@y8G1DhI3=TR;!CM4AEBnHf|zti%L->wu7Y z4jOF5H_Qz*guyY{5D%MHLvo95>5SYWtv2FsEdbJz6U{eF46l`(&R|1akoX@%QaqeC zw1)bIdPcci=f77yd2TQRg2)2)zh;qRbS;eXD7-i9M-6Oty;H^{F^U*ZjM3%6@g z%O*37CwPJg0x1Mwa0;^)L?NvrZ!1dE1~d{@5>Cf&%^eWHSXh0mEJr<{-G+LI9$~#e zKtoGLk`XZBrzkwqP!B~WW59x^mWwyF)R2WQM)AixQ*w2tT%s(l_A6d|m0AAm* zcn*FuL3|ms?tN;a7V$56*e!%(6(7lauMduUH1papsS~3w}!VIz6lKB0Bmdq=|iN~Q69mW&q4-Zs4nMl|X z0LeV~4B*?6>;<q_$r`|1k4vNV;~+0;G=w?fTFk8hqQDI#6E-duLz4*} z9PWe}2iX>IWy_r-5+~;<){W2*n#EWqr(+sun6z4$8%a#SP(htfhI#(Qb>vtZU_1P+ z2K*IEJTM&4n0Pc`pJbH}zYyo57s7WQJ@kRE{qDTorUt`>GGQcK-U>$qARLDOKq`P9 zhaqUOm`p(pC0b(mr;Y=H#PHAYADaxS$1y?l2Ic?a)wZ3?B)8O~Uvs$o&{PIw@%sAu zh;7B=_3YTV9@s{pm1gNasPN}XHBE;>#1b~^2%bAR{2LxWj36Zc4a)KVbAeJ=P23;0 z95^(f!eRXH`q=Bq$F|fHydabwHo_Qp?h33K(G2GVVWf1i;%%KMO9Ob*Aa~OsJ8Yhk>@#h5DH6?gv&BU11*Rx7u zaD?nCdGe?k5Mld?Ot2j|C%9R-z+?iC7*n8!jIFO%;5a)hz)UXlr=PG!w?k4joZJ#& zV}fT)_Oi`_A1e?(Tt|nXQ3e>dMOtaKpu#r(|41j>s%m2Q3cnmCHE&VO_KX#7_$8+HR`!p?(sylZkve- zPGSNW!HOBVCAkG=&Sqk3yaedU#$*~ZE}qywA-TT}6Qd!qzaeIa7=}3k#)JZZKEg2S z!@wEn3vxRCh=_yR?Jerh`oOl?z-gyOU8M_Z>A9_~b6b#{)|}p$^}5sTxY~|8B0ICa zv(o8~TrQ2vA$;Ryrp54l)}`xj|klS=RAxA}d=z3Duz8}n5N6yT_S zjz-O;J1bHbH+6D5aFH$7o#xvr>CCJ(%R1AStE+c-RcK+YU>QI0Sr$}%p5lDk2Sz;} zsh}$t;ZlXSw5Mk^ZcnJY|GAv}4uC1%olfbtGU-@uOao&Y7}LO*2L4P9@ZYo|{H-4v z9$7*C;tOv`j>9t@|H+L_PZL!kb_+gL@<(JgV7q<^ZNS0VdO1SlgSJa>l(t5W$C&m> z^WXlYHW3KNh}k2*#jZT4IG)qFLeq+OR_foW*z7|G;MIcm+tC^y7^tHN92r0sZjmwk zYSoh)5G)fPI;l5n{N6&{(oi?sg5$$9PS|HbE6d~)3S7`z0&On`ZXVH;7SZ@gDF{){pe4{G0_Qd zX&giHILw9QDtDUPBT{!Q_)b#09P}Ike?F z4{DV7h>5TK@Bs}=!#A}8&85Lly^Yz89Nz?ExCpt`4F|=8?_LEp5F|lD9=CE|l~wYc z1*T*hVap-#VEwZm*GkLyS(>lMz%EPgTIJBI2v@17jK()4-Sp#xyXdfiVq?X<$qPV;UIK!2g>X_#fwxT?+sJ diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/log4net.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/log4net.dll.REMOVED.git-id deleted file mode 100644 index d795cca736..0000000000 --- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/log4net.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -20a2e1c47dea6ee52dc38cfd4eee0cfde7894faa \ No newline at end of file diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/nunit-console-runner.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/nunit-console-runner.dll deleted file mode 100644 index 5daee5a876f12c5bd4f0cfe233a22c3de31b6b7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 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 Yqz5KFFzJCw4@`Ps(gTwo_^2NEch(dXA^-pY diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/nunit.core.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/nunit.core.dll.REMOVED.git-id deleted file mode 100644 index be98988bfc..0000000000 --- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/nunit.core.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -5eb61245eb8e23d7c68480d77573ac59e8c82045 \ No newline at end of file diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/nunit.core.interfaces.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/lib/nunit.core.interfaces.dll deleted file mode 100644 index eb5c2a16856350f49b7b2dbf960d7c08f5d45c74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57344 zcmeHwd3apKv2UF-`)ILeBula_StDa$j20{}V1rF0OR_ESF4-7tz_K*92P7RaGx8<` zG7z=^Vc$tu6Cfl&fUpOLfCCpufRI4AKp-rE1acuEf#ec+zpCzY=8PpL-1~j+kM})| zJvCj`)z#J2)z#aX(UPMtAP*6F@&58lqWkg5uLgnt8Vn)3u=2q|x+nB()&0ieXRF#b zC)2UMl(i|<(G%k>s=qgu?2R=qYm4<*U5UDag76eAdU*@cV#7m)9|o4# zwY@=wRe6S==uS{#iu$J~bovd(8x(!4(wix)zr11w5$KORVQ{-Z27>?DPmL;Wx&(5M zg+cLmExfuX?(pJ$EY5j^3t*=X^Q=Py? zw>OYro?UpmUJWovT`JLSfl=wIY(USsn2-eD{9MW?Hfn)U3yfM|)B>Xx7`4Et1x76} zYJpJ;j9OsS0{_2Q;5pt`XMeA3z1#E1gW)^wo%8s6$Nv5MRqNIj9?7Y-34?xBcORp|*XQ!vybg4SOnu6e@qG=|fn7qt*5h^e}gHX_GdIw>1uj28jV+wGY z9&el_nZ7|j!Z@I4nn8I?N1Mz6E*P#R{{fJz=wJe!CFRngAm}W@rkhj^IXLFfa?0w; zmB7-vB9*AgQ=j9%FshBxY`Mufo~-!q&DUv5ft5WsD!G)c>UI<$JVeKS%yNZcmv@er=9YF5elSTSl|F zwNPXDE6C0%l-pj>$KBpi+e+?2U$u;~tZD?u0fa4iO&H>#85;sJ#N$%M7K83p*_1-~ z=o>0UPHJCHm2s+(Q?P4sVYv5=M-XxH#LJ(`*5n2Q&Tu~9H*d$H=!w?1(ZWB1(v!C`jo_BCQK&9Ul@oZd4XC_X|*vSKMs?rDWyOqIam~V z12utA=?qUvkvABMc%`~Dr8`g;>Wh?w zrCgp_dLB$+un9{lYp;#?EO=`;AF7wlnE4!50A?Ic8xEFSRT_^Wv7JeWhl8b86@*gn zqZ{Jz-!S?w4et%-RWCA2EO>7?4#y2wZh>!=TKgiYv!|Nzm29L5SSp5NU zfg&&Z44z#y%|qxGKDUpUVbeMSQY;LFaLIuU(hmjjp6WWd&sBK=(~_Q;5XiFmv&nih z5RQ0D*A#gp-VnOzX}?~8a2=aaM*-InU(9+UE^=R;D~8w~)md?Xyy_M`fTjWqE1ufI z)E{9Fe;i%{j(tWfnffnbfd_$w9g6Gx9qN?+jH5sOH5DF9KF67YE37V15}y4K7?onR zL60R021>)TZxXUtgr`K0YAPoizMjqEp{BDqIitsnXN@?0Kb<8eonGe3b7jn!qv{E@M^Yt^B)=Hh6c~qhhW8j#|LKe= z522%p{oIos1~r9dw!gyFGtJr}=^2m3y(QffuAb!LN&N+#qI0=tvg61kgb{hk;#e<@ zgJygcI;z@lN~Ay>^bjTlf|Eqtd`F#pAf%-}g>-8g%k|fq)rb47dZdfIB}KmK+K4ye zyDHBgko^2$s>%fKbmaGQ=qfNnfjDm6{1G4A6+<-QWq)-lMx9*u<@iKzM~cJ6dG7jG z?ooe!ux4H`^|hQT@&Ywe1FnHw9<+6-iR`IPxVri|j;#_AtQpYKnh6k}1yB%@k1Rku zRJyZ|`{-5Z7~y`J^DCshwSm+s=utg3wG|)U)M)J!NXjr|Vo zOJiLXmY|Rq@TY#oTv&^RCBB;h>ky>(^Q2zevvgTWZ2#Tv()mGuD&om09kff2XS%!Y z2_-RWi@S6|$e&u0TRNml!w-D)ZL}_$>jw?zgQmJ-6$)xss2OlO!bar?0dZ98P;U1U z$1AM4z>EAPMS<#R5q~6b6(;3?3ahD`Au%MDldvh~QR+kj@R>j)5b?ujp3L!}i?Vwn zs77flxxzy{jWFFLOwxqiSHye{R#)-gIt(lsbpAv=ICzc;aACa6I7W0>#WMK0j%617 zHgzjExBz;qLJ| zM$3rLM-^5RfIat_gdwGMTL)>im1g`He3oHLCka)FELdENag<@3pf-8wHC6g4lpI_N zlbHhyJ=QJ|?DUVFboyE(tp^z|9b6_BW_eyZ?%&9(nJ5u0Eb*_l&?6n~m5#19ysp~3 z*1xQcbsv{omq+QH)n_7N$SUxF4{H$BoQI*Zx2DCk`jM!ar#`I~*fX!XIACE}6wbiU z&9L87%J=DTR!o%P+P7bi1p46^27--0XkkGUe)WK^dE*UsCEAB#O==0g{|gt6UlqP; z{E{DjXS}^$DRJtz`%JB4unLD>Y(1N9I?oK?gh0&7aghC1);!`rCu4r}TI?mV4Af4- ze3-}O<*AJ-hf=JqV6E29Clrr`wUhX@!E0Q?5;>x``shQC_ym@@c9A7^eYKdmEtuqF zrlfgnh#(hHsg(~iX|+Ti>?to7qpgDE@6kTY-e0wS!kW`Qrr5&SM<$_W$cLRVqk6Fg zOoJml$cQ32_RFz7=gYYZ+lSXM*?C^|9oFZNxg2bE-zj?eFnW$$F5t*z8y7qEtG>W` z*F`fqUP=FWOkQsCDm+~6bYiqsZ@~{YqcY)b@6u@seNnTm$3S#2d5RaVUA-!Ij9%vPfNd zC|fDE;mll{#e~iRvvem0Tc@HCDz0;1ROQ&mE04`!g$`eZrC6_auG>3^aqq?X*=qhM z^bR5*dgF)ySk(G046N`VmLJ|Yx+9!t25JlZys{2k&@Eg&M#yRj0Hwl%*gSd7I0T0+ zhz$=OmBk@HY(Z3b@aR2=C=?z;CrX9~u_aSJz&4R_J-|w5+s<^gZ{k+u(y<4D z-*K~Sx+&*|il6DSN|sDJ{_yxV2e`p@8TUSlTQd@!8#EG~)gOt@Z5@fu*0bq3V}Ubd zEO2{yESLk_O<7*{IUajve+e9~_zRE95}$(~s63B#DI5e5&tqN2i4YQ(BVivpfsbR_ zL7LxVl_ImOZhwyj5&oJ=uyaC5DYP*bm9xH|h**+9-BLBT zRBwN@{_AJ_s{X%!`n!6&Z=n*UuYuU1W7(WC)|{~;V?vGJ2>95Ry8W^m(B>3-{_A}A zn&?VY#xlJ!FLC{P?47(G8thxTW{5uru@JE1LpFBkG3v@g)FK2nj9>U0b`t4tLA>is zq89o4vEKdYH_Xb#@tfF&@D&!~7l?zHY7G52Jkt(uVh2pk5#W+<+wtRyFOl(WX6F6&8v3Pf9g?UWbq*R%sSXrW28KG3#@2%P2n^%%wJuwi(f!DqR ztcYK9S|dsYOV{KF1K4l;7E>O4%j4XSnedHUpu3{0enmIHKe|UZ%U( zGaT1_qA&ZH&Ffy1v8y<1GI4P69>t3B;GvTsV=82LtSRh>Av69%eCAgt%>fo#J611@ zYCU|-kYBx`By2C0=9|{N;FXwMP+bzr#$+5!c=$BWza|_~ark$y7l$Mc^Wj-dAmUY_ zSe>9Le{7)18+aQ>^q;+#Ed?2VT*!0RQfa`d``)hd?2RWm8I3?s!H;M&ifhmnjMRwUza352aF zsSeJKKLn%cTrR75&=WeeVQl#54al!%d(@6i4WL-+6o53`IJ`slmtnu(+_y+=@L=g( zkZGpw1&55 z%Eyu-B|lg)-5U(lmtw;jC_TzTGs80FSP!H6>N=2v!^nOU13wTv%FcjhYSZg4sHPBX zX%bd$RKxz+&w-fdr`=$x$xcVJ&G-YL_{BGrsjHNg{bK7GxOinl`<1!tpci)OG6S-F z#AP*yNqOsfh*JC(x<0%{Mhf%gflquT{u8id#~Q-78iOOwWk1c~b91O!S0A<1>!TL9h=J=V zcjbfG%B5Dns#Px^em2tbp+uBCK=uDYG%v0Cf7aJlrwfknO&{Fw^|T$QmHpWYw(Z=u zW=oAkKix&onVUJo@fRig>wDwnj6HbI*c&frIJ{~OJ#%looZ;}QxtV(_w;f6b_hl|! z>3p_}p3^?gaAZ#qzvHg9Wq5esM$;U+$AVX46<_1Q?#Zi{@#6b9qoDfXd_lh)Vr7|m zoN&yVKAbn?w~tn}WSe)!h`c<99qtHbUe;mea9-$Og4bb%z9z?XKDWiXJ%tv@l}*^6 zx){ExPA&`lscUTn3lANyJ!}hknfvGj4W0*snI(f4@rQj%aXup+>rM>5!3&UvjXiun zr^xxyP zybccmah5zPqfQ3dCfIc7bpxw!-3C3ZM*viftmnu)kLK_wy;N*vIkvtg-<|38qUe?L zd{1s3o?_9Ja-F$(cp}7=H#S%2+ig|scraV+!(EisBZxBm!n%z!9RF8ig}ck`Y%hz=Eb4s?rA)VU3{;|mgBK9sNWMGi_Ey<$dNZ56RRW7RZp3_ z9v8hdmoAHI)Mb`>;$u*Su1F;E7~naFUxnV%8Dmo4#qjgWGH|R}eRQF>Y{sh811?(X zc^;qGD~5e?y?~v<0QX%D7F_%(S?cCttZ5E#FL4%s=9cmdvO8if=TbORWDY)4oSk^0S_tvgri!#C{l$tf~mag@mbwqT7Llpt`4kE__M%F zjq_7q@dQ!6y2^}m`C42#e~C|AQ{X9q&yWHGH@cd{XMJ=$gw26I>8(%$k$4V-nASER z)^-3>%w_FBazE1=z(-#7G{5wtg)L-wKU{92L?Bxt;3^SNB?7h2`mI55yPliq(e>iN zP^gnW8M&xTRd9H21t+2cU74=u6mV;bTa|#wQW;Lwcjr_sYiJ%17^@LeydeB~Xus4} z)DeCiBbnDa{0fCAl!w`C%pV?m%hP*oW4}0G4*%{FXQw8=ho(94&z2D z-T}_34PebEETw~&1DF1D$4M?|$0#?QtH`AvD*nf^a_M4|0d7k!eXj6xr8Ye$wu&}( zyi_u-*c&frNF1I5J7Oh){oQ2P22VQhX)oqUuH7$?FDTTpBg^J)DHA=ILpEum4Ci6} zB(IX886KLqp%ehqhHf^V$0;dyZqW8OPEv3=?x#xNKW0b$%bj5!=og zXpj3YaWnk+=oPkbyfQul`D!tWw&NRF2!}{YkWRB1uuDe~#QE}-yW>q(x)ni>Ge#T1Q?XtbY zqUVoXb>`TWGn_Ul{qElzFK0NsO74AoDxh<_VHb^Lvi0FJ49uMeBL0+ z)9z}0$!mDE4|x!xoU=nl%mId)*#>(naB@pS{ayEimQed8p9gQXzKy5iF?ZWZh*{o6vKvAfAW<;N| zaubStev5mPAMe8RmyOJK4nV|rGP{9#0?sTgKpCu*!nHqreOyEz!iFPw^fD4whp?gA zP3Fmn!@6?zh$4T)U$Y|O6+z0Mnj-2f30jopXn_ZXBKi=?uIaaXsmWgy#8a6;_6>ti zXK1R?c)T$VDAIQr`@X2sjF0qUf1i&Gv=nppHna&(k;IBIC0O48f-b~4X0dfH(goF% zI15WA>pY<7g>cZc&X*i-v79clf9`ole;cfz?&vvit2=tOCC8W%&Y&Jb7S^o~3y1Re zs8(FB=N@5>_?1|2q0uaZ#}~hb<(mV{>#^2DN6pLoE`HfrhahV|od>UDTOdYqvF9+Q zxgWUlI1gO$S>Yn^HaWc31#FP&@%luNOTvuu^aD@6uiICrza8NWQ0>FjIZ!_BTd&T6 zF8o{P<+qv7eqQ}<#|vM%zWsPv`oF7>ZDPOJrjE_U(Au&;R-MB62Wn>35w3hs%>@0l z6vk_~robHFQXYK_C;f#Cd5usu-)3L0x=i@9eU>9i)|*E`QZxEN-T%o-=LjW3_sJyP zCp@}wHHaaC0EaDsdXUxbm{&&V7_FYO=Md~<-)dx@1Q zYvfqTd0#bFGVi~Ll{s!SQmj-%()J-cR<=IV`AXCFqj$ZN{=}0TEB{4(94r5q_3cg+ z9KHVR%rDypF1vIDoBwoAn`5}hOWQn~j|-0TvDi?4?Ui{L^Gd{{z6XNqzsj0xgYqSi zJUoxTPe6UM<(nu{10Q8Metv)`tb(h2&xJ4iU()j#R%hblo|>pUXe3`V3Cov6oWnS_ z*Glkl3{@g^|Ll_+H+ih9XY;b(0laX%Aq>{ax(#&$w8lv0%psi{nepCgE z7TRaws#dgxW&^(@419jKwSk%OLQTezkKRxjGJ*WVn87DLT>BAt&&3-Cr3*m#Gd>IO zhG}JdmL;&Ef*{#d22Nm6|7TZMS^u}Y@A>zjZJ~1 zv2-agA5#01iOOz<#1NkBZ>Bs9BP@*JmHEIzz@7$Y0ZuTQ$pGhXfQ9hPNsD0b2sT|~ z9}6~HWB(BBFvhCJlHcI^nt|~*xo1LB1f$_-+6k;(@{XW&f^7pf9+6^@jM!K@Rr1>D z4B83oV!@83i^&7*TaeO@XX>vK&U+>AIJ#D_hXw1P?+W&WV8_z~g8dxWdg`VB5bPz% z>!Y7bi+%?zL@9bfu#W}Xs5*QKhfAc z!CuhVVS>G*v9AgC7mYOv=JhCDnglD+Sc_nBjV(lj#?qm{e9*d8@|H;6cj*YUZ!B#D zwl8{Nv2gAX&f92-*yT*Y9->~sF7Sc&gCv68MC{oZBS*h@uEQ*w6GDfo)Q1y}(TZw*cC0IXxUli!Ky+ zt-wdTOu1Ro-xqkVz=r_sQtd_qc%BF|d|Ke)eonuLw9Rv2xEYjJ1imHkT7i#vn;o7H z!i&K3k-$#`{zD+;ErR~OynE0K#d(X32<@A<9DOtgbb}f}H)y56WAZAEdiq)c!y^Q) z0W_$y;4Z-Kf@Z+}f_ni^DtG|!`9cpu*lUFWz(dC{=b|wzZQU65x%3zx;GodY5_qw| zs|DUD@CRdNnk6(pvIG*kB0lK03DBWx3z5xo#I(N z^k1N_9{N-um2&#t@F^afCs4Wrlzf3jfCtgru;)Rvv5aB2z%-zrt{ux`kjD% z@*LH7=awDqHRxMq#{%9W@WHYTNIzG`n!hXXZvtujM$nZtRF4P7vy~zO+3W0jlM}e? zmI-V<! zI^X@wFt)w{L%6lXHi<+xL>Oj8E2exkG%boIBv%z9!#VS%GurZr>_5R&bd2 zxNKfQr?1R~_4&G7*q|@z!nn1(isskuf^&S93%lBvktZNj-W|SeE{rW`pG@p7_%X_5 zu~&S9{LNl@?JjuVSMI|8>O0kik$+nj^M$ce&XzmUUyk`vOYwF3Z*yUrfko)K80TIV z{H=c%ML9`BbYbi-{wIKSRWW`>83mrfH=WLMuov;H$xR9i`U9`yM(tsZ6$Rb`_M*lr z1MdO*Kx5T`a$r*?i_G90!P+&}ELfk$RtR>k#<~Q%MPn(!9@p5(g5e8(tY`2X!RBi0 zGQqZK>;}PZ(%9{SJ*TlB3HG_hb_vG6B)~GC5v*HdFAH{^#y$}28IAo-F#fs(motOh z+PKC_1Y4)E8o@5m*nGhr7wp2a6~PZt?(H1x7VO|vKdds!sCa+IE(<2}jxi?CGa5TN zZv(JkTsVW5<(1<@Wm;Cx)L%jh3@ zJ&-cQ$4R_j%ugE=>21Mw(}esoJPW&qxA#~n?~}g+2lR`o8M~0G^M{NIxZCFr?GNu%f7o7dyFXx3!Yg}4s5-~9xQkSoHq$}Iz21cF2NoTy(yfZt2{`tP;T)w zuKjdij~Q{g-@#h(7{sfBok9O7c+#k*b@j~oZipj_GyvFci72&{(RmzEYUx~!aYU)5 z>omp@rH-D|7)O*k`dqNxA&w{q(pWh(BRH<`MXYwp1=}6sXfvIr3HD}aO5v%%7HQ7E`d%@n(|V0H6#f=i zMwjDAG=t94*b#+Az|?DZ!P>$xE^JfbJ2;fMMsea1(=++WKY8u;r3?RH%%X=S?_FbS z;U~ty^qF94bj+qH!pwb}XU?Vu2aA|1ddFuR6N3(F~s{j+eb z3p2;;1I|mN+`Gn@F>7&Na*JTQsdUU3U=J&qsC~9Mm$u=whAsHWm@;ah3pBQS%v->2 z(b(%_n#=~;rLn(D-m4mmj?IAc6OF~jvXuOTl*|JKo1(EM!RBggwP5WU>lUnAV*_I? zNEy=DIb*j`BV8fbyCI$t8tERvb{jk+G;(El?e_7EFrVI*yvL12k=tqnYgj;21XH7NAjZn(xH>Y1 zmQqGA)rO^Xu3)TL##~Bw;^0?B+8yRHnki1gd9C=xkHvziF};$yG{&ohm2{HEc*L!w zOEktKZYABKF&^)2v`b?=-rML!jq!MIrw=s72>s~VBFJJnCmFmz~wFro(Jq$iVLQCdObA=ro3)F zwL4hGTu<*g*bcLUie(V&4zhJSsYYXL&rWIqPiDLXU83@WkD^5hx?N*W zM(;5b^te;bLf*{zgcnQMZEmFZ6edw)vs|xo3}KsXrm`mC3^o@rHcewIiY#Ew8spKQ zq;(oQ7I{hP(-_Bz__12 zrq49SEB|g9+pIKu8Zx_SipE|p8pQ9=%vBh@Q}lw_LtPH`vT4x;4)(fvB0cP2Z<}d) z&%yp+_ET{S*Ki?yR5WC4rNx4=&Hip~qq7_=V{WIL9ITag&@P1q&nW)V9H5sqc3H94 zGe93{>^sHfG(hnMT*K}V`|bcO))-rUfcgYGBY1c5sld+Cc@Imun>6+xg6-1S%YwbC z%kk(RpwBe+c5w)`kHwW7_w9$p1;D0g>~Fn-6MoC{7L8fsqMkFTp;gsjjVt$@Lu(vtiswAKU1Q%5 zKW1D&k2_eM=OTJrWA}!ea5DV4gB|3#jEWCeGPjSLOIOfMf?Y_bjXTV9C6)7q2K?m$ zU{}!<8oLhI)trIX?t*YhhOSWvut-U{3#%yE=EAt&vz&D$D?JY8n^&^Nh0QNni*sJ} z+AVvoES4@j*7GeVk5@C_cCglxjh^dWShwc}2V05yZgQ}rP(v2$6zoN5ACHIA!P&K# znbpeUW;#h@?1MMcB^vuy$vK{z>2{6XS;Bdb+vQ3wK;Ekwd$Qy*U>|9W{qs8%T%v0D zWr+o>Trd@(ah|F%j?lL_T9=mI>T$4w%F=Ced&JqheTVq&^xW!j9#DFp=QanMTl%o) zdk)r9`h@2P4t9F!)1EsVtf%w^&z%l-dg&{kAKF;KH%s60+~Z(3mi{4&`5q|!D2o+5 zU3!k^UWb!oK^7ZR=Jh(5ue9_XBa4-ly<_~yE{D9a-uoQv5Z`0Q0}eK&ti=0}gVmRn zdmnbNDP{Y3A91kyvZ>x5JJ^)6Y2HU2tiEiv_a_dv0Ofw_V5`d-y^lNC0+f5g!B&?o z^8SoAOCPC~&Qo-O>P>jhT6)UiJgsbn_bIx`mG?C5Qdp2zEKk$R8sinq)AWJH_8DJB z&rtDF7Ia2%=J=%d8LAQN-4LHIJwwep@9^=x$lI*3HRHqdEDdQ+K5crIuF!eC<4^ZI zOSkJhK70B(J+AXkA8!GBS!3Tq?Z2RpH1_y}~N7Dp*H^gUM z&(k8E_q*}$7|&Ce#y%Whj=PkTG$)Uv7w9IP$1AxP=w+S9v*9o4Bb~>y;V;R%oNIqK z#OGiyQn_Gf1U(a;HD9D@I*(U*zoJDtk5_rWqIDYMecZ3}d zwe%8|t>F4DqcIaQ-j`@`8)FyJqzMDwm+2aX$-ej%dQvcs8jl&T&<75-7Qc>`k7XwM z4|!*JU!~a!qmw6`=Y5UZ6&5^o!o}X#X-Kf$vYvmPKGGPk^?yt2SJ_h5(i=47U>2~4 z9qilQH|Ya~(Pa}X{Qh8YHJ4L6hPUWkjqxh)ZF)nnGlFcFx9Ky5iSNEmWk=fewIZ)s zVbHpj-l6q^DVgum%MRyx-rv*b3JdO~Z2f&>yJmD7*Hx^hcWQU}t#$NL>mO3w}UD3KI){NVf~7EchXnAI(x!4S%9@ z1>=5LOaDc;JD3IRMTJ48MIX_WwOno|c_!ZH`Ir_9rlkBCbUp#c6EC#0oYQ=LZ_qa+ z-C2;OxYH{4QsKEy;CF_>+l6v;F-uTzRt2Yb`nj%)0NrU1?z)&VCoh}(l<=2KVtSoG z)-#vqaG~!BP5KaYkFG`Ksj}%VB8Z zj)&8a2>sA8Oj!iz!5t4j|L_AqyGFN__LlC7Fu$^is_VoU%j^d<$emUaxOI5KRV=1j zI=n4P^Wk(wao07bilvPMG{~JEUe~>1&j+PmWoL#aZfmmb-CK={^AM@!f0}NUQf}+* zt<}eiPbP%FTOg-R+!C>ditf&x2ReQ!2s|F)@#2PwIrpU76qf1HJY1J8Ih(d~)i`2k zYJT_V%jOz#R&G$%>kM-H9;b6D%KmOUE1xkYGpApmyLT=xVV#v_@+CJ5O)7CHc3PF4 zDfBEf=`f)z1T=B4$#p4B6kH{_S!mKahvH7-_HIPF&BMKH(gxvixAA|MR(8Hfq%pMP zgS!=5CU9Gn{oOvM?C?*?Rq5=A;M+JZr6{)xkJ8XBVQ-RuC;BL;M&i-MQJnHeagS0& z6@cYc(g@75r`EW($5S0jleer zzAx}&fqxfh;OC*9HSy&^KzvIsaJP57@r&}czAA(7ZmJBvv)N9sm1pogePKn1uO2)W z-=<+M+D?a5WM~d3r}(sxyS*LN#DRB@+oJME0T z>Ps5WRlEoKdlmoXi{O;!Q&7%}e2H9^pEUka;q#wpcqfJZNh5#K82@&vn3Tbd6wm)j z(92M}O7B1EK=AB8X%={93QyytMo@M_+D>D~q~-pzjWZ{$0=#I_I>75Eb@*4%-IFr@ z3yocnbEWa>q#gb%jn5$Gdc#*aWUvlralMt_^jBeK{lrKbMV0q?&Ne1hu0t){#wy$- z+=*OHCuw@+Ix|U!RzBu`z-X&{29R$LlE!@8zh6(MSH9r?iE&Zo82X9vt;%wI7m`no zlf?UlBz?E?1OJ6e4$ia31nMRIl=1V*c;G4HqrwbbXuMHbhxC_~GXu{Xe42ZuQ5f6d z|BW#vc1Yki#zC<%`i-$V))08p;8Wo@4L$*S)8Mn7_loOZT~>*a7%!#aYq183}T&_G(L!p0p*hz zdIS{iulz~(fx_}Tw8i$H^qaty#>A>2W4x5QQ0#N1v9xN3|6^lqRR(8%yptSnSXC2) zM-iWMRDp9Xbi1aa2xqFSXO($rRV8w7s7iXP%zLZi!75YHx!${ocV{c;@v1VUU$2@S zOd7qB`#e)cPQBX0O#URe z0_n&6M~R#&>A?=^W!7P8s0wYF7UJ|Qq`56gTPUFx3O@qJsb*r$Ygs5&q|d|3%?{S@>TS{XMtw}Zv@^6 z{3-C4z-NJf2FzeESP+Z`OM?dn8-k01OM~sfUBM@UzYKm6EDRNgDnoNa&7ozXb_^QK z#PGTReu659cs>^Qbx}OyRYVIxX$7Snv3(Vy`+D4{CTJpl@x2o9Ax3G8&C_TyokjcM z$=Rv&P2443glK;W9gMS@**JGO1W&IWD(5KMyjUR8sos47&-P9QyxLm__ylZEcm{>x zBi`vu(e(3>9`9%R$B=5%C;Kl)y2j6EWUAD`{_BvQ@8`0I`)>wZA-TOmSrf#3LYsqs z13bt7-+(6uxg)j*ng29_=Lo!5;0*$A7kH1rhXp<^@EL(G2z*)K>jK{u_$Ps12=s-wt(Tp0;X3NumyG&a{7A(e+SP6 zl77PY-`MBoLblK0{x2X$S?Q5N?u(}ixnJtX9AM&^>@f!dUOSfSy#6!{cyFp+Q+=wmQoX5q_Fm&U)P7Nv>s4A^ z9pxHt66o&n=YAV%BpXNh?2`S$rKRzoBLiVL#pq_=9oG z>8`ikU>n{i^q&ZPTA*s(FUKuKsh7ubjc*A2<2cs*Q{gd7xW>&TOgW*1C8vd=WR{p2 zlvQ;pX-AsZg7VuEmiAuBjgI66r7Y+5(oaG8Q|T9gRK}dDY-L&4Ymb`!CUDsq6Lx~4 z#$d~Y7%1*BI0rF|s8ygEp+`<&-INZ>GVZaddP?=q`4g^$WJP&jO8t4l4?tl$M-~s( zu_m62GLZ@ZdJ$4L;7okC+yqA>;6a!LOz^b;&PIeZ!QBdY2<8IpHE0RoTv`S= z4>Lb@BA6Zc?>DRhY@j0n8?mx5aaX+-Z~+|yxDd}_^LG_H09!Hpn79*803LxzYtmxG zS`%_l09;2sfX9#pcpRMw*o7#}zaQHVxRJKP8k+v)5>&EbS-0bl0rs1h@+&!TBKeA13k`K7{X)U_T3Jg5wFKe++1X?`KHw0yM$*6yP&BIW}?9`z+vd^b5e} z@z2Cb=`R6)g?}baIA21km+;S|mk~ekL?iy0^a}ka(*KEnCcR3pA^jTune;kN9!&N&67+BYc{e4L=6_GyMhdFZ5TyPv}#? zztZ0U|3?1}X`cd`^cnpV@bB~`DE|O7InOZYb3hY$9>6ci2Z+B>2Uui;0E>-0z;Ren zVI&%304Ey}zEn#AA$L8XNgYNb(i;SJ8BL&c3QQO+pl<{; zX_K)KaI?`0m@r+CHv{{IMuLu9O=zxWOE z4)G4&hiKOw$7D+ncu$a%NPI^MCs6z{aI2|4-Lx}>7D7A>OH3Rq(NKtUmsnl>-HF4f zx4$=;sq3^-iMnKOCXw3M(V0lsb#-@BYkMM{Y3fKPnmaNbv~(5oEl73rB(_?q6R2fN zqBpZRna(776DghB1S!YA+X zZYY$rdehXHN_A}Kc9O%E&8F5StEaCc)v=*FLDI}69jWx@j_&!}S0*;dxJ$;$&I^EjTZS^Lc!uX~eGdd->)k0Znb*aR% z{!CxLlCP3tHCPG#nntfDx~bXf=}7jjN_T8hMV5DTo?xey0YxOt!+qP>)s^gZ^>AIw zHgtMAxgpt|%xqWLY}@`c=^U$9>TFdd)yK-jCKxdVzhHM-Zo%20)0SixY8XzMPOXlt zMHah{gG$joaqv6cldY+(A6-AcKiMsnu-(|5_eOvWnj@i*pY!#GHDBHfuvW{b6M>V@uIB0{BCCOXoPnbkqpKfKyu6sg5sgDpKrvKrti zw1CI@f@E(py&36jb68=xsc>-GVG%E}a|Cg+R`qV~=BVh-+ zRlVI-N0*J+Mv|c*7PmuCn$7P6&No-{}jkfaaBTTL7Ba^*d)>gZPTxT|8#`HEf zlFJHg#`LA_S%#*TY5m$uJzQm#_dv96acMm=kmXVcTCO`E}< z2uD@qp{TIXz2dvm6YAibeM{y4_>;Tn<;T&C{9| zD++-vs1w<2q{MQP0jtR;ET%qZt4~;}HO*FHI8&hJfMtXeR*_GaMVR*>P?aU@T-yqJ z;IP1+6wDNMGY+OLyfQiNIQZcSz1G%VIuffRo(|cm)kNE5^=4AMq)3rAbk|m_VwA)4 zOx}hdLS0*zbR2J`Y!?KYL=erQGHosG@7Vw`U0ZF#wqnn=qp7Xg=G&^n4^QbLk8&t1 z5)_^nmvp30;N=oKNf#|nZ0hLT?nFxo0ejFS4%^Xr2^JH)WRL+a-1Y<|Y&zVlzy_(^ z{aqZG6DRg3F)!$KL2swki=1?F3#LjdgOJ!O>zuX|l6`$(Z|m>mHH*EDqn1<(+BbFd zb|zp<z#`Vg@?Qq64mrp=h>Iru9n(6l?*nap5X-A+p}+2Y-_fZE!c7Prz8juOp@ zjU8Al+NRSHCp#Z^Y{3GOHF8L4N~z@|ZL}A{PU-G!Utzu1-60E7876vAI8ubzID&9B zKAjxlLwk6=DrrZ8T`3o6%2v#1V|TZ;6-{=t@B-9U2=O|dpoNLde9VDPRgPq8x75!q zsGh|P(wf#Pa4$>eqOdldTW}-#thb8|>j=Z@S%}bSM7oxelc$S}L~FJ(=tGzEVTK*v z9@gKXvU7+r9T~QjTt?i}fbKT7Te2OX=9admm95L$u?wNrg-e&MY+2dT*aoDjvAt#C zvX!kZZIrPWNN^dB2MNMPfu~B$aJ*r$XJDa=hM&EFJ+Nlsb(<0* zeVj`|e`rfMyy7lxo2~xtF0^@B@3O7Ew)}()v_uM%Fs~zAvpb`%8Gb3^a|U}MEJ9_4 zTgO$yeYg$6s*+4ykldERPD|o|3l}z>$F|2}gLg}bc6=Q`g#xG5BdIz}0bRMfHd{Jk z5pOyd_9wfD(-{Ot)}&FWBthOMfzrdyocm|$1Y;gqx- z$iT8jHf=H#l0B#lLYUR|rIg6jM90&(+c}y+LXT{{rF@s{#3b3#*Eb)#6WWmMUEYz| zObCt}lbf)hPlziyg47yBib$(Q(17WxWy7=>mStY+GFI z*s~4T!nySyuDeUoJ(N@{TABW|TS}UjP>9RV4Ss_*x%8eriF>jqK@?D zCf=!Aea8uv_m4=o_F_C>GXYHY`_knyoRYGY((@_D6yCzBy+Km1>$_aLFLV%Z6FImH zKg_6W!yZrVSuo>c8R*(KuxO~766Zytmk$;;_IGzX4!{P`K|?3G@09U1JqK|LF0iF= z*E9J=A{fp)s6B-PELv=BvZr@yLlngz zYD*yWz&f-9bAA%rW2`xP6C9#4^6NqyU{@J<9sL>0_GmrW*_^Pp2(k}tq;4JwQiz+D zgADg2X4%8xSp7yv7K)tH&Pyk;kiCYo7p|O(T5UC%$Axk(+rrkA zv)wr7V=OD>RYbPaYRyZ$h{b$@-2vhNOsBH>v`nXDJ#T9xh^zjE=(?xNVcWsNaRs04vRs|XNmg6Fs+UexxSX14AH_``AZqJG5BM zq5~~XeD$d@&OY=ZpPbXe>U`$80GpRqKG;sE^WueAMr$(H=QLOjIF(O1lfHANi9)%I zqN_vVhP#eowW#4@_9(#h%Q5T9M305tn541M61QBC!f)tjQ%e$=%~qG)Fm?-`k<#2c zD3^mTNTx7em*PObqnj3YAiV@jCoDbryjvfbVp*(@ft}4KbvP%Ln91N@9o^Y;!^EEF zloHH_QMGfaGfmqqdiXR-_)`+X5YyFY?V`;cX?ts{y_{{LcBOjqWdc?ea%7#=RU(6< zFY_!LrZe-{(sN4=qdHOC&ariO%dlx&TXqA^9J!dQCGbI8qNXyt-Fog~_Qf`4-Ih<>+8JHZq556?Iv zA?FYyX23*=;Tg>d92K--*_q91THMAJbSJT_%~EyPYfg4xiJHzNJJT4`8~QhG;t-o< z8}Wisx>qd%63&G~2C+onUSU^-kSs@Qv{79ew)AdErmSAx3DYucpkeynO-cuG2j@gh zFm?82M`pD_t83*8PODGv>G*V7F6*#D+>uzek(#@^TYLJfl&g(LBvQSJ?ithNLexrc zNh;xTjD~X(^u^+i?N-05gu;)&aj`AFF`YHWs@|TCUNo*tq7W33)p)MKF#04HYfwx) zn-+9;Y?8f$3cS3guui~oR(=!{4^}j7?!dVsIwxZvZ*b{Fa&I9K85oamP2usuMR3$_ zEw;AunPmS4T+H#rkKHk{rHK;nF+cWVLqS$%Gx)gV%EXqW9M?lh9@6RTK^V+wpUKzB z(Jl7)`pVBvz!@>~c6M|x>FC^?#Nr$M*o*3!4uLAA!~&HoUuQT<_4eQsgeA!-tM292 zWtexdaYoT*oHFuxv^s<9!I{+ZRAM8}?BT}PU*l?+x797%umwW&k#Vff25_vaBuM2- z6?NnTQ)D`lxDeh1Gqm!p^?b|fPIUB=K3HM8K8DehK4`-t2+H*1mID*3J^%CV1N79Z z0sAgO7su)3mc-Howl@-^xvp+#Di`h6hU4u$S{EOx%K<4Q>7p)53l5#PI|kDkYCkJ& zSc2AQ6y@04Wj_jJ7g z*qX#1mhZLs0^PoAm$h+6FAkM)V{YGPxh&)+@wXf)Tn4@}jo^9>zN^HaM zX1>LV-c9IW)#X{1Ui4DEYl@F(~RjYhdsc!3;!|vY|e0Z=i zndp)}T*&^A&R9K8;DMKO7;$jg%$MpNaJ+jivUWUul2HEn@mSO6MmCj7#ycSChp4s`Kmwj6Bq*))HZ|lU9Xt;2}b9el^7FdA- zPvY6NUOXr}oYs!#-nbN1|NHVw@!VYx^Nt|L$*bH`&JvV>1yFVqmn~X?R0f)D#?#We z?t+!V(~oEFGDM}#f_38QI{e;6R{Kc1(6Q#W^(blt&n7%`$6ED*Gfgz66_j4IHw9W3 z9*lP5Tu%qM#2Vw4gU6EAr=%9vlg2fPez=nm8A+*=LQb8ct0SYrEnQi+8~Svqx+ijd zCjw7uZ5ol&1q^*Leu-$ozxlKh9ISm(S+`;#N@b`ScpBPuLm%An*losxqFeCQuUaxZ zG5lHPHb~hB?ybn@7Ow-Rh35|wDAx_lu7xVvQ1c0RYO)tn`P&_wzY@F_FdD};-w3Me zgC;ynxss^LE*-;jk<;)zWDLKy%Qo8x-MUeN^0FLM5yO+Bd*d`_bfe4$JU`ll^4vcM z;`z}!NM%YI{=hw^c4WvBn!vWjD*vNQi}S;c{8wxq3Y>n=en*fTBY ztSr9{(w1Vhwc{Dpl&aqugecW50yARyM-Ijj(+? zdaea>`Im>=02}dcf!7=dzi0ua2|TUfZ3kQiKALzOQVWqlYnj;Aic4gmIgb;?o>4SmU(7UV$5caUb@h zW-h^P%b?FF)QgnF!*N_9tA!mi96!eQViJhP7%!1FK>nqtK1h-llyY0yTFt0sE9{`@ z<7zRQ_RKSCZOg=D)F(%9@(so z?(2PGNOS%C?=YdO(Vyipe4J<0bF@*ts_e}5@F-xt*pl3#S`yIz0(RU*S@7u9%_4t`@ob8QKMLFVHITF#SNEG62dgDxugNkorO+}&*Z_^hu zjl!TmW*E_-As>I#3hWZtEpRc48!W2}ATpb2k=b5AmK)@ZdIqx?lp!}5l{&gmQDinM z3383~3}!K47BgDr@ki!({Ly*%oPy679^#M2{P?on*hoA8ts--x^FlF?d`6~l&2zYd zd7PSp?;aT5APR6Db6Dy;PE9fWLCC=u%?$=71OBpt=?|IyLi`A?>Gz?&XG19~sexLTDRp0G->@;Dzdi0Wu3C z;77g@Z4QtJu&|IdZSV!9G_;)SLkC40P)Qfwi|}UCMH;0q3K<5`FAz{KQ0%%$l8e~t z<)N5~&Wh&4%rG|FI?~7{U`b=4ehc$PT15Aj=vc@W5NSa-M~6Ne6(S4GMBWnarxnp9s0B!L5$wxobdjI^X6P2t>rQ4Gx~0&M zVa+tw8lj7N~Et+(icUMP_?d7wK*A!qDR5VwH`l$ zhd(;i^uy^$1&Ip$l?CYVV!4mZ^72CN;93YVDqt9VFobSwBu%L(ga|1w0fM{MFwLRs z@SPd*4&hI8U>N#&&;noC)>uzoer(;KUmTwI=&U1p&dZtEc0t ziMOpBb6o$~3w}|3_}?BpslLE`?xLH2vEs))E8ja~#$U~aM=V=V@%6mUs%t_w9(>3? zFV(O9ljqkzyZhXOp0BFB-A6F)gtI5Rj};xLP%r+ zzro|<5%Lu3E5xYuq85<-@MU}%ROG{4UR2Hh#s-3}f+#B^>Q|VFpp7p8r$J;j%FDUE zjbiZEMEaX-@kP<0H=`A7>@Lp76a?Qchc(zdh!y~|7?d$s#9%6f1q*#J=OW=53nJoO zz<{$t=XV4?B{jS+=?^9SaS$bj-r+_;NJALiPzC~5j^1Z^K}0w3tP_Kmmvdi7hyE^w z{}~Q=B0GWpGg=XZ)@2BZ!MuPkh!3X$>%`>ch^DYtdAWqQU@(NP>4FP%iOOAO9#7luKoEB+60G3P zNVK*Pai9VoWWx3EIrJR*f?Z(F(j#}oMMAb1vR>JYB@ZrTs*3r`wykrVC;!1r3}CWq?{K% zutIr2j1eqk{x03$P^X-ong?6Z$Lk3ii@!29y>3?BoVxmHGiJ^vd?Sgfz{3K3Y z-GTV8j_=dGCtyDzf4K?YM?%!b>)|IDs@LnBj%j3%kLO%`*(^LLl)`~KpF*nd10@o2 z$j%&J?n|+TEbC}$)B>Xx7`4Et1x76}YJpJ;j9TFTa|`g_y2Fo@VC|i22w9) z^YIUKuXzK%q{15({d&VY6RFj>1vn0n?*!WPZ2{jEEX94rGU0s0`(I!1vKJd)d1_au0iCip z0>dSh3(qvPTm74fb7a^6ziPt2nbL&XdgKgV-~P!meI|Ypz|P~-`d;__8Okoj`Fk&P z&fw;TZxyi5!7rV#JiGqA+(3dahWBjzRj4fQYMgZQU5CD7MLyp=&BA*Q-u2LS27VU> zTP|2*0?M(K_$)q!PrmW6?>O)~K)7SD^-}j?2}t0(62;Hw_I$3M236mX;V%&KU!hwJ z>L!uK7U@HK`Hp21PXBS2BUZ|##V8KyRI~Zl_Mb|hBhZ~*Kq>mrvPg}QTJ+GFW+ad4$RjME=%$o zrGCCc;osA0l-$+G#ys? zmzF^)Ysx;tzGVBab2A0{|J8xQy! zI4C>(2Jfqu7h{fsQ45S(VAKMm78td_s0BtXFlvEO3;e%kfnE6hTj>1JtpC>(AJuo% o0;3ifwZNzaMlCREfl&*LT42-yqZSyoz^DaAEih_P;fl&BF*S8)+=OI8XhRsx44p#BgqDz`9hkTz%#=3COfz&~D4o&??X;npFw=yY zLO<{A?&$<_CT;%9WaWMP-uu4q`}KX_ANTdXTRuZN5gB;jdynYr`0_I(@E3zcG^a2B zMw*^(eyQv0YV4)1=_77nReW#Gw@X&uE|MeghN#`AdscLl&29w<`)8qY~%H#efz z8XMPSF}S9Hg{#mM<}pDSF`krd{x{Kejcx>}w=i1HbAk|j*#11L*0UdGwGC3M`y2hv zie?_$-RSp=a?%&&mqF)a&MEV3M9W!Mb9){IyNqQUMR-bW6Ymck@7b&VpUDxaV-k6j0kd>6z z1F$;Lv#u@S^#Wa`H~D8Fl0~_OGXf1c;C-*Xwze%%LpIfFv(4;Hwwc~F;J*q()C^S$ zfoSB=hCd)K*JTgqwgL`9Y^?vjR{u+|6`+jFmY(UxnbFVY2iR__e{M;pKiC9bN;Cbh zg8BXqS&Xk~dYd5<>7?YA1cpm|=K{vhM!q@vK zgOHO&u}8S+VXaE_cA)J2uf+)pnPN8SU5oa<$6jkoN|IJJ^_op#hOUlslcd`m!UD4V z;hMslB#-|LG%s=?@O)^jwRn!`gjG!*ZOxi2k9=6$4ScVjTz8yXu-!Ag#knFy+ps?Z6CmBG3gDVLHC9M4b-ae3~xKg5O4QJ>bUpd9P8F73(XK}(`(3>*4v?1`Fn!< zg-|ASk7`e$j!|>03)3N5k6Fyy8was{YVURx?Qpzb9vjFFT7)8SA&p@2VCeyvW=*_S&9*C+N z*FK_Gu$k2OyHcr zPYV2!!0+f!>lu1WPpCA#qkkLvTa43mDdh~deyzY;0Zn?s=)_^=y9VogSzw48iPPwH zvA`T)JKdk~67BS-fGPS{;p^rr@Oh)aLBKQ(o2>r^fwus*(*q_)kw|VqM#DTYRCE$! zat(b9W62a(!Z@fV>@3YfIiQ-++9H%MZ3((as4swO#Tcv=>QSLmh|ZvY#39X~x5xtQ zQdc6rd38PD7XSz7AwWev+8uzmXf?oN+C1Qs8uR}WaKd6Q@1e~q3(k3=UZB0|8thze z3U!Jm)F8B9*~OBl=q91|MAU6U6(VXzsKtmnD%3+l-O~}MtujNpZq{;=9#=OZXKxC1 zioT@|A(sW52)ONSRRCpR+afyKL0Sp5xn8JHXNLNhQG4pt0wfRDso$g3^ma%!-L2h6 zYiZR6)_IB^)cz1uzfhk?#XpG3*b}zF>xZ$Xoe}Bg9;~o;FC> zzcDiZuJgL_kc#n`^RU63p9y>yP^0Y$=G@ePhkZlI5FZnnbtcQN2h^z>P|@$yp+@%! z9!fr`acc-?l6MeCFfZ_=z|#WH3jCtLuLyh`@JaeA;8uE8I9+5KPh-2|3VWV1#y4rKY>7;%>GqP+1#RD97Ggv?z6?-lr2z-F=1 zES1$v&l>+k|4ctH-k_h*zZmCW>pzS)q3vDcr=*mX_-|@foOz`_lK3BL6MQRj_fyCO zN>^>PJCOlo&t1A9F$nnO#3gE-`eve2b*UEY*ZW7PZC?<+s_l*)PTCk z9He3CJ1pb76}|SVVf30%!?f3&RyU};d5gMPv2RLM%){Vt-(k_VPWs*;&{pTnin2qT zo;KNsm&^sS>4)aSfd6LJl&b=D7i2n;i+~%FHFYyxn>?eQrvpj$^OoeF0OxATVTL@e za;V!s2kfTj0DI_1fSc(NEl1bV6M!T1E$s*N3jLT`Ri7GB1$D3bocf}A6stE%kRH<> zK;?9xZj42)p#-vDGp(=}gkPfH$1fj#QnV=F#-6L`i4}P72#;+p z^*z0UTsP{SZ4te}+b5pb2GHyFd4*ch*+%7B*{$Yg-8-u_-wASsVv%OuDvfx>TB*D% zWYe@0RL4BK5YyuaxKl(0G#ms@X{I)W&N~5xK8%1Xl9A#n zIz=e=pLBv+u}Z=X(J_g(9}ASrS3SR;Dk^v*4su=artO)cLsgh8AnOI7 zjq0Opa6^y_ccm>X1S7#@}j?0f)c#G8F? z-uD7;wwfE6I%4}33O{UZ!uO83tPl4@AyQXdaCUg5Tz#BIS-ei=>*Z=-A=WEV!IuTb@53FHo_CUA|YE z@@jq_i<0k_u#;e^0^!Zv&Rg#9UPrU!QJJb_QGgTEUAXzV9=|CEKc_A1@V$bzLE<{}*haf>rg0(ZPyxIudRWrW7WxEwEI{%ak>zh}aT}>NoVoDlP>E*H zXCA-JEBM;b!cso?v^EcpPX{68i;wItC90qp7I4)t0@(uEX>Gu#T=Zs*Iq-`3qYsy< zhCVL%Iq3DFzXXZnV&UkL-0@!}8(}WklM?R8!hHD11bgj^rQkwYXugh)Kn52$z-A(B zoDR?!{-|Xq?V|~rrknY=q(iEWwW$5+dsbN{(H*TZ~yzz z0yTZSee**-f4ukSP0!r*iG%C5ynedr^WS^$L(jau_qc9m+VHN$yUw&UmFY|;EQJqr zHQ`m7nGX3)O_rAFfiT11(X z8B7~lLL;fndT^CW!xkgj`UJetGze*#TN9+E)9Z0m%(y0ct6x_4jY;1K4Vf;0RT89c#k#ium8N)XH*Oti8POSvTe^ ztcXWl|7fp;bJ!8vDOw{rYx=m?YYi8jI~~^=&RGXNY*E#~JGPR(ezv>GnmFPX-HJ8h z+wL61hKogOk`Eh!g+rC&A9D(PFRdscksyF}3^~|6kN{ z?jfAScNB~J_>3W^d&iL<6D;-KRb&k<7yk|QD`X(NGsQjR;&LV7Z_NG`_$-I}UAk$A zaL>n7_Mcf@NUF=FkcK?c(>rUaNJfA`}2r4+_lgQ`~c*`{fu`> z%zf$=eQ_i^WQWL$UlnLx^4o&!NAW+rs_yIic2=}+!p_1s4_omLz}wC6i0|e1;1)t5 z^Xx0{Yi0O^AF6fFmhZDJ;h2V<*B4*vdlmGYQBOn982EFdfwNG-&dphz!(Pb$r~N^m zh5P#v+K3Eol3Z@WIVHrlf;WPGJeEc1a6nH$C!b#&#L$X-{$KQMLI1r`Q~~fCp~FI) zd}cTb{XSqXIQxL-#jXQO>;ub9%gKVtq0*1p9jM6_UPCz?O%UA-c8Um z0lR$4aFIE-%yr7y3!`Pr?9rs~IHMfLBs}5MmJh3ZTEoH%sVkO^MOg8Cnkq>?k4jZG z)|>^Mtj)&DmCxtAC20$>&7x(c8l8~(*^fT#DbE0+Ovt1G)cRun{Y|&)%hc$7A^6`b`qy?;`ki91*&9y_k3Qm zw|m{)bK`i>~K?)O51oh%YqG!-@8J6(fK?TE!YkriVb8Rnd zeMUL-!q({p!&OU;U2ycGn$s=I_S89{I%P{WEOqoqRxR3jp|!WiudAw_93wiUgsJnd ztrNj)uTVl+qeO{1K#BR(*Za__sKclXR5T&qZeY@WZmEI_Iv0QVN+SGAAlqt}Nhn`| z-dRS5iBc_$tSBdl)~+DEudZ4%U9!i}KhPkkdE&H({#!`^j7eXscB3bYN_0YVTqlQ~ zv~3s&!a^TGZ79RAUUP(LgHhUg0)wpUD%6HDOtiP5E79{DR}{95MMk@cCKE&oa8#b{ z1C>qbDCMCDvdPb(jfA?+reIV&wEk=bi5BT{+tG_VU?@eMj{|p8& zpvz#0IJaVa{ry0d&S)~)mBI?fZGH-|hlA1zqu|y&*u|jldeZ2xDV+Q*(E7(Df~Tvq`JH1*55}0V+tYh|jV`X>w|r z!xFf19ve|fT>}A0PN~4kOsfDyE_AM`#sw-`?X4KRK+CLo=v!DOf9x)dNxzmk{>v=q zUJK5(F&m2;@7eCNJ;iL-fe^E|0s6#O1LCeLe8QR#xVB^bLT9^Axe1iEU~0KYUtk^% zq_iZ3HH}|b*I9M;2@ED9P5hg}Rel+GJ5`%~KL*}=wNpDF(AC+pi;^un6-W~eD(bY- z2{&NRgUX)Y1o)fE+W#o)d^+>Jd+AIogfx-mJYpA;>yX-s=_>3f5MrLzDo-f23qw0; zZ}#9`g{Ma0{kPbs^=X3x{r!^CLMB?y{qAL=zo7jcmZUrDIfhkmndO%;qC0u~Se8bi zfRCx}{l~^f(N3fP4pevVHSIZOMnPAZT^FJ@?)+OB;El_(BQA0eBOm0M&NNs^aa6{+ z`WrefaqjJ;Zj8_242)6{c!JK-12~NSL_Y^bRT4Od_edxtT$b=*3C~IRf`qS07!EOi zZ|JH}lqN!~O@tnR{&Hv*_&va*bO!V|Jqk(}Ju5k10VPU*mhf%Bt7vPO`Deoq0Cy$+ zMc@fKBjI->d{V-f0HgFqm^J)E!i^EedjS)4V}vzKMA*9rBX%T8-vmS$s{Zq;DTsF; z4O5H6lVngQCCQ=nfVa~oz(?q6z_;jHnp9c#4823!!MzsSiReok6r~4oPs`rj8)8aY zu7W}*LVXld25CsbjD+J79+mJG33Uk#32&2d32=z+0!-6JNx2trlpdz9g~sVIIu|-h zPtbFrn*m=A-3r@Y3+ePTx)@rZ7pXs71l%8XBz=%xrupz9;GN++u&S){O$q-cp`tM5 zWqLN8rZ(mG;kziQv_|fxtx7jym!ywHzDj-I`34OsvytzDa%*G|lw2e&M+YgRJQn#r zH2fHp$LLp)9>5nPzd&}fW|clgdq_hbu2nQd_P4;h>5qVG=+}S)^c?6Pr_38y-d73yasOaWw$28_ByX1PJNJr*ABXS-cJ_fdF;d&Y7 z^t+mmOAQ*NM3p?k=pnmM5DuAkf%cb;JW1Yhzs)Tjb4-6`t?U_QRqhz0!5q0IDT2l~ zM4KvGo>3IqlqlLB&Ya89wUGt9*o5h7)439%R{IpR6S`rMmdkmzgN9)+gP1qrt6^J| zaa~cIGnYneYu+f79i6Ee4~N}c*%P(lackaoigHjlXN2Rf%5~X+X-ChCqVAl$RP%^k zT5^oSf_LfAq=Ti)tuioT7fZUebg9IsaC44PTHS|f!!t!)rW%V;LoZmi>lrzhM#WsY zP|)WZ*&5P@veTLA1xM)lx)$BRosbnCFO-`V&Z3bMG;Vpqv2+t|=fokgD9jqme#b7C zXv``XX}|EQg3SWx8J?k=#_fU-f}C(&<{c?J4l**J6ohviS%#?w`T^%{C|xuh+bVL} zR#$?UE5PgNs~K$IJdAUxnr-{=1t3n@&Pgd!ovWERYPcm+Upfp%xFbEC&@G*lpQovk zTpAC;kjdu*6jt-@3c90qQ8%nW8hnN|B?^Y?IoJ%`3x?{UsHtZ}IJ|`rB{+c4H01vD zQb`0pF@8X|@}`hX=giIb9a~zDw9Vmj0>eaTaM_EsI zJU?G(RyVwTwv+YjQf-5+*uu4~8tl!QH{-!(J!UyF0>TL>tT1DmHP#W+cBLoP6NhM< zMP;&Z1A5d;Iu%Hu=h1Q6MkSopCfT4VyN{sffy>6I3;MX^61X!hNZ}*`rc(~mhfo($ zO`_eInm!fs4y2jG#h*%dP?|oA)`eajW31f*KixPbEn=IvugYE?at?6T>_Eo1B+$|$ z_4Pp?U6Y|a{sP&oCe|2X*=x- zB3G)}!kKP@+m#kJWYs{B1-$x~%XFTjzHUU`AKw1w;YSbdeY~UR(eJ%J`*n&vefy_p zHV(dWZ|uzZvsXX;*1=QZXh&N(nrsh66F`%w>+oicZAsv9qJ&jaBC4V!TGWsd3Plt= zSGXT)RYM&|6CFpR6jBn&aXfxIZUJ*F3ckda&D<9Z3=k8H6k8zHaT}xSVx)9b?oC$i zZ>7*?Uxs52v{k;3RQznDt6p%ctM6-1}5UBi6p~_RWi(O5P>`?pD>Hc1T zAr;3Po?Swnv~3eVEyY*o8&nVCo^jP#O+745oiv=2J?ey!ThN86j%e!iDZ59_n0Ut- zYDQCMY+QVvYcH;*FU|AztCI`3F-q!)qZ%4u?3MED`3(md{e-KJNeGv5K!n}>;>N6rN0d3+@h&EWhw4mgHgpT#|K zgbt%W4!93Em!C%d_Fwk91ut$h)mCfw$Wi1lT0bgP0-8}tn~`VHKI|esrT8T0vyaPl zQp&%D_=YmU8QfQrfgX?aK(PXwyxQqNI*4!EV5}t1lO=eoOFj$(=QD|Sz6N=`bU+)%uLcSt;(Ia*jV{hkKK1ISXR~Z? z?WVyUK-V|P&&cyAxD{EhA9L+S9YXDc2LrGYyAShTiFrA4{weF<-gRqNe+_8Re;SqO zKII(b`HnBZLsLeigqx2oFW^*V+c-+iG?h}I?m)EqWnBC5*6^_*(EQUGpFhyS_v9qx zZMni4wIjA4MBgCf4_0H(uZ&svuVMuRouZS_?*Q^^VFGwg-Yk5puno*N4K7=bXXO0s zvjKWWj?Q3=-!T5#+qgI1uYKv7zx~iQiFtY5d98V7emQaUd~G~4TQntU98vazZ_wb@ z;rkiq47jdsS_?n>`K45ZM)p+x)YOoFd>^wm9hG;14o!7#6~4`5WVL)fAoJ!3WY|)^ zn|bwv{N*0+3Ie^1%DLY7nylwf4}O(V5CM*39=!ans%Ky0ULm?c=6Eyj%1pm}p7Z|7 nz*~-55xdxw@3Z$S4_7|C1qa$%c=txbo%7*!_Wz!(jKKc@g#)%- diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/nunit-console.exe b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/nunit-console.exe deleted file mode 100644 index c5492b070d2f6ec1f63612f8544ee9340e8fa80a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4608 zcmeHKO>9(E6h5y%(iYnkiU}krx0aFu?aRz`P>M!pIz?>hpKU3kB=pVncKYm__nP_*?=bn4+ z`M>ABdpq*Z=Tu8Xb?EEsL^m;VO9}jUu!iN91K+pM^~PK6H;v(2?Njr1pcZ{E?^^|x zvs~8;RaPs%=qlS)17nk_;LU2Yxw+|JN%idy4(};zB>?AtPc#0@iUm{iyGepl;&mR?6 z8?K8)1Lkj5$(o^F2{GS;FeMg_v*dS~O%ctQe&FXo5Z_Wjn7;|Vs-@t)>1)RWqxd?5 zMb?GTt6Pewzk1I2?}(op`^F+4D53%6!2piV)*h?1#SGdB3CQlM>4G;+O-JdOBgFI_ zB~3M5&7dEl{>hlo|oCjdnXZR)OW--cePjW)k}cXB1y}Sg z9UzmAk_XsEF9UX<8cghB9I%&;7$&_!#{e@zIZXq=C+V!wLv?GMsd{AB=^|;D5E#ey zNn12GXulxUTnFi!D12Udb;O%3I{Gzoi>@8^l`J!(z zH65a!vc*tuEDySKo?nnf%bC`Gur1d^7p8n`Ru?RPVXNkhx47!t`T20`(zuT-hlpQ*{A`|7$9I&mt>jj~m3ur)Ri}}2jt!CS_12j36o|^Zy zHCxeR`8ar+xO(tu=fs!tPxQytZ$In!>f-5-4qfZpfBya#)Nted^V9p1cRxjaH$2}` ztH`KRhS5^5YK)qiIxd8U%eSw*aO2OR<=P!aL%oznE50HL^O)IZ#$&z7<3xuHYL^{X zxM3_6mb0w9ITclc=jZYD|IVPbYa5AHU75ow5sM{y0QyvB-av14fOGqy?zabA%JsNMoUX== z@pV~^-gQ#wr8y6L*Bj7kkqLFZcN{DR zdakPcym!yy*gT1z=r~?}6&=&i;bXNDa{~5`q4%N3 z5k)U0A;Y$JLyof-ii`_iohpxADwh21flr*lvP~2GE9gX*jO)-b3_LH=9Q`7#N(6bD zhh`FgH`5e#fqEEOOGt(j)KkLxK+8am_t!xT8uM}JjAAwMc58YpeM!g}uF$ADC|nT%N3_CD$CY4SHHur?KXvM>XKl5~z>nUu+}Z z1hkFAE?2UR%&}#zT^sp~w6SIOXhLY5QI2B*o&@MVtZJGCFM;dDO?wfYf?2E=B%ceA z;8v+61)Z$TLg&+9K~sfWA+|ZJRQM}(J1n&`1{wC0PZ8HnxsG|pr-MNM?;7gHn;EZP z=<;B{hpSf_fUuqh{c5bX+-? diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/nunit.framework.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/nunit.framework.dll.REMOVED.git-id deleted file mode 100644 index 16fbaaf046..0000000000 --- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/nunit.framework.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -105213c67c9ef3d0aa0997306d0c941b293029e2 \ No newline at end of file diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/pnunit-agent.exe b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/pnunit-agent.exe deleted file mode 100644 index 91ba0af762ec17ebc6b7ff03eb87943aed8e83fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13824 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 q8Aa?ASIK+;dbDWl-#_PNFWt+QO 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 EA7r4gEC2ui diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/pnunit.tests.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/pnunit.tests.dll deleted file mode 100644 index 9d482ce4465526f949aa5484e229bafb6cfde9fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4608 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 Y?6r?uAHJc?Z(=_8@TK;DMtfJ_FVQj;bN~PV diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/loadtest-assembly.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/loadtest-assembly.dll deleted file mode 100644 index 3c33dd63bc22bb72ca522c1623bb9195980bd3ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53248 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 PS%GE+nicrJT!H@$fSVp7 diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/mock-assembly.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/mock-assembly.dll deleted file mode 100644 index bfb3b269901b8943386523377a53b07c92a399e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9216 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 diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nonamespace-assembly.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nonamespace-assembly.dll deleted file mode 100644 index 4d11b609a83b66d8b3dd8bed9661807c206112ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4608 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 diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.core.tests.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.core.tests.dll.REMOVED.git-id deleted file mode 100644 index d9432eb4a7..0000000000 --- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.core.tests.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -a91217d2254ccb43e4eeb949cc41cb0098fa0187 \ No newline at end of file diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.fixtures.tests.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.fixtures.tests.dll deleted file mode 100644 index fc624de403b71309681bb122cfd5a436a19676ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 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 N2O1t|c;IRt_-`71_R0VN diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.util.tests.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.util.tests.dll.REMOVED.git-id deleted file mode 100644 index 0c3b5482bb..0000000000 --- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/nunit.util.tests.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -a816c2a6c2c4f616831b6635036b8bfac79966ce \ No newline at end of file diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/test-assembly.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/test-assembly.dll deleted file mode 100644 index c61e0c4f05e966c7f2d14249233594876eb02707..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57344 zcmeHw4SbwcmG_yCOeSfPHc3eunl?|Grk(U7H2t70Ei`FTXy_+R3RTc%noOFplbJ9x zDJ`WiwG~l7VL?C_UxP*Y5VbD2z=CVAh{(cPSKJrgW!GVgihv8gTNRbX_kYg4&oj?6 zGieL!`+IkNGtl$g|2gNLd+)j5_db)^@WGqNLquNu`{N&p9>J48twK*uQV^Hb{Y@D? zRP$2pRF=s1c4D9hA5XVhr7Ox0Aw`V^x3;^yPo%V4HkK2Pm$ZP*pOw)aNg3tlsty6Ylg^Z!7VOc;V}T zO61NLn+#eSUx&&m3Y>v(q6*~7G4kxCsW6Swmsj67gYEmwXH}i?d0(I!amV(H+3w$e z+a0@3GVR+#JCR46PnCNb5RlK(GEc)F<@4q>?|SFDssboSu_sUqTI{pb-Yuwl*A^=Ko*GY5 zPcEy!CT2tJ%ItB_>|ZuL6yvn?Fyxtf=9rN96Y=tm>t>nb`_P*c^Cj_>diVAjPr96`Q|p?a*pp`FIOe0k~gSdii)(T-$tDy}t-uPUdpI_K&-I zKNbgyXZp-tC3<+U$ZT24XJ)&+8Ue4ZY$iWm=c1t$3&$!m?l5%P@paIR?*fs^Oe{Lx zy1AaC?7-kT*4$<*vnRj}Mas;1#IRf*{}RVvEU8s4@ThAK$l||Zen0FccCvBjc$XPF z^7U6NhU9}a2dC%u?uWkkz(ba-abGEz)!X*-gZ<->VNt^}ez5FReadb55f#M-@!+`j z`f}JuHrPHta?-{+iDmqF&uOzkq|I^dX`d?p_P!I5i7?9_SkQ5v_>q&}3MJ#m>Et(m zTGl+;xDV?mPKzIIx71SAyYBsHs4y?}WYfhei*@+{U3NKE8v8MMD&6-}Za1L<<#RQb zU9g_w2QLkH-EGOHC>cML%w@@{Bt})rF3Z|F z)odJPO<}2}^z459sIEgdVbLWYGzzS&xNR8f0RbcUQs>`8Sa~Yl#(k^{ze<#StU7N( z+~wAT!}$*TM31e$Z1tGM&#gC`ZiC%McHXkFz3*h^7Hb||_n)=pCT_b}Bb3JnVJop5ZL!!l zVJ;P#V@JNSK%dVU%BSXC^PBnf5XKGOXO|~dh}o%$Zy>GMN`P6XNW*?+!S--wfwhV` zo|yGlH#u+~glKd5{e+QUK3Xq+fZf%?G1NLGw`^|8j&mQobE%_`x#O zzPU}fB{|hFoP16rAD`{#&3>e^ycT+jlpjkgTKPbKWSbrb?TbsiSKpt zPio`8QhEL><>k-Kx1V>m39GF<;pG3fX)Awj_4B7F&+E>*wCZ?5fn#jSt>etPH{Qa! z8!;Bj3A`TZ)IQFfgW{{k(y`B7C3-x~UO(j1v5ljDZeu`~)Av@L>~->U>%``htT`lC z*RlV>iZEwSf}Kyk{ZGESaO~r-BIPv-KXTSt3zdu?EX%IvQ{jARXUDPYG~&QetqaUG zHqQQVRHwDaVe5YO|4cG%?pvj0{AAh5 z>cPx&woW!yZ4zy@+~eIQi{*TFdB4V=#6=h`^ghPoVPB3`Qr|J048G}WO6CU4eO9ryapK!Tn4xw8$}#$WOP2n zI_sS}t666sGU=UH9IxZ37@LaS``}CFv@u83I?q{Nim9Xt`ze$P2TD_UnI~3;=%=s|#!~L;HA<`4QDsuMv$^GZKen^uWaHDxUv`{qd^$Gr>6|X_{iJs~aqQ`T^gXmUd%Tb7cy`{k zd3gEy&vkk9J~2iYVq!t^14JH{Z(P zojh)KyZ+DO%zfunPoM{@i78%r#J`FaNr8S9PS%HKs%ea-x|N<%7d>xA??0O#58)z8=E#RmE2iTOC4(s z7u9Rqb(2#Uq5;&Eq}JgvJ+&URCba>yDuq*!ldQ8&mF}Nf?zZ-TnRf}_b<4|xfnM#` zOq;AuZI;~gc{#rq#~(EIO<=m~`u1aolWFwqQ?F8?xit4(ZtrIORR{WE+fK9hnq$vp zPMg{O$mG@Rea?Pn+Wk}O+1`cvCVGdpcl3|}AC#e;xZm}?iB`ie(G({JK=5j67>~L> z^G;9QAD&ECt+PE;cM6-n*hgTQed^FXkuUv>Zf3ljdZy|b`Fyv!>%!G8z4C`QX?II= zOY`DI3vptDPXR?hU&3iZ!_{~%948Gu$aF(jG9HfZOt8kisQTwInKx|hqN}ip%(50>c7o#$feF|tM&_qFh4O9bEA?Rt1Dh2)2^(%=tSx|+W5uep@ z3ez>J5pO9WD+C?a=sZEc*Qia<8D3?x zUC`MYT`1^-8m$+U(rBZgyEVE<&T`H)lfKds3SkPvTdIZIQ>LJ@9 z=#yI32Tx6+yUJZzTIfS|VpO~iQ>dvJ>H`GSYge&T`_Xf!Nn zqo7KRI;=SeRDfE)M$q*@PviZPgMyBTY#LoF=%}E2x?a%#(&$D(Z)$Xtpt3@?*+8EW zG)+(=eNNCyL9^-ef;JY03JWMeBZ5Av(P2TK)94;SUoZToXnsZd!}A(_Rb)Tc=<8_d zlW3BkeHNf^i0n*1x1J{YD?v>fJtU}IqrVn(sYZ_oO8P(P=Xj3^`VLSN(6d{0=Xrt_Xw)p|O3_?G3kBT{bjWoMEf@4nk)1~?1^wd$ZWFE4D(Fp( z)(I*rsVym>Hrgs^S;-bbmk7GNgyUU+5tqGmwMLf-`Xtapt_$eHg33z1fOu;uDCjAT zdIkMc$y*}(h@gq33Pl9X)+j3IY>kEleL$nQpvyJdEvT$eS-Dcs4O(^;-r$@>w`2Rj zdD$=MK8>z+9f0f!t(lT|KL&ckwU!PFI-zBUM6;;ut&$UvT`RJgKyL$mTx1slaSGQ7 z+66@Jwe$(m{0xv6=#zrJqcyJ=^s+{u7UY?ztlT1KBG6>S`;4Gkjcyk-SEJ7gTB^}s z3R^aVjf8r>!6qZ%C+bhAcZ5_F$N_Xrx*=srQuYxEUCuW9sELI0uA*9Fx~ zQf2stpv4+JC}^EV-xSoR(ZhnS)aX$`pVjCw@$SQuzBh?|{VkEb4m9AtkVXZ)tI>A^ zRh4sVy^y{us725wdQs3SL0jm!pv@ZnOi-kp+shVuP0%&v*OxPTUC;v>y&-MsF|GMa zLEqEp-$e68Z4;Xje9oAqZ2rbo349*Vqqt#E=x-h9XBP6&{EBKin;xu~g%#4}l?y?4 z3%y3@bwY0t`kBflkpAF|cF=zYt)j=O)*~FKz6A8FYPN8WPv{qc0R`LfXeE%c9|X6;1kSh^duO6seM4%V@kZV-Bh&@X^` zsAR@0*q;dMqY4hYw#+K@RJ#6QRu$;)XBnQ&2Dg}N>6hiaPVLd?grFgf{1q%qDKuq< zpj$086|y51s>G_`NgZzmG~M*PL-wizQ9a>vt=M$a6ou$oi5Jl5c0tP=n(GA}((!t< z<~^c0q|sLer5y2Yb)b7KRF8Z;Z@Dm_zo8L-vkF_ectp z1NM67Z~n69M@81^kacU>36TwGR8qwyx=N!Zf^O1iv!J^*x=PR^f_~<@x$1nxdsfTt z0xF=iLQ+~Ed2z15d3gr$d{iq)^>CbxD4Et=t2JK~&4@#m(z0KQ><)+Q0Snb5g;7CI z`F~fn3Fizi=y;XYl|UyfO-BAXk~2xYkZLV-8Dz@@J>}w7S47q>)NLhJ9$5U3`(MVY-nVZR35iL-NdL)HbjUs|JJ2d+QJw+g=r-h~30~Tx z(b{T8w+d3Npooq*;ytM~|6VlT(CB$Vljqz05>SZVk(_mFR5XQa<&Z|zf*#T+Am~Yj zbUsfw(Bx)SKBYNRqq8O6N{4K{LfT4?pr>3Hh~`xqZ4-2dj;Ct+UX4^uKcbMf@{*4C zaf$bqMz;#`;)OHrN6N}%jg*y{3TZ2A1(|L4GL3ZGb!gtI5IrO*+%4#5uEzyE;?R6v zYd$HmH#9n?a)$c}eNMIri?$QEeyuAo+pRO{L7h}WlO-WsmIt2E-(MG@Vg5w9+a z=uStxBZ6-8&#CEy?3hFLik7Xei9+_aLsrtlxxURmT(cXp#e&Q-thG=IvOb0AAaaIt zRZGU`28Zkchiud#OFLvIwConK>6Ih@Yw4bvkHO|-g~XpF6fk8ddkHPmh&@q4Yc+ZV zR!V4_BVNQpDafwVnp`WTbhk#{GZ~GV2v$nzC5}`eo)6TpevPp}iru~Zq1vFYO zs8yp&1#Q!4P|%PKA38!}(ojtV)C(i*vs=Z94 zl?u^Hq%e`XHR==;(TGJ2VHhOr@UENTq&A9Y4``%PPidr5ze6LH`Vob+%_jxjhO%?(c}Z)k)K54x{dg}qQ=5iH zD)nU=snj=Xq*5QyNTr@qNT+_QmZ`Eoppi=bNr&bO4$Ze5n*MVnXWC}1LX?yi*{ac1 zg8Ceqd$jE1BD>BZyHm@QuOHG#mG)VURB2z)NR{>-jZ|qTIi#1>K~Owt2Uf@eGR*#UXoIkXjw04Qiy)d&?1z&Xrtio0A1S zgAQQA}i;H5wMwr_nWn_6Snzmx*+pLOO*zwd^&~d|ad72ueFNPiPsh z5+>3lyfn|=Rc&IPM#^U^71Ake*0R~tzKnQ18m$4UpdpQVrhOGRkcTw7ZrX#mGrCoy z!_b^U_iFS6&{TR{qnCiD)3X|#0IH`~G@3E}%QTbT(P;7X6wRg*yvA>~)&Lm_5vLHK z#Ts!6b7`$coI*2g(}-=h(2zzKPyZGzrj$mU!r63_pqu@Brtij^<*#UTy`Xm#k~5a2 z)Y_WK%TnrAhX9JzB<|UrHx5no!4RsEzPZ^{|wlS4cd+lwNh9cLY7t*Zw* zBIppEjl3+QQ9%c&RnRf5xmHkGA<5@5I$@y{;`!TE**P!E2}hmm321%{Xr4{Bf>sJT zAXZjTw?o#a(M3pa1tk^In%8L=_rDc%heq80R?xi~aq27R5l6gdwd{jp^CgXVAGd>iH75%)Z3Y}@r9+c{`G8BSyxXIZ^6rpE%DX8?yj!(QmFRAb zly@I;#Cy^a?*)hKRfp^yK?jKEzZFz+zP&_-phH@=z#;1pbQ@$%h}Z3q4JZWJ^^jfV zklkd-Qjm?5#o3=#ZAZ>X5x7=r)YWO^8==L8c5V$xsOKu7_-~ zL$=nEr6Aj8lbuTuLCP=Z(p3)GO@fqP&ZQBD>>)wQFXz&e4%rI|iC@m8HykotK1rMC zoSMQ^I7uPt0q4<7LCP=Z(PD>etsv!>^Jtqx77=tC%HBlh(NzxFO$v!$&ZD~>vPUdg z3h|z{$yU)zTE=7YDtb#Jo()%#x0B1DdcZ0Q2vW1}Dq5+KlxP)g)-padT19;h%{>my z8?@|Rw24)8r=Z*DF_dT(J)mXJ)*S_UT+809dxloivsyOAs6;n?Nuy5VD3JF;&gX3u zHlBgo=Lx!&J`LGATB*_FKpSbj*8C|nFQUsdno|D^-du}l%?s*(NSDwJ8hxbx%k)7y zqR~x2AEKuPZoC3O^$eXJJ2Hz^sED=9q5Du`8TK(R!Mq>M(3-1YP3mEQlp@t5sfYv^sJx* zloFIyGF?7?Pi=k$(|?)C^qLx`56#Zdhb8|yHGv@cTq;_ zq2Hg99Ln2{IbwYDlYoDaB^uz$3wr!iuM1R z^JY$d6zAW;chj#yJ@i}AVUE47#}5Ba;{HMO|3m1n@m}RLI)@tRW|~n^PoEWfm(cr! zenaS^LZ1-&ebCo%2hKOWH9~(V{2~dz2-@SS7fzGV7K>KWFX(C9nEnp8f7iKxN0SuI@gmb)hhHv5@g49c1x zpzfwH!u?H``#arxo9+hvT+{vji`-vtI^yS=`fG%rY-3Jh!Ui>?FU?%96IhF9kHc*4Q@b*~~-alx=yL)pf zR@{tL-jWH;cyDnn!i#7Q!tK-nI)Pfi!EUO!6|ve}?X-@5gZc4NI^WeJoFGkronFia z{jM92ee|X>&EW)`8#P z`W#ib+g%4~1}JlSTw8>4etKQI=p1*-bs@qj7jq7R6LcRI&7(q}bggr@xzZv{!_ETt zap9Aj^~wDgpdPoRCA3}Bqx68gSHdaLObazU9II7myGQaP;a&+J6gncD!xBC!G%cLt z683mGmf<~0f8#d1Y^^~!t>Apu-71`R;q-v>oV!Ojy}~&tbj162^n!at_=kmaRA}1! zBUn2wVNU_4(k^tQfc<$`!bdfI44iZUr+!>G9-rjOx5(AxF?^CM;j|0w0sjI|kMMhi zb5Q7ra7HB7Vd0GWx?CUffWq=o;iM&;hR&xw$Av?METzIrk(Q^B)AbZ4C{kd6^J$ME z(gxwT3+*ZFMQ(c~oDylOkn?#^IERIf7ACkvB2A0b@JlKD;s>EUeonDR_`SkONjL@m zr#%OSGva5xI|AXsC1x#Nq7!}Saq@VU270sjm32v`1?eF4rMS9%NZJvsxbVXgR zXFQ%FPQ6t)twoDmZ+KFmhBqagQG_>nM*ig%$68^vtd zDCWAT7k)#rlul?5_$Zy|^oo88oR_>Q;T#m55ebio=3&tp70#$=9u=K5!qW@V!apuL zo(Y^v!vxMlyU?BqoReM&9~9|fp`*e-D*WR@sf0B>SSGi*yd~Td8zkH=v{z_KbPh`R zsLA_aN5iM;CkKPBjH}*kCbtK4oi5njPr9;!fDYtUY4MD{l|qv z6UF94u_?55BFAl)aL+`J+biLeXpRUyES$7x(j?aLOcD!1dnU1kUJ0i}dQiegg{DP% zT*6c?am&ST<(!iS3AYRF6`B(MK?#qPOSvRGD*U4oJ}#6hSn8<|YZYv{LBg#SQVSC9 zk#Mhs4+OkU(VP+$nZUHCnd*;-0CBSH@g|ESRPWFA%M47OtkZLNCU_3eVzD(0j# zWzMLCM@352qF?QC|GJ<@!ada!+%tTs>Pq)Hpb{71PTxrN?+dnpGKZ#cPK+sBqSh&# zZqJkihih2cTGQa}_oXyt&ZzK5g+phGg)OM9kqtkg7?jtW059Amnq zI9*blE-6lD&5`M>nHE0PF{iaoQmm5{>m)_tkJhm!8O%2f*6cA@GbNl6gEdEmpEg+2 zsAtXAde%%yctpZ!3DXSbx6Y89%wRhsGgyCAIBAhm1KVkBV17>n>yJoyRKhfq#C+10MI=zMjBA_ZfvLaOM_{2ptug1|2G-CgvMW2i^ZJ^d~}p zT-eiei~CG}O6Z8tQK4zjS@;^#E$)^6kvRwHYN4M3<-`Xtx5t87M}(#qiRHyidls{FM8avI#u910LPvzA zg&JpzowGTu5us_J#!}|=2pw60dYr+ov zJnX-5c1f-BeGYsFlqSH&J(YZc=En$2w5%o!y0In>`t`znpjVvvY0ysy{U1W_6Z){w zk?E}Sbx=3Wg>^U1-T1qNU%^{`Zu%qwTk7N zw$7NvRE$$9LQd!4d$e<~CvK&^v%TVfqs2y>t(}dJn#{dyg`{azm_dI1)OK zlA%O$elU>;4ep5SZSIRiXfV+mi$}scsB3Q`85*QbJ3bQXP11%~@2>O1dy>QP5N+HV z4JVts5w#LxJVBj1qp^4>qrLG1 zof)uZ&rl@X8@8Fg1X=EkZjQ%#Ly1I2(F%1&2SV|1GKlP&1#a7sNXCP`$<@I`j-%Rx z$3U3CdBXb|e+<4Mwc!WTw9(63SKY8t&z6a~jz-1_vi% zk- z4$3cUi^qd|H}&UNLB$V+;>o?+PpY*clpKilW$AQ;<7j}W>-K?Qbf?uixK*s#(;JdL zl3goke~4p=rNA9%U%Nwn7LzuF6NABI?|_}x6-sU$vQ(5iyFAd4m*+T9*D=T zNLT{X)f}%Q7D{Y{uUR9nLRMUEvs=PD2a+4m(t+=;v^v<=l??Xo>PFAE>e`ZL zvc-jT=u-P|A{iUBRLyi1yL<0YC|iT1vfHA4W(Av3vO1Y&i?*qXjHnTAEE{?}$re*b zs6QMHjV+ZnnjOo`7(9bvYb>d5;3ro?qu&u42<}Ghn^rBCbw+tKOU8$}yXgVG)0}@K z)f|^`HE^AFMmJ(!(sBAs%lgSm8)K?7b#{akL$O4VhmlOsjG!hJR7fJ(j{a@3vnoVs znL=BfuHkUfilq3RQOUTeEE?I(bbV-Nuy?PBco?LOF?Iwx${@U?V%Su+gfJvWGydb! znLRWi{ZaLj4Z%I#;Xx}qPRNn;yg<2- z=7?*}9m@YXY}yve%bK|@Cx$QpwJ1{-cC@9_vam2a;f1!`acgVNpYo#SuHhY4x~CcE^wbug zq)-bnNXFyvr8Vm+r*cQ&sqsB|Z;6!MiW0MmV=r=^JZ~N1hL?Kr^~I09l5dRN6F;mF5c8*(viF({Wc1ha-I< zS+b&Ygm*@Rywc=snZ`H9Fj)mLRkve0u$aybi%nmKPOZi+$C#Mt8Xm$l8S3L{-EPIE z78{oJsODG>Cr9;K?1aTPYuqNn`UndZS)y!2Ih>x5b?M$*zPZb=l?0QtOvC5LV}tp` zJR(Xm_Bf`Zj%yd?F_%ZnG{Dwv{;|qOrh;is?Zi~;?u|wJGMZ`)uJx=w(0xTruRB5+ z-HbzZn$n#tQ#s;%ZdZ*^<_SzDyRB}9xh9Eac&JZol5JtaJ#gy~XI;&v7Y8H5*jAWK zYvxPv?8FAmWP!C!i=)h1&9|sD7?yf8FP^h9)fe*M=h4cAAM{QI`y2_3aoVR9yS$ zpg3Ej*luFyli4t$FUbBB>qFb|jOLjWOs=F^R@1TpNg_*|`jHJjlcB^wY#4j$aI`lv z+!xy3%L7*^vHc2^czZCqJ!qZrhm;dmjQ9n4d< zQw7PMZr#=rL6~`t4y1y|;I}1s>COHL|1m8q@K1P*e-{a8X+6_Atld`kHYOTqIA zR5O+y;5hA|wg?s!SQv$zY<22k?)hvPlhdFa{`PD$JjmhLsEyY~y=cC%%+bm6RWX8jul!u!z z&RVYw5&qVvP1i)0E*FD$)N%|$R(=wCd&}k1)0D`RtJMn6vXS6zi#muC@ActOQbRQX z;JgtB(X=syCJ~A&9yZqr>XSnkoNV(U9_d|!K7YZv7}#b;Y+-I#>R8a;`y9D!lX_7( zR`(M))H4t3+d0Sz>Ij8LW4`)OC=+6SC-yfxv2iz_>cXVCU0*)nR0=1QQ5=HC<=}{; zC^O)h=O^60LwzV-rdwdqAY-mMb90F_gY&hB`jv-K05~>=?WM_KpNo5isT?oCq(jgv zJna&zo~!`pGvhBa2^-g$j1()A6^6MADx0}hZJEeq+*UBBC1u5NWaBuJQN6@|dLxH4 zT1T}kThnF7S|>6W4TrFp-yY&4nFM0&3}Y`AmlGO&bS(2x+`O%kOmdeP9-@xS0uKz# zST=^`){dAdvsiq(qgP^A1QR0GjUCX`(wu}f2BF0z?V}Jdw+r+Sd1Aw)o>-HH$T8fg zj+8y#D6W}-mP`&LLkqL;q6{{3Xp3U9%vd}$wa5U)t1>lo@`_G{77|kJQ0v63(rd1% znMst_IyPNZ#R@TuEn{HPk_qc}{E2!m5q)kS3Eh8Z3qhbNUuG z-@VGTpr$_+mLqgr2&;Tz`oP5oUoLazl>c@1Y>Z5hJ#Vh#_!bZO-5ut+1$Tg`B zuw<(fUO?d%{Exr8(=j|axL2Qbu-3+ynMeW+yEiq^ad9Ff;qZ3#1;Wv?v~ z!7fAZo;%e}JG4F)lT*AU3kDO`DUA%bY>AW7X9TMH7Bbf!7h?m4Xm$l>3jNCrpp+QB zF{0Tymjrn~t5wxjB@3d(_UgB7nzw}d<;@kGT(K^{m4kNGAKp2PivY|anbQ+fjGW1g z0bwwL`)ZzPa<#@3;L5r$G#HHU%8k<=8`_Hli~-vVF=nF3avv^S^Tin)3Px?$a=HRL z!a!08rF+M85JwEmESb55Luz_Ap1T+QOw2Sy?ByV z??odq8xd|JXbolsKDv{wpuQ@g3qoj4{3{6l*mS?kzLzpbNrjm*Q0% zlPPcRs6D?dAJu+Usbr_WBTxE@=genc9zEvie0FZaWRJQ)W9SYI4oP@TbaxmprLZ@6 z39&ur=q+a@mGP%J7-g0}CI<(SIj_W^*=!xkL^hYQ8BS;q;c!u2veB!>O*kdaI*1v> zPn_^bpV?_Sjargi`+7YjJJd|7;&EACwe?|>s@@LBh}F18U6D{oozuwyt9b^Dw-EPI z1Y4>I>M*%zq27pPqIV{`ua0i@^!G@yLhp#6F@q-EpnK;#)nDN%;Al{MEvtfq21s=wmYzbA* z8NO7TVj>S1XBE8=@8Zb|rn5KVcRG_~p#DSh4C6N#hVc6|Av|#a4j%TVMD>?IFHXCl z83xyYP8^(_pjflxKRW9YNFw;ppicbTA(EiP*oeQD9fg$B*+v^^J)Tt8g_uc5hJe zPvly)`Dsn2gjYa^OX|!=zvO8U{C?Qp1F4x}LQ)(?ozc4YZ-qU^wcMvmPUoJ=mTG^! z(8nd0lxc`UK z5^|2H(#%^Ie8{~4DZ;wyV@y@cSFQAXc!k@Q@-{W(wy50JYR>_e%}m)qN_+6H7uJ}E z{#=vKKT?+yl&>UQWagO4Ib`pRROhsiBcHYr`l_{YU*y(jv)qs?&9TtHe%gV*4ssGZ zO=IcgSgSjk9sDWG#$0)}4QQ2SS`z+Doz$q^E8sP5L2KeMHP@c4{By_F%1)Jc^pdOnLU0{1NQ^fr+cNeP!C@vmSc|UoLt0%F8aUS)Bfa|F&bFoBr^L3$O4P zV34pkLZc(jw`^pfv%oCt8udgEY zK%wDwmEq|ns%Y{0L14u1@spo9OPI5SP5KL<==US8A94Lid%2g8Y5~Z!GQfJD;ei6{ z`F%c4to&T$p_b#7l__DFk61@gX=y1dO=FX8&P91!c^fOcC8y3~G*?bGZE+mr7UJf~m%xStyv6+uuVIGcf%+~ypD_j)c zD6duUWll4v%cpIj_`J+*Pc!yXIE}^Il8JeS-W;F1uz5-I^5&KWixw}NXXs7bxzW%t zwqB8W#%Ao!!oBN4d%I)1LeX=VpWU}$d9Wq4V`=~5#lfZcTcHzORJ>uYb)!I~F7oqY zk&mVcf3bqR>+ya&;a7Vk=kDAxb-RnKmz`LRi=M0Iva7kcMeK*O%BB_IOG;&BWrc-a z1pR0PZdYxsx6n1s!#N2>=k>?u^&uz4_^CA@4i@5%9Q0#;V^)8BetVk=?%6Yc+cy3Q zNteqFQd;UGS4HZ+TAv{gd=1J~Tao&zr_fdE^_72g1mB2);ED3ocNyNzX^P-pG~2Ri z_=>CEVwnr?%%Yplz^?{rsg2tr?Pqg&&h~0dOXr*<6=|`yR}{+By{@76Q}w#Bj;*mM zPbS&uL^FT-I(h;59X2~h81Q8_yBFkXx) z*D|vT0?0ZdA3kwfNarKWCrkAelRI2Jf;Bd+o#SjJy&2JcRNM zmuK4tK3Hq2qz+AIa~Jv4ewC*t&SlxemWA^-;q|N?!T9`^<%_Yp=`f?%vyrEB*Jkw> z$Ns!8#|WBv9wSptBYDp5a=S&D%u3eCgF#x?ex*(hC3O3g<6Rh$#gp6xN)&HPD42*v zOFLrG*{W@B2-S0?=-Vx+wovx<7XH2tm4%)6U}zguabOycum`4d9Gt4gAL3Q+<*$rri8^3`ZqU0bXP-_#0VPN3Kp<%6gOgNd}W@t z)$M5em?N;t&~6n8QMDbGA_hJstyo#QsPuE6reoD3D=gl8YwT))}%IsF&4>fnFUnu+~uL@kXrQP^%bR zDG;R|by4a;>qy=Rv^Ni=hs_oT!>DbFfM5}HioX)6^`$k zXKV=f4g^CHqrKU{n*;NVwn%7CC~UMf8yClL@|jG;cIUIVfYV)QY#zWjRfddqoK5e9 z8dhk=7QQh^7#I|A&Kv5(FH-R0LP{d;EV32K2bZu{PCTWY%CzizAO?r>d{}0EwqtqM z5s7TTxw!h)awsIe5X^scRJuvQpaSx1pVB7=a9vJt)pPvV?hDV{MV4dhJ zo7&OhXRLDgthW~bwxx+id2Oseqh9_Iqlz8!Q8{%%bdZZkIF+<7~m8*u}&Ni@IZ zee+#jy|zDpur}2X>I>>0Jvb4&$juTpYH?tgti~&$o!cpvAX3vmv3Pr za;~dy?nL8=*MMOc^2E1Kd@8&%kEM68(R9%Q>%YY~CFY;>w;kxt;;nDb@3an$yg;WxEhR$ecL zZXDW~vMt2#bu7WZ<@ncv+%Cdzbnwsobl~?!T;e4@v5q5Oe3O&OnR$*qAACM(=Nr}? z(AWz*eR$#yk#2DDZ@aIDY^TI#4-7$rbGj2ZPq;-AuQ+)I{u)y|{>GAlJq`PEA0j=9@itE!H0l1!)6R9gmg>c%iJ`^wznAZFN8I9uVdivu{VRW5w@G1 z<+|mR`Obm8r>t?xoTDwmV~-{Taf{$u<2#2w=n}MMIO;;R_CCl5#h<$ngFl(}#^4eO--?IJWFV>c3U-PT#N?3KRi zzO6(%l}U474fPgByGYTd8f6i+f#PWDw{P{^cQd|4)8}ZrnZowV^+`a``GQ{{0};G< zFLet~0eV?A-3^sNAx#AZqS~pHtHT_ka0O==_>Ky^HSbR5fq$e0y>$m51)!_3sF}ET5VP%P>nz}0@VmqBT$V% zH3HQLR3lK0Ks5r@2>d^az-Q&*S3jE?@O#cWqVc6f>i-yn`Zh%&U)G4ni0rjg-)2yB z3e7N2V1U3{LZ6}<^Z~6ijx*72CTp6E<~HJZK1Ua1OuDwHPYZeV7%2x}oq!hsqu~TU z{Nsif0DOZa-|$WWgBHgGC&py{;+Q6_fnJD$&I;DeGb;7ZXZ@mBdbO0chvhI9u2)d%VVEup%A2gmGxv0ARlV#3E4eh5(22kV0K%*X43 z^8;QZy3tw?Dz@VA$Zn2j?*RLPGP`dmo5O-EEu3&l;r)j}bE)e9!G)<;eOrLu#RkLQ z2HUKiH>-JfIP!@atEJ0`!%oX$Z!K>b^lCy#6C4oQmu4R=TLFjWS&!ER=7#`e?2sLq ze{fbLd@8m6(|)ePK0@5oi5Dlxgd1<(uQMOf?Q30#w!m_Z= zoR==tg(Y)lMOv(gPMe0BW(uv<^BbbI?F1*LUhFf+e3ryRj5*G>SCEIR zGt0w=k~}k&~I+gM^fwDRnzYe$BaLeqlcRgAy zp>P~)9vusE@5FspL^C7y_657Vk~ltk9qpr8gC*0nfq)#78*xWmQ5D#rI8e+KH|^$C zmW*p#E%lZjx5kQZ2E(b;ymq5GY{hQ^()=RkM(^=uJvs|{&ajEdHUB|`O&Q+J5Rqnl z3tBwaCT#@=79e5+4=h`=TGLpqcqatP=~A=kLCC0(*TovS>1)*cbvaiS#SvD&mYMW! zjD_04YX+`Z2ztpPJ#M@k`r*i$t3wy5_-w8C{3veH5O~CSYp;?yWy%e81L$!k`I+N~g)UcoH(bfCP&DrKp_NB2sshJUcidd+K(JMT zy&F93nYC4(?R(e~E%)(zLLUoTui zO5=VS9V_lb=rJ#o*u_@#=d-EINRCh7OkVzpr>d*;2#6pRI8MVQm5L4Z&`=bYMg|gR%g)mjMcP^J^~#vT4|n9F=`gr zF0eyj7vMY^Ha9`T{eTv|YOaQz@c>g^5_llU?Gb^W4*qE{O3wmXw9#5&Su`Nsb`$agT?2tOo(1Kf?5Vky|4c zos6*T-XOOh5z1c*d`94R1YQ7)(wmV@@MylhNiCv;{bXnnjoLfyMN|N^=&$Vk*b#n# zUW?waS6K6CZVmIV1B}uQHSFC8+6bB-an2uwS=oTETZ7W(^Et1CAo6WCrg)CTIEY!R z7wif2&A}OczF=SUv4w&?>tl-r`=O65kr9555yFsLCfIJ(g)?gn>MW1$0SjU;Xcep= z*eqHv*av;=2Ejfi*lgsOqHieH{Jd%c{3o>v@Pb+c_!G4b@HN#A_?+>6!0#FlA|sXg z7k*n&#(W#?8-wpqb#yLx7vK+qN!91TWO`u1*JaCC)Rz7OWC2;QTve&-EIE zEoU&x2TOh5!rV_*^u_3OsqY8KvoBTjHP8=BeJ|r|^=7HB9=TqN4MJP}8Zbv=;qB(H zk)JpESfBYCu)Y$fsTNRLW0W`Rv2ULh?2`JB8Bq)AIUoCqIUB3&qL2NDIaf8(8zpQp zvM-FM0isLl+Q4G9lp1|(6xcFq^RYh*%vBEc_}EVZO{$3w`dB0wQOhYU7-!vDwSw+1 zVeQE2Mm%H?y`nmU^%SRJ!5#=Ff*mSO_X_qf-5Klz_Q?{q9joAt64tBMQtcYn!kh!D zh3@yU9OSN{^CfJ%YNMZ)uwJYmc_fD1$zU(aeH+eyL?>l+Y@{B+9;TOrE>^^72}`R@ zblS&W3ue`IbiRbWS9Q>vKK8rdNp%A`d~m`DzYD%!-AFrptj0Q}Hq*FZdc2$Ie!(7E zFyDGu-AvE;oJ*}w0K2nAYguZ23iaW4f@!&}=-^7husy`^I)Pn)2JM#ia{_-YP?=2s zuIy~wMs=*9XrAXq+ts&k3YSOEh|VX4!Ws;ER@&zUzH}MX^gx6)XsI@|4br2R+a_um z^SmycOjlIyt!$gL*}ghXErkjz{94;3X*0zj-PU7W&ZE6!drZ2khDX#C_K_+43>-i; zv9YFWum;!A=dt?M(2ud|)=(o>4a3ENw+lQa@b88G5?0X~x(2J~tMs_)r*8^;LEwu5 zFA4maz+VacE#Q+X0$7i?OiPWYR02o6v#3N|4Lj)0PzO#L>CpGVGa344)k%fWMeGY) z9ovc5Uqmrao%(v{6}3=lJwFbS(Lt{Ye2aUDD{T{c`>B&!!W)bx8Sydd4(~HgQeU`3 zJw|th3G^f3*{WSV5Wd}bj82CSf$~Urv1+0(gd>2Dgy#ZY63XiWXGgepER959+f9*- z(W&l?HjHEgnIc2;DmV6YwKa4zToK!DIJ_q{0MZO5g z?Z#xlp2gQsVp&jn(Wm zFDZ^mEA^9Ww$cY_GSEtQ&=Itc(7k}i>0O|_k5Yg+`jq)TTC5fspAz_WfzQzE^q=Zw zX`70BKd-*5zN(&8-%{t*t14hbjhHddSZQ2i+-P(f+l*U{J|ks3Vf>@qVsQwEOM^i|`1 zfWI|93AoHWC-55rUl8~sfjMHY_lZ zseB%ri@SkmQ$CF?0%qWR&1aCMSVIOi;mJzTazF!Fy9AQAK(kFdq1mQg&}`$Ub`ik6 z&}`$3&MR;~G~09#nr*rrnga!1-yDZ@9ERdrF4d9f{q-7G{!@4*mrcKs&Z#s9)sk0# zrR*7@P35}{m2v8*Ha&t-xmp;A4|8*bI6fR5lxV(g?Dd8x((X-^cXRo56Zup+l~1|3 z*5P!T#&SbmHk}%z{$shkJ4U+)-|Y_NsoTrsvtD`t0&bRe?aQR{t&Hp|3j6%6-CjBk zfs~iYQDSRmV$97Z^Io>7pn_8D9Zb8$-m)-tP2}@lrh>3DIq0S<@B#e5vdf#Spmcj< zgWgoqHZMEo+nkwTo7q|4d^Vl9bL&wzlkZ98#*_J>QFy005eBz4m4Um5lS6LK7wQI; zL||tMp~!%}*Bd%gQq%8EWQSZzusSc7WZwqdvGKibPCB-wgpkX3=5lT}FT;0Dq|(FC z!#cL5GTdw(;*jYXXgvU$cTcXBeaRIgMMHW*iuW81O2BfI<~ZdrwUhZlZxV(NaaeLR z;^q(evq-s$b^>832XP9YM)XYRwoHO<`tipATC)tI-SUUoI*AbFXyDkmOH(>>omsa( zpBy^k4(~@4QbWmf`WS6@^Q^PzVa`v19QlKm2b77WG-gIp4VLKyBc2Komj*{u8s)^1$?Ts<`#qNq?37U1faIaU(wt;IpmJ> za=h|L;6~o1a-$fjvMsi{xrucC%Ch2PNqQ=FMN9om*CS3rt|+oEGn&i{r`_SQKQoY6 z*Y1h@_{8tA_-c5>k76*VAgB?eq!+g<8PLZB0j!u3IYclc>mG@S&_N55Ad%bU@x1Gv z?oq7xNM~JYIJ)S0dzr7dv~CN3b3y^Ao66+%EF+ z{Bpb4=cB9!MMtU*m!M+l+3Ozmi@7Y|vBC5)tnI_8kqH!aXXG1e|V8MQ8>*p~IisMj4Ebh8{ffA2Yre_!F=<7JQd3vXKq_xFu$ zN$g!2Fy)YY=S{qK+8*>jpogzl>g#7 z&jM$Aah)V~6Xx4Z%2v{w%%l!OeR0qCdpIyV-OLEeMb|N`n7wXtn8VuxV|n2n6E{m3 zii}T}yy%AZyj!9nPHAkRG9))~pmXU!miHS*k<@7yZK!9IPXnk;dLlq(Q%VT-V#!e2 zg()l@YM5o$zMVTYZ$%~3Aud+6>G_G{UnZB&CUI`ck*F;bG(O-_f+LeY>Q;0Oj3)J- zy(5`JFH#eyM>eKn{Nk~L&lFPUWbGXGtDJ1YetXQ#k9vA>`V|aIj7bto1cgIAtVw*_ z7{cJZp>EZ+myfRO{|;0LD$xW>l+Zp8KFZ0VD5NQvv3EP;)|G4?1-g<%S`L zGY5JyXfbDTge1Np$cTj2RHW;X>Cga;%4kJRQ~Mq09EHXSSjl!5EgJ;wsL16@@-ymR z)eA1>@kG98-C@z00qvd8N{jn3LJE8?-h6Y5M{^M!eEHHefEH4jy2bYyI1u93e!lzM zPam7J{n4>gfAsL$fA}?ppL*||`xkDw_<``l=RdLZsW)!9$8<;q9i?JROiMmy(7<2;gGL7E#Y4O07%CcTVm(WuphTmAI12&HVbH)}0fR;c4%9~Q zX$nCuwkp;HBO39+SD(0Bu~lLa!x*chSR@$dCKJ{~xebW+I%xx<-7alFv^Po{kp1dl z1syzW2UKqsnueW0HajeotpXDQdksrGiZw+;j;U~q!ni1mi{c9o726}Q2@jIo7ban; z+XwBp;d7ToDz+KH;9Db}G-G?f1?JeEM%+{^q5Bfj2PDcb^q?iSCmP#ha3c|oB@8ys zFajYs&K|7d)*J>63>GkGWZ>YT)WF`$qSa3dTE z1*6d=(eRQ+Go+&U@ZE^u1%jOZ$qoe|BT}qB5`xK1b%l>IvWCGr2JH+sGLZOo2CP`& z;}OSzcXMNfN4W#Rq*&pxFo=aG*i8qz9W%Tn7!C&rIl{pxd;u}WEYuaA=2&xI4Gbte zu_PFc70!WAanP4UF_~0X_y(L+jg0}K*j#vAx6cY02zEkLy}%Jwjj_V_W#ktFj%o}u z!yYg=n73FH+qD^V)u;tG<1Ij}a0%8yaWo2Bn5}Rr1SydBXlYD1JoyRhD7+f24F$o& ze+aCM^eZMMxot?YLb(!gMT%ebg(Vxvz_A|cJztY z%Z?Bg&M7MVP3d^&#Jkrx>)YDauLJ0Cx<`|E9pO5Co|neIEVXCm+u+>7hau-ctFz0! z=SV7hq{Zn?4UHzK$DcXTFwZ9MLJrw?cJ)VR}) zy=(+*o$0i*mrtKL2m6zoJ?aj(;yYMHLGc7%d8|GVNCU zoh}g`(z8A3bT9T${W8XN<;4sOyuFH?Ez=~cXf*=W2vj3*H4)(74aje_3RAi9jU5PW zsKwLijPJnb;N3*eVG}A|&jmK1xgXy{90J^mH{<=3pxt;|ehBwnv<+>(o({bB-&_g# zJ#;!ADc$j_JGoe;;kS#o9yAoRCUNfDCTBn#rg3)Vvm#$B@n)NUDU$_91}DNa?s@R> zNm^f@4aC8sU=yFL`P@4)gQkG+w83xvw*jYG!~ow7@HZRX&^LxZ7t(n?e@f}zfVcg{ zzHu4<7`#miACJ9@_JN;Iu&t2KVqBsY(O2}OM^3RrV%PW-yB+XekMB-Y$=3b;*|+T5 zdg$GVPX|8ju=ZN~3I$s&=7@iN!BOI~Gu~mtCcNk_S;ka8JFk=H2R>J`jVYnF;*6cf zA72luv(U2>^byg(Q5dIVV(kb{@BIDE5e%iq+C;2Ajf1_^$o^O7xxmx?$O8%~gwmyujBRno6bDpLUPpyqdW{dU;jU&o_ z?1d#ce6sR1H4I(?*YYWIp);PJhsGqHMM=ki)Ng)y(&tc>oKk=5cvC?LI9VIzGm3MmPUn%dm zh-@dk=ID)K1*eg%4yuQKYAmjtE6Ky9>Q#+EH3HQLR3lK0Ks5r@2vj3bjldsH1h(k^ vGwwY8X8i8sAsu8G0pc;Wc%n1As2(J0k diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/timing-tests.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-1.1/tests/timing-tests.dll deleted file mode 100644 index bf1ae70e0b0ae35c58875b46690574e8e366ad7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6656 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 TGk}8T--=%6!oJx4?=tW|sOZ$# diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/fit.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/fit.dll deleted file mode 100644 index 40bbef0e292de5f8c0d5f291bdcb6d48dd00cac4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49152 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 diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/log4net.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/log4net.dll.REMOVED.git-id deleted file mode 100644 index d795cca736..0000000000 --- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/log4net.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -20a2e1c47dea6ee52dc38cfd4eee0cfde7894faa \ No newline at end of file diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit-console-runner.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit-console-runner.dll deleted file mode 100644 index a18299ede1cf0c1493ea6071c0d73230b0f0baeb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 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 diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit-gui-runner.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit-gui-runner.dll.REMOVED.git-id deleted file mode 100644 index 7bc1d63aba..0000000000 --- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit-gui-runner.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -ec364fa979b053139b43ced7bbee75879607a99a \ No newline at end of file diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.core.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.core.dll.REMOVED.git-id deleted file mode 100644 index a5c18c9373..0000000000 --- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.core.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -5e9fcc037e7bad10a1afcaa0ce5a179d135b4413 \ No newline at end of file diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.core.interfaces.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.core.interfaces.dll deleted file mode 100644 index 3152dd2f082dea8551e6e3dbb25e9df04b17ad41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57344 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 diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.fixtures.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.fixtures.dll deleted file mode 100644 index 0b19937293ac9f3234fafe86973f0971b26d269a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9728 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 W6MLbd@yENL*6p*O*j#)91OH#INK*p< diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.uiexception.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.uiexception.dll deleted file mode 100644 index 66b4b95491af1f7cf595ed2493830ba65c46b533..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90112 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 z 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

`g;H>*+PY}bCE>8FJVw+di_&47IDuQe_5MXy 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 C5R*y( diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.uikit.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.uikit.dll.REMOVED.git-id deleted file mode 100644 index eadcdc45ab..0000000000 --- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.uikit.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -adc5ead69d0593226d80b7220e65d3d435133a74 \ No newline at end of file diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.util.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.util.dll.REMOVED.git-id deleted file mode 100644 index a72921edd8..0000000000 --- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/lib/nunit.util.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -b31beef4192f37a66e51642a372cd7cfacf60f17 \ No newline at end of file diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit-agent-x86.exe b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit-agent-x86.exe deleted file mode 100644 index 00b331cb296692bbc3fc3e8d18fbf68bc0a79967..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7680 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 diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit-agent.exe b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit-agent.exe deleted file mode 100644 index 8729148a8f856f9240e0fe07b1fcd3006cfb9583..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7680 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 SmLc*JH8sGOGZA0TsQ&|hs?;L@ diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit-console-x86.exe b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit-console-x86.exe deleted file mode 100644 index 48f726ff77ebf2f5bf480215b0695a1e60d80dae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4608 zcmeHKOKcoP5Uutv>jYZ~KP3V}8$;p*d$id&iLFGi>vcX3v17a&o3E1by1gDeJG1nR zW19mq2au2u;($Qn$_2y$Bq9Px2#E_wB!Vjv2X1fx0TL&K2(N0^*)?{ea6&?~w`;1p zs;ggB*G#uZAA5zGiKqqr$`zsy@#K~jdVR72b?4n5chZIS%UvI;Qz@=%z;b zMtOY|y39yHKG87OiOo_B`PDWM=p@b>Zb;HJ(K*LPwggGAWx=rhX7q-Z1$xICKZK!R zJqIQGLgs1K>Ht?&D`hhVeWBd4=Z=`QbEVZkVo)-_}I!Ec~wa)9n%$0gR*wdO^eTmKx9K zc$^cRAZ??EXc(yv=}FL+guW^CGoe2SRf@HD3OyurTWGd50UnvZt&^LWc z0|y4n%_RTjP2H|vM7`m9%8uFUQ{fHvaUhKR)=9QWu|jVsc0ScQ4|NN!`^6Gu5J%>SU5? z;c7~~_VpV(FaCCNv3Zk9wMu>6tf)gur>|Bz_<$(dl5q|=gU-J6{{8`?U5dKIM&m4V zb-cO{I-J!>*@d=@56wr4R^HEtwXM)S`8_(5PG|Z+26cYUMJXCR9-?@ij?Ej}_3M*v z#YB3_(PL(D-m~+)deke;xyILdM;8~vUY+w%_MXl;dNQ~go-h%%*33BgswrxfNN{{BYHtWCrE2HxPW}oNn{J=7ZgngSjxLpq zyd2oVa4|wI&(+Qi-kfKd*UYVNtLIByb2cB^qf16!OL=9Dab|q}?&Ah>AL*=c|C4_s z14_=*?a3{w0YGv>r8gL7BfdL4k|nx?^LMpfYUu|%iL>D>=uw<91)L$LX$)O;{CK!C82Aim7Uwg!dx?P*p>;7D zLGMxwyAV>+-fQWFi2|k=RvyO78+b~IO&X_O^4Cw(;E4L=RL;X+g{rc~G9q#z8F4>G zXW-F;ZwEFOz8P~T)>}n849f_oEw5c&gRMTd4`(bRjzBp=q5<5P>OLkhW}&UemBD%k z&&N_)wY`YIPXW6|tcDh89{w$8FGfbemt=oYIQnt?6B>Yg=w zkyQK)^cBhHJZ5mK*OZ1&_U58<<-71yx7LVh7Mi+!y?%>QL#Hu^k@6eEHMCmKEG5rEX3{j#WyeOggqir31;YH>(3@Ho-aFR#AsEHi%OJ8Y zgx=h;M8nN<#xHYT(b%^ZYNx6u`WAUmn4`0`|I~J+mG}VJhpDBv6V7gXhPE8)Zt3j; zerULGdRU3}#Mgz4lXi}zk7bUrnRfC4uS2-!D$;@&Qs_N}*m^-ZVvb%EDwjpi*#f13 zbBH~s&W@bGn8kdBWrzK68gp(CSEn9rp$?w>p$2Go5*wUhnskT|&$pv9&YfwTXvR4W zrzi_JPZt2+6Znb1n*x6p_?N&vig^YEjtab{jM_q<3j9%Jq4l=v5xt4_Bp*BIaq2+^ zcs8M#{1J_d2XiuecTWM)vR{gRRu5Bw9-+Mg_X#{G@UXxkfjNOA0$&w)0dOz5fIG+& z_@>zC5L{D8YVY7r@8hJTp6CLbYST(}F-Wy>6{SA<;p6TvZk=9i z-KtXUQdc__bxPUv*UJVU4n^BD&JkzGIh-CCe3s~dqJ6@nafi7&Ufly7&g!J(LR-cM z<|{=jpXbB+Ht62`L7hpbGyMQVIzQ*442_-$xoA7LZO%8SPrDTp>2r=AH;eP0o$u3Q zUTMxXzRo+kxES{7oR5{qDj7K#*urozLN3qO?+f0X zfN{;(#t@{Pm|6H_5l1JGN9x>-IKhcnjA`QsPrc5 z%*1bp^I4)BxPMpMjkZCcQ@9&00iL8uU?X$}x6LJtNo;?hu0zKt@Ulp=Z&g~B2+A}E%_RP=U(?i!)r0s* zWF(6j>aSx%Sj$6>_s~ZS2J;E%Ok#DY6FJ^!$fA%D8Q2NCdd$bm+Th8FQ^^I&D3 z`mizvyd-uF?6MEcR|Hom^ql0HWA?C~6Y3Ob7M=6QyRm@Pd-E^77H>tq@Pjy;Gw?U~ C-d7d? diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit-x86.exe b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit-x86.exe deleted file mode 100644 index f7913681e78aae127f225e447aac88f00bb49ace..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5632 zcmeHLPi!1l8UJQ&r)!5;uKGub0Otj_l~e4|X5*wWRAo176P(75>)klwZ#~|9UJss~ zS!QNqyArS$kdQc(OChM0IikI|Qd2b`A$;Ug32}fPd(5pIdLRa|{Jw8?z2o&J(25>F zefIm__y2wGd*7S)?D=oJN_|AskKSw&-Nnc)BkRsh<+@&|R<-hLuCiS?b+E;Z z4=V>D#JT?-S5f$F#U$vjwF!)7sJB9lrDFgJo!8om8<;djv|{>!Uj!wwWq=H|I)--3 zAbQi+jt50a*9s);>v8m0%Me|Tk%DG8uV@@wf(EFnh<-6ZQWFLdNB5E1V<|&ofbFA{ z7(ao4hrUS1o*hk$4+DSpa{lUNgCIrYSZ}4xlzAcbT>3fY43GnO2ja0GAT3zKhm7Y# z-*(FZYdnrZmJH1j*L!8|UdsFu+GJ zk|M|t=;JM%<;>?~GtOz4rZnKU=|#X-1pZ9mn*#qV@B@KE2J1X6@CAXJ#!cfG{aoPh zjWoR8Gfs=&$UEo5z)DWiX=H%$MaAORC?gT93-#lZv(Sm+{gd%1&0>2`2|Oe4tiW>u zrv+vO&Ix=;;MW09kp(zHw!rVn9D{-@D$*#Kbe@&~AES$apQRMw7-a#E3;t!=2A&h? zi!^1JI6pbSZ{i$JP=7tDqd{`UN!r_3WR%T_Ht4J%Ty1TwG5SlC3Zm!dy;9B5FOXYv z?QnAI(nV8mY05cP5S*ih8(^AOYBp7ZqUSsID&@C>P*>>s>UVW9qS`gWCh*$}n0S_}1ouwaLdKFZE{?wVb$`BrbMId{$TDiwVKR3tw?3^k)) z8OAV!WItC-^0hzya`c@KuWt4|Vk8HohK39pkTSu?!Jy-5^MW~To=csdxo{tO>mpD~I>1Kil8Nt{L4&cCBn|mm5{>d_rI2{?rf*djJa=}hsHOg~ zTi#}1P^xtg@J1{!t{6Mo+V@3A@^a4eXScK*JUNtFn<5odhxVEl?mqjza+TH*3r#ei3feE6~P=F#x!(i(Xp ze~LJe0;CqW0pu2i(DOh=?alswAn^ub3ZZ3#U+&@QJ<&R# z%(0CXS)jDIU!WWCXv4P&9Us2g<{0K{M>_+}0Ivm}yLu?LjxEt8yzn|U%dqib)mcXx z{x6_Uqn|@$=P?UD()2uDXNF`X6dM<@Ik5;`shI)Pk%6n|5& zzuL-m0Q@FmS6G{-P1=BeA8-PkdEiBvS7RoQf%OW|@aKk2A{aSVANLx{p~km7t5aI8Io6 zFQSSrL0*x3ZoqbVI%uKw{rJ{%&)RT0Q#W*6Rce9X~+!_VzF`2Y>kEm;V7E10eq|pvmA9ZkXet zt$_vwfZJ${wCMXx@3iRsMuUZ-unTpjcbd)nY``>(9!5j`ki462H1^|ih`Z?BLv*9j zO*i*BSPmKSz`TpzMZkzsT4NXHaatA}lOLtA!UH*^FpnVnV=RK4hoiJGKL+@O%i_R2 z*E!d*LT}f39eBI_x9WVYt97RYSwso$H21N6_nY@)W1~gyMkDs`_Rj5{eT?jbOC`#D vx5vYDdp#e2G;sWt8j&pV%O^o2BN4^#9)73wY%2Oc%*w@{(odQH=Nb4HPN7`$ diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit.exe b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit.exe deleted file mode 100644 index 7718d8d356f4dfabd569ab0ecc96dc91bb6de973..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5632 zcmeHLUuaxe8UOC&kCSv8vTS#;RO`v6mFb#Zrqgu0(Pf>F@>b_U?t(vM>uIq(rSu4NcD%(|;u9Z~HThZpxqob$Vt_yQSSB(LB@5SUoXSPR_ zFpd~WBK*>G5qI&+7!`UJoq@uTh~fq&@$*Pcbnv+)DEnigary0zZ8B0Jg5Nh8&k{Wv z=`dsC&HWH!%x6GV6n;lD3HqBI0;3t~%@AXG7(k)(THA30lctDnnttF{KuK&_AfxS$ zq0_R6-t@KOK~d6m6B71y3_aGeM6)qc&@|^2jblsD5Y-jYogpFvG&)E3vDyo1Lt=pK z^OQ&(MZlw9q2X6fCQ@U-UzsgknKi_F6zi>wnKmz^FJ>Mm@fHj^&p>nDwub1c;aO^HkUcNqm3F9fy4(rc4-ZE%zaA912F+sAmyT*BXDOwwX zkrY8L(J+0ajl+e=IN6MI8ZM9t_!eCTye05w0)Hj&uLA!raM)m-34vb~7#JmEnBEb1 z-!S3zk#R!&M&3Ce23B&6P9Ot}7Zi)%rPn2bHKBg;`5bhjc>iQPPdVrx7dRpCjKFgO zX9VU1&I|mOz_$R8lLa_Vw!rVp93z4&s?bTS^E?#+U!Ye3Pf!|g5^@vyVf<^f1(+A< zn>3B}lqe7Q9h~DS8f->&G(t{_r2PhqCaIrh+bdtRvM0egWQH| zho;`tly|HkI7f@unQ^&cQ!S`?zGE*_X)6eIjjki@V9+ zL%a!^{C&L{y{cjhO301A3H|`McMi#MAb&*kejh#`)rWof?EG&G4m3H~^x**>6A}Mk zPvE2Y>3zH_Ka72L?qD&g$V{vr%oDvFv&YAkZsYyXX}1TbfiB_O_BP-gzKA87r)#tb zdLHl_z`6Zl@E`x?c!rP>CpEG^eqE%|yEHbfaQUrbz^g?*{MdN&X!vw#l{}H3A`YYs zsReETxkVxLJWx^l_25THyn&cPXxZRb`*`}J=%n%0j((niZ7X!Gjoc&TuNRa%25!keX+ zrzi#P8B&yy9A)Ti8=Ci2QnZpFV4R>HYO);HQ9j zxf*#-d1kIZ&R*n=XXc2C!sCqcI*N!SK=(1LrWNSo4UUr)-;1b{S0JxRKG$Kvty?P! zKG~av&J}IJQ&(GIO{LP-?pHHYQqu+4dYG?)yoa$W zi^qp&snqg8-QJ3RQaxwIHis2*rfN8a4l0xP?cj-cl0D}tg|5)E=!V=6Kw|eB-_zWq z){Ji0W|M%S;|IvYhYv9_2Y=|}m;d0G0g(Up-(&D8H_Y+W)UP~ zp4OWZWDzB}y|;_)d%X8JHn!UIPBdcw?rz`R-o?m1xKyId_j)`?ch>XCM+3)Ssd32? hzjP8bJ|0p0&f$02Gc^_cAExl?GiiUO^naFt{{R(iQ`-Ol diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit.framework.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit.framework.dll.REMOVED.git-id deleted file mode 100644 index 0705485350..0000000000 --- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/nunit.framework.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -875e0984208d52e5c96a409b52996547198af17a \ No newline at end of file diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/pnunit-agent.exe b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/pnunit-agent.exe deleted file mode 100644 index 31a03d80f6b0ec76332a09e0a408f2f40af82485..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13824 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 TGk}8T--=%6!oJx4?=tW|sOZ$# diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/pnunit.tests.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/pnunit.tests.dll deleted file mode 100644 index e3985d65a814e5090f48c2f4afca11e6d98f5272..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4608 zcmeHKU2Ggz75-+taW)RMohD6_R@h@XrA`WqohC#UQCR;bPW@N!#wow`?Cy9oWOinI zXEuouLPpSvsvxzBREa*IRDI&15+I~jk@|)NJVZh~A%sMQ0QI2=33vb=2;VugYp>%i zw69g~dcHaT_uO;uoqN6Tg%{BUAj9YGUEoc=rR5d>H*8YfJ9xVnKizj{=uK<>&QS4+ zA3JpuRgGJ7%5E4&iBs|%(+C|ubf%XIPA#f$^T0bz zzosgEtpOj~A$XsR18@XeEld8w76;@K??yuY*ggVvI@Wvor+6)AVpFDCbIX&EiMl5t zit{<+1rZHZwMH9>#i6&iJTTeLD=l?pliY0V!Pz0;J9`03r5_v)j@sByH~Jrd-St#Y z_x{JQ_r!ob(#J8LxQM}ngMAN;P~AOpzl{0>=ZQXZt*%B6QfjELM~6h8@&|-}KzOJB zQDEfown|MO6#lUJG|fhi2+gpa;x28)>D^Ix4XqY>(R-3FA)|E>2p_N=egbV*Icgi$y=z_B(tJUn=0Aq-DB>&tICG z<~z$d*c5&;h)R4*V<_wV12$yI;NRBcU=^4!SQp*HvQ=mUCatkVCl9-2>uF}%jTxNd zw%SBU{J!E(6z?ehS@EvoLzdW_R$Nr9Dn6(9n&NM*+g3Nzxo!1e&K|dW@D;^?*oz<7 z-?O{%8~f+Pf7$0W6Uj+3lV3j`#vp6e;y%^ny0Gks)ytUI%&W>hcVw9!U5HW+tIB=5 z$*n2(yCzpvZfpo_EkEh?5thitqxJzT;}B~lI7B>(<4TVyjw?{HSI{RD4)*O7RKBg5nny%ZgX|MO(uQ7(*G~B5o>uOK}*P&2&}V>bqHCY1ocv zMN(SO!f9pXd$13|h%h5KE=!9#uIauPo1R}+naFW=A*wV2?;Pr3BlHt~-{K_BRe}Ih zwK|IA=KYd!jqk$GtV^Kpcsvfqu`lq zp21Y$dtuVF&#idt0Ui7(#6%o>wNkM0gtxKi*1U;?+pN?`ymrN`A9PSmdx5)A@T=i& zpH zHjFES->shZ;LI=j)r+@8Oe4qi>eN4vpYeNhYmZveymsd6Fn+}T zfbxZ3zLJ@koVxke`-eXw`^MM4w0iW^+t2TToy}&u99S90vU&w^6 zD+6!*19a{6Qvs3f*RAi=uV8Qjn^n>Ji`q>hzyN|%h?==5Vb8;T@ zJV>t|Z6lQl07g5=#YpasPvwE{Zl4CEPf@yx0-h$yZYXe9EMbxS9C4Pkw6`*U{ZD$T zSh!ia#Yuy_El}-~aMwPuZ+uSd6T%GG&pVE%$CAmngOKHp<;c`d#)P|}D zew2Ba1G1P?LMxy0YKKU_P@7SXJN=#F=ZiJKCwYIcw(O_5S7M&D5~seSABVPi^tIWp z>VAydav9_KKFa4*vyU83^7K7JUN4cD<~7=4#bocxUJf~yfc0}xBhM=;C9?B<>T_x% zyEZ0Wp`F}7`f62JxcA@Zw2ph3 zu_9*DV0{wKn2cb1^#5<{7c|BMJ>)x9WAy`O?R?-k9NI_iy(-|O|1&z{?`80j{KH&< F{{qlOZ^r-t diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/runFile.exe b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/runFile.exe deleted file mode 100644 index a794458669630af28c2158e457ac00acb6b06fda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3072 zcmeHIO=w(I6#m}i$24hUrL|OP@z$gme|Suoh^0t6olFu_5)(2tNF8YA=XLVzoA-wI z-o!*jW+9?G5iBk$f(zF!gcgf?LAtBpvPc&dMAva){La1anQ2;#TZ=b2_nyCd&v(u} z_sznEkI@65m$bbNT<0nyujhZBIy4VI_3bde*?05Ab!-0SiSui2q*`In2rErhtN4Bp ztE!{Iwy#`Y6&FjY8Ppy7z=6Th+V}4T&XLR)PIw-&Me|MD?#0`VVwD z4p4rjOSWTYBc@!Gn6&8x65N#ZP{67kMq!PT#+D}|7nRh6oE~|iw?oGZ=qOmRN|Lh% zNnIlk6uLyssu80RY_jE!B5pDkdD5;(RPHejWiti?{UV;zp9we*K6fZ<;gMu-W~@h4 zT1xL-V$YL4QzQz@rDADoasBk@wac>~-ncvb>09Glf@$h>nf>*qQ;VbWB{wd+%~rV{ z#J&@kgLd3%$K`6<_3CA|+>GlvcB@`Rp>(cb>5NQ$*2nFvoqH+!BF~e8u5!Lh8hMX* z#2_8vOL6G>jfgD1r;c5Ok=fVgid=u9oE5p?1y!yxsIq1s2lk2Zhn16JQm1Pwxe1BP z%=MbuEk-{{Tc75al$fs|r+2Pt>4T%E=wo86<1w7VaUyvK zBb>!zV+hZpw}V~7r)(7{#pY1l>x&VN7ZrrmC5ueG4wM>mh*7Z>ynNwyb|vIk-iCIxi}SsOhsp+b8sBH?s+uMVf!Rh{{930 zvl{6%;HY^5U0IkOVb6EElw?hh%D3b7Ja9`IFd4Tp6XaGS`KE#Mv{tB%Xs;lq zUqH!>uX`tm)gq>tUM}^G2b^?J`(*jn&EEv7`rRMnOS3S=^P2o~xI1PP=yn?IvbA*l zO=erseiB=eUeG=%@*+=&P}4YC_uv%YEPq9;zp<^*H>CGYE?K_q9Rgqbe)>x_V(sfQ zw%3IqM4PrWwoRW65-_GQ&698F9g`qYSGcP%G$eeU(yU8SA+NUfwsQq!|U8fn~BqT1xm Y?6r?uAHJc?Z(=_8@TK;DMtfJ_FVQj;bN~PV diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/loadtest-assembly.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/loadtest-assembly.dll deleted file mode 100644 index 157cc43aafd5ce7adf74a8b3343763e0a89308c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40960 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 N>)7W#C7-A9{|CuI1H}LU diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nonamespace-assembly.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nonamespace-assembly.dll deleted file mode 100644 index b12afd4a5d6fd5308ee4e29b64e34a3447af6454..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4608 zcmeHKO>7)R7JfY$JGO&O0#OuSvgJ5{6P(s$Y$rJU&19S(o7frbiM`oHO4>8!apRuu zQFV`hcG1e0MM6RdB*cLeT=upSf=K)bBo0WNkdQcV;lKfj3y3{%S|PIEd)@Qn#96T% zqpfkhe*f>)tJhWS*+0EXdx$8FdFvL@2YB+x3H*9H$%hnz``s3c&X0&f9HMGy_ zA;O`IuO zj~hhyb<)2TSFO~=q6hS)4qH3Yn-S=#y#SEOI+MIX$xuW$Y!jL?D9J4cq#Lsjvt#6t zy=}A?Kv8nN0U`Us(mO|v=v*hwxZ=8EaBeB;qHRUwA%?}w-!b~=MEvIuZo^0VOXQIn zK~{Yu{Q%n_(UHx5@C;1^Ny+FM0Ul)#)ibe+IpYB!2XYgTTEO^N$LATwr9CtZsT8u#djC zz6SgSu$vB~*v}!r0V<}>bLb=nSH!|vhQa9){4_m_3{KM$^;1!?=8IH;hD8er^}JAv z2~`)W5mSfPg}NrxYlr(%qp&+b>vWI?1r7;3F7TAVNr8ER(}07B&t9$xbOgFIlFHB) zT~D1sJz1*g&-4h{^dKr^Bl{BIqx4t6XXu(`(>{6<_!ylAUZ5i2{E!K}m69+{nS{2qQ zfmwlLWS67BB!>39Uh!b*27b$|5cn%@wP76Q<|DNBawF0$@wC4Zn3@P3Z&90YSFO7W zO2(<^nq$`P^jrw)TgI)fMt6#e28Al`A}9p4y5n!PE#iXM^9?_8YuaYH>uIx~&AMCG zA;kVgSs2`3JT9?(g&0;A21zofmoHf+}9NGssrP|~Br zqYr-i`aj;j_{r$mkFW3l*IU%{{$HM39321lrBruMs(S!xR$5us0E3>MH@N(B)bcgTTWr-M72mxSHX2L@n8BPH(Ka zW^Gi>y5&_zd#Yfo(nc_<@}Az*uFBhLF))E2g~9r6{xTdltBR}G_qr+=$E`vw?|EvT z8#7e%Iz%VwijDKvqApnp4rhycI~LVrC0_|g_|z<=4lNm{J{S1sH_N)tZ&hj41RJ4s zFuCh^Q*6c+V|R|`ofu25W3Q(?Z`N`B_#Dt$jtZ9EdWcjmR=X!4-#J8w83Ma?TH|lQoQp|fDsQCY!oczCauP^rh>$|-I{{f(_ BhWY>i diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit-console.tests.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit-console.tests.dll deleted file mode 100644 index 72d86ac27d54217955ccb47c852b37424c3077ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24576 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 bY6#R2s3A~8poTyVff@oe1ZoKUZX)o1@Y(yn diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit-gui.tests.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit-gui.tests.dll deleted file mode 100644 index 5be825329cd68d6ecc4186e54b8145d40d6c4df0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8704 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 diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.core.tests.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.core.tests.dll.REMOVED.git-id deleted file mode 100644 index 4379b4cd64..0000000000 --- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.core.tests.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -897b061afc4d913141127d4c94954810d16e1a89 \ No newline at end of file diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.fixtures.tests.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.fixtures.tests.dll deleted file mode 100644 index 22ba0683736d2fd83f5137c5e4cc0d0a4753a96c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 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 b$|L2U{0lEM{%(IJa{hkugZ?zaQU?ADn>bxG diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.framework.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.framework.dll.REMOVED.git-id deleted file mode 100644 index 0705485350..0000000000 --- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.framework.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -875e0984208d52e5c96a409b52996547198af17a \ No newline at end of file diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.framework.tests.dll.REMOVED.git-id b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.framework.tests.dll.REMOVED.git-id deleted file mode 100644 index b15ad7631c..0000000000 --- a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.framework.tests.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -28dc3ab581edb6a85d032f3a7138be5565fbd817 \ No newline at end of file diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.mocks.tests.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/nunit.mocks.tests.dll deleted file mode 100644 index 09a0b17a74e6965267ffc70cea405da4e2aee517..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24576 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 diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/test-utilities.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/test-utilities.dll deleted file mode 100644 index 553750b4920d390695f049333076c40209c07b9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24576 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 Ofm#G=5%|lD!2biQ@mdN1 diff --git a/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/timing-tests.dll b/external/Lucene.Net/lib/NUnit.org/NUnit/2.5.9/bin/net-2.0/tests/timing-tests.dll deleted file mode 100644 index fc2711bb7e913a6d46d4bd8a42096beef26291d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6656 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 z 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®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 ZvwEWVlapiWH|}MSPcHi(`2Y7B_&-3wzLo$0 diff --git a/external/Lucene.Net/lib/Spatial4n/NET35/Spatial4n.Core.dll b/external/Lucene.Net/lib/Spatial4n/NET35/Spatial4n.Core.dll deleted file mode 100644 index a0761b73b727571622b021a0b1e042780f11677b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33792 zcmeHwd3apak#F6l@4ekpx7FRYB+IhZ1{vDg(B=({Em@MWz#En@k_^}_sbvdfUC}Lh zMMe&UkOUG)fW*!QCd*`ogkiD~!XysEc(O8NCXgW;BrGqyAq3`y37KK=`&FHLTP-hS z=6lN@?|awob5GT&Q>UsaerwN>zOXl;^ zL`Cv{`tE^Di|Y>1UB;PvQI!pG>UEr`5V+Z(D?hdDo!|tKlUMElUY7^gji>jG1AgHE z5|oLqkURfM5bdbTWHSRmifs2H!yR=9pS-ID2C2)WM_drHtaKb7=JhUo@~#%5HF=<9 zk3%oMST>ykRCFbpXd?;=b~@RdAex#6&zgJW!_RE`;M>N%4?O+1zrD45{)T<2YH^1-2pB7yI#2YuyGcRj?`hQ&h`Zd*$TA#n;vDkeV zz114nyyCS#YV+vit2gaj_OnTH78m9@`Lwji-?WY6mEz)mnW;UUQPrN=rbCALRXhq`o3gi|&xfXUx&L#>? zfy|tD`y#Y_uOu@Z%EpFH_VtE4An z3E~68jV~1!RF?@LRqY%H`;&G_Pl4^RZv1)0+}qDX`%?ih^79xt<{?HDp9>w(dqXYv z9b%*p?`gTOxUeK#eUVTFRa(+}#HlsPs%Qvcb_w4atl}fqDOL2-s#sDbU~!colnzJDvJ0H3S<(|XtLHe<0nxyR-D1dh zo|4XSO8}Uwx1BtB(s4_XuVN`-msZ?iq^NEr(JxlWaxccsa#thG6TQH4R|f7^p$j`MDc)6kDg?_FjT%xS^HHe`{1MXai7Pq2SMQbC}tLUqb zB7H7d26V5aapj0n%Xi$n;O~%zW#^HFsv|Stf~W~Y$IWO6Mh- z(2v|_mB={YoU*@8e78Yc5~^MxWY&=aA+nAX+D5bG=*_xSB_q0`wDA`erBz#W!&Lo2 zudOz>B|{=SxBDCLa&mnMAmkGgHPu3i1(t3fG3+C~UVWlEqoi6Z9_a~*9y+Y_^X2!W zreE>3)lFr^g|M#f95I|Dy*(kPq^Hnf!dI#%eJW~cngxf9L6Rht4~44xx#&0y{A_ET zVS#wTtxVqTVgGY?ukt8e_k|ZP{fEm6}T?6m0F17TidBnh{*Gwir))P`=C2BI& zudIMzL(10hex7HdMvY^9U>F2-AtVwsinKtjX{L+xLokYI_7&*}l!b<+TSv?u^aX+> zGkn$X$3hZg0oII~$%V*-bh#Cn$#Vb|>T(MQtv=i73rJC4PZC;&;-(RhLZ{E}vx2D3 z75aLUmAHw+9RgQ#X}M?h*S;k%!V05%d;8*n>M{>XHy3%i9x3JO<{>C(E?puw59;lO za|b+zM9qbME%3V3=ZyR+k3QYpEY;H<-183gL(}ymf!e|d8j6}KXhbl2ke@K3)#k*U7Tpi1TXO+*YfE_fBdDmGJz?GKEev|K zwzgbQ==k~LOKvz5vuWBTbh3X5YpTw0Z%; zO%f{_3vM1YeU?$v;}tP$3j&ty1XU1?n38X02Qgtb=^tK{Ly~;Ec}77&mCo~o6*A>k zV9VgKWPELt;Z^7)u`UVK+D;N-+set-BK|jWI&b#589XiFX}<%{GkDt87TTCzyY>F6xraT)M0Y4-^x4KWH z4Z$5e-ae|pw)<2}QUR*Z!oMDGZYFARB=&lhUR&+-3M^5mPh{q;(5y4IA251D5+C&5 z0=dH%mAxDl=~TBkDzd5G>BGv+Z|qwzP-$&@_rEU;wp8V?tC!`e7)+iIBZ(XbAqPC_ z40cfJ!526H7pRb1sN!iDG9u=wB94k8OWd-fR$ttih+ zSu6|@t9fRM2E`s#OEFzxS!F4gTB`iTNMbo-RmF5;8z+5L=jeyfU#4Wx*~pNAcoRV! z;LB6_<<(P|!OcUQh)`2J-*|<8Ts_6nJ7=9Kj`^P1X17S4z9|GyALq1){rjd6Xv}k0 zd}7P7wa?zUdWyyHjlEig+BU@!of}*DzNb5W{ru`FbZj04L))fcWb@q02Y#|jfBxZ? zsVGCYe`GXv?tce_$=W=`s6$NKHx=isAQg;lNgh8YOkz!HO<@(Chi7Qp6jrW0*f|zs zEE9;MddMp2?Z66NHk*8}HcP5XF?uf5jV2zVC3U7z(xjJEmBG$)-`22T^LQj?@Gt;j zH8su0Dy^D}N?grIE@r1Xk7E=nW0lP7prxROCQ&_E4V+OTyR8DdxFYxo+pPgAq+7*D zC*cpKZj~IJ#Oef@(xa1Dl$cf57_|^eKgd`^(qt{OzECfjgj<@5D_TQa2KIrtb6XiW z#aK*p>p)v$*tN5>O^_Q)40j3cmb(IJm7Tl*#fWJ2xQ(OR^^lVR_pyre+yKIn7R%K=O0yWodMx~lUJ^O7mH;HwQiIVrvDEXVblF!U2 z`P;k_P~~w$>p5;enJx+ICD||JiZZ`LiIs#oLs{n35XqyClzPAldE{@FvV~AtX{PRgtbnYAS*Q=t%UHshg9S;Y>X+i4bY(5pxo= z3kDRACwK*6ctwo~j4BMO8b`O1o#0VrOtAa~HZXSbQo-mhl$9m8x4$sx4%Ekhjw<=| zWETkPBR&Mzu$uL`@OG9Xq#tBC3Y1=j`axFN{V8Z_+HI>h7w$11Ml633v8Sb{r@*nA zBmVjUh{EdGj=eMw(_2`rmsUAeqX|6PE0uX*4`f43!Cp4cHpwf|UdWo;#9|q;i&X|p z_Mo7^mIB*q(rwK0n}Jd^O+|Wgi$HAbChVE?Bx|Qwb17@C%+GbpszQ3z`;@{;`?{EZ zknOG?10QtJ+v<+iLM;TgtB4 zn@~sfF|Q>M3*f`z2GSS3{=yVx&4vD26t=~_=fZqJd#e_xcKFVc^PTzdUHs^PQ5#Vr zDh2wg4ELYVxb7nISXHa?#e7?@dY5U`n*nS)=T@2eGAm##LD!l366BUiwBDlHQQQ%D zw=x&D(_ceY_BF-O_oh5IT5&fh;7Pf)?Vgq<_6y&n>{oei)Kg#@Ij_U6fhP-paRIB$ zGV*<}NXK@$EZ*yA3ARj#;IdO9VSt+1$gHWv&qHJY^{lTb>yZ?0jW854#|9y%u0p_}c0M z)p!z<9(GvP?$OjRP&_hEqhq9^tEj;CS!gkIM4;1%IfR~xn1kwR#Ed+h*sglji|K($ z%pwTslTeRia5diot_+QXf;-5lz-$*cYqAD;UjJFt20QSj3zebv!-(F(KtIS_PvfG{ z`a$NB&yQm~^TT1%%ov|Sn=@m4zrqC3aG`^!?<9u=lOOf_y-7(0_~Zx(YIE@xbGKTX zi4=xR7KpTUriFDF4w*_3CcUBy*@bu+1V0(zR(MR*Yu>uuO#@Y6tH|3NRQFKzY+$%M zmjc80P_=G{baxQhFi_liOw4!85Xf;4F)`mULj(&E*PDabxFCMwSS9E*&I)=a<4V2N zVGrU8!Cu}4L<39L&aDbMP0ffas-9(Ajk9czk|*HldMuUQi_>H)iunl>jOFBPWR}+H zWeAOm##64h-cj0BWA5ORIAGPfr-@LobWFh|@t}?kM^O0IAi9-RH7ZAu6+#Z+rGq!F zHlSa^Jg!c49m9noEEiGSLNsOf!rY9dqlHsQr-vs}%Wifor^n_PZ8^x>J0LsK9ji- zu}U?e@Dk~g7okrjz9F=-Kk01`-pa1QJRq<+pm%8AZ}tIJjIg)_Fg1e1b_3LF929MX6$Uc*bm zZGpv z9fv%>0F0r9J~y)&JAX*wj zo9w?bq!h0l0gtxk905aKV^LFO;MmeSY{zkHDQsT>+Z!&N$2SWvC(5ckjj{A&MGTi? zY%+laCDQ!N8WG)4GAH-u(X=363+{3c@?La6N{!?`+(TAb(;`$8b{vkpEJqW!4M~BG z@XK++DsJEiq#~wD-8CTK-mz-lk%uBtwbP*1B}5B*RkSRxYn1VO@_ohgys!~;@|py{ zxn7JagAHL9#Hc*~9g^kS>74zwD;#|3Lf_yxM@97F-truCYm42xYz>YCBpOL{^u)-m z54Rp~Ug%RFcY4Dr!sal+9*%ow>Q-g?I5z9Kk;1b@S<|Y#Q}c$158%YMw;E^Y9_OK! z9(nc`RUMQwZfRB2tes=v3_Or$TCq}@XD7q}TF7=%(}q%5=7LZT#SX5fhk#XUmsDA5 zrj_|6uR_h4O3zqVR)J+QN5g^XoLoQ20gs&9gfb6GROa53cx+8a<$`&##w~P;Ge6|sKC~H zu_cnT9xUcAfZ);>I>&v&7M7ot9)ig+nM5wy?DRE`7z9Ak2JuoCrq@6x*_Dj$1M7 zOm&apQKdA2OsOq{CT_>t5M@^-NVa#|ztl-SdLZx22p}8LYyO_Q(R(KZrvdm%__*gVF&yndl9*%|2 zLRzjiP|=VluzFn1bM9812%Q`?l53z!jcsJ5%Zm$)VtH_#Yy*154d{789N%pRTw7#h z8ql@?E3W3kip6dRN-#cFZI~v;P6&s0JYeK;a<97Y2T#;J@;nq~U3P6=xymdY$5R)@ zG8he3Tr4ahVZ%T)SnP-_{NOv&%Boxjp0yD`IFMCPO=UEQC%Nu=l*F9m1}5mpT#4fR z!I7B+0@aQPej|vK1*1W~PV}@o)(3{|hPj#hQN^;4o>tY%e$TRB{z zdKSv@&*U=#dDd?ve}qg(5#gN>ycwd%@W=)+H-zmWmXLgan7o-)T!m28zzA~^=e%as z`_utnO&GI;TH^8EVc7M429hVR0s$`6}VbxUTk!3%LN zmte0*rsKY>#y`NkR4j)V5KfTJvL27-t;Y|elAJeiMwZ?+b99M@a^Ap$Td?W~;SSY= zti`Z6IpY}uGs=nXpCJhMnP&*h`ZPLePw4W`5NxO=&ujS9i7&4w%t>s7`Lq=$$#U9? zlNVFZVmA_+Y~t)ePBXnQp1Ya5PT-25dwCAXq~59Ux_2maaY*TLbaAd2s=5X)p&w+4 zaI!2ell*YbUOL`2Q)l^yxv2ISjwETHv+S0TTs);ce< zmrZsxAQh^MJqFhRQxn7{f(dcZB^7GU*ReTZ3~x_DlgvrE>^wFLqZQPj{X9Ldhz5+bZrha6sYz{7(H^vof}&r z@99P_LadF4+3G|o;Dh=>=2gSTM)F{l#~Sao(6F3k_|FLO=21D`BGHYiNI-E^jNBPfvSQV;6Qz8-88SSR(M8E_$3gd(QxsF)fFAm=fVb_4QW+$^5!l}UPi@qJc! zpsje~O^bJYXJLUNt2)P+?N+i$a~WChE<}5a*^j+bijwK5C>F6K#W4uR09!~MNw94! zyeW#;9Z>f_Ya1nr7)YrlS@oiXvRlNA1d@f25{Im!xIE8R>r%;zm8_~h#mX}dKf;2o ztg4MO&`Csio(iNNFU7r7?1?qD<#!U6zA9gkdo-;d1c8b3BDwjmTATy_Qzt2Cn)lFn zbS`|sL7sIeKf?x59canRf|mah!Cah#C$Ty}XexpIEk zJyi7wCQ|mHQ_ZIgr;O-+lL;`2t*TLfL-N{cK}>S{YTQ)Ssi%H%ro))}7T-PG>@(oz zohUDzF~NelZ^7{N-80w1ygK^p}XIDpWO94dqggMg${ zD?k|rCl~kHFZ{AFYSrMB)Exu(bKSHYTfN{j31Z$}Nleq}3cB(E^}6^x>;-oKk5dl3 z%UFV=BvwYr7^prU&9IDxI6cJ(!g282I=wg)#F1-pfnDoZwSls@`O9-bCIUPO0Rj*p zpaj4Md2W@h4pXCM6~|K@C)v#%s%^wd5o>|&!g^NKXI0~eS|CAfboSfU6ToJ#NBdKZ z5`0oeC-5NUnzDt-h0CQltXaoc8UE0T*LjO@uZ3>e7r-lI8Iw$*+OgiYUgQR{Xdr1Y zTd9L@4&YwL{qDtza)}i+HL6-|#1b3LmPd`%vpr_YZoCAnTKw zjynOC1$M}u(}WXro*xV3{Z6y-vq7_N%X~R#U{5X1oDa`GhBrIS+hAJ_xzbFpLd`V* zm1XuSXkO4KD9^lKq2vHUZAEm6E0(;IbBZ0#6E8j84wbM&!nZ?-Z-?nk#eJ~IC@gYq z_27TWA{XXcB#+&nw#~=?Pub?2*?RIHcu0s3-vwX6A_MDtN4+s$M6-?3S8bpO)b@K6HU1IPNk4O=pP9z!*>&dQgk4dII@IfHN4e~vFUH_4x&s%|EKjvID5>a~YMn4Av-ar(P6$!CG~#`K+- zC>y8s45(+*%diks53d{6l;;%Ptpp0>6un6)8c|!{V|H2QcEQY>sXEp|OP4Bp@%iVM zn8qpb*x>wA*f?{2HtOut^L%l+n(k>GSylfX1DuV|Hq5#r-*b)^Y0Do*$NA5GhK{#< z9-v`fbPPA2s-;L@{vk&DeF{~jPg|9$;b3v*S1e=D@6(_sV{opgY0%R&2u*`|ootv( zFH(xC`1=QDgZS(D2FG7fHfs8ua3qDTu{X|T4WxV>&$zH@m8Ezf`7705cxQyJf#7`k zYZ$zvQJh(1)0mP>M#2o!Rp*S+va~pJ^_eKyWw36>nGiB)K>3D2??yXw**6ZgqCq(_ zsVP(W+y*Ff1RUk8w`zen3f|(#+aF=l%G?hMyv3o0*KHV7c&B4-=0U-hsX=(mnwR;$ zAj;KfJZ8pwkZ#{S)pcR*~m+jc0~OcVZ1e^m91iUfbkTRP62NkY&b{P{PJ{ybC%`oh z;58%suu3i+Vqf{GW7WY3z<*oR#4n6t=*XVv9Ne)~p%?MF7|2<;@5Kl6fV``Tx;(~& zp7Z?Sx}m&08B+9p8g>4|0MZ8=r152wHcEPE(lsQ zAn7M1-4J5@(r{(iq79N>E9rYBJtpZlBz;=a*Ch=_xZTx}M8u*lNmCK#a6r;Ok9;I@ z9eoq_u;{muAA%-4>xYpLEkkNi?<}r+zvRCu`9DhDDPnv?(gsO)NqVrzEwboil7B$b z$0XIFOut;x4oRfmb2u#N*J5m$pT@YYS0q0t z&X|R9rdbiM42P&Uz9DYWE?`3RDZ&2>Qtk=WAMAC9k)4lyW&nAHitvu)dO$Y5C!?Wk zkj9ZK0S%YE4^RO4`E(z+d7wCXMixD}P%ew(B$0|D`&mX!--eT)Ax#I$@@}S2Ay3B(f7cSj8TW}Sf5PNRdS?X5$dnvnC zXG^ros)gtp488!Zr57l!5q$^HyD>HuvK?Zu|hjFIlvaM5wQ31O~jq{PtHL8&= zlJw(7Kk^SET}t0JhLAof>9dl)D(TyjMocbUAZdf7?UHVm^eRcOm-IGC@00XVNlzfP zEYqrhB!$*vNJ}JLAnEy%)+4p(k5*c<=q*V#JFS_tz#c_9g^#TTAJ#5VyrzEToTy_9MMN#9BNU3K((i#aVwq+Fb+_iR6_F;p}uLo=Wq`=s1U= zd#J%^0<<{?tw0>zC3F5gw906K^&a-14r3j@!}py^Rj=FFj96Q^NI`?fR-BzI_n;}` zDr|p8J?Keu7~e;^IR|C1Ki+qqs`spU1KyE-+=G5+z6Uesn>gra$+W;-csJsPq=E_o zCFlhYDhV8cManUwF=bugGl&HHJZK}J#q^p7WdaXi=U<6K4yJrh;LF(ee%gaR3aF84 za4^7S4**(9U-FT}Jza=PjjoSVe#i=b$-=Kk7OWxW_8jHs(Q<+U6YeDXT{7 z%0XYWR%ke3mg_{|F{?wnDhIt_ZPd2sLEYMp9Q3l)r=@bx@2r$INVnx=DFXC_Krd;w zy-Q2eO9I^tsSj&I^rk@YPy5|~Tx_n1Zl=raJG7mIFW3vT)jq84qT?R4L!f=wo-w5> z&|?BUuH9%K1*N)91n#s`dC<`r(5GiW56pnRJOg@k2K2bC=8NUrr4 z0FBbmL^AH9ztYC&Uvto-+60wgB}l|&C$xRET%eaU=6Qg6JcvEy5Peip(hlnh?M7SD%T7>*^D>}rf$jnHs`h^RsaJNM^M-aiz2KFd=ll`SgV;wX zdm8!&=oNuZz@B~DowQO`#V=`W&%5aT09_~61&`9p z0^LG;opSwS6u~;2Ex~sA1XX(w+vO9~ED+n}9Q~8@L9dMMaxZ<qG!j>wl#HKt;in_T?NjN1*u~jNtZm=wIg3TU`(E8wE?R!jy>qOwz;8Fd1^o*3^gr~#^%35qSqWy=&4{A%z4{Rvtv(654z1s?*mUZ7j(x4}0+ z+3i99F3?p9lGdM~bPoEg{`WL0&ek+%-*^yv$iLE@%UC$&6Mvve z58@X7K*v0YTX>7U?m^rFX-|3(w_s>Vnf_1E3s$#gYFQ8B76RI>9>iW}X?J@NYh-E4 zFpmc=3Vl}(YL82qvP)QdPN2t$%fi|#0x2s+wcqEJMK#*Md{o&S%@Ih|o1@LnE1Rp8 z=b&fwxth6=>!}DmPn+@}9-HOb9UjDEvs`<`gLrI~YtMNQkH2zl_9o_{=8pN=4i92& z7ihN%<(+g}{7cpXZJ(6gL#fb>sLtYR9FQq+_?hu-tk{^|P7O6q|&WJJTkl^1hlphkx zBS=j;CipK1{;Pujmf*jSG=Ngqv2#+$^Lf6(Ieuos7BHYq_jDg*N8D1zU9ZM z>X8d2wWlD|yyoAdHr$QyKJ9)_)C&^BOZ+Dg?`rOe;-Y6IsFbOSi+;xmS4javkx zEHlj~zpih+MrliFq3Cawx_2No=%YwYx)-TNe#xy|3>mZkn~BxJeA99^b^6b z9ek-yw~w-nl7VH`NJ;*TId;f2ah^7$hqT2mGJ^GYYRa^gi$8|pEd@cTWMaZ-9*#_$=-#C*m9gVYX-xUA( z52W}7xG-ay;4M1kW8#9Jk5ng>&-d+fCFXn-Z5cSHV-Aeb#OwH!(9f&LmLF}-7ME0A zKN9kcrr~swTUYs`@gUxm3SkZ_#63*)_>|%-t`eV8oWhmjwp3o#p%}t^KD7LE9sArUTXXb z>1N|)q=&K6Bz;Bj|04AND)et5-zzQ7g(O89 zr*qIE%hRfrM8Al(=0_hjE2$>>T{ER!9Q_A#SlbkR2KhbF=gh;}`=kHee6Myi`X8XI zaGU^3RV3*Jfg|8tq%{D4Vc?x$z#eRx(Z|qs5CD9j=-UZC(wU5Vs2M!O#-T^w8Hp{!0_32jqE3X zC9T)MuO86L!TDZEKdT4n;%K+^vepjz*R{d;p!G*kj$13~K>V=PF7%gcx5giZPqGXR z#Cy*5;P3;B>Hop%_VTaBe-BOXip6Z!ccC5BxgQ-w^>c7`y#s4}2Tz&4k8~G3iFAaX zLOMo2#i{T-y27r*9WzL%_5Nri&g$ew*Y6=rQE8cs5#x zr$T>3dK2k5=zTvGIQI*;dkyA!T+-(xect#OFk~{m&E&l1aC&?$r&DF$FuqUsN~%!{ zR@VuP?%B96qyjt#uQpejmzzE2)#fg9%p5l-&BNw<%@3M)n;$nnZ+^vm-82Kmf%3q) zc#(BUV0Blogq4cn!5(yq0e z?b&Dz!iBz~<4JMo5nZQ`BW~&R39O4}(}kLWh`|x$F|*ye3}04ypY=D^KU+^G2v3oU z7UJ0&nNx(z;6!*`VO%ro3eEZHNCo<^T*#92 z1^p>AJy@5xOMp?n-5MT`@j9l0CJY zk<>n%9Z!u8q|Zp<7y31~q({(#JLJ(kL(#@!5xn1VV-_oPOK z2Lldu$}#o*GY`DodwZrwViOw7H}F zle}wF17NWKRC=$JwxkDOh@Ie_%XOlSQ^}R8byB2cku2=&OU9aRNv8&{%nXmGGpE+? zbZN6YJUXsY)k01eugd!2QQ?rz>}bf-l$nBIYkzh;16};i$u~|aGoH>4r$)Jq@!bD| zzzlSa?Mi3TIrO^Jo^&RQW@vqC@1~(Pm-AWLIt))39p6tICPv1GRiAB6WwJB9!?)P( z?0}mY8Sba9{n_#KZrap;Eo?{~qZ7L+*NN2Wxk3L(8rpPw#PHCO5m3XKvUQiFN7I?% z0qW$cY4I44c0$@QH=9DmGgQharVXt<+c$6NXzT3i+_aI_w03oDZ))`K+dJEPXiaB# z7u5~02SC697-fBGd_6q5J1H-I$-RmaC+S5BT>2$Vh z_&|ECn^}i(wLU%Sm3a{GR}K%3?^>50-nna>cKKcSeDlOX;!= z3~lIKkG!M|UbcZcTDNqs+rFWrb)(e2qH7x2arqUk-J7;_wyr;|D4%{qr^n=UdK9s= zswE`>VA=||a5KJld*B*(A7UEZM2(wGqifPBelrKU&_*}28(qnDC7T-OEW1Byt=Z3< z)@Iz@o6m;cKA0XEPk9{9P;EOR&pJ0Ve4usTaF$s!$FA!qQknE%n?K?NnHyFt7E|Sq zE+6L)G9PaA+zLJ@?$yW@rFP?%)F1|Pmb|+v>2`f|x9e9$Se;03-%cB^SigSz*4Fh` zbkLQZ-Rn9xQro7D-L0MI_4dxLOE-0H>?V9Vwsdv0VL)_ez#U^OO&Fy891c1WDly&% z#2Yq5^`FSn@F0z*cBd&TbBhWy>24RMlemI$yrYp?GkAMzXWErUygB4bgsnkQ zCQBPq*QLFA(~oPNqr>CSet7%}eAo`d5=*_x4CXV~nBIFzeMqPVHZtCzM{dLLXb%gI zd#~J6`xKnoCvaQF&1TbCOlfJ3|DM@86hm)$klt<{W;Sk8Manx z7|uDY{KT97cKHLvmnX+b5nP!`jb%5xi0K(s%{d)iF)~JNP>-iNHT}qxsIr2D zQz1fog^WRDMc41<@vA0QmQduC-+fneQ(fmK>c$$tn_%6Eaq91f7sGA{&pXF=k(5vy z?2x7bOatRIf?j}({XB<{!_{|lYXFet+bGycM-5D5GVpwoiPG!3)F8{mSXC81sm9p` zcTajF|9ya+>GADtUQJKN{3$VSDy+*Vg>u}4Cl{bLk@Y{x$tTOI;KfqOAcYNKJ`PBJ zyK1(^xY?amig}9`UJOXK-JRfxSt*T0;rIlmRCjczWayHPO*AmQXxp1N;AFJ2DZRds z0eH%q33{<;-U?>MaO=!sR>q`|86Mi-Q!dn38QIC*@csJusZ* z^(++SshaxX?BFkXPI!I?eMcrksL!`O>464L8ZnCY!VTQf^d`i~%>wY^NjxNr^%D*H zA#h@BES=dR3j)|XgIQsmR0d7^RBZkJ=}9e7jAF9f(Ekb_64JPwfL+1cMp$`q+7@Fns5IEW;q|-p3V+rhGl!GNB zcw~4yuOo7SHj~B=7=sWwx==ojbv9HY;Rsx z-?XBkxwff!d2?-Z`--;O<@K$twJSP0uqtm_*3n$QW|D0zYRE-R0K=c}Q%fjnK;rAH86vRLV$o{wBR zoE{lmhq)3lnt9<^0Gt#FJOI0+vp3gRe}?87$&2`&4S6=@$&FVH6T>62F-4dg9h8~P zn^aY~n(JUpb~autj8nHO#sxTlSh#^lbl3I3cVaCtGz@vM1x3g}R7Dkd1%`Vo7AVw; z=?ZJQeyqx}8&eypb%0AT8L)aY9jgoDU|cMp%A_}C28R(Pu;AT~xkYSFVst=qZ^e=k z-OL9Jh>Ga$Q8hEt1~EINa%s)*D7frgJCZ`=Lq%2OQLMqt0ZZ?3uS?S!7wenUD7Pl_ zqh}{^%FHl_T&zm5(;Xe(I59FZy;WX=g{CqPg0nJrw~O9d+KiGcVQ;w`*2*EU{8y8( z*Cm(Wy9Z(iIaTqZgGjD)>KemzH#9upl~AW*h^Vw@nEMYVg*cls9lOV1|IY0C^f=FE z@XE}1_R3-O(fU+&ymNFgy>HVHVSkK>410LmiM=;T#N;)zBHD>n4j=lUgGR^wcJpoG zEdt~wYp1m%6PSmU2(nS<7MRTy-D{W28jjZv5UV>gyju!7Mh7D)AJ z){X9XZuF)Hr|}yw0i-ixAZ}nI?C)W9x`|50~z|8938t9+#j@cf4ifB=+Nc*FKs_u^0CSxb zXsG0L+%^2Yn8jD1^g4W8v^0t{Ql=Y0nlIgjz*EUy(He^byqWBx9BU`=r#V~D4%;M& zzZk`m_Yhv!3)cWj!DiDCm-Wsl6UbPMKX8Kc9n?L5ully(o&moRa82SAyq+d;?w>$g z7Xxa*+tl?qQ)ld7(qhuiXNr7WVg?n{@n5piX3gYFL7yirWDBJ5_pi9c1oUu`W{^*z zP0>8C7H@P@0o%G3-w5v_&44{@B@=;jCv8Cwt;d_!NgP!V;#*sOU$gDGmuS%j=!I3I zSZF6&Xcu@Kttbj|Y6dCg3q+(xdDrgTN(4YwpR#fcil(jyv9rMvnVBfi~Dz)2f9FHcOxH zlYYtXgBrAYYG0v`?Q@|qY!hT_v$Rx@MX#qI1@amh_=3RpPIxY9#LljvBbV0kpIma;j+Idl2`%>J9E~B|rRPK3kQ0n=QEqxe>_1Ba|&q@x}1! z1pZC;8=ZS99Y-b}Ys2W3VdP-Vsl%OMso1f3Spg*u|H(G~gKq3Hr{cI#b{sYVyAhj? z^R;+1R*$rJ~mpOus;&-69w+BQu9+y0t*>Kn?LS~M?%uk!U23S_P2cPL)!}wpE z03Fxk*vY)O7WJ;~ zC<18DjOrz=v=Ro?2!lV=j{xVyk~Yk`P>)1(3qQggOW?!pYxwGIY@aF#qJ5QParW5> zlbM7eQM8D4jqM920)pb4p|LhWE5xAwp8Msh{wZ{z(B_Nt?VRN^zDfCz(R?kp^`LgA? z%b_%PH(Lw+E)6A&SS2@zl1h-UjM3d($CzU*hsO~yrkw)DZLJG#rBx$Mo2d){2|)%KDDzix}H z{AKm=%IM2C?m6+w=dOR?jnot0|LOBhuT-u(`L}ED*w^2@V)@(MJ#*VOKhW{voAgKR zebx&P?^t#BoG*Rm#b@uhO!{1Y2&7q;;n3w~dh+V*j&>h2Z=HvYx z#D(&5P|c4xhH1mV0oyflEmr7sKZ5SOS6 z48<|gkp_OQnr|FmA`x#$p@Z}|6~*y=RmlGkz7npL;~qrsOnp5Po%(BZWO@1g@&en8 z)kIJNG&^OaNQW2^^r8-`@3InzU$ze4L^J5|dfYg4m^KCj{3bHLoRuqw9dyJ$6{T3o zP#7d3XlHP(SS6xX1O@>w_z8-fkPQp-hz#O=5nLP`ZH@mV=pCXyL!2##1a8 z2F27f!b}1y9C?l%QB8!y^D%O~lMDc zL>y%V1XmM^MFhD~;7No)H#8M=5uKLIj{< ztTc#L4|7I${0#FgFO3yxy4RW%Eb!ucsZSSXim;N$qk#88@LO5hF>qmrwgc?0^AR!) zbRu_oEWr*@Kfk?3VNLZO1Se)?cHeZ{-L0qD9JcV=IMA!b&+I2Xu+jSkb z*PurYrcVzIE?G9%I8d8vSh1|OxxT5scKNdOVC}Ny4e7zACF$nDfo8moq>)`;*MuLg zz!xJO&3mH=8Hd}Y1j;&P7%6rmavI70`5e* zmRGyD{@VQA+dNhJRsFks*%9TKM`yed$93BA(ZH2=A#1Vz=iM^z(Re@4SEbbIMk#Oq z@cc=3KWe`!1oW5Y3vg@=GRZS3Q0+Ver{h9X553jDX6%4q1N^D>M%3lgv)%aTpG^>c zDydKTLD zwQfgiS=s3gqqcvhz&f5zf;>jQ|yTF}rW-uVq@EqKF@Q`T_ypv@9&TIjn3zu&-0w~ zob5TwJ@?Kqf8}Mu6he6L`Q{rT9>A6Usu_R1z zygAX(THM&s))wz5UK1@&bhZ`8+KOuy))lwLo1*36aA<@!y=bNo^Q0**{A|fWE4Md= zF*HpEgm@ehpOXIiZCr~fEb*yUVMCRhq*Q+XtA-x(f8uJ2>hpxi1nLMLJ|}{#l4Yy>&<9#X_J4_Fn*ej?IK9?}%>d0Dt^30CZeel-vDREX3;a zL^9C`p(-2dMiuRG$KuwgE>A>T;)qCP6(}>cf%t8oc+*oQLfrVal2F+U;T6Smg?Qu| zA%eXkE-DtHtC#F>bjib)JpWnx!O_p&yK837ACLQ8m;dzk=6^L`^1tiPeR}(;Rd3cm zc~i0Zqq6%W?^P#%|6#w12Y>s}thYMi+XsAl=V$*a%WPY5aOlKc6Lf6?jul{XtR_FuUvT!ZU8SfG2z#e)tOV{9& z?-^St&hU#r{>6=7^!)6EmCHkeFD^lxG=IKtx4*#HLZ*jbf9W?rzh%k(6IS|G?)DcN zTPUAYVSi%_Wtu7+U~HlC?)DEfwor+8`v)0YsLZ?lr9$M4_lmPo9=KLkq(7<`9{@<8 zcFk}>aNoUL}iukHd`=UcbP57*3MuF zzLur=rIQS^6P;m1;6uJrbG#wywcglDog2Y47BaR{$8fO0*h<}Eg{f1lFm;I)rVg>f z)Ez3!_D|RL&9O#)smT>rZcw?zWCu`nubgeN1E`8u9%Hfts9IN!G1&oBl`99E>;S61 zmHkY1099G8<5I&KUfC!LhF1?R*--LlP+C+`n#ho%-Pj3(Mr1JBGC2f5 z{Z6)*kflAP@;l8jV5>M1PdwiVn^?s~YW6 zk`^gJgtNX!;j!r>BUy-9(nU1%hTk6<3FT|PQVIVyu#y%G7k(s%9aD_M6(q|To0*t` z;v{MS$x%pfrZOF3(*_%R!|zkJN`ee%(kpRR`A;NKzs~DV`G6hDis>r5QvYZ>xvgnp@u0(I1ooM zLuIoA@$tBZgE^u6oU}3HvqD*E*XDS#Jn;#n9)Lgv0++yp%StO) zo|Bf9mIYdcz@I{AW_e4?ljNFR z)#QO~dW81xpM*1owoQZ3$cqf2t~u6-2e!i)%kx8&Y z&KNS3q(Ey5`e+KZrm(lBKwB%w@1xPy3i?GQ{n&_I!a0JMCXzkkL1zJlc;U;m2NC>_o1)_%h* zDy=jMO3kAB$}}T?oYyG&TJc$xJ|j;B$5(odu^edvgat}ifnXs8^ReGB1g3crB0o>& zBG-`5jE|u{IzhENHa^@7YW;=l(8#4Sm-zahoaXC)YPyQ&5179A6zVfLnvauk!Oi$F z5LUcYdX{C6`@%ae!{XZhTr3=mS&CfL;1i@$;2O z%YyQLD(3(SGQm?=IW{G0oxDsN%~#%U8O4sFpwje|^+Tm_3E(mTr9Y|(J?K(Q zTBaLb`H&^Wu9`em&re!9Mizv8Wx66qEe`q7DwKu(OiwvBX@_l-X-aCFviw)K ziRHgmO|90}bEB>~<#mn93cjH`bT)j#a=(3D zXO07U=6I%n=Nq56ncCa#e?9K?3Ra-|G{4U(kzb%D%#_~HsS2%Bt`$T#Mqx@SWz|ZB z`!M#OKB)?{gn2qvc`=6CqftE-fhc*bI{$umg#|-uL_pb~rS7!VHwSZzX;fqg2 ztU$r?^g#cLS9Lo)@8fM4tq}(AcCnexDhwF|R+V|EiHspSK+8)1N@H-TF`&{c>Q~xd z&n=e!c(&}NT?3=ZSP@XyF+L@ooah^8e6KhY7kIY(gzXTT940%&$PQg6NBYJgJMK7N zn`%N)>*VcdE3B0m+f+tXst7icp^z$(m*tUaNYZ@%N$`>sImN_U=}Jp6!@)omk4~qg zmQ9j)xjd;hU2<*HmDXjm0NZ1A&lHK$5;E7igQBC1$XXKZvP4`gRb15ss&Nh%OI2LO zQmA5Ki${AwZ1G}b8hiEA=}K#d!G4D3!(3FAiTjcSs)iewBranz5MXXHN7)d?yA3C0 zd~DK*Ybl+du)w>G`B{c4#gR&E>5o*_9^5yyp>#Uqc$~si8pzuz%$b?-GbqeCe(szs zsYJN{pubNZR_QbqLM3&yoEm#6w!Vcb`n9L@93!$GrprQhGR)6Tj1`BEK&Ff>RJ0Xz z<4d;aO6llI3c7NR=#3WSU_@GhD`_WVMmiAW{xC(8Dn0hzTn<@kl(0Q>g{oZ%TQ!%f z%9XHf&k9wy63)T1oEt_JLlt5?wshQZ9AOeNXAht`0k=JLDvNvMKK15uhEzc@ZmJAl zsh{_y-#yJFPP0Heg?38Z->S2awW)O-Z26z^H+UbH*`xZ|R28c7>sa8_zLSVkKz9K2 zDjhhrH}u+o^7lJ*o@U%?Usdr5|Fz>ON7bcDcPBU5ZFTubV|%f3V$~T{q_KTkxwI}b zX&euK)bRx)LW9FxZbZl=UCDq4SBmagt_J);m0)a@imoCrw>-M~WR*&#afy>J!$xT? z?W4USmeMz4u{KkCjm14cWE%y1$<-8F7l_9!Plmc=TxFgwRc5NDItG8WuQTdgtOeTX=hlym6ia41J zQpv4Vtyg*2(06MaYK_Tu+i)&++i+HP+qm$2pG>NbsLFJA z$coSy91T;}tQfc^0{VwJ! z^9l}XCCvfvB=+%Cx7J1M#d$yDkr1L%fmUUrOeW+SW2%@>1n@6U19APsTZvMB6WbZ zU!=BI`v^>~uDl|=89^Ores%T+-0#?XIeUZuE)!KKUX)h>jq zkh0dZ>sQlQ;C+cI|94sI)p(<|o-$FbL~FfjGa7lc)~j}+K}Bo5Y8&!Z*MiIir?o!* zGz`%S@9uP7;Ys-bDJgLOVPYL+-R)gYDjBW2PTx+n%Sk1hY?qTtZLRaE>n<1h=<6;u z3ayz=+ zR4ZoWvDb<^qtXWdj1_qs`vv95I!BRpl@B(By?=NaA>^bqbDw&FrJZAAGQ z9tR*`1$;)u_-W$%SdNUyQ#|&53*3n(L56zx#n0uj`3Oa3(qcu=7O-mde%^Nn47i^6 zktKfKcO+wb@Dzf~C9M1UZG1H2*+!=gxIw>_N}MxZiiyZ82Wy-e^6}G7tk3)|NhYpi zZ~{!p&@+?_7fz<9?=Qbm^SdEXnG_pR+sMMT6wRb;sJw}@l?$DFa%(*iw&lnRs30$N zv_M%?`c#CKW-dxWWfh z&g)i$-1Wkw9Y0PJ1|TNqIP+Zt&+o;mkgxa!zYvoG>be5_eN%C|f-9fKb6Yyg$N1s2 zU>U1IW||Qhg$&99eonOwXavLruPEKnh_ZT zWJ<=2$XKS>zK=to6c5h02vodN3gAv>Vm|yB!0oF{Ae}<6$!% zGIInw|L$eSb67hD+cAz}=Rdvd7>*s3eR|#8>5|?+#9ul-8!F1jmroo&xdJa^&|5q$ z!1{$k3_lC+jpF(VHUPuxIufzAX54HG@w4-g4y)SmC3WJL-{(1444=KE7CRL2EcmCG zT!&9@iLar^_`@0@mlf?v3nGm;SW-z&N4cMX4?V;DH9pOVl!*@}QGS+iHLk_@AgZXu z=QsESk%;^q^Dw6;8)Oozl&+0WyyAP&=M%3p{+00yMvtH5{TaXKAK~|j)&BXw7M64~ zUeEaR(5)e#cp;bKe2`D6)(xQWUdB^ONfKi$nBbk@6XlF2GM>(OF5`8K_cOl47^?UX z@rN*$RZ!ZQ6=bcg;^d06#W@w2EyUdwmsj}2i;RC~t*oRt8H}Zsd6hnKB4aB{E@J!% zn`Xt#?n+_*BcA7&!&vu6%|Em=J@- zam+r_?0B~MZ?-vDfFYg7Ae+O$C|#~W>4u5#F&nAb3})4u&1NerklwX8cGjK-2; z9hzOpx(hg6rMQII4O({@vs+Wx-J0!U-NPyDIc-Jh{;JtE9MfY`sVl{gndO+OEPI#@ zOku+`yMuLQnjPR8O@S3Jth~aydFE+YFOJh}Gsiqmyv@2U&E98rK?=K4vkzH!V+y-l zv#(kA443*iMM`3GQLurNrb_}qM6l%P+-vKy}ldOd?Zd0_omH^M{x zH%;WQmC0b3gGD*BMIQ2{>0%t)JRQsnHig*+&-2J(mS$Z@=SA;L;dB?Wm4s%y*h)go z=G<@L{1Rdr$Gp$eh5Qm?g_Oma;t8!gjdS=N=eI%J#W7!FD_b=CC#TyY?q^-Pm#kQ9 zgk}%2ZlY$t;@Vb&ZMTWvFjsi1oJ{SkJ%F6V9!|bFc{^K1QTG3n4PEDY0P%B&4)!Jvpa3( z^WEh?ODyfW-`@>E#pm$`+$zk&!D|9o$xBg z>ltrle1P!@##b2MWBiQK2ve#s!A`xx(Me3bDy##b2M21*eh_ze7~ zlW_}UH_&R0^xOyiOS>ivA)Ly1BGB@mJ;m<6I3@spE+%{nXjvGPa{?qo7>gN)G43uT z`5lbEV0@VIX~y3(zRvg_<3AV=G5Y&c+HA(bj1k64#uFH88S5EWF`mxY$=Jns5#uh# z-HiJf?`M3J@j1p<7~f`mub9T^pd7*>jK#o{y2Pky!IQc|jJb?Mfl`bCTCH*O=o3Py zHRHXE4>LZ;xS#P=#&;P1#b}gLszSzLjFTCw8D}#t0Ai}bUr+cG|Mloo_16>j2llvF zeqgVQRR(T%nD_X=PgB@E*ww#KOm=n@ULH7rcj6*LE%qwdJe$2MLgG5b#QlNKu)8Z8 z#xVoG4IBh}K(m*a%@|I)9`Pq;^O)@jyp3{ZiS zDJ&5jEFInU6x}5$?1mIZb$8NH-EHQ*Blxw$!XKbyH~{9qp70@*%wdBj`(JT_+uOZrUEOc839T`t7J&`Xxd(Wr=6{M zUr2jU+B)wmX^%*{hh<&(t+dZ@7hy4P`ZLmD1?exi*y!{>NWRrVWb|$Nt1h-S{X>bH zNB-*xpOM1GhmSQJ-PCZki!BWA6^?Fsc&1C&5I%@~wq-LBo@+R4NBDM^?$Q)?Eo?e5 z_oc9h!V6tio($K!*z4gHF7`oqm5Y59j=I>RY3_8vj24%!AY-9XWtVzHM#9C8$yniH zC%T#Uw2V!T&bvP206+5}Lp|QkjI#`S0z!X1-m@|eI=b+A8Rt5>@D&;7JIs3n$}&kM zL%Q2DcDmTz8CM#7*upk{2{y%!`9j8z3_6*kzaH-k8M_U_bBbxl4BwQw$#B@d%suw|BR%0iXU;WGvuuX{k-5ml(y~r9=@gCr zdcuRU8eME;)?WKt0zKj5vSN$j{EI<1Xa*eGk$$r(vs|eXsx!JedZ>;u&FV8NN zO?J#1vR^c#HoGhPfQ!A1bZc$ht4Qatx1ejbb?-svu#cfzXY2k2ox{F@E@tb#fzDyx zoOjIAZ5_>n4x60gX46vGycD)1g`Jkdnp0SN&L>WO7&)J(utO%D)Y2b~D$~=d2-s4@ zY;&6!%nMxXa}x*D{MX}+qRlR{Soo%#Jz}TDygx-99QFX(#bND8cd;F_9XVX$ zVxOCr+U!>-_2n+M*z*GyEAZ@cv6DSlyVx4fH5Lnhj*|VzX5(`g8aCtE)M3ZxK5JZO z#q`o_dcDnPHvO^9Xg0mUW;83_Xfv8yciW8S);%_(+4Lrx(ae6c#lkc?Zn4?2+!cny z)}}D3k)uoIx|sKextDlso%g2Pt2}!xo8AlioofEXV&R|XUgvQb?PeTCI~|*O-^ktL z#PoiYd!=!!WySmN+&ewDx!8T4+im90d)R|_JNU21>(6`Iv(ILQc`teJKuYTh^Ir4( z)Mlge{^GgIW|Q;&>ABm*4taj=Vm|LZHk*^z&wH=UPRr}>{e{iW$Q$mx&t@0qm3i;C znLq7V?*kSK-<7vVJY=&6QrL@mx4U%jRp-xf zu|@d{y}z<`r{ynkv6lSX`S}j1d%|1t3+1ovm>1^n!O5BW>j__%Um_nCkB%fxd;J{w zhwEuouNXTbCpEi}y7vY8~^uf<5AOaj9mPF}qH)>kA(CzAmcDl+B-j{jYdSv%3-VEirJc z(mlj%xn@r=dq=b1A>CVI5#PY<5C_2C7N2T1r{GENU&M00o!KG&T=1;-T@m0L7t zE}6$4Mh@=yY!?2g;GlR6f>*r`qx*1&(fzc;(hEOyrR$%97cPF_wAC=p217W3u| z9O}1OxMbic7podL-eKMu1CRB8EiThGqy1|A--xOSWN4R&_FL*V@@36v z$C)o**Npb2`SLHC(GE9XeyW(H-C@4O<4gR#3zp?6knPNN1kN9bQ!070W>+zLMKQ5G z=N{-j(&@G%-2l0oZ>e`c*X|!A3nnR>w96YT=P=t5XwO+?6v+z|69+Oj`teo$$*NtV z{kr_c@)XV5!G_AH&Cd4^lWol2mF?II50{(lbm#j^Dd(CKnT_yulR9TkxJKtX}2idI4KTdAa?23Mu_{YmRd_&(O=;U&O+{$bR zSeL&-zQpWZdDFnF{FU-et-ER9wf-tub1dc1gI6E+iiz?%W|xEQ_D_@#XdRuDPLh?! zQOvjGodeG`CduQN?GR54On|M_x@QJfdnU&7I==4=2T_# zs|K4w;K&muAxkA2LspSK7?yXZsNU@`BQqJzR_;n_u>`5m^T z=-)2ZSY!m&Sn0wWi~KHjOVRD3(bnBxR45(xG;~e2?p5d<_Azu(TW1y*N{96?{)1d= z>qZv8>SC3}dqlIXn_XNYo8{JN)Sfg87Y5eJD-`3C;M3)`n$bz{>GCGc?kX-0te1Ca z_Hgk?uzNM5wXsFMsTr+}_VZP{P3z~B0>GB(ITni&J`5gX)m#YFyq^Zgs;8fI!n z*(9%IMo&M^_ivUr>XYDvyZ_pkXtn?8NM&@efg|r4a2YU zUnt+#?5yF3%!_38Y_=(H8GeIrr{y8M55br7_^&5?{fL9YX5KqS+!JuK2LqSbF&`aq zhly|0>2xoQxZB0vfbKF|_YrgsJ2>Luz~z?Cn_lvSi(NV3i2%Nhrft&s*$-?+=VuO^ zRPv|5m9}n9$(t^=vShEg%F=n0CGQ1n#^-~(EFGT@I*iT$ueNn`2Iw%#?;2Z2`8ka4 z1Ab`fymyxTE8wu_N)86DwRL|hk-;C?%ri0&yv}C1Bl`ufw^?Lle(=XOJ7(md;0-oA zapdsejW$~~a&&OF&CVJ*F1W{L*N>bSyvbtWUynQ}Znl{BrIAyE4tpEy7TL)jLi18> zaIZYeW($Hpkw3KAvfypua`MzR-V@Az2?vf+sPnLMP~6VTl)!?h~+ z7oodb&eH64=zcCw(d+~0el9Q8>f)Cp4k6;hk?2X8l;Q!d{gUGqT zU)k*QNYr@5W`WTg{SG^8>y)^W>%{G=^75c(v=a&9BbdVWV zgz&|sd&R$Pc75q}9)~?zT5Z_O`&#KOAvfC>I%K7T?w-(pZ1xYlH~zJYJs5JcM?&AY zbWexyDuQm8f0Vu$k}meAkZCjjm;-q6+=|)X&BF092OV8_`3ehG5-jqxmd`b?qdHAgu0erd3hF?6d&R22ESR%_&LxJUja>V z2t0KNFa5xpnu1^Pt*D8+Y;84&3lKi`D|5H>^+OWdg9xFsrF!ZFKS@hdq@h+k%O z$)|F78q4Q$xQ=lRI4Zo8!-!`O>uO| zLmc02*$Ers8P=-Y6;j;|p>lW24<9zf%Y7`Un15w?U;KpSeOus2t#owxKe@D@vdzyK zRqc)>|B~aV+8yGwCQb|Chb(ueQg)PFr3xXYA;KI#lfyYcQ{)3ZqCd-3%t5Rj&XQ6_ zH7>?;_(*wGvDTfhyF62&#rNwtPA!K?V!9+!kX)f5+*;+&|7WPYRN*4FuljcdhntRy z?a&%xgDZ||4V7vu%P(NOobfuwJAsC9`^nLL;BHR!Aft-;KO9yq`8bE41RCNs4u8tw zG@JxWF#?ER00Npqjq!1PV$<=AoCbcannQ?((LANg1fAb_&BdLgYERV*?peYa z%aX_P(Z_!3cvmyYk=pj?Wm8&roW7F2HTo_0@{2%>G7i7T_#xxpS^hPLgLviw{{%`= z=E9@=2F;y8WB#T=G9F{K`x?tW3>xg66iSFPdB_ekNs`MT}& zwXZCznO2Q2w`KRJbjwvPZix!d>`8luA$CatL@eM{9> zqUL#pR2R(r*egn*>gAvzwsI~i4u!25Re7WGit|{0A;(mbOIdO~&?D|}$?s$NGc14E zC0FrZW4Vg2d^kNwrBXKk#%T|79C``TD>8sSkqflq3_#cvBY+-J?vhg~Q%qv{aV|N< zx6&&6)h@|ggiWyksA_Sz99M9hrh$$fl~)U=+6=VptGwu`lp)Sz`A!=RaXG>!KeLkJ zT9)s2;T;^loAExz7i=_yl9NP*O`+nbeplN6W$j-%mC9G`2fknlzJ7+ZYOPV>2g*J8 zo}CBn>k%PpYy4XIAV`Yw8H8V7j)-);Q=N`$81G1jam~P|AKotRhifL@0nWs=0C5ZP z9lkE|61@F1nE|M z`r{MChyELhA9=U{pRM@x$0vx-FnmZ}FGh$ie754#ADvu2BC(75MwJo{qYInGYp@R_}q*)i2LIc z#HSpe3Q>kU$`H2<@-oQF5Vs6*%MiN^d5nW@9CYKL8wcGu=q89?;{`ds(8HNwZ zAA!Zk@%be_Tk+|SPY|DB_>9Eo5xjL;jL#rZ4P7;K)nXDp$Kuz*_uOK3({1#iu_$L41bcgZHjc_IW7#JmfbYY33vTNpSg- z5bq?!I|+H7ggj5ecXv+`)5T)w>+q>Z8`dMQdW4tYx&+tdNOKzUISu)o#^E5Y!|)l2 zPboe_@wpjwr}O3}JPq6HKSkU$@E(5$hg&$D1-#1tLqYF@>}I@;@ovTk8Gpn0G~bP)#(%KnD_}S+C@&ApG_rsP@LZBC50!z+f8yI6_)ys&&ArRc-0ra$!|x`uFAPsy*WSc#2ARHskK9t&rbSbslhk)z0+Y^6!xEmWQf- zkbbw!op^2fgPhk+60K8R%f%`-@@Mod`c&``)d_W8Z{!)wt zJ|e~d9~a|+Pl<^JzS}J}dwgQQ*b00_oDF{+C?m{mlGjbE`zXkip&76mN~#CSqNMw2LoH=FkrhJ1?-Szz)f-jaI2gI?2^X; zx65ka1#%{Er<@DCOfCdoDeHmP$Q8irGLbuiBtqt}&>W=NQz>^9*XwMFzEDy)h$z zmNe!7Pch~LR~w6gO~x|dI^z^zi_rjVH`W3>jP<}xMmun;(FyD_&IE2Z&IVp!YzOW% zz7M?22>Qa}O5>71P~2>6^aaJOMgq9cXa)Yvs0pI2j2R)c731T^9E6`T<^%E8I`9Q! z8E`-2E5<1Zzh*Q5-!#?&-!aw$-#6NU9~qs%PmD8xpBiTazcjXo%JJ>^XEVz2OLH#+ zegDIt-AJxf0JCI!Gk-j@v2JCMOx zSBkJxC`OA672iXs8Y|9Btnaf#1gl^vT4xM?AGS=az-qY?>+;F?#>#5E*3yXeHHsB( ztvCiPbu8AgsiGCBH;8Fi!)9PDtHHnBH3#34uf<$2S6mKDyRZ&ki*;}hTKi_qdOyM1 zcRPNG{!Xz>+=cn?A~oAU{K;0Fc@=# zq+P+`(}JW`;rm(go8VBye4fKEGya*;Z6PB>sWyhl&N-pUi2nn|KeA+lhn}Rn?Yq;S z=(`QtJMeC#5TB*>Abeu_TNFS2UEtRAPk`q#KG{#2C`ms*@Qr>HKg&n8SZSm~@^(Ke z!~2YXXYGF&uT9H>)}NUV?4LOhc#(G~a9HLj;2o0WPk1O!d1g8AdmLvz<0+X{kVG@7 zUagFq8P8$-b>?G`Kc0C4;yj;O1KiJYk+lrrby;TtJF~U}w`4trm^-sBMEKgQ%Yjd2 z-2z;k{RFTzn`*i#`x%5E&Zb&Co&5&FgK{W5gt3@$7~_bX51>``eUc^5G45ylBjX#4 zZ!^B1v)&`b-*c!IW-j4^T&l0Kb5<_3$@dwR_6m-3RbG|XYG>8v&*o9u-Ter^$fL6T zH2*Q+2j(e=xz@V|_;5bSf16KnDhn=vr6?-0KtKu>n+u=NR37wR9lKn+8_#*ts-hg=$;A{W#<-F3`^D6oR}@nVsMU^;ej2JZj*0dqtaV&?)4 z`~pJ`!udc0Gj1M`W?ln(`~JWIxFa<184RR5K?9+oz#(Eduo(AT61)WAVVH|0q@xfX zfnB!&=@>{xGM3`E0u4yVLQ;;|nSMKva3by$BxdIc2v5e0EyWa|fw_7j@L0$U%=pJZ zJ{4$S=06TN9lx4lVDA1NzGq}0_IltNtTYlaS`kj-SCDZYB+dYKg5mTZR|C7yjlhemaZz>mcfz;DEpKp~$-NeuZ6!V)Nj2XE=a^BKMP zr5|kJfrjwQ7ZDBs4gA{F?-33GF)rlG2&V%L{H65I9AC3=78q;luLp2p`9Iy!;0wQyEW? z|APE`Km&IVpCLRA2;Y`pAUp#IPnKT+=g5Bp=gR*8Pn6#P@vAQw?;c)uJBd{7p_@u2FoCf(vK==&aR+Zv!Km)%mGZXl^oDIoAS&Q&jjQ^G=LUIUbi2um>Kw&I|L;^9R z8Ydxa0x_c+bwHo71QI{cz&+41go8jsgbehINCRTNHBJT=8m9t_ja85j1!A5w8i2!% zM&Jk|3M?_2fg_C=aFnqgF(W|CmPRYWr9cCByK#iefS5UrGY~EZ!at29!sCJPPooo9 zVQd6e8k>QOj4i;E@ZKNhG~;aGX+}5VuL2tQb+&V5jTmN{m_tXJI}whUmjFxgMp}(1 zGj9c!o3{hUn>Pb1%)P)Wb02V$c^zw*qU-Cg3c* zjaMV)n7e>;%^w5jnKuF#m{$N7nWqC6o9lq}W*cy+*$!N8CV(qVFG_fd>BsEcW47b_ z!cUnA;BU$z!%IjfiIa`f&0y~fPXN%fUlV60RLoe2fk+R0KQ>f2z=9| z)2~09X~1{PFz{V-C*<#&7Z@Rtg_W=ft5_LUq+@W$FdOT|Qk-tB6>XTipGo(0(YY~x zb1o~q9E-5XO`~58g74UWQapuyh5E}EX?_X~5;=UmPh7;;hxAoUogZ)NY>A#AW=G@G z7S)zFwX}%ooom-d6LlS%TcVbDVS6;u&=HHbCCimoEJ{QhV@XJ0Alj0&BEn2-6u<8m zO^VvoC}LT2a!S>Vc-w|(g3{Htt&Ll$X2j!(rdV4;N3?EpvLo7>6pI@0Z-hrXq6tyU z5o?#U#X3aoyjWYbA)&%LtIf3w>!KYU{ELFR6159Ot)*QYZD@)nR!CJI zIxyUyro5z6&;Jx zwDd7jTi2Ob+t7&Ax`v{5erHQZ%oa1Vb#vm0*qQORj>B2f4HNBKQuryFc78MwYl=0r zA*)WZKv~Ax;BqtJuq|<_0cSR&GqE8mrfrHP7sAUCliGS_8?`U|y}cn3ZL;cZ^{wU@ z6XjMEQLF4Ihel@P*y?vNEhk?Lk9OM1a+g|H8%59PjJ7pKEl-=)*4)`*4GuL*Z68RA zndqa2b~UIWPDW>LYK*p1;i;H3W;fSG6B}ZUQMA;C7{-h)zNl@3BPUfy&2PZi-sBXE zyT1+1U=_kCUaJ3!ns{qNtZi0HLvvD0-`o*hn4m0xJnS)BI4RN64IS(3^iCw(L+yI; z++g>RokV$DiWR#7QQM{{#z9>>x~`#RaTIeMHKVAV73=6YoPRiOr3cc?mX=t1G9GJU zKTz`%J4Z?{l1HlqbKyy<<*oXpsl=vs#= zC8AaYT+PBUsTE4C@xB$}fgt5TO`&YQ%wNh<}%n%}S~*4o)x7i(^dtwpih zI%;Cgv5q7w>)_f^F~4CwCJWjIM0;%ql=nCWk7!I8s+&1uRsF(Mi>G1hN2{W!*(7Q< zi<&dV%uQnEW-;?jv8cUOOiM%?7Oq`_+~8r;)~>~r=?n>~!m<Rx&lB}=J)M$b zPD65KG!f^t!f}qrtvTx*73$Pbq%N$6;A_rEnK~|^`X;g^y zj@lk)9NA`^FBNcFORPaP?X)#(644DYb`y@gINI8fSdR&uO3V{qQrHHZ5SvnFQcPIM zDVO=Qp-L`_stptsHdT_!RKvA3wM6R{*VYJ%KBvK^s?;snoZHDw5VDD0S^TwS>nZ%ph)Fi9Am5o|`OZs)urbI)FC8@7nz{R%~ zJgQadT*_*DuyBAPS>>~*+TMF(ibRter=J&XYwlRb!3CYIIxXE#Q7lN<5f!t2gj5!B zoPne>XeU5B6(;s=Rxhf?PijirT_~kR*gfe!gM^l^s-Zy=4lQi6T5NXIzTsLR7SNqf zOYBT+o|Ec!3IVz&V_TTj6Bq>zJdka|cZ-|mkmE0owqR`H-iPi@dB27MK;0f|bjkG1 zDVI!dSp{4Wn_M;F&)kF!gDQM-W@|g{owy>&#n=Hf@H(k@U97boE1V)2wP?U)v5s}I zHi05_U?YoNOHxT{Vo4;$#$iT$14`C3eX|NB#f(HenWP(GYXhAW3lXKIp*@Ll+}XGe zI;1|GXO_iLs4$z@=4iXXw};BN*P(b=z%5^zq4+eu)f1LW_Hsw|Kz1zcRH+W-I8$HW zvHixG3F#g}-3r-Wkm>=wdf)EFTHVyOu4b-H>L#vDs^+Dpo`E?}^-eFhuf>^w?ufFvoYr<#@G8cO0_IH1D(xF}Sjf2yNdV5SJj-sa2 zG#~4mNs8^Fq;=h(kk&ay+t%1ZO;AfGUA(d78ISU+P4ePj7wxEz zb7*Be-YP(~Emam>4lV=d&v^q@2pvz`Q6_PRlf;Zto791Y9qVvMj%gaz!o3i1Chk4N zvM69lJ9ao5+qkLpc%x}fO@-)891prCD~?vz(U9nHmIj{yBR~PDQJ=2o8wo zl+xyQU==`d_sQxk55J9s&-iy}kZoOaBM(%5l=wQJQfM-r?kvk@;zxzNH^o3wWU zwMkwDXzM~d3~QHwF>384^sa-3t+Ny1tp_DgyBq|ZjRu`Mw_~L9prp-!x`pQ6NI7OB zi8=$Z_vs19EMlEr^DZ{!XpLqIoSYzHeS=PcMnWHog`FLIMg1C4+E`mBE!)#$&F~pI zYn_J^x0a|T3&?+$ufYE+@tIH8`S#ggg&nH2LsfQYq8*xKhbG&hDR$@>J2YXu6T}ga zp5XEGOLox7XM&T_1Sh8nPF53~ye2rAO>lCnaB{0~a;tE1t8j9waB{0~a;tE1!@sR$ z6|%y~t-{Hz(#fsT$*r=Y*FvXmM#&4E`Bcf27gf~gO>SVYZ5akS>DNJ{UmGO^qF@kK1}~650n_kDIU~S9i-U302QUsl{9rrMKDi z&3x{YYS7ju#j4g=+a_ScCc;?TW)7>H5UkU*OVk@+tlyfcgUe`r+&%=ck0#4GBotyf zpa*z*RiK9r_M?k(bqjQ~7?_vz9^q)Qc-wKb2)uVWT7=%4oukF2cK;5AvS&>FEaQl+ zU`IU6(@Ixk*;D7y%4Sc#M~_7Jbac;l#4_2pd;0L$Ihme%lw>EA>xte<<(zIGJ(=T7 zj=MRoc9a~;bw}{9P4Ht#do-%EN=GxTt*N(;w^O~3Y}H-}>2N3>rH8*xGTb{`M{#s4 z>o7W?Rm>h%I8x}7a8W}tS-&n3?`(EGN2*QQY4q&^7D`*BHhVlFOm9d=ojFn8Gu6jQ zEDoz9Pjwy&(FEZz(($8jJ14cb>Me6p^wyAtx@c=`e#7bU1U-4=twXBBjuUI^9mkeX z96h^RM(b_0i*H=HQt)LIVxE-5Gv-Wh+p;qMU5-pyE(B?+ucJq^SCFGe`!;|5Hb49}|N1t+ zahm75cmQ`RyIKooa^6(UcI~sU<*~#RNo_-C;|7F$&0(ZdJ3>q6Fw)sGGC#tf6;Etz zNZ?r$-_1}8Cw6K~PMh-52<4ml8VSY0KG0be>*LF2*G;KHZ+0B+O{mn=hfS&1J@tmq zVO~^Fdbq)nj{Q`G-e-kM>MTE2Htv^VluRv=yd)@r`_xTImZrR8lqz#vKrg9EP2+(c zb{#?O6t_yjR#?lqjyy7;P{gINlW+rAc@W_|sY*H-^FGz9P8J0ycvyBC!xxmaCFMp$eh{cEzpbo1bkuo*G$6X^BLGbp~ra->~+ZhkqYPc`clRc2Lo#x^^6!;^~jQVO`$Z;$m<=&G=b^lX1!z za6N}mhFk~ab82u-)+TUKC$tFg^oRFP5QJYf(lb8Au$LE0ReW4jd?C#?0 zagIGLxw)-zaWsi%&v?{_@Qj9*mNgBH>#-|qj9`{)8Qi*OGoHcBv)ab zS2$>h>FADdw%e_htI)kQURaBr$@g3Opt@H)I!^3kOEm<&JR}(KAImUa!HPM4t`D*PJfe=#>{F!MhDf^hh_rU_zGh1fhnY_1R; zbpEtlU7+Wuv}@v<1fF%!&9K-d>q zi~YDE3G4hS13lJPLlDmlQAU38l#eawnR_yNhG>l@lMT&LeDw!!)Tx8|7`m>p11|^J z2VAOc6BsEmJdn1n4N{nxwq8H!cM+$ ztu+FtIW`^PbaY`8e3RQe>1sghagTr(>lQsjoH0S1Q6cnUJa-zsWIaK390e=HMohw+ zFfBLIwvk_F;}>7C4OcIjC*dE7B)wCHgLmhJCXwu1W1nOQJ2vkm;?CQ@_!o*A@ja_X zdWj7E$1AlOBfKk!_j(h0on8a2I*4`jh7(>YpdL=W%LlXXnaN%B1KBl)JD=#_^9fpR z8gNJe|B0z{RJ~Bqt$u^+4dEt!C%ipn7u$dv{_%ovf?z$DKWe}2+7aiStLUUBlns;z zUXs)gZkrq7#rDhR)Z)$(#>~&W$!T33|fZR|V&6 z;@1QFs%Bu-?M%1|Z`Bg7SYU=O=UFA*ZoO)Y6aLnv_&x{TWOZ!K?u<1#%&I-M_;mi~ zC}zy7qdh!cVQh1iQRi0^YiMqZC(-kCw7#aZxtZRUbrLHXypuKyJrYm%6HJ6zf8WmLTjR1@!Xz3@A`CBDX9ZiQ}7 zzEh-S9DA0A1l3q8aK_ZSCYr!aBxWKzmRpDy%vp(!R`1sc&ZGqr z?;T*gS-H|%1&%?yd!(MoU_Qg)O=kjcTt_8_3$wRQ=5JB`OEL^$Bb8w5C!#a)tm zOHDu1Tua~M;Fe2HTZ6p>mLW|S#5)$D;jx3&y+>))YoL?~F}k7ClG-G4#aqebMkJ>8 zgE+CEIfn^bsMh1OBqCHpZibu`}pvcCc4v{HE^ zzpPAkq7Jg1m+wQBWAPgZXlvTzsW^Ny>FOgqBV#8^85Hz*RnVrNw$pWI;3?Pi7*&d< zP*_ubN^gvGOsay0p8PIoSU~T_q8a8jY{uIgP8N!vh$R(Y1Y1&%Zyqnhx6119o#!fi zdw2_eFl`&YZB~rX1Upn=hbrw*l^vRBhbAF(D!vN-i>dhfa~-~@?3kW`C6T_e78R&I zzMf317N4~U72~UQoA7n&VLJO^EZM9jR176KQ%k5gB$;WaqGBnDm5Pd|BvvXaCP@}y z!`G@UQGrP|4nI33Dwm)<>+y->>(FhGVi7{jD8g2Wi&29H{Cr0zq{kwLnD|}NB(ceC z#TT*TNXeolho#EB~qyA%1g z@>j|`5TX{OD_-B^mTTtLY=gc9{}n?=eNMfPeL7;bA-AX)3dgyA22;xbeMdctsI!4_ zUC9I*vyQ8}0gXTjRl^W#VtFyTF9yTwxL~Rv)Sd3)L=l&YaCFN_#A!s4RZ20sPTOqZ z)N7DiF|_0$&75B`zN5(CM+<+kiiMxrh6|bK z zblRQEKRb2P_Wm10;QljDS=ztq&F}m2vcobv6PGOelIzXOF2k=#5f1j^G6fgNrmzgr zx2ouL84TuU8(sTwg%Q3YQnyf?uf%IKufcC#nZB%mN1|jN`Z}uzKQtjAO2^k*!HPvz zx>+m?d;<7{J;gE{_7zLA;fatk0%Zis2!6@S7Y9!FID_6IsTW(394YRk=^x4c1v~(Dmu^e4gNe|6Z{9@71GR_2h5sh zl7;SdY@vG{S?FGe6ipnZi8Adj3&3P{aR6;G808k(t2v9+6db|95m05XCKy4&779_m zn>^IQ9xnlXao9uO5XLW-0q`4}!V@A$BS|Rp8!Iz3c8g- z^H_Z=VRwxW?Trf+NGZBAsoYyB&0sHDc@S9`z;*u2z z6q`h|0zn<2xPMBDYiC3SsTID(4WYBkrFLpGDnd)tY5@9hjZJ{imv@^c|XTp&1(1u zjG*rfg9nlUg1B(VeYk{ip)p{MF;bzp`{1!?K1%2>_V7RoP&M}9e=BgS4s;9j5OlX{ z8(mO*YTqo_{{@T7#?AGq2ZB)6v!5hty*+zh`b>$dm^Uxb@3Kt^XQ zc?DXu-6tUHZubU=1bw+#^XP|lbj!c*LkrPNfJ;UOTwZ21;lFus`K);q#IT^yJd7U$ zz7B7CKM>J6?rIO0D3^=u;iBYHQ9d<%Ub=pXU!IT@IE0~yfn80|MS$NM0H7ou{D=QB zHF)rwjeuf;Y63)r4nK!NzeT{Y009bR5)>0u6Lb*>Nr1jaDuMt(CP6VlH9;4eE}Ydp zl_pVKXs!>Fi$++QRxESzk6@rsgTv{?GB5jh8D@ZwpiUe_ioxN*VeV1#SPs;nw=*cg zG$<8jDhdU0?LghD;REQA08Q?ggS!q<_YTf33=|8po?QsH;C!aZxNaSbEyL| zFia5@NKuK9Lz5`GdpzY&Ufn&_lZB4+WE12N6C_>3w4`-p(8eHCjDCz{gu~e*GAURL zsp`eT=VXsiw!+YN&&g2PE>DN4_KfV+tfduqHQAv4U*~xr zn>Np12|gfr9$N{|3j{9`yhQMOg8c+96a0bTerzv1nWF&ToK4#aLk^-rl_N4}k)N57 zT}xvCTdJAVRhe1oe96wF2FN7Wz`Bk709~@Xd2&VoBMWmqUDK$36o8U?3Lb+w6#E8r z`)Zp0(HRH@AmJ+wd3N*et{d^QV&ea6@BBjBs^U0)@~`)HE`j*qhHK?kSGuApN!EV~ zV#|VV$TC>6uEU6?P1;SnCfaNoMTkQuh=LD6R);XrDZ?@MV0|0i#Q2wvF;slh%_(!> zd{M`+w0?f)=B7=G?7>I9$<4Xv-1GaL-}(LSJ?G?m@A(~XNvSfH)hqcB-<}wZC`?U@ zsXjRIUF_;lGiNS_o;Z+MxU}iHL-Vu8Z@;jk-MaGifyM35zIv{B@Xx?|(QMn)!@DxC z-L?MurGqbhHBj90;^MU!<$#X zg`rp}^;WwC`+0<=QFNyeJTKzZP0l-zewQ3C5NC5V_vn!oylE$=j z#ttf`!giHl=?nCZ(JFTGoE>~a``bcdyRlkG^tZy%oP3|pOPa|~MSkW?t~;0M^qo?w z$smG$&}87q-DOfy!)=;AgAy-uHF!Amn5KznGV%xn^w^)M!9{byG}~ONMXI-{HVvpz z0r%oRt|3S5slkTjWHk<*j`qYkzu__|SDHA(D}PZC&+lJ{cRb;#VOl*Mz#-vsR5XbE ztnx#<%BNfyQ>vr;4vah9gpIK(?u6H99*vgSz~4UzXlOK93|?-(PyTu7!A7uj9mdVb z(cF9!zJ?&@{Z*yz#IK%xY*jH}tFSv=umC(|@`DvmCanEkkuF)pSm>DEBXFv?HC_{! zsY^WN%8eHj`}P#FR>(@qJZ^omhHzUSAG54zINTSCh9fwh?_|Z6k>0*&@7QQ}D7-Op zcc?qvn+f%IkM)Go>9Nt?k#x_-aF#`dkskR?hLKVWIj}pB+ax{dzGWvaG?-ve1MlSJ z(5I$!m0$j2$2Or6$|?5wi|n7sT^>t3IDPb)r{Di{>kHo=x_o%zowGs^yC)Tsw+eH4 zfooF_$((cP@vQz4m}eIkt5G85Z|~)()MYrOpvS) zdy-rNC*t8#8Sr!J8PlbY>iXy5V*|LtcX>S|K7e=6CA#{0$$62vm%Uqm`ZD3kw09|G0*eNNHf;V$fLtHmhr(@7m_7kU~I{f0@;ww0fYp?hLD5oCL00-e&4Eoo|%yk zcK7qXzxSV4w)*L+uCA`GuCDH`erB|0%S~huk%`}T-z9nkPyT6=^u3dD6o;li8lo@x ze=y?_ZS@akbnF~RSB#{RJ5oJE6}>&f!^up=_C!T$bhu(*xMIb+_KKloU!pb`49s#_ zuWuz+FX| zS3Yp(OA9~tro*))(Az`Aa>? zhQH2Pa@$3J`rRLEfA!3s^NXLl_}e$!^YG&5XH{MG&tq@aon89&Ptt!JnDooN7qq?_ zy7rB$&c1bN>Wa_ru9`Ec=+<97Z$JB;4eN$Z)6);ZXet-z`+QKAk$iXp^hJiEbvFGg z`T#A3_4s6>fNqSjEtxf?dK{x>)%eqY$0J}>`O+bctRh`E$6y_%uV%YTQ9bir`T5hk zUgk#L&xjL4DoFl$?405K{ zA)78iZm;gs(^sH;3S5JZ`E*p8P%oHXpm z+IvdAX^-#daeP1fKjV9`Zp2}cmTtxaco?RhejLxr{koBS3>i~WBl#`Ka~cnFIrr0| zo6!rX!Rx2bN{T#zkZC1FpygAu9sRZv$d~QtFH}cEri&?0{YEfTCU)HyG8ZgR`YLo{ zsR9l9a!On_PH9TmIAtCiCr@i?xT`yIedMkhu7&hBH540WZIK5aEz%aTlQy%6ruzXJ z=Glkw@Q_VK`l4GH?TsnADr4HLx*GJyQj1wezc;3SS4MxC+f%>WQ$Kp@&lA@$7o4p+ z8a2aaEVYi=giVi6*mN0%O^;L9oKPLAQnp^XT-OaV2}f`F;*->P8FeOI48i%w?ILoG zvD6rvQIg3_PzL9!t}3gHrUkLomrq8?CIfe9RdVK_YK!N3XM>0{T|39Troa$ZRqGuRquQ7UWoVxGrQmUUP+p*5M)x-q-PnvS^I0n`PLurUgS>eYothM&ALpzEWjxj23%UsgDDSr1s%)AW7J&XSpA$xKRv zERdYe{WeA;ASZ~O2HYwx zF?${RzpYZJnsJh|z@Rd}&G)Jc$>9lfHr2&fLH4kjT!H3P4BdDY17S`GelV_kfY)$V=#w7!)bD8O5NW45dA*H~%LKF3ceMvZ^KxOKK zXw=BF;*aHKK6^JMf??*=ucu!Ep1rq>_@nxM?259+D*3E6<{7IV$KJRj_hPDbuTs{5%b*t&hV|5AkSwAls~~2zVb>I=!4|8ao`msRRuaQ)RoZc^0f9m% zUV}#lb4L$2sXw6N^f}2|po0G5I3_@#I_kG#GF_6e@jylgW#vRxmtft+atmQ#&XyjB zy&;9c@fvLq287Vzu)dFpQegwakrJ-Rst#KE72K0}J-E+-W~DC=OsrFuSI4kwv`QU<pD}&M1$KXZH%I*1N z`aZ@9ZDoJ)NlL`EoF<-(mrD7mqk5W04b({UX#p*yMYNc>By#?>FFfKltj0}1Zo?dYStU;Uo^aYSDJ|Ep5 z$NV&>+^}4*omnj0mbsscB)M^*r0Z76#cu5?=@jbm5K3c#s-pdzu__ARdH3CqStXqT zOAt2>%zGtPP*pB~RJF4l?2p+codvebdfs!>%WmL}%{Zhty?mJ4W<*R){PF&#yZ1BF zgLgIE9V;veR-G+WewCJV9dc@n@+$4L!3!0+Un==k!D&@mISQQEJ6fT?q%-KBURr;Y zcWl!O<1lw+_kQRK;~Xv(p`v!!_L|&$^zN`-;>xqR2|&Ola>9;B)DI%ZBZAOjry#um z93g8gYR00zMTambo;RbY<*#nAV~6aLL!BP7>B6XGgsla|Vc&iph_HEZThwRA!q(kY zi|i79)LXGb)^Szz6RKEJ#b(2l8XSC z%Pz$B+DR@(o^6x;K{K8(=`h?S95DQnEHG*hmnV9G+ViLlPaeL|aBSIZD1JWDq31&I z^YnQ%;N_YM++6?BLNC`8EK%C~3dGRi%+G>oyhcoKo`>#D-%=Mw`eOWSpt~fEDnkrg zp5Y#h+M>>=KNbyC^@aW6z`-cAQGG_(4m;h|MUFpT-m3W%;9%8km&~&B$O2WN32*^6 zW$$QM@B&bBARGw$F%u4keSok8>B%LKZ`l$k*Kqt;b}_}&KH0=vCjuCDr^OA>lNP`f znj#4M)V`+pbA)(y+AcOqGA;B&cUvVg4>+gvuMrkO>G+K_{s9TjXqozKHNA?jFKZ}|6+*kZbI5QG zb#(@ulFmYh34dQT=21~o!z37FBP5BRgJuI&+qvi{6#UEPTE~pTvj?hAj|Hn@mhL}f z_z%UG0V7F3TmUnCxvCo0UsY=9Ve^oI-!3!W1hUS6nk!+GseXlhGGhZu*JzI5kitf_ zW863Zg4zHQaT-OMuf{YJMf!d?dDGldq{C4b8kTMyGCMIAaFWdMkA@lxAH^{ju#R9a zgjp5{=<+Bq<8aG?LR}s~zqQ47w)muIOJ}?VMN!l6NujgF-eUPtohxkVier-%5QE!~ z^R>BPs;l+azbP=>3ZuKawnTkZkNg?@>RHs~_^!6o$|cHgs@0R%HmY2l=DOhkUSg9jhMv5_G03 zS;qU1E(~S!P4jiVG6%U6c6?XU)O;%@R4&M-SYodh(o>%H`%Eb{t%|215 zEyu~QIZuYo6J*%jlqW;H731Rxf|ad4=nAr{$?B@oTuH_^H+4xnKAH>rz)*yxadcN51>(Sn(W zO^;>Rba{o$ngX9?JAUOv5l-Oz&u)j@x|hWwusDEp#2h_t0%PYGr9ueAM~yQdBPTz zz8vN0)UY_pv#HV9f}NWy;p^Xof=X*vbi6gg-&C2!E?ekHgJJf^aXbu&9Qzn*o(nC7OOI%8y9l2rSf!rKjbtegAf5SWWe7b8Y(|- zmtS2rj#b0l&xr^%&g+d^`1fVw?7g$v8E2pGs;#(5>TDT@A$d5bN%X&E90O&}TzuEY z!z+Jz^RjUk!&CM$5$eKmmS|>V#s_}V`szl@ zYRVpJvw z7DhOwq^p%rKi(;*$}FiY#q2pxHyU_~meiU?NrPTeSq?pyy`y2n=JEj3JRSxhoXm54 ztkTLdRN`tzyn&5s4*RG!&dELq8-0QtZd}_ak<%6;xYPZ2*~#-j7SOHO9b=fnrf!wo zF*a8+rFV>>eY5gnqXt6h`xt9T8b4oHgSSof7<;JIieuhJ?3aOY$9Bi%XeZFeji1#5o$B6I5qewH7Ye5_^;sXL&$#nn=Y&FE;?5?CL9_^sPgDc>1 zTn$A($4GaeSRyx@kg17a*S{GVIhD8(NMo!DP3Xob6s6UKj8P~-D}KkokYaZ^h8?O| z`A>TC0#vKkVFSrd$wAA>F3ItDBC;cdYR$l8l{G`($E=fEKo&5n3-h)I*cR(?RJV$g zSRbqc%f1ksG)5SLaJDc@?t5j*<#HjoWH2_GzK@4ZMU)UA#<^+-+T$N%6xOR(2X!OE znfOKE=SKbniAk=WXY9x@c@VW1#Z7z^4_I~H}Smh*w^j;P7| zcQ2G|;8b|9z*e!x5260)Qa^!$fF%wB{;GZ-j$S);C)p2l(69UkACb-tn|6J@ zdjSE(#!^?9d;#Grv5=IeURO|=ACS6sKwKrT*I%&{-YX7MM}(H650*a(AW;3FI@BfM zkplBRq$lBu0wSA9uR}I;27QC%kS%#B9tCzu9s0#apyCx)EI9~#)GCSEi?};h*j5;f ztux3Au@&~a8yakn7t9HJo6ucND0M_KmZ9;=+8nsRirWz>+oE)V%|sVR31amK z&2rzv7<2=HQr$?STUK%eIGDjGJNRl_PhQ3_?*lD*7@eJ!9ee19y|Op@M;Asdak3sl z4kPIlNHBvcR&#VmdcLJ|FsLZ~_1km~=>+_F3UaIGU6iW31Z*e+nRO6~H%2;NGPodY z!pZBQ4WA7ja(1tJza8I&Jfh&qWd}H+}#1??BhsMwZ)|yjYiTdJuJpzmZRtoeNDHM(r`m;<$uoqGJdCb)u z!|XP7-&i9*Lgv_fJfST1xoDQ-^YGuiRN(%|(XIHEV3NHm0>+My3uc1%SAOFr)aU)U z^7VTBIuO={Jm`IZ8uc7|Zx8gXfgseQ%=`3)p#*lZm z!(=P0Dt7Dzd6=%kDtKAPnr8x!_DW@s4ilj{kPVv5DJOmdWD4+#0rxtw--v<& zTMBHeLAS9qUkj9?X(-a;?-z)*Ez41yd#6})Dfe9IpX-)a2K34gs1B>%*GBYxtayDN z4};n(#vrFD@2#A{a>lO#4>eJ67P?STb_VqL)yLsko1It#Wq3uY3v62*jBVUIv0l~1 zx{PrgdWbTAp;WcHyr2Qf8oezEwrU6{!G`k$?c$Y!+uV44tXZM{c3)q&KQ|6nAWjuV*f- zr?0!VrWktGlxIeZKMV?3Qa0|etEqwQ!c!^RRh}7j7MMoX>d<#yS-pcFv@*%ax4|ME zq0DkGpu&pE?Qc5~mNc!#axY4O(jv`0d9Y54bj$WS!efE;Hi@T+F`4f7ZlY7Vk8hbv zRPWSV3RY>VRIu1rvCds=d1{VerzlOi*r};T!Quv($Hm2-mRc@Ybu-P!jhmG|b=>k` zC1ty)DM+mZQTlSYDR>RpVaP>sz^cI-sf&jxh-fMlAKwkK>gBr3ox+H&!t@GTEgswo zM)1PIDB4ljm@Ef~zC>^@%~Mg(l`)u5{8pAm>ExS`XYPseNITgfY%pV&R28Vk<9i@U zz_Nyhdj^2wnRx;oBNg5B=?HBKEvAl$aRRZ(CQK(1b5~9vmj0bUY*+r#b?Uw`Y-r)r z$FO%}C%lLsJ~cJ=32q;we8tH%U_Z7Pc|Mz4)B-*5k1kYLK8~Us?pqk>`?Q1bl~-!_(uhk@AbF4tCDi?@xvgf!9-U67T!Uf zc|{6u|6YduJI=_s04Rl*^JD?};KsE>z4;~Zq6DtIAJVH#&PplCBLiqJYKY~iFXdb&PXWk^d!5}K* zN?lb!7vc*3E{@QIeG68WRbo@$2*0B0S++HAlI>EaCe&l8>@MupuzOn&!UAJCSsj_B zwR$;RqoQ#;*H!1J-c@1k;F2g{)wo%!OW;r&^0 z2!%++?CgMtM-j`zPv%*9*r+MZ29FeOi~Gnf71(lGmA9N=+%SHe$FZa_BRPy$rc&$S zt5g#TFP@I~JOK%(e2Q7I-DCM79QRJ)-`LJQ|AtL5UW?#V-W+15C(#EBPEQw&h{s}l z2|KM%a}(mnJJCkrV6G{$MuZOE{)gX<-8}1 zA4I7h{|vXP5FgGV*mwFU0fxmaN8V^4?BDVWw4&O^kwq2eFa0f;!6%d>X!&vQm)Bsj zbyai*(FrN~7RvLAu(P#-wqNE4;y4cibn*eYCF{b5<{uW#TiW zc;Wbw^97Ar0-k$rV_{QeVA#?+bjN;c0d!vj-5Y$!^3=lHiSkOf$JqLDM~vj{AmI2a zM>C}Pi8VsHp=6GKE{|px@-^TtPd~>A4@s#J|2&=ntGr=0stG%GM{btANpcSooOF2? zR9e&M+kEzn+ZV+%d+QPZ#J$NV*Rhyl&a?!$G6)nsg8m0Wsd|PoXFKGCkye7d9 zp&!vU0H_hs|RAo$U8cHmpkZ2t?*)3a=LB4NLQGH0whifVtOIh5OCil#%x`!fJrB z$}O!7n>CXS+)w)QR4ZC4clCr(B^*5YOv7WXIxK5JAd6y?R?CCWszexLR}-itce3LP*RRaG>#8lx z-iD3ijtVgf{QL=ZyzG??rD`m2&Qh7q8=K-yyoBiPuCnBk&iFnc3T(YA?^wTt-45HV z&T&S(W5r_;{}NP=#Uz~i7W!kTcfwWyw^yyfKKc&qy8*P>bM{K*U$Ik8y^K1k-yw-# zf%f?LA4vTdK=t+}@0w3W65r3#W?$(1B7~VHuX=EpGN#_*j9L-vWOX^rCQWdtO}*b4 zwIlW^NXtCZa`lF0)QLE!Af4ioPF3%VM*R{0DM&fW!1D7tT<9$RWKMn#V<}6)yDyGf zN*{wVqXm(IlQRpHy6pzaTzX!hqJ@#dQ_z>E-h_e=hXYd_S>B_;NbnS-Q`G?~9B>6z zuQKtPyIIF6k;jz7BLUossH=onff19JisA==UVH^c-jMDj{|RtSk&)6Z8WCXeRxX@A zH+dCGFh7>A$q~cQ@Iod}7QbE_ogbt1g>1?_6aSj^ajKvGj-i)6Wr> zkg&ct?2kDj3x^w15$*~?AAy<>pqK|$Bg~0_Z1Mvri8%2OGC^x9j^g~uky;A`s$C*@ zob%n!AB6p0o$v{DtQ!aH`m$68RV@3C6RNts@P(b^B=o$pxYEe#!@)#lbyT|7Y0;u^ zktnffq7w78f*To8LLRD6B-n6bLGVOWNNB^U+mGwGD`i1A7%mKl)N2P>T%meTg?)_4 z=P7v)%ZQ(bw^aj*2=D9RtvyAy6fXidVc^iWhq!OMu#EFSW(>?LeIFO4zlH)80H!H8 zUj|`h^Yi`IS#P41ylTl3R7l@|@!&%k;$nDp$ccXiNN02nTr|HL{2^fRYOty$w@^|0 zdALDxk~g7fF>IX>SXbpL$XDbf`Qn8G5CM6$&5_FnUO20(u;jG^kH>oT*q|QR7`wfe zi@>P;!p0npTjP|ZXE=GiDoJlb55OQCwNh`ghAttbyz{1F8xk@vZn-!+T! z#1SRi$=gt((!BS?WduE?J_4bfl7`BB+Wfpb1bd}(&tt}sQ`&IR@hzo4f`;(w7jHpv z_GQ<=1InA;thr=0v?}UT8uBR(9jCC=X*P{G*KdQ4@?L+ptMMA*A#i`rs>W$ba-vub zPLk+Oia)OOD)}GLq#o4Q5vhOWZ~U4p)QiX8G)?kTu)cOep9@9zm<6o+b<@M?JJ3LZ zoyI1V9cJ>Qcsgn+P2Q#Q?D{2dCqD*EwBUKX0!~h~WU1TeCA~({h&~JI|)Ow_@V{JHRe-^H;*QxT}0AW0OWJj z6HKubAvy$vSZM4q&B_nt?$6z50AKCn*aRl-)i)yK!a`3%5z+>t{b+{S@Kg9y&SWL= zPvy0#OQ3#LF8g9dlG`Fn;NmIf1#|>}Uv02VYn4)^JF0mkq z&GKvztO~b2oo&OwCjm|#Z)HYV*}ZtHaNh&<<>IZ(`UE;@Pw4VPsN!Gwy(2h6`EiHB z9K$Y|ucqLLX6$2FHnK1>0WbK2VFL*c`RFjSRF#PIbm;j zAs9$~4UA-E59}?eRBQUhbosLs?7@0dp8jW4+lx8Mf+JcQe-zK_Sp__CSuTEZKV(jR z)yrTHg%Ts(&IXZF^?Ei^a|}BWnfMIy%^%d2H~rx*m;j&dE#%t&0|$dqV^&FAd9jcR z_yz+QJNBv5@jQ#iP!)X>MR*+}W{9J-VkM?zJjWCN9okinC;pn3%|%Sb@gS`EG)u?t z=1b^L1(cKj!AR(-98Ji_D4`!QL_QS1fkHhthD{oOBu#;a0$EOj?TpTVoLN5+aIdwy zu(h`Ff~mSm@OhxVk9k$|b%DI>sQPQr0QkUp=f8hD6>oOy2HxkM@V3!WNQC#ged_I5 zRU{#|fVrg;0V4KK>g7+sgs zgDChaJ40YlU1W4AGjMMo$`Aq1=js~e>&q1Tt}XK7Bs^XIyH!|;#ZQR+_cHJ(B5ktF zvGl6%(u~rb(qj^z9CzQ$9rj{TuP+nbjj;%7u2j~lH$LXGhA^!PQOUzCI0+8B;T)Zu zIlha2V{E+lMET<%RW(JasSZL)TadV4GGL5#pi!^CS9)Qz*ROOxAVsggTj-U(i!kV8 z=x5Zz$1r5fabCct6+0e85-e~U^Kd!5u}ynWfdeSR5Jn?V=m#|FK|yeO0@#|* zy-xcD7w3WhBGZL~kmD8a{d3<6J7t|{TGtjk=0 z(|H$Tu|ss{gejkog~r0^3O?dn#u!tmcC2@-8Qj3XpnSAH&q~? zyE5n9>o;pRPLm)rTWT!T56eG{_XExAm&2TpD^1<5P-O<7^3)LpP4RmKQ&UeWRNhw{ z=;B+{x&AmkREw3KsE1k5Lxrb@5>F4g=+WKK$S^c=NmbwfN+W0GYb1}|f3KU5{@>Eg z>BabnH~TBtib)4yD*3Pv(UXx$>Z<1=CW0gxZ0U z%}MGqKZ4*-Vr1QyvSTR0r`)^>{aifkf1s^|L<%dG(&Djn7AshH**~9Ss#q=i3Y8t`sWaQCd z`JNs$%XMYXVc==Gzg!nhNEzpS`1RwL^GwIWah_`o8U2Pu8A7z(3 z`m^y9r0+`UX=Z^LBHQ$1J-U>2)PKbHFQuO^Ii^Ab|k;Wx$m9$UNF-dQe^dU*VFX?Z>EOU9}t*}M4k}iob zhfR`R6G=sGr9%jO5q!EflIlm~%bmQRZ`t@Slos*EwsVo7%+4beTZ*G$MD`SVKVmV{^<(g0mw!mS@f8lpRO);X1O zzNM7&mr4Fw4T*)dZAQwUdsI6mb9&`vCN`N%NX-Tq#^o8*{fwCT39}{JVfV} zzlzdrI*LDVb68wm%n z33!5j1So=cI5d>~4(pL0@0c%>vLfwGl*Iwvjn=CG@w;p-q*WB*^DXCUK|rgdtVjEi zl$|F~#--dKt?$#W)tF1WK%dYa091vYhXI+6p-ms|S}zgkrvlZ%S8#iO5ia%k?gZ`w zz5@X7?$zUcI)=``M=5=X10NJ<9-#F&sof{g5`8twme4~2T@0ubySF3K!eyBHeBSt) zv~Z`+Jz7CWh4OCUxq==S=(9RYeJ(vi2hiTvgy;G6tdxBhWtg}0qCh{_xku~iC82yt zXMJwO`|u()peq3VUCN3KhT6$ML>7I(m|jgCxG7+$-i0O!wA6*d7!-`H!Q;?DQH@7z zqrv^VfTluQ7_nmR(FOP_wNBWBIFG&AG z(gCYVtEVfFE}$E&Gm+jU=>w8}RnqTC`U^>4lk^=)!#2}TlXR}6OC{}+bXd~sB)t`> zWj*8k7LxqT`JlFW{AEdBlk_i={sXB+NBy&L6Zp8K-$6Qqe(JA9`n;d}{)(S_{hFWq z`-#9`kbWWXTfxLJep?I9)HK>I=?+N;kzumKV7)c7XUeQ zuRzDNub4ydN8fPE9y2poqhHKIWB3M!F(?YH(+|yS(X*Sf(2aOg>urIK(dFiC6r&rk zeJ8rP^l!d50No*wk~&8BW}(j_67em8o*>r56#Bj@qk7*FKv!e$LUfE+vZ?fdK-W^U z@9TI|;Y)5Aw|5%7B#>(FG zqzd}J3w>OmtLG}p&kOXFKu>7j@Vx}ee^(GGNaIbAj0$t<6G+KYLDy7q*=_WW?`@Rb zl!bKdbh;0_ZZ0dZ{Mu}K!-XPNSUZCpL@T&#hE=A`rPVG}Z%s#IyIp9FHCwBq&%4lF z_B^eIp2$LHYjyOGxx~a^CzV2+*dgyc)`WHaksahbV`CeLu z-~#h>{P$_SH0(kV{};4AI^aU({ztTay55CmgK`H~!p|{ZjsF|kP6YsJ^mogCSCzH+ z`|_ak{omFGvXt%q?`fCNBf^ty{%JsuWua%aOS6<){m*GbdC<#RG7I(lf3G1dAwS1_ zqyE2ZmuI2t{62kO7W%9|q+_EmKgWEZ^%v_`W}yfD<@$IQI^v(9Uq#=~%JQ^!6@_pq zL-dOFls~RtO>u!(>UsJ#l#uhpZMdpDTYo=YE6^(%_x(D$$%VM@*U`^hh_&I%3$^>fVk zp#L*@EwmIotlyn2TMy_SI+E?fKkJ{OXR^@a`e*1rvd|Co&r!6AtG=Q!&o5A;3-L&Q zkun0Qk^T}DH8UkcZTgq#7J**T*j|p%hh2y*>j*vKLTo)psB}5kdqrct9HG@N#CkbG z7rGGZFe}B3v*Ex`As@wg@V{3ze#lh-9~c)FX%_li>pCbP%1wATIsX)v{GoGT$1XAPhL)zm)JPtpk>s^S);fHk4h1iGukUr`{tid1B zw*|VE9xrf=r|EYBDZTuN>^5%w7&NgB`|~1!ST7;tU+Ge}jP>#?W!$owz+~fD`l&!l zFF&DIT}sx=&**J|4qy#`lAfcX^QC{py?u^$yAW&QIr`daE;~TKDVT1&KrbVnQ=w>P{+^YSGy4P_Tw_a=fnnnaVrt$vlCHklfRTQqo&Ev=hro5V} z3Y+LR^y7Ah4$wJ;jm9hVcY&Boi}CN|?@(pe6du%nOL2jY$)4|3>e$3($B23Uj>ZML zmToI-GhU;oH*?vwbbsMS6e~Jd58Vj`Fg# zvh}=0<1WP3^A=s@Lfqb4^g$Qm_THjfU5IVzE&7;1YE<5)qb|hO^EQ27Ahw=i;~zA8 z3%7Sny#BjXC(vzxMvZsrlLB!ct~5w%y^txdrBLwwhN*4KLN^(X_G1?+4n9e^;*g(X zzV*RR7zNs|r0iC2)(4+3!rE}Q>?tFnU9BLjhCeZiwd)0XMdMK^);{DyJYvP#EiT04P^{hMLOiyU zwFg{?$9=N)Ll@%FjA_rg5RYa|`@IXXy~MPVi@EP=G)uL`F2ti*sx5aRp8aLoc>=wn z@t&wm>&~l(3kmr-=G*FjS<6AZL&7_RZW-^8W@aJYA)S$hc!yM(2Nmm8+Mu+c&Ir|7 zMj*DAC#hPyDhq7_bkLQBTd&ccb0KcMPV4CA=8qA#K3}`rg}C*_+WjuXtuN6Y&O*id zIoj7;h&8cPd)0+l6U($WT!>p(rtR96Yhi_Ug9~vBtF%wL5Vvr?_I4I3)>mui_NaQ? z!WymHg}8;a+Mo+@kJh?+dBRs5`h~GUyHm=PUN&i85$FlxvQ66K0x2zZY2V8$>(c%$ zuWYOK%e=C!+G}}bJ=$Ng&}&AI_S|-sQ>}5mT4%3<*y{SUoi4=o*{9v<tNz+9NK+ z*4n52ULdu~B(z0+s_)#}er=nS-Ava`xz^vWt(UUf=&aD+j2&8Mf+=sK))1MOXsLb$ zZ4UX(A?=DRG|3#+J}z8T-$%4hD~O(*@`#_K-Wm;sIQ@>F(^`{b+w+hbi1m0FjyQ1s zRY^IoyZJQg>NF-Cwia-HJ5qfA2~v{=k*d0i-k|pj<$j@5d2Ufd6p8C{-jLQ!w{;~| zev3B?2bJC?t$$oFxx7L53+9Vb`kM4BKmS!J{TE4pC^SEj{PU9kHBy8A{iGO^{vh}_ zg;JZul-vu`)qn#GZY%{~j?|<%NPUQ#aKyYGd5soIx=hk@k?M3lQiIkZHH8xK%afLB zbUeLAIhi%OK)78b+hw{`-z)jg=H)++yg?7=VOUEB9YH!#SE{ZmW&WnC!{hN9Jto|aNt&}O z1Mx4G@CSlda{d&2bQuwYekAypBvtY&n%@cL50WxZMX%A{1Y_WO3NbRVK%e9TS&UAT zvw4q(Ey~NQ(y5@)sX{1EHNSYS;k{6iKS#rHNyZ;PAC)y~l$*JR^iiYJr7hLFlh^e| zkms+bNku

Q*B)s1d12OOR@`Lhx%OzghC#lHV!mpkS1iIFGoeV0bJ%sZJatrFkU- z%j`*>mb@BSB~`AjM*mM*RGLxz^R=W}SN>DAnD0xk5P9-Tl_e;=@@(VM-)oT?bc4_< zJaf|#1?Jx6+dzJga`_W=<&Bh*DyLzca(RsoO6yExVDHVNW(K*%qtg20g6CFD*W2gg zm7Hq6sPrz8U+E-2uS#|CnMxj&s&UNq0)JgbIH)=M|D_+m^&5Jv+Wo)nbMpJR4)gv0 zJ#UuJIlmYGTmS#RrEkm|Sv98lR;O(K6JlwfLTb=MGRpk5$U5a?zAE@{3#H2c)X#T^ zA*`K~@GQa&eHib^N05)=Mlp(KF+TNGjAtqEWq6iTAAaMAxd-q&1HZEoIq$=795M4c zKyhlL{W!BcL>%AzXGtHE^t+NiBk9j1{gtGzO8RF>|BiGM?m#*9BYj#6OIjxB45TGy zJ<>a{i{>49v!rd3`cd~u+MsQS9yPmwIc9SH8PhKj20!hJzGhygT^GGgX#Q+&5c=yt zxy{%>pNYP0&I0BR{SYvp(KpbsXrXTwJrgbVZJ?K;E9`$`!d$9OQ-_Nw~7GLMvqdi^x zQQrn_PT9qqUhJ=^ z%lNta(ikG$T1#w-HCJC7yGEOY}5Kr_A)PD7HGNLqok4SWtF?I`J^Hhp)= zt=0g26!`)Aw4@Ir?V_)OvWuQ5`H9g*&y?H;&NcooBK>*EW7c)r?@G?puG4;xbO5^I zcK-+(zntN_=*^N>t;?ve^lwO~mHq>zj~CpBd~In$-=qH_@Fc#;e|2fZK0v*|9H8e5 zOKjH3RHQ?tQ-R-Gdb-Vg&O&-~>445-{UoINNNJP(kj7)ZN57|ZrG2x0bLkrUZuIDB z=yp!vfPKI2FZ+x5kM>g85@6;8nDYLz6~H`Q+=l#y=z8b7 zkYSGRySiOI;_T5MEZ*gGQDJ!>J)^HEzY_Vb^4sWFpt;L=73saktNPyZdy&7Ye1`sK zsrzTt{fyI09D88OJM^%@lwl(j{I0|4PT-G}KjoAG532*_Uj_ej=K%d0I-DW+>kuD# z8nOIP(C@#Fo-Kb8QT|^d-Jt!Ze71faafD>9@t5+D|7K{l*xx8OqK(8+j(USzZZ_(|I(Cy@$-nh zf^^0ncUQZv=9J+}PB0Wflkls!oL;6v=NAuBN=p4gGZ_qNNZ&R~Ti?=v- z1#0oRuY+1G{N~&KTHH}?2d0WXhqOV`vjx*aUj*iS!CXksBi}3eOX(%#_ffE*mad|5 zq#vZ2NN=U;f+oBza!}hQ=}e7VdC9y-JE*nzIDOG(3^|-uNZKUnV*xJRHj`70ns9*S zyX|5;=hFAhe=}b&|7M=$yUBNt?+d=~`u@%Ls_#vo-zu^uTNPFupKF_MEw-AibFDR2 zht*>ZS%<98TaQ}bv3_a2Z2ieH?JB#=9=1pAE9`6SgZ3f&e)|jdm+Y_E$LuHVpV+^! z-^LfHyw7>qdC}4RXZUOU^Zbkaeg0AZ&;2j@fA0@NmQt)%Q*nO7duV}sb)r8=nxFrE z@T&&iJPRH*bQ%V=j&GB~UqPU6;I3MyZ{k*3r{{1Rt<&>Z@TStEnt_$694nLQyTCWi zKg++yztw-6{~P`y+`V2v>ydVnIgTd5jel@Nr_;>YQQn2+ez3cjV!YEw+rmMKrH1Kd z7gq?}6v2IrelFD}*0sQmSKr)^$FB%0Z5Y3$xZge#Q z^3ZEDX}83~oSd*0gvYU5+0&azruNVYEWCnq6Um)D>7AQ01B2PRo|KHF6$9x^&v0+z zq!eDE*XqW^Ao`gc_F#`w`_7(`M3%ot)sh?<=}GlKKol_rwGHp;864;npmld|V&r7Z zvIXg^a4kK9y`yLvFMqcTq=SPCoUUJKtXQV#zZglwF4q#b8Qgi6#S(~i7Z(( ztky6!8Ddzg*z;K2nRpMp!<+itaU|5<@q_)-P zX_F;_2B0~`p?P~clY)_XmXJRZJ*iA0Jw8jZ*A$1+y~)(zz;?SOgRu5AI1MLK z1HIJ7ttZ5!(OMgNIFd~FpzV`X$|t6CTi4N!M3Q=QhI~1C*S9=5I^370v^TEq;H>Gn zG$9JfGZ4-yC3Pg#`@vMplOMg6(Q!v0b3q>8HnxA-4B7klbh^(jV(w~mIhQqK!MoPE zHj(K_jwA<@JNC4X!anJEM80yfx^{ebeAUf|!?b$Yu zno~Q{lxK4JeG?t2N#nWAw&8&ce9S;*6Mix1Nb@Q)n9pEs;_~C%?waP#?)4j6TiV*& z)~%)G&F!t-4fDKbciW0iTHe;t4z-KkTZemL?yGw;tKkq=Bp7fXGOFkS_pg0)JG#t1 z7-qOSnY?s#WJO{}Dv?OH5A02>Or}<$Xmw)PEps8@FBs^{>|B)?*s(K1TpctWNwjtX zDmg5qw4(Lg?#B7u&F$SAn^&|`d)wN4kV_ZWWlI^XUo;V(H!oM4%jYeeP`!nn@kO1 zD7mg=dorA5146CkdzjNo814E~p}YGMgP9(e!%3=jV*y*0ObzU9-aU|J*37Z}veBMY zqOZmCrGm^lOcsl&^8KcV^W3Kg&vVTRHYnybk1I;;c^iBB;HJ~$K2=Fa(nEJ7y{cH9 zM-$!Mw06_#)!mz$S8r;i3)(tXwXLO=b!$7C+c4@Y+S<=s*S5BU@Y}kvy|o1sq9X^^9N_lNe;Jtxpc_ z*#T$5YqRU(+jkE13+-|^aJaQ(cCV6KpQvRN9*;SVB>I>yw4ZEPP)FUVL>g-=xr<)+ zZsEpj=JAUkx}51=k%SDKVII6`YT1dMPNI*b;CLkZp!^Opu1`X4&A@OccMs1ldG_p9 zaL;amTT;n%I+5lsb1z9*Mb}1d$OSqTFvOgOxH@uOoa=H4x)s5QY;jUDlsuiVNgL#? zh1iwin_b)1V=xo*SfDPReVpl(3@;r$1DG2F!(yiH`nS`Yr(T;`PKw|HC>uK@Ec|On zhm=Q2XKkJ~4USL?3`SOSwPwre4SVkENx7>yW8ltVbwlhl)Pmg6wZ64`z05DkE?>T` zlO%^7#2Olgi^2waZ-NIyMiI;7&P4B}xe>)I_cjXbt(Nb>9xYFhj-9iGKXSOw9JwM%fWcp?no-pJCNps8=A*d*h$+lA0W5nIpG}$=vz}MuFsEMiQaln=HZ(W&?dn-tiu#p zF92`cWgx}Bz)`2LMrBB4(2OS$_kVkCiA^O&VH{`&Yvm4Z$a^wQD)B@HzMc_CdNT7k zH&4n)&2>Uu-aiS*%NqV3KxQWvJEL|aqvE17OMF!k)& z4Y?F7&m7#P3fRfH6rCQXlakvn;U4a#5#q(Douy7^Qq+@5_3WW!e?Kp4gK8G`4-6*O z_h34r&2FBcV3$Y@_Y7|C8H5%wqr?uN+11Hmh|D@h&O5+t#JmMjEzS%~2X9Ipu&M;M zK3FMnX1TOE1C4AS#ZvB0x{Zl`_n<`0@a;p}2lsRgWCjyCLJz$nk?u_m$f5tlLU`i- zfgPhbT%p~Q6=QWC-g9EX`V?X?y_pjWT9PAsQanFSEW(DRFEP}U-x*KF7A%;fsXXCZ zR=4xcU=TZ~JWgKUU3H1?PmZ)FQo9CvVVbD1850iEIoJ5PqXT_8$ZOA4^oa#nv=b*3 zy3MW_=-DxxOlJmq5hF=#AKkHo51~083Wvc%d*mUnW?lVIF4j76~rp`z?Ihg#qjGVY;wHM}KG z@2yzy2b18}kz@xhL89h9T$kh)5l}539T=27m6V@w3g)QUK!zg>E)N7h_$+_I(bq#@ zrgrnek2r%hNE|<07@*~F$%J)9?E#g-D#fO(%RG0Bi z4X`&|vOdL)CODRq;Gq!{S&_irX)wKX-~5&Ji|bqFEvl(&X;@yOv85AC%VX$1Bt=DRoHc5S!G@b(SnmA!IZ_}{?yIQt2;?^ z^SrslyC7FhVj@_0nz0}c_lYgKJ0dnqwnX*^yuHl8*2FS#de}+rmjTg+ZDaocM8kMs zHNff$TFh8@?`G^}sTq4l#6h+rnvq`HvlgSzr3mP7PbNcsSc)85ST62`H(A8bVKEV;+WvDfcKe-zLZ(Y)cqNk}-oc+R zZ`NU~#Dr=w@;HXIrRBM9MC!N@w1veLAt)&ma%@Zx@nXKm*m27I8Q$+=P4a!~hyq7%QnkRL=#3FK*R1?n@uVQ}U)m|F#H&&tw+ zHuo@PmIprTK9R@di5TXF4@vkdz%R))XKzLN-}0{+f?T`d4J&8}(xpY3?IPt;e47Ac zS+*|eDNUZ(6Sqy52baAUk50v7A-}c4?eu_eue5aXT6OpivkLqjN~Iw>`@gTZL?o`q zcU>M=7jFxkORfAjJPP)KV*)(S!I$(^gMY7#OE3C9h#c!K#bwjD?BwH$QhZxW5?s>g zfwGY_>W|MfLqex4pxXCjT?y%sF73WM!L_4NVfrgBr__#r#K4l8vK{}B8F&jCPc zijD%}0rvPE&u2g+U{^AV3Ec}0J;hK3S82cbz!qCoOihNwf z1S+Px6q0C@Ch{eGIfUX#GuR}0pkE#zPcJFaQ=jyid@K3uvkTbxYVaj2_)-=F24cJQ z!MTk#!em#&EyU5EK78GjXZ)UHqSqfVQIs zTW3GUUM*_ulGzT_QbjYF7cXbZ>e#Nh*UI)Tz)Ms3WaJsV2(sO=X1xW3F}z5!zFiH^ zqPLF3lyW9%V z0ncg9*H7p%6(~oF@G<_<2=niSL_?5MIcv{eS?An4)}JRotZ*8Sq0)2yV$WU+rO~;V zLlyX!vl5zlJRL6#Y!3slfdS;8%kcwkXh`ipSh?H*B@TklfR$++kK;z!OxXz7XxT(K zUxRO9t;198GC0qZU_?~U9-sN;+TgMaG4-}WjO$JmgMBLNccLK2V^1xLTIxMv6m%+a zn5!#Jd}>+u*@e?rKK$CpE>17K`yB8sEp@etBbB<@t;TaO}jkyU1ers-T<$H^*q zA3&NGv?}ySUohz4u`1FR>2oT~$f_WI>p@=+J;fb%^nidLi8bn@qfQ>MpBRCEJf_{A9LNdVsnVbPm zFC>e*7z{?7NS}#6@enK^pL7z4RcMRL(3X(f;J`oNkJPZj74oW|sXakvP?+p9Mm{ zFm_D6D&jc!`zs*fvDIN}Q>7`kSy&v?qNhsERh|kPeHA*!K-(*#%V`Z zletFZmfBD*-eN)$c>(iU}zq|C#@2p?YKlsUelXvhO zo(c`X;PL&_TBHtR9hx>3fBY`8YTDF78*^{kRQ1n?`7!=wt{|k-rrOZkhRFE0?a7hx z@5163u8EBQfb|@u0)|lX3?8hG$oS9Ho6D73XgvRRkg?gEquVo;3qBHbYMpiF>)Yigl#{MBeJ^Vh_At4&Sf`*S!FmTmL(@- z7w{C(9m8>^!E9|8t@6WCIy@at(!Xd!#!eg zg?4~T)DIZSB!jsb7!`i7JB8_qO2P+bC>@}~Ulzqe{S-McH)LBF3h+Q0IWQYzqQfU( zgm-fn=VMH4_B0q8nualq+5T_^XB-C!dq@Geg49~VgBqD^qnF%WX=AY{Yq1kVQwJ8K zB9duS*^M?sP0H<~>zI*F_&_rzM*&COsS8fiAWmc$EWNg_$gCnEjLOkZK|roCeq9reJ`-ZH~lX z(LzWZ1M>^60%ps@7e3JABMea&oJEkCf+QraEmVZ1&BXKyg-Yx&%n8HH>rIe78`v8d zd)5@j9%c`X)Yxc;2WqnIMB4zc*uHn6arui^-(|i~VIN%zzgy#&q5Pf9&>!3{aToO5O11JOlIV)PmL4#$Y zUmwP-g||fpvv>ra08`ipT^_iGHQLPC@o~=f1&ZMQ*`=O_Kg!O^R_@iQpzPjh8qh^* zoX|md3x%-I|2SKzLinJDNZgP52R?<2jy;UZuw$EA8Y$9rw;d@sjd;-sLP0KFkST&n z5|;uK6LQ`s=|QmJX>LQ8u>PrR1yiR^O=vW?c5Q1%_CCDYy`(*dzuC7M0cyU1Kc{7I z0GA3Hb%ctuly01nFDj=qi;8SXMPr4kP~p~(Y80Ayaf-k0q)~ly1@0Ns>IJik)dSm8 z2nkp8CsP%|ucl%onaWfo`zyS3sE86!A z*Q~worUNcv;Khycef8KxIO>3^d=UaE(vTydExyIhJE`px;b@22>UQdT}Ir$96 zMR;lABHU)Cye zZltXUz_cR_vyRpRZbP~fdH(sj`KNbyXXRD(p39^ZdoeuOw(@^g0MNjd&#WtPq~xPN zA2>M_!auX5R)>3*#amVG8JLfS>gPf8FJP)cCcGR34tz8{k<-&cQ-^b}`qzk{3nmJ_ z?{*&Qa?o(dJ=$|vho~7ws6vYqW409tJq@5PpRK(JuL{f5LKCeB#8lv{%_nOWT&cjb zAMnIDZX>}XK-ZJdwkPWf^gN9a0QVsmAmKh9Uw0S*1(ujk`TSFdIiBOQ8CVtR^>oBR zyaoy6aWIc)Jw9WliIzF|gBJkNm;bXIpzEPSH+by>`4YG{185p(P$>s&e*uFk&^#ZY zS?OStKyE7l4itfWk`5fuDFLd|0Qw9xOoAGkpm0zC>H!T=DF9sr8lnRYWrBvef`KN0 z1_3>w{>cCi)Tew93KHdbMt}jDFwQ?1SwPq$Abwt x9#Hk8#|C;_Sb+670>cF~)C?LngbXAS(gzNBbm9QyY0s!(`EFAy< diff --git a/external/Lucene.Net/lib/Spatial4n/NET40/Spatial4n.Core.dll b/external/Lucene.Net/lib/Spatial4n/NET40/Spatial4n.Core.dll deleted file mode 100644 index 7d35027f684ef0c58d84e1d0ea1b98ccf1fa0843..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33792 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

bu<1`T(G-Qk2)O0 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 diff --git a/external/Lucene.Net/lib/StyleCop.4.5/StyleCop.CSharp.Rules.dll.REMOVED.git-id b/external/Lucene.Net/lib/StyleCop.4.5/StyleCop.CSharp.Rules.dll.REMOVED.git-id deleted file mode 100644 index 6fa927f102..0000000000 --- a/external/Lucene.Net/lib/StyleCop.4.5/StyleCop.CSharp.Rules.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -deb1998f568c93a8ed5b6433d018bc9d467a11d0 \ No newline at end of file diff --git a/external/Lucene.Net/lib/StyleCop.4.5/StyleCop.CSharp.dll.REMOVED.git-id b/external/Lucene.Net/lib/StyleCop.4.5/StyleCop.CSharp.dll.REMOVED.git-id deleted file mode 100644 index a6f8b69771..0000000000 --- a/external/Lucene.Net/lib/StyleCop.4.5/StyleCop.CSharp.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -576423a1711a48a6269b60c9e3ccfcef6b28ac4f \ No newline at end of file diff --git a/external/Lucene.Net/lib/StyleCop.4.5/StyleCop.VSPackage.dll.REMOVED.git-id b/external/Lucene.Net/lib/StyleCop.4.5/StyleCop.VSPackage.dll.REMOVED.git-id deleted file mode 100644 index 58e1a12f0c..0000000000 --- a/external/Lucene.Net/lib/StyleCop.4.5/StyleCop.VSPackage.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -02dcb458e4d63c1792f894549b3dbf2bd4120512 \ No newline at end of file diff --git a/external/Lucene.Net/lib/StyleCop.4.5/StyleCop.dll.REMOVED.git-id b/external/Lucene.Net/lib/StyleCop.4.5/StyleCop.dll.REMOVED.git-id deleted file mode 100644 index 1ddf34339f..0000000000 --- a/external/Lucene.Net/lib/StyleCop.4.5/StyleCop.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -c8b32a2d467bcb875f46921ffd04e3b5470282ee \ No newline at end of file diff --git a/external/Lucene.Net/lib/StyleCop.4.5/StyleCopSettingsEditor.exe.REMOVED.git-id b/external/Lucene.Net/lib/StyleCop.4.5/StyleCopSettingsEditor.exe.REMOVED.git-id deleted file mode 100644 index ff59517c25..0000000000 --- a/external/Lucene.Net/lib/StyleCop.4.5/StyleCopSettingsEditor.exe.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -c47ed737adac222db50924ba01cfa2f1c75d4b38 \ No newline at end of file diff --git a/external/Newtonsoft.Json/Src/Lib/NUnit/Compact/NUnitLite.dll b/external/Newtonsoft.Json/Src/Lib/NUnit/Compact/NUnitLite.dll deleted file mode 100644 index 2bf15332be6f1f413a2fa27255ff2087605cd8e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81920 zcmd3P37lO;m3O^+-`)%9?$Di(?&O8_5lBeF)(Ht@hlZpRNCF9q(CL0j8ajQO_g-fq zBz73^69vV6+%PIQD&n}HB8sD^Bkpk=WyXO~)N#abW^@)uM`z&s|Iewq_rBM!1I};0 z@An0|ZdILAr%s(Zb?Ve|@7r+gea1J&B=Psc3&uQ(C;zRG@c6+5z^!v0Yc-GLzB%{N z#QJZ}-LiYQQWz@-yUGK53WEcqqd~Q>qf{u5j~0eU3u`uRF6;@0N()+A@~2wTo7Nh$ zKH-~}_uY7ftL;a|D>Nmt#`GqPNo#KZ)rc1mzX?xr$GE3_BPRUwX^sMp{G**7+l6LL zlmDZqO$sss&|S|s=>C?1sQ)*SFwMvt0$z7L>^SM`fsYnM{|d%j7NyLBYH5EJ>91V? zegTuVg75gh0=QaGu9OFnDZGJ4Y3NcsWB*n_APdT+kpPI~)qrQpz+5~DZxzAuf8@zC zDRcBsjCt9IjmgDDQQJ2>!*|E?!GXX%2ZRQxb@QR4$y#RdV^SvyRo<}%(q+?-9 zWDaq+8Sgd2_X0DK?`$$&b7xEM9AIU0??t&pM>3r`t!rCTTQUG{{sHFYy0*3CvacC_ zKG~6KOU?gYx+5*r+tTxtcG8>(3Qa=W4^Umch#=j7hfTn1A)fJq6xr-->Lriq%zMdE zb5=_GMW|rD^Z7(eZYg`Tt0VbLC!QHFmPwP5mfZYrbao_#4bzqk`8XX|9i*R}{(J%i z^68}+WE}?aH|nEt%4Y(WI347SEHK^|z8w?hcGX@;K|G*GolmPs!L;$Zgv+K(r!TsjDMGsGD%8<)b4J|EF~|VjN_mkrJH-7Kt=@>=3CN|-I46~`FLlZKzRjE6pnD1FinQ|Su+2@q=yF&hZEG?U2%rvfFbkLNKbwk2gA%3-ivKn$4?As|BL zf7>!G^~JE$z{ZqePQ;Ui+ES{wZY(b-Z-4?$Q0DWV@VX9RK1_NQsB!)f+L!d^7C8J z7)~aW6=PNFj$UghWTicx{;?)Q0w7 z@HsY_w+MMlSw&k$8eHBANmuSgZZA~_7#LRRBCI^B6yDp!t&skF7p4}q(+LCK%>W7* z?;zzK8j3i4P~ntgLwHHy?B0g(T?%L88^VVbPMxTM&svx>JHQ`?Xq)NGgGFjefDXc} z&IvaYKuz*G_ocG|IxxL0p9#)FCj6&opTR(fR{~5C9(u;QTQK*S+w$gV^g^V%;){6j z?ay3dSQ7fD@+m8Sth|Ol`VyE@OjY2O*HPm05jZ5uaMr?^<`(GiUTs4sl+O18nC-Oj zD(}Gq8V3avZCHyQfZJ@uS;GuudQV2loL7W)q=P?YnO+#ZFy~{E^E?paqCtypKn_$c z6i!FlU}nm1OOlgr7a&y8Y)aJCWP~GuKXF!PTGd^k&*3O&Kc59 zJTez_#;~6y_J^g#)bL#Ju*4BHel9qViCl+zA#F{tL+~&>%yQMIO@TNUTM_vIdMJPT zypDxw^FHMN5&OlD`B+yG+wT%D1Wwj5^g}`%mj@vEM5YKWNW%v{jc8t{4)5|A2{Y!a z--jWWmvP?J+{Oyg4qbfM1&U-`c(5F@OyJev3;8r`CF|a7+f3YoI zfN1_0CKhFT1q6Xi7!Gms)LrXzDr)D*oPqmb?iN`{Gi1If{~h=WU~2M9IokYVnCGm? zgHEJ%x(+ERe{RgYT6j6wGI`ACn7UWtpi@7l6#iO;pD-01gN-%|jjJ#3i|_dcg+tSl zQ5Ob_(UvOuaaPE++BqG^Z;HxrgoX~P;$%$#A@Co%JrBBG1zMLs)D%UbzexbuXgt_9 zJlF(0$f+$sro#E|FmyjZ=bVc`(UgA)fy*!}{~EDFIUr&t)cTWVtJMBKT)*#Xas8K- zdfq}=7@y16OHeJAuN(-?5ILF3c8UWLz*oR37K_!TXtVLMMc~3nQE`!2!9?wv_EXeX zC-YMfe}~GPl6wjLls6gl-u*1&&$t(EFct%ybC$j{-8Ecgc<^agT{yG02XryiDR(6b?Tcy|2|q#@ zq`0`cfC*>X@4l3oR+aDJol>E^;K+;+P>robFis)3NwaI>LD(7T=h0`F7}A*N&54y8IU*G+n+W>oC*h=c4!|L2^7@ z>=mJb`Qk+gKxp1#SSf7KUK4M{gKMp z@tQGoD?Uj$_nt5ZZbI6~veqkKkpr*GSh;^%*Y;_c>XVr5^Xd6NO)Y`Oo0RM^Aj{4g zX<1h$Q^n;dgQZq7xL7!M_Th56$v2ZXJojiTB<~i*;= z01-w3a@j zNfmVO%YftS?g!e(?L>46x(=kOXhWj7gS2}uB-%L4OSCsp6PEspsC3P62T!-|+Ohdvb=W^7(&RRIl{1ZTrOMe6_l|m$Ll(&dQvm=YG{9ZP=ExVLPr7e}oz43<7sBjfy zYq8CW^+3&z#^0Cq7Shm!Xj-*t(S@JnHhutAbNSDWX~POu2pj!ot+JddF`*1ruDs!8@Ib*gUWE&+Eb;r7&v&dX|RxeCP0 zPWG@s{>n?3w(Hcv>O+@VeXX0bQ{0<1-zSg0_+IX81DdBMt2-JTI>NAyh(;K64D;7j z7(}oSN&g<25^F#~w*xY`1JAz_`kce^(m#H2EuyaLJ5iUA_5;jkc_ZV@oRBCFLYH-7 z#7v02-Z=}b&q_g|5R4mk_RF^r4VEBpEvuNmOd01J@oY|{>bojWf1^BIhH{oC_>GNt zx*XXNPy0fiu0Z~jJi#xIS1#*uuzI96+wt^zEgbU|0C9N7!n|38I^oRrvqs(&84 z!~8Av?=YP8=qxag?8;tX8dX`GJD4@^oT7{)i-xbp{}WgW#W z$PJee!UOhrw;~gMW8U0}N`FE;o)7A{${-78LL+#1m8*f+T)76J?r3L&ZHS-NkzB&z zhegv@(ZT=|IoFc0AwB>5z3354Zq>(&yIv?IaKGf+#Rr&I7z`HL?ibJQ>A-Fvs z%+%>aXApRhVJIZA(w)L$?{YR&;f;2dn=CLz|V+P31E|lTEU^p=-Z?5Z(`x z^|0eqcN7kPhHFEz+z|dNg;RVD;s2s=)?Ej0GOq-W|E6$o6}5LrnAZaU0&H`k`0<^2 z93=C|{%j!IBYWAI??5+BK#f&(AUr`QjeCJuHAW%{5|>V3R$)? z)BT_S5}tJ*_m4o_VQKk{jJX$xQ@ewk_pq<}3g8<*ts9YPr;XYt99;aHg|PztGhRYu zPhDu#*K)pzWe6uBP<)Eb{20miu0#%n^}nPt-2pYvpbv0G!_Uewd+>3>%rh`x7~9XE z)WY3So5#XblmvR!n5E{#jX1giJ&6xtMgY4K-)*LWMq<{&q=DVhe_n8>Q1$|JFKeJQ zF*)2Nsi!F%^%b+GwG++7zgbv^t-%v}HgE(mbl75hIDI#ZX-@G~N)Uz;$^aIzonHvX~(rSb%L$o7H&cM8?OU|M5c_CY^W-z$*V9qgM~q zo3l8Edm3cqR6Scfjq{G%dz;3!m}wzRe@dFLTz2tT-qmErl6uQQi8g0t6`WPe;a0&w zpHD7^fj&cy^|84T<097;zoeopVakK+n@efR?ZPS*p}o{OkHTv>7kT-&~p~J3;q%0YRX>)d(*sV95WNf9cCTNx?586@A9#kQn2E*B0Qj=9UR@IC+%;4XOxJ}dV^FJ_-J zu4e)B+}Lt9-#u~m*o3lhpZ9WVSC29)wwDMNeF~Mwsg)E3|;GB3Z^%Ba( z_;s=P^)~M2%5Ks>&Rn?w?YV(vpv#N7_wq8EK*r_KBvpL3w0T~5{xq9(y@QLvp)*M} zw!Wb7bEksi6p7`}n+kra!r{i((x0`k*X@1wXLzIHA zhgQ&^wNMi|u7ZDHpcaM--Ma(e>U3$pl#PPoL@c;-S= zywQ+9vjbcB%YYJf)1ixyv^GcQ)U#EN%x~CF3lvT=b#Twn4qyw8{d5W7;h1S+Q}m#L z`3j9x)arpJ_tVae=wl4y|F9N}O9+bNfRoDk5nfjuDUO3pBl1FCXH12&B*K|F8AoMu zk>bF;sc*Bwmn$6IR}asa8^P-(3V(5#*v)TMji!t}&4jw@X(lEhtPD28CKNx+;T7v@ zkqyq(y0n9*A0o4EE`ir-RtXO?6nv1-B~&v{qBToiJ+*`eHxup)rCvI@nAKQLwzI9b zsI{of(}wk|k$PtSU#n*wSkl(Ro>JmyBz@frP`CW^Y~6NK5xSBuAA!jH09}z+Czotv z4!Q{$jt1KR`Pl)YtycNv;AI%Ij_vZtK`t^KJ;( z`@sO%J)QfyHoXIBGjGkAA{Y)g6v*#LMU zLtsn~-l8=HZs&bp5#&@@O)KhY5pGy8twm4;Q*wxg)yHLkyIUBTni3sp+bE0)I$8K1 zRN&0PXG<6V44Fps1u2V&c`RN0JOTE?1z36bnb|^Dw-YmMTo{53hYa>K&!$2?4exvl z(j8fFL^-r&WuRF}JOd${j+}$#YGB=j!3)=Nc{yuxqFZ z$~yqctANU9wV1J!#B;}8k#z7*fbKz$CdBd1bfts)Yjb9#gLl>D%uEMIYjc8~6qXiM z^ljl~Olujxgc87D!Ftf26XbmTW&@5WL(JtB_$BeN<_F7(YE=z$0I#*s^mxTD#sD0V z=v2Vi4ccs52Fjkc8>Z+6M`>kP0DV?lU=<5s08+nzmYn3r%rXh|6YfjFM(hF}mN~oe z2!;_frH`Eh$;$eoGq@Q!SaRsiJ?6Khk1d=6%zTbbS&B; zBHmqo@KBgTvtZ}n(@n8o=iisyCtqPTocnqV)}H1-)F--JdP#jDME-!j_?Yy? z1E?Aupd%M1r=j%U1?j8x`k#~jOckgYKcR8SK}~i2Ib>o zuecYaijT89F?S)2L7NWKyl-$D0C#~;F6$8|p4}xbl3`qzh5a4rQ~)PMI3vQXtgct9l;=sJ?8H?+ch$QD)vjl2ToR2SOcSM)6yy zvHU~Gs`x=UUD53L&YboK>`w>w07>s2rN^3U=rKd-Z9gGKkJ(eu)4PhV5qf|4T}ABg z?1Mn(x#tc|qiO!3%TOs+Hhp*q{~g%BxE{RU$9|DwK=X>|fxKLD)B*=tto+yDKG+Y4 zj+g?4HRYW=+!ObGC?_;yo{7`DqK@7lD?Mh{&~x>@P2ub7;ipsJ%!S@L z+;=GMhK9Jz6T*j0Y%jXGA4O{+2;L6 zgS_80$oqYRy#H#D_q@x)-8a0?7}d#rkEE^i1&d^HLLO{7tly@?y5lsk;*iEzoRAlr z4*3|xS?gSMqbFf;#4~AJc>A!FzJNTXrWYMQ#KlAaT!yu{gq<%ihPAMD*s!S0G1$*h z+Kx|_hhl>^!&+>@Fw_8JSPSdGzQ#WEWT(5C$ZjxT(Xk}8~^agn+HpuI2kk{29Z-&dWIv4V0(;;6r9r9$; zAwM=9@?z5=A2uEGVAEm!cc81O5OgcH!)U>9#gUoAD(P}=j)dDvTX zXQA{3;V78LWgP0Xhq)7dh1VjnPmssVA*0)uojHHfmER^}!qHi-xSp+*b7HLB__^kcTfDOv1aULEf?kc{rZXvbGOG-fTML%cet~Y&zt}rbAwAI^@Hq zLmq58tbf$#;IgA_G~WA!aZuS&Rs-X_RjkP|hWH#{I^)zr3FE-h8D}!AATWlLVH_|z z(@chOpy*6f3ybx8zms(=Z)1bJO%3v{Y>;3~1}6PplQXH`YoK-gJ_#1<_ero=zfXe2 z`n?7QJJXL9LD#kkK6tM0`EqTdxJ^WF<*?oLgV?;`c4A)wLs5m&REa$KPRi$nm;yxq72H z;2C5^GbYN}cHJzfQ5rj=prh?nn8r09e8}7v{1#}jHcyow8)u_J7}nYH7^Wj0e-4yJ zJl-1PN#kLC&)4!1wWAs=dH~MOJ4!Je1;e^HJkQ$iSlA4@JwxkA1TCq7~5-es*Cc$F1WD+c9OKM=TKF0CS zq<(sLgS_`N$irU4q_Ph*$ivpbB)s=E$omtQXZs=K&89=XY&zu0rbB*gI^@NsLq2Re zl`B!#x0)WU8_S4t0~C z2_7RjBj>2M(n*z#zUEoX7 zi0T(drpvZKWz!^l<>{N2Cx~PcPja7+jna$!^X5^MSmASoxi)=U%6A>QszG^&^Bs$W zUG_2gMKLYn9b^~Toy8E2l~V|(G;}L{W{iY)komF|;RvzW4eI(#j23&l5iRBi z9}5xD4rwcv1khdfAMUQ?sS(w!~OU{WB?StyK~e}6Ig^&`|oT$~%>K$#aAy7Y|!lLPDa zTxPlH9oKh{uy<81ftvt(%W0f#unT;BX=NVH1;ReO2KhJ_*oKGfLCW3BFIfSAt{czr z!ZUkG!MD)xI(m>L%!`iIYppDK?|cMxJjXg93mhrq z$nXr|6!OpG4Fm5Wk&AF3xqpZ|SE8a_Rz<_(!f%U;+E@2*-~bLSZlt2PO9aZev1RX! z=FCNFBK`b*T)wQ6$KQ}|obT%_-#o9vd4&0;$mSrkMc7N&$vPUB;MmX&yOm(x6D%Eu zOuO4Rb|B$JRQpK*603X$CXOGldmPUt&7g$uID8gy)sFBs2KAY`aYnlvThI*>Xuvzp z*Q|Z?<*@W$m3L-Kb$*eRg+oQ`4{5KC(z6T^ zJS4d(MQu$gZfok$0HE$WM=1lsfjxqUoiY!TRNr ze7f^u&0%dSFA2Lssi}UKIgVMi8YLuHk8KeZVAdP7=J}pW~gYeVdZcRdoye;2@O!q3!qaj`?_|Pz{|K0< zo7@CPz{i8+D4$-NLN@=}@rTu}eBp8lp1p9^j4uxCv_voMk6-x$nu-J#A4r@FrjX$5 z?N{JxGeJ*Z+b4BYyI=wQ3fTt`u#kg0zya=G;cRR-UI+KX8O*ioM4+CoGN@cTsrAvk zNj!XwRQh$@i{L@m1rL5*oiuCd!N(UoeBfnDyl&LHK=4GOUGe^PUFzC09k{X-@hTW5 zwIm(RNx)ew^g3m|CH-F0qY;ms@6Hok_z3*>tC!0@#qr9JUyLKPOZe?P9>2uxjc{ka z81B*t_qcS~SIY!f7e{r?3vE2>zc`{f<9PK`ZYu=0>qX_pe!$!Y8B{hl>WACB3I<93 z5QnFYa`cCw!hhjw+sn%{b-Jw266Jmyb z(yFt~@wVL(wk>C%T4tNjm+$)K(@Filue*28Z}hDK4i>AY332`SNm3u-^?agnx(mM- zg4_Jx#Z8T37X<4j1@giB=I;R>zG}rgyda&=C*{HWK~e=4L*N?Ux@1_K3j(-4h^D}p z6%g>I5XRtH04|}j=$czQ8Xx}ny!{5u3NGvMPO7dPun-cAE|AIrz^{@E!`?xR%4BC& z4h{JlaNf92ljFSpCW`Io|7MelAzIt)m-TIjbX z5AQ}R!xxVA3U*FEJ7#)|WQ0h=K#E>)mb=0HdYgwHamb+_O_TRN_DI{*Xt5hoF>9z= z3d16!2|XtUEhS+Q&Ljo-ag?#EXDtpV)=nB>ah*C)oUoLH(14jrpezJd03zEzsc}Yi z)|pIzuvC>H2=pj{MTXXnyLq}Z$9);RFO8Q3m=|2G9nR6o+@Md=_Pe~(&1nf^uycd{ z)$e3$S2d+&kax*Po%I9R&6!wMMhsI+Hpg!*rI+MDo9_oH!~8n&(#u$17e2fsedE4g zp0VFCM=>I$h=d`IojChN^XxKS`D?Q)U-{hj6DEnqqE+~wEMDZcMWJNu^3>s5(MbEA zH$TgSFA`(!u~+o7PC;lJ49BC8$*~;dZdFA-=Tuv+t1Z`n3{=O?1t*wyBYvC6EqJvI zJ%;WcJcpz;7S1S~kD^Wf;XPrkc&Q{QMdb)fR5aU_i6!`jA!^uC67vs_9=~L&o|Y{h z=lL-ZIxIY=aM_siqkMP{_7WNj>%q|7F}1Y@wY3sM#;fHw_7YOo@q4NAJBE__#)Y)B zzNFR`qcx)eE!s+DG`NDouw$3+i+>%p+`+bl-*@NmQ&sJfcTiLrVM4@ROs9S6{NNrm zp}F^7AbaD`20PS%2J?ozD)amRaA56{ESV8odQV3p{G^(X55l{T527pw0JOGQcb@e# zX_$47$+lk2XVQS2C2shcG<&^OzQsQc4B$nEG-uz9a$IbYrpwhnG+QOJYAo)VTk#+NO+I0oOO5e#hWVZ*>~^ET^? z1}$0nJp-9Ta~f>|G4CLz79F?zpu!>VzG{zFGFGPAdf24P{O@;8Tf+bYtZAIa(d@V z9m}IS7@dMaf|6B+MQm`Oj-P@gJ{g9%Tun<#G<0|%7g0t(>D^A_T)adI{V5AYQ&8L? z4?E1Yifa;`hl;02Va^}^_{qp#G8fULMxn)aQW#$eP#yc6GK~Kq3ne8iz80ztF^1(vL==G9dVgBR`3e$&#(n4ad6I~M{q-ITC<#S5(BVZrKXiDC@ z3fRq2w8gKyL8?ybGll)`HzK3+=FZ?vc%F`dQj_ky8FR`3ki&4xb_${3&5D?dCp$Yb z@_7c6ZOgn4pCNyp@Kazx>t?p4+cGzA6N77g%_jTNKYaWUQ%y#Q^Am{kAH)14shj0z zH+*TPd>nBvHd?~1S(QiDtUx7ilQAnsR_4w4?;}9Kn;;9xPs$Xli;<>uCU^_lQtP8< z_`3w=evz+^c-`fV&-vn@__42^VLzA(rkH3k>w_9X0b4-~o?m=fLcU*y!K&2tOsG@c zORVt{roz zyKC;8^6U;gb#--?+kp}CNts0Fsd;l0%wr3&B}-i!E1to=Gqz@A%q^W<$SdN4l3i%8e*caWm)cVH-B znxidfl8t4z>me9%AZftLt4-6rkB^fNzq~hW7A%I8>(_ofu8{#b(u%*g!}FRI$o~ZC zCOa#C4Bm=w6$WXkW&#A&F20S~Z%2?Uz5`*CeEanTOtbHl6tOaPJ(Dv(Me0$Jmwdxh zFNjMtJ`0Oh!)`yy8syCq`GUKB--ParFJ;2%_Xx5~a+5j^+)D*x+eeD`ldDa|ci|!5 zDr)N83DDu&fNQsrvHK`Ii+#)BqHx^K;(fK5tLOuX)(Lt3w*)K zAO4BHrd?cvsFOdPOYK^bn=fIqh)rzxPxDaR8=nh$Vo-gF#=I96=79=&?Ljc$ONbs| zqIi*z_?uv5*)L5*I`y z7;Q}A{X&8vNbpg_<~wA;?G>;10f90El#k+afdUwf&y4i%G zQ+^vPO8I99^uAB@GkXgDEy2-sAPiVYz>aK2on~>}aSiH#)TnS%=$>xoh}Jc=Csh54 z9}Z;y-8AFQR#BJ4D&&Z~LltAC~gy`xjL^Tb`QMk!nx* zs&iODpa*wL`Qz)HEsv`3RqS>wiW%eQkWjuTqN9#=WZE;nYTHKz)IyNY&qIcq;`-Gy zKZe-8$9|peiHrG7>4WiAp~j%&7f>{IW1vL>TGxmmUP%MNOB;cHPboBR*N+6$uw7pk(A-7@G4epLVY{#*o2p$^ z0X1wFW^j~>EMBb17YnFilQ~yS(PZg2_!z*DMW2pkkH2SR{wmhzqeSq=VVfs+kup_i z1X89NmQtn~ma1b)dD1(heb#6j#F(*x6QEp}(~n_qQO=n)9V+goa&bxcy)! zNyws)O^q$7PDZ-c-y%izw-#Z<)SfR1OtV=o^s(~t8@oSZ-F_J_L|gY5J{C*(0dy-p zr?|aSepkXR0gvl)Q7)HzNxNpiB4Jz`+JU>6Z${NWj<+*3$xgU?*(kXh=pAIiIp^{F zu6cY}QBe;80bh$@7?aHklv0nrmLP`yX#{2c>A@k8IkZnoUo9cyas#qn&(iW;x1R~0 zQj^Xa(?N;%pQIc_kj6Ht%iBm=nCj#kH~?Tlsrr$Y`+z@J`3^z8+N|u+qlauDy#2tBNHu@4Foh701E!+?Vx5>*M33!=bn0L& zexe}{yo+I}_=DCw;ljX5Ylefo8q#@SXy3e=E4W-gP`&{qD!_gm1Zn z;8?Z#uiu{jPr@r6D)WlC{~1=PV?@92`Ml8Zqia$jB{!CQ{x&pv(9tUXCPvEEr@!;# z2@X8du%=oX$%qE77DhDkym|P3U5|; zc`A6T(wEN@xWO2wKTYAhD%i08c7@NIivDzk^J-wj@|_CbG8KG=!f`FBaru)Je$G_z zZiQbv6@0eBdEKiae+7l}npYiM`|@PMMgJP{kPbgP*N~_3l~0teWw>EGN@9^X&n5Bc8AE21NX=E zj^jfZYIt7&^|)`?yu~uj@81hfviPtdq1*+;!*^vI4&P-~9QWlJV|IjjMZOyper^Rr z!o*~QqmmlgglVBkOB#s<-@mo>h?W(VY0!)FjdKDacy$eK#JuC(;o;q5{1R%>;|=@xdRL*3Fi-f0wksWMh5#xJ&yYx+4%3%{IE>iCV7{bXI)FfB4- z*{Iw2t&z9J-`8~Gkv;;}+GZ8UZh7$xGZqeQ@mU-m?e$LJtpT3>9q~J0tes`Yst8*f z@B~i+j^2-J!jC(7nIbk&agU|=XJpo1i^HdopMJ4#0dkJeGm=?mL7)33VUEA$Z2HJ6 zW(zV9JSx@lN?ZJ!gvNe?P%fVN;hRI@i*VsvMqhggZy80WHjbxOv!Y+mZTPz)n6=DC z;mJv1X~+(xATq#>57|S;1;2Jck)7?@ZpG4@V-7C;JaYjf${g+rem2gWPE{ygJ5lkX zAPeE_mo`LYmNWg=xcd?*`S$MBdJ?H^Qw>DdH$`-&s{n;wBcvheD6bF zobfkn)_>>KKYHaQANlEb-g^4%+YdbXo3S%C-1(0`KjY{PzyJ4#_l|x3Pxrs={;gkl zJlJ)`2hVzH>ygwyUori{i$3t0tA9Lg)#l4rC3rai|C;f)ckzOS3(jA7;o=LKlaf2w z4`B1;l+D%h@aQfaB^fgfF58M3$lJQvY`VypE8+B*#QG{cyEp*6tar9@uhVtW+^;*RSu}w7GAy86DVDGCRjdM*0~kkB@Gy z4ghs{*Jw~KT~!*W1f$qv4#rC5>M+VxOO zMgdgJ*gzTNswKep4GdS!XfP7&3e3oGrAlHIv%54hW;U$ccH{cK{_M@I*C zjFe0m=@Z!xnf}tg^~0kjk@@Oie6*^v*67ZG;Smtl#Hf(bxRNxR#|H;dnOUcJX03D+ zyU&zM6>zBiT&WHW-m;}UFo?dF?22?!X_Q^3-CO}=EGSo%{6M8r+OuPXx&UPXnyHkk z<6~fQpga`p3zg-7=#$l)10o~P5p^oulaN!%&%OfC>gi(Z;R)o7ZkJJ3tG{ zQi0+OL#iXCoe;|KuH6u@WkNV}2~)at;}vFC6~PFDu~4&uvC$!li6R;piIH5jb=|tP zSKYX|@7lE{Vv1C6TvVU2*bIieT!vvm$=lxD6o9{qK|4zWdn#*&ckV2eL7+Chm}y#x zI6RhKY()AIxF)&SjqU?$_hWQo=wf_oca05H(E+1ojjHszkzk+-y28|!P^2=3pk^bL zlIb7lH!`@kl*b|L(cxS12q491fZh-z?;9j#E zQK|oy5Z3w*uFgj)xq7H0*(Y! zwyRXVQ3e|$>zpNL0v1I_ITLDCtVL&rYrBqX=GZ23Y@?_UCQ`+$92#Q8K-jeMjEhVN zh~=^8C`qW#@X%&VAp>Ijv|DW#N!jW^nI@ibG-fQChO^?hnNU)WZ;^@QD5Ft& zHS9E;5sY|>c;k3g$!HknuN@skb1}iM8y?{t&<77@7)o_p$!soFw~j$`2FhzV+dxlO zfh3=zp|+FzgSBpwas3`;Tw1DziOcNl6KX&-8tlv&W$4VR>8pn^`a&I)$W^gvmE<&C zQ8n9N8iZw0E$^$i$(d+<6*om|D$>ZfGGZLNc^YF*Nt>%mgF$&HYzs#tM++x!!1e@t zOJQ=YGJtGO<&HHgt(E0n<1s~99gH2&>2MR~m8vkL4YMJM#bZs=`kZ)o*2+ocoXofiLHK@xfJs@_18W(mbG}_=wMk! z=1MqI&avvlq)?&F#F*nWfZ0$d)jrI7aMNH^Htv)*_f zjKcJRVVOBmucxEPz%h7L362KMm~G6K-2V&tlx*q;19FyvX0FTH<+ODNN(!swLUY|IY zA|5b?=kVTv5!hNJY-dAeqw%hh*|%qGWOxvk#}1?e z7|@kq1pY9Ua3x(uOs&e?=J6fS_>DUal?D%y9y*;*6#!$ZV(WwH>`ko;W;X7)84OuwFi+AESI%_OvLpQWbCY3qYWq;Y7}QMr(A(`9zaq?hYAF0zItF(Cm|}$mVuFx z16(R@dZOLLl08v#GHL`8vj0o?eM zuyP0c$NJWYSZ{huuodcl!FhnWCo|4ntQmM(6T=ClqDG+K?d&ZWf@!Xz^(Ihrh5b0Y zR2J>9yHFAjAtLdC@-CIy&XED^Ga^~RCY4M#16U6m22u=!@v|LRe{%VX9gA>}3|UyD z?itvxcEFB@J$999;E!TPvipfLOLG%YT-35S%#cr2_Y1KRv$r%7+YMpVu9Eh+*aC`?jEn*;hH$%D(AFzEoU=8BHsLmZ|g=|li%^m{}6YKkM z=c%OQo~x`u8K#xcjEv}R=Z^8=ks&ZQgdMZp6hG}ke0RvONU4ekH;xdgilr5P!_9zj zBcNszfDXBAwn)`6*PH+>8o3y^3-P)|xGcb>xE76;+%>CcqR9%ncJ<6vU%0}P0_s-P zEVwY;fNKS?CXA(M*V3(D?5bu6Bf>4IqU99aJlXSf`hmI9EuqvtV03bKJJbo$bDf3C z$gN#G2q)->8virqds@GM+&`GKLqdEM*6p-QdG78nfVil}wz;zUE@Pp*A3J5T>1=b>ly;2o zvT+fKU1PH%8K3nVI&>I94%UwDsN}r;INYEphlVZl8P7@YHAg;1`0utqL_mqldw>t-5)Xgev zvX&2Qgc;B|3T|+$0F^tIMD@ebS~CWS9POzxWtrO$7&(v)!Ss>bj;wI3Guki)VGX`B zkE^Wh1F*hMS-&)7)j}K%J@ZnF9IM2w;Nn?ax5v}_G3nPyEjEwGFk`va8HfQlmSc%J zpCJb657?ct3@)k0@x@>a>c&AVOP2ukwdqQvVh>5&qC(dcvBFoC zc9r6qsSD8we2_hMaR-yh!#Q}gfl}n7+FMx-h(IBb-Bmem?29crfXfAj<_n(nVXh8_aT4pMcj0go ziCdQXHX2z*D7Kvt?3zK4EuN~t@NH_C*bp}v=@#>52pB$)^M%9XRmUS8Br*K1;x)qq zI3%r9hX>_!48`ecTP<+=GqxTdaqo&RjcMMUO%c zuvV}u1iNy8R?yLuUR)JmhQHtRBuJMrptlxQf#zh}a znyfV8v=5cwE8G$?6N03bqX!~@XvQu!JIZr(z|YR%U3S?PfiE2&9*R;{Dd0d=(Xs{L zx`ch|&86~QS?r)fZud8&zh$`EsM?0Eg^VK^ic!^JY%A{tgehpdTq96}5oNDlznRS+ z;o3aPU5gb+P+nCI_Q?>A0JdQ)f~iAGZoD(qwAqZ~i!V5m$Ay^d_+>Nydc>~h?}_?(i2=*U>vzb*_Yr(tW>KJ&4#IGlr1xQQP(q@|`*J^UET_$x7zM7u!@t50&a_nW(LYa-=Zx{Yd zZZ~L-KrW_f415KML5g$xKzA=nuzlOIsk!bu8}WT2hTT#h8^H#R zAtZB3-%PxrWcDM2`o~eg$`=5*MffMdJz!Qx(hg}6^(1N^wvB+nmQIyF1PJxrX&`Cp zNO3YE2c&Qo{`%2(X5w|Ks$?drN|j-UR76E}Eg`#o(mgu#8cSzDm|!V((OyuY>JH&5 zV{I4KHX~$dyD~WlVNmIGsMOZPhEe&bG9$u|tCIsz#p>wA8arzvcyfwd5mk0rX5#Gy z5S=gm!#-FV##}cOzNw~3v_Vd?5tiyN6(CY0T7&}1I_B8t!(hL5Y(q48UU@-*%{Y=R5Ys8 zFj!*4Inr2m0G2X7V&cpkQD&TRoy-Vxt^o-Kva7}1mT(YKqxUf&hL8DxG`Ttv&pBVm zG_ggRGPzOIMPp!kmVs{MzbpWM^r@;)W3>E)Wsq(1ryatiR`dar}a@kQ{}IE75dZ(bL0PHZLSXT zvIxE?+CS$qw3y?ao(}7(ZHF1;{6amCJ3Pb4;b<*Q!dLIs(c?IGn&9eYi>YrkPMpK2 z)h&F>aQ&;%Kx3AXAnOwCF>OZTCK^s(%36tX;`ZDMwutg}*)llBG4@kF+|JVYx zw+AtzxlUMD(_#lZS780XXZzIeHFI1YoOVe^eL_l~{cL7#kah*&M@x`b>bc1|h{-L0 zAGa1hq&ce=M_W$ki(HOMIbHX_)|{cEzhE|+&EV(in)+!o?3g=^c#g|PSiSH0`KYcD6KPvD$5qICQ`{^4Rq%5picUfq&YF-OSu(34)md&asAkgc2%)bp<E zajxgulw~4co4TTFQO+UJT2x1vjt%yZTW@kc*@aO+ij*i;OfRpmnOZ}p4?ElO4 zcdP^-YMIqWK}Yv*+j+xb->OcVpb1 z((b!CnWF-4nSdha2==r7k584>Nvs4kf^x4?#RM%Q(j^Jk(Sa;sXi z@xQ|#^{fxF;*3r08ODA4zwv+ ztD7d;U(O2LUsx~ryAa=vU7O8#MmC<5=!L60>z2%BmhK3}XM;h}OK34Hki&~C5f^=w zta1kVuADsIy3rf&n`p7K100h>N7F2yOhK0;YLhto*HUs&u{`72PL6r*NT|$I1{@)@ z1nl$rS{EQMUXr+!5B(nY9!u(c$Q&ngogFYoZJf+=oLVg(uBDL|$Ijc@|}Ls;R&4RM}-HN+h)M;diRZ4gNWtpGWoGUYMbgC#)q^TbMK_D4g1Dtpd>O@Qz@#|b%vqE!UFC?@ zlqF7}Y1e%h4nCR!x_(q_XX;GHWO{hJvZg;plekBHm5YR=Ag&)xk8_Ej(&Y#S6m|#=H@!w1)uct2VD(WRiIG z7ytcw;D=}2KGM{8XvckvADQ;eZx=^5-=4bk)Ze^tv~%^^e?RNup~9I@y}$X3SHAA< zt&8uu{OMOEUwO(e@B7HNdw+50BTt?AwSW2KxnF$jbJ>q9O8oH`vNPZGh5OF@?5-={ zQ0;%{ot3qZzOTIPAG*HN{;kJ9^Rf3Fx$Mxle)0Qv{?P~DaKhqgmwc}0%(hk6eYv{A z`wG|qg9!%Yu0H8cl}E(Zgvo{Xe2h6cVS2(t#lqr+3oksoz++gvlv&usbH7O?I`DeG z5GZU8c2@Td;Ds5JO_&VXF)0bpOqf#_?kJsm!G$}A<`4BQK7ams3(s9Lf8fG}JLaE% z-oUx%pMT+^3m29K9ey28rzK1wWU(-go1ycoxc!0?p~BAaZj)`l2%$kRGa+J0m@Qrl z?zaT{HsJQ@@EF@U7_zn@B!M!GA*41nWa@hUV2Jj1*w7rB$2%5I4MKo+Ks=O^ zQ)EO`r$Er`mxvapF;)CHq#83C6{w5FSeq1`s`lgO*H!TUdlG|=-9AYL{vY$5?rBeX z=~h48w#-kruf<=Vm-f7L7O?|fx*Lxc0Jq>d4S(D5$Gn^HmrADFC!S+)l)=3Wo@MaQ zUK(ZEm*a0kGTnA$TgoK7_Eg3sP+3oR20szkj_U}i{II9ZOtN?%;M<*y){`dkW2x;%vCV$YZ+`y7ZUB; z+GivSi9~A(0R(~U?Gl}a5RFR}JSFb6w@3~{lma0S$URc7r!`G92&CXAvUq}U0>WhB zZX|q!fF(gGi&BY%AcD=T5L+bSasqq?Eex7Tqiy0Yeca8gEar{&11YdL@h0I5WISns zJX?CYQwH_6XsUfCp3(`zT>DJ6Z5o2MEm9xAEIaXV4rqL`70hAF6YVo3JfJOkILnG0 zN_S5yn%_-&R0VX{#KY_$K3mzfjDVVe*w<_a{!bx>CL_$}8FqtTFOkbJY-)n`SUi;U z6D=(*d}Ond%ID?L-7Syi=4QfjIY~7&wL;xoS!!jHrCYOjqBzwqi5hJLBoqZi1O-$S z1$274bC^0=SYyPYR6XP|)OrDC^|rhqvkJjY1FO4zc?NJiAdRFvg^1TpRZXCLCv*+r+*3LJE&(Jr6BX`YBh>vq~+i4+mcEDmy0m$B<7( zTDx5_j6MvMW61W}7qu^v=koUD-~)KS#{c<3GSOaWM;@BQXm@wEiEP-sW`!R~v>!=i zGX?ZPp_P4ye#N-;(3?U_;7kK3ZF#oY_?~J!LI~PxX_(dYgVKXSuv_k>Nu~}W(%OXX)|i-O#!(#~&_F?gBB=7-i%hgu&{1~cIn`ul zx3*X^l5h1|06pC&V2}Yt{(nxCQOIMU3aM_r|rl9Y+pBK9@;7~cyn2(kU$m`q6brtmoND3^IK&y zqGZmeMQ=Z!hFHvV`}yqbR!lGmrT-AeWRhs5C1XB1ElUo4Ac7}YZ_|FIz`!yxN`QIP z4X7bzXrb(*l5CHk;-uA@ME8vYj_xTzzwEH|XvbSyk(Y!zG_&=n0jLvi0>LawVY-m? z!_t=z<71r$Tms<}5`G$5)!K^r2fC7Kg}DIa%MyM%UBKvv`6co<+1?bIAt7p^q)pqz ze@J*YIvUD+H~vSh-B}p^JPLI8P%7DO4*#|zDMes`BeeIDbtI)tO0bqA2{b03Z#y!a zDfro*R5q)0IW3Tc%nt~myBbGX=Aw};Eez0u36C*|8b3IhXEKj=1E(7qO$_o3atyM9 zo+DBdf@}-OWl0VX$zb_x4m_dj+uERakaXLTJ;>#JjfwZjt%xT)jZ5dW9Xa3^;YJkc zMik*j6zN7F*p3vwI}KkTndSV9EOZe<{Awj8TR^*+O8Hrn72r_`kEMW(v5WA?^~oZ5 z_A|8S8E9x0Gg7yQh@bB1&S&T-WuZG>Dg)!yBH>K*fL6pwnBK)0?x>0o!+U~UqLbeB54QC1*WYd{s z*2}hLGimXrvh5i#2o~FKhbg@iDo@X{{dRhccP8P7wxF)IWvp;*6Uww-**?u{-^#kK z#NSo|wlmm<)V9t{Giqwz*0zjzcy0l1`!;C-+6+9n8)^JyV1+Zup4M!umxV}tJPE*W zbAtc&D_c>lHP1K(5J1U{m-Udw=xo2TyM61lOp~^WNr-W4E(4(=N`_!XM3x6qU<KPOp7^JG*8*+qXWO@!Kcv z11bsJ*PKZ)MR&Ko1qpN|y9|C?6BAd0%GS0mCv zA7}6dHcFX5*W!0GU>e#czC-Z<`c1h16W;+V=-q64i-+D2O-r?a>~yQ2vap!Ws?nTj z?3d}%U80ZF0qSM@d^{<$iKD8|1@Ks4Z)HXJN6|0fgZ+{Q_Hxf-p^1Av4*=VB$bo#0 zYyoFSAS-m)F*129m+`SkA!&B0r@eJl)YrpsNAdP6vm}^=g7iQndAbJBa}TP44uz&; zdWP82dBmXp=ot(UO!?Fx_L8i3VCA?PN=?h4WKXIm)qbP}|K~YaxRyGCAqvxr=J{R@ zY~&beLZqn~C0b~Sn)10UMS2%&gcV{VUh4v~H~+oEHxIw~glD|XZw@Y}Bgm01jcT4=k5`U!U z36%Yo#Q(DAM~MHc#D6RC#smHJdzan!R;)+T18PLlVDr z_95iFUgGbR{0Ag_NWzax_*qcPn2BtOpz{y$0hAG2HMq|KZ;toKw2&z{4& z&Y#1&u8{aP$-hbB2PAx>Z;?pBJ2Lfpwi!V5vfZ zwJeZuxrFN_+$=cPOE@4oqY~dM;q4OMfiQ3GF1)soHXkmK=dVim;{sdy?-D<8?kRKA zW|f3j&n3-6&D69RKkPaH z8n;TSdj{(}72EHG6=#r_Q?cpJ)FPx7;_lYHl3FRSv(0PaqhTcAM^+xhq08$9)-SMy zHg%QMun41xRBl2IGjX@$ZD`3fQ?aSH3+xqAZn1fX(0o#8USQrMur~_qBBWUEU7$JB ztT2xV?Bht~kottAJ}0S_=5a}V87X{yzbI%C7AiN{)DI+ea3;C# zH_uA{y#g?U)ZYv2El3gebLqePXMSL24i@O6i6dzHmytSZt~P%L!A~>aN9qAsu`dYh zIe}ecz9g{!KX!oBX__SU0#Z-o zMD_$poj8kp?lkR^DoSdXIZ;x*NIimsmop@_9;t62HBVAIZ0amYy&S0z0d}^e?y<0Q zB=tU|9sq2iq&{U+=Su497V`p0{Vh^Qfq9{%{spNVj);~@>h}Vxnst(z)=iq@rcY9* zAoW=sQ*Myd5`pbEnHL<@QcL!y6xX~<0_Q7 z!+hGyAoUBI`i$peg#Qky2hE-43H;Q=H1l5qdlga_m?m>hY7yqh^HK?XVxHlt63#al zB7T9ySDT9v?>Cnq+#)$QnbnBzl$>!1CnV=C3Gb2c%@VTIBJ*~$E_H!<2xTuYk4pGO z$vGzRrx7kPKa=p^B=i!@IYGi15*8&~CgG(LZj$f@32#BzX7(lez!h7OlvX6o;lu{S zUy;~^kS$8qwCG-xN~hnHSeLqb;+=^L5q?0zk0HFkJQkz*1aK1O8xlSx;ZG5|vcF1f zLD}C(_=1EPZwv5Syln{ECC<7M_!cn3Gd)Ujk#{}9i@cii>K{aSnZ!3BOqi>Dw&;3)0^tq`wd_t% zBL(*3xW5kJ5sAMZVVilce^F|#t>qIwHROu|{jP*Rk?>z7^pm8}j!>z&P<3@~k~}O- z3bz(#L#orPO5TMYyeWAr!krS1NH`|pxP-SMOqe6dS0a2>@*Z&YTF`NQ`o`pa=+i%z z@EsDqTf+AtysUs}%)Hq=lzbD)R&DAt$+xFGbIhimOujeeo8N}1hf*oCZ7zzT-1m|n z!@l%=Ve0Wz-h9KRewh4Ps?{umr$NkrNPZW54cXN1lTW8Q%sXrtiqPn|EImP0gtM<8vlIUoqO-z-RwsYP?HD}1l$Ngg93tp2^cWcAPIs-h!P;g0O3nP zqa+$4V$`4^4GI`E6||tJQBk7}lBUq6lBPg|qJ}m_1zw7kA{46sGc$K*F9xmJ_W$@k zZ#U1Lo!^-=XU=@wxw|*_1C`md)isn|gfe=`ye3x)>x0DOkL>y`K}K($C+oX}C*jrT z-S0|c5juDVec?)X~cBILT9O+JIB0(BC#^S0-)z9?1E9M%tQfKU-S zVDeZJ(RQ17EQ#n7n|LgV{PFR^lE;#WdfUWnPeiFU@yNi7pi*NnTL|=t%)>mgMC1tx zFF;d)D&Q1G7!{Pl?qvN@ji6$b#){abC`)urF}j(Rvdd6`pcSZqm9YV6vz>P@dz6Wr zyn~lU*CXHs&de9DM%NRpiVZ}kg=ML+fvshOPz;;}1oas&3L0WlouDk6b_y!AX)t>V z%5Ao(71}ol?UE$s(jb)4PxutQI|$WDLI>D-HWnCRmopJd~kt0+O#r zSB758hAEn+*RiV|w2dV@Xa^gqXp!E`QWdR$IMWnW1C3Smg5Ju0qUasS_5+PmbXfm@U5_dpEy_gIiZ-!KR4b^_;O)Bs?UDrTs|89)5;Y*+q8rgfMcdd- zC|}VIb~7rniMJ>lov?|wCq!-?zX{f7BybaS)Z<~1gW}qaSc#Cq;aGQ9GW};>> z4I2?}Q6AbSreQJsC-l#37D|N+LHJ1fj6-ZTI&9MgMjo4klHjCio)oZR3oSa=6sx9jOqmy zqXr{RzYi6PsV!HqrD(NHd<9#I>TKdG*iy95Ccc6#MW=1zE7($0F`USXPQU*|b|wSDP+p@p>uRE~o^32zkqpAvU@Od_YjHpc3?v zmY^>~g@RU~BSwvv3VAwpn0|a5K2wqweubV7>Z&M@RiSuAWAs%hNl_Jh0;Nha_)5DP<=S+S$!VEQ0|afbX_TPt zf{M`uvkEMCjSBbDooo#{D#^$)$LVX4A0E8Q_W{$)2|$T9Ei@OhwWz?RVskA}l}!%| zsy+VlmEWly5*HhqQjfD%WG$dFF* zST(A$=__2y)}f6m?7Ssqc`4)XWTBc~G zz5#7kG+%!XHOq47ka?&6bJS+j7eE`)Q9*KMZ9>`C^7;;7KC_-j&4T1ezku2m73nXa zPGW~q3J)e(&o-lKv5P2$*;=ZaU=IV)s#u zE^)`QS5cbSeH5c1VEHO4v}r8RYp9JM5QQ~z3eXnhA1`Sx(Ca8QLsAJm&+HAw8|9oq`HJH7x6v{| zd_8Mr_2`()Gx&F~t*Fxt+-IZtntP4D6(tGcKJy@NxP#t78Ip{x?liUyEl_!}K!s;e z$r)6xXbxD`NHUt->+}ZHVAF@-vjMf+bkLm#bkwHfkoQaEpUC4ZHQZJnP>i5T6lXo7 zH=@;wp4Wecx=rGiJnuDq2U?_PtNt6b*`^-WR=o)w6C``^x4aO%8eRRYoAlqJ(;|=e zSuA@O88`C0N;J&cuD^?76t(EhC{aq36BV`Vdr-cjgL*3}Qgl>*50xuA zrGJ2G6cM8h)haTLKcNOie&YbzrKpSXDf&cFoN*YPP}I}-3o>pBw;{p!D~eY%$T*IY z6pb+cj?xv4F}_6kipImit0F~N2E*lwatt@#sA!fEg|{oZ-3a3JtZ?l`Mi<;$Z_L5jipCrB@B*7=Sg#tl<7JB8G8W+~MZYxe!W(TWuyz_taGgze zSlwAMZc?<{D8{Xd-ZSpSN!c>$LYM_5I91VdqZDT;+HWkw1&Uhq<+wyqt6qky6qOqf zSRV=%D^6-lgcMUV+;cRT@9V#}pkh9>>}(2ws(_&?3ef+)0sXRO5I>YmBFH zlA<`{8Jwc1r|~S#P?TV7#083KjLo=A(Q%^|S1TG}Y{7Mk#u#Dp@ zt>HLl8QXD!O(oEuO?bGX<;J@>L(zVt8Rsf$(OYn#qE>wuE>~1;?7=mP+VxhvMbSb1 zJ=~<|sJ;*HQ&eeugbyn^Wc(4IRz!?HW6x9>b%|vfpWqlpYm7rUK~bD>1P@Wv)A$Uh zDM~Po;ao*E#tB@a=(uqjS1B3+r$5yy8e?drS&AfpmDVl3eBB?gTcw)>f zlA)-(c{9mY)XSVg7TMIpvt7THlqp(n9_g*9(pX3aDmr8=BB_dqaTl4W$TaRDxr){p#blA9IHQCt zQ`FPApHwMIFqV^AMK#95q*>8%<5AMCXoOKo;OZaI^F2IcjK@igqD{tHGEh;D@f68W zG|PB~6xh@o`tvzbqG-9XkyI(#Z#+*nDr(U;lX^w1`b%V&qH?2_e4?mbf0dk8bWq9Z3rD@lI6x8=Y!QX`+2 zD@BiZ>P$CH5Y&h(J=;u6`Fs}0LxzWl zwjqkv3*v34gKH*sNkYdxvCK!SXNg!uo{w%6)QEVC{4{sAr~&a<0<=UB|BbNI4AN=` zb)uVXOJ1%sJ?1Fag?5`0u3--AN|OXNBHr3_X_h1JJeq6gaWCi74L0%GV`zgQIS#RQ zFEzN_-o0ilZ5DYIDCli7<7iBQjGBA7fWm{e;KieEg%d%G1T`RDt~)j6N=shDg*09e zxBS@bK?e$wmhrT~VcC-t#~hZuXt#M0pS|f2LEPsNvkxt|^LS)^>1l^$KN>S% z#EH)Ho-`9_icNjI*xjGPUAEy>iuwaxN-Jy{=&ds^qjfgTulO)58 z8sQ#8PuLWQ+F_2NF^hyx<9tD>HuV%#XwxO4+ySXyh-JyCUR zEUgzLXYx;Io1@%y^r#>{KVw-sJz?kZ`I%1R?~2qgjwT6`HC#^@36kZmr$x3UFLym{ zaFiQQcR4IG=srbxEQ20(l*^>~g^~Iu&@F;^4Xx}3+9ap}uZX(FJ&_K-n_Cv6HBr~O zZ=}a;dOqp~cNWdLN9O$^>K6B8n!QBQKA>CakRnOb^nCYpI=ooYsi=kSJi6#!Nj_h( zdk#&wPtqd&VfTD`LeL7-+gItnowk+mJUI@FXxF9Ea+q(8doeA!Us9UyY4=^UVwt2# zzD@4CX}cgfVoPY+13a%0@s+)Z<_MDObury1h_`(XE2f{=mb`cGrSZ#UIlgAyN0S6` z%a`3HG}S>%X_lg$W+~0L%W*Hu=w_R^mj~!RW%;suIX$YVjy*_EJIa;OEe}R&e~9i9 z#A~l(57Ra~kJs=BU0oKjET>xp$v9WgCPjJdQQBr(@^X*S+=n9NDrl{sVyFR*p3{0k zE8y7E8}60V|1h`Y^ecB2)gB4cPWKZuRnZ>zT3RlMAG7+vy^b0y!j^w_*U*WI4!hUW zje;uCbl>Oh=V-}e+_DnQ_MLKXq>ENcx)*2@^;Ak)1@t@}B8ayykG(+C1<4t*nKs$P z`}##1|5IL$TO#WvI#7_btfg%>@qObfG@*)H%K7ptEfgfT;@4=6BX0|>6~ukUve#*y zqB@}Mwk7Y~Hz-;qeexRKq<))tWOXz_5ce{Ny+sGwdA!`)w7_Bc3tFZu^H@Etc35tu z#~haL(BY5s`nb8lC5o^MK%UIS(YXr&dp^?@KszhVGhSf;hY+48O zE9!ZI*HDSJd41M)nqbo&Z)a-5`}rP@PRlBCpM+p9s=c zhuaX#ny5!mCG4mBL%9T-`gjLfzolt5^#^*F=G&Czz1rGI%WTT=j<%ZVMw{k>d zO?Lye(8D%83N`$mde+GHZGgO8G{L49fp*h0n?8oN@1glNorD_xK+9|*QT?q}x>1s7 z`(D~?(@<#NUV2QBoIQK#X+g5*_tKoTk+$!p`GP9ZdfzxGSLVojk5(u;#NMMDB%wXt zN!I%`=SkUy8P*hQA1$%z=e{Y{2Xuo?ZvcHrn{3(v^btL3(;lEU+NoN48SkB9?WajL zP4-N&{zx-yIs$orq6;L6*0$3sL9%`AwA!}(*f-s3r?raaSO;i>qQ%yybe~Pczts94 zdRS4Jb%dT!RAC*Zoz@|ERibmi@^c!msLVP>6BSih$7za9!>qN|Nt&T(gLR7LDtg8G zk`^kex3E^G=v~XDRV#YmGPOFJdimE{QChR2S1iBQrs!QOT03S_D%9RZ^E@S^PPH~z zaJ{UeSK#`hfr{#_3$#>4?^->yY(?)|y|f~m20-lzT7{xltiD=}qIa$STAfWZtV7lS zty$6M))iWtqSMx3?U+qJ_Z_mX(u}8NoIm${ZVlJEDmrZ?Yl$}T zbVX&>7%fXtg_Wii*mT%hYF(!lDJrwlwK7E&*7aJAO{1WFnc5abuUI!|+ZDZQ-Ke$M zlmV8LwPT82v9dL-Mz$ft|E@Jv>uMAKMLR?5ElAGKnOdTtMl{8r#%5~iXXH&(^szZp z+b0R-`gKp9R`4@kLn&J9-)r8c`JdrbjPCP$Jo#F-O=bRoXO^~FP^qyJ^5$rDg5>sI zplz3Vu$tDH1=?Yo`1kU;TG#cW2C$!@&~cI0I`On0q_iP$9wk3p zJ+6bM7ictFUy6CDdq7fjiNn%a%9)lnycCABGI?2Ei?c?IE(JdX4HDjD`YPoaqiaO^ zS|P^@nF*4hY^8_8Z;+Sb~r8rZ=+Y*kvPL#b~ z*8~JaNV&({f(PdD27pkuyq4XW57)7PFDSdBi-1KBAP&b*2-9o=XB}ZF5WM zO}0@=r~f-dZ^)K*EGy%Yxy}fkY3a?`pK=>7fH(=dTSP1601?}RLi4DQ&Yp4BKB7Y_ z`YwzJuP zU;V$!f5eaLTU*gF_un<9-{j|PWBtQM_TO3R-!XRIcdY+C_RfC(roQdiy8nEsaj>Nj zG+u1Qa-_Hn?+r6W?u{b%KbsEsNu-t^gC;y8Uytg?ug547^M4}!V;CK0yJS2+{&6`o z&d5IN`)uh`#P-N#_#1d69sU;m!#vLvp1BNrj->xJ&-`0AMstOK`3+pIHe3^~E20nA z70C^2eptH}i+Z^X*A+>JJ%1OQ@6z-C+3l|5od2|nET&D+TTGl0Pc%?YaMOGkvD1cw#enbl*7j#q+X7uOgn3FM&;}u`Kwv> zlI#sq@@|7pTUP~~w{DLY0h zkL1X$+u08tXWBQ}oTZ<|R^as3v0k~AIk%vWTZ(gwaQ1e`^tW5eTp3TXh)vcdw?3yF zEONg|Bj=>_7DITl#fPxTO(&c&xdHe^$!5_vaqMW&f3V z(gtHq(8pqxj-B!1M&`}YOa}~M(_6mNuf0rLc zp|0Z3L~H$BJSN&;6|n%?>|dvwh+na4qAmUlJg=ihe^1EWt%Zb4^7KJ1{!yO(Xs>@P zXijO@dq#lfM$c%(uNfPS4ugl$=u3Y#47yO{gkH|-4WOT z>AM1HQ0l(G^PW|rt`#7o^as#Gfo;&D%D~H>6=+@Hb~VGydVqK_Zn4}TGlOm~_i&0~%=M;_0U^16IO7HC^?}VZP)m1QZA>@0 z+--En&w%WMvxDbAE^kGD%+Jr^amKPiI6ugHFE)6-cO2Mv6LPmPPL%2oHhFMogmJDh zdVj>PF71!_Ri!VAetQuu47RdKxG>n$I|;{GAt;+4yi~-n3G|N$eNFIk?@YWgI0S6? z3|Wk~K#g-Daz2jDfvdg6xB)aK%)`;%6}Tms4sv5~g7A~&eE|Ars&^f33&Pl8epTW) z%&!6;C*p_M0wXmO^LaQ4e-gaFGYN0@&-8L{bG(z#XTedPz0lrLn2r3us*d2Wr$aABMy#d_lzaP?kyEut22F(hz(!aus$xVSu?=9f@ zaqo*l^E*7)kjda@M|5hGiFZVg z1|h@K3dcSJAoY=yK(Y|&HUF2Gx%EhEV9qi>4}pd`;ugZFA4TO~$k z74*Y`s8wQ%TP*a&LXL*E=dp1@P6D|&>K2inDdb#`MNx}Ix>(2uK*CsnTpG1XXx4!& zih34g8QizH7Cns&xZBYNkacJi$bIM~kZtHSknNx|;0|G1L3SdIAiI*^fQ%u{AiI&> zAmhn<@F<@5T_1t`lj{h`L#_bsi#~UC19{4o1d_6$AT5>*GMdc-c|MyDvIn~t$Kw#& zfNMZ*!Ws#&mv9Qm*Ki5QI@|zqD}I_@#v1W9kZt%+ApZ`xc)tv;7wQ4BFG&WON~VIm zmD~rikfi7#R!JH_K0)G*5UVCnyRT$FBMt5ldx6ATAy!M`10nW0sg6x%Z%7-G@10c2O&1{yfGyhk$YL34V9SRY!{Gnw_J)gY5-(M8E@Fs%kT zoEG&;W}|2|$TV8iJDFWit3ghr?Y%>6GR^4|VpC~RpJbLxt3l4D?Vwpeb1n|C#kA<+ zWOfg&23bPeL9?9ZghK2Q+77aU<|KsJDq3<$h^?hHeM9VNTHi03ZJ-VPLhO0k2I-e+ zP9pRPtxtqLp=}@=XnlX^6WRu{nbu#L%=XYWko#!;Wy$Q1v<>7Zv_2`B9ieR?kJ0u4 zA@+Bgb9sn;McYAYTFwpb(4I+OG<+3$>hKA=XQ42brMd z3=gsXT06+gwVV+lcBR%1a=4arb%>4BN|HltjFyrTV%KRoBSS1hiyswYleCm;pntTS zROlbA0c5V$K03r^X*FX)Y@U{LZHV2W#ixZ>p;j|4#EP}}>qD$ms{#3-7C%13%C#Dh zE4BEH5PMv!0r{jBpBZ8`+VIS4*|S>BjW9E{_?uv6YBeD1wD>HTnOY6VMlJs45c`c* z1F~6*pB!SlwVWv-_MVoK9bzA8C3lBdyOwfKh<&PQOG503rWJ?S=UNTO6I#Q)A@&cg zp#8_H}5c9Zd?hmnmt6^D)b#^s85Mt-MN|uLMH&@MrA=cB?P!?hryZ#!L z>^dIR&o#>B@{MwhbtSv{37zTVx?JF7S0`VxE8UjoLAsldmx_nf#lF5E`@!c}*FfJy z@g52q7o@q(NT17>=1ccw`X>3NgFeZX=gS4Zqg=CnNv?UmJgAdv?}Xe@uKVH5`F`Jn zLO%*}9)(mA{Biv#*Aw86$N4{+7Yl8fe}zBEwGz@V`FM{wdu26f!##JUh=%vbv;KCFoBc0A```3; z^ZmmAroX}eTVdNGK69Z|y6Yp*q{Aqu14U}(ZF0U3gH;Ro+XMZ|=fVkphU*`o%j(dd z;pk`}*_CldE{`hwHUllbXt3Dhi=?^)5H{yDBg$;DT0+f!u6Y zI#}HbJR^`FNOH{uos5gmoHOa3!1BN&qK=BdYml36kB)N&@MzZt#)|%YDv+yY-1@*P zf$%mm(e*myB)cZMwt_Z1OD4L08{o5WqHA{`6QY~w`XDgZQA0b_d@yh%z~{l|kn?SC z9??nBlE`e}IvQLC9+O?};O*iw7?ksc_ghSm=fnrOot$~!R>Swn>l5r34BICK%b}Kz z(K~IpE$8q%%wZo_iAa+{&Q4KYYs>2kmTu5#tnT-%UZj{UyOX<+`cC z>0(_8m$@I-j{AKJp_am+%eO@Ma`{TZDj8Njxh3*)kBVq=Vf9-Zd|ISygSEje@K*?B z-hw)KE!;Bvc8-iQ9f@3~zDaI_T6Vy@3EnO6-VN`i(8@msTcFMzP^+^fuQlTNW3Wwj zWr`Mu<2l=BxUZdk&&T6P@YosS61F=T{7Q{+Sa-J1@R(}R?r2~1Fwu{Ew(s#R`_>s9 zj)QMsana#bu2;0&B6;~Fp_QYz$2TmRkCI$R`MMJ>504pu-_kn#Me%Q!aBt9a;ThHE z!Efsr6hIfEPADGk``H`Lg6ogE!<~oWzMrTUJgvPq8VIQ?;qJqufUbe3lBdF1WNC2! zZ2p|_>)^=s@pB%FLgGC_! zT-Rkc$Sfge2wA1Q51MR^>!%BuFXZelT)$4_RtQ-j^s7aBp-A5;5zoa}LNps0+x8VU`iN&-D2q2Y?R(cU-*yA&p#8DeoFG3c`5n%V{e%WPh_7zb1pbN!!kuWxr;LB6>g8@DJLipl1OI8$Q}s2Sc|<9Lvr?wrJ}rMv!K`Vs z7i48jn^ll?^}?C?IgwPBdWvM*4Wi}o@$z?or+Kgn@z-!zr^CMa!-Hp|#o$-k@%%^~{4vpU zz{>(CFCQ|@^M}B<1+01{MbtSJyw8Nk`8xX`;wKy{Y~%2aBT{w(l${3=NBS)hj%8g6 zZ~n>qVF-Lj!J_AR+vY*6{PDn%Xgk)?7v+FOK9tRdeH4a%ng;7JFU5Pa0NTnUodGul zSpYU2b={zTJ{nhuhfODg9dCI)l$nOQp>*&u2WXn=hlqbU8~6jO`6GvUZ}Smz_GhFY zQbfD1vt!}o#Ul*Q4^Dj4&Q>i`41Mv>%8ABvk&eZ4SJE$6n*S#L5B0$R121sJH~;_u diff --git a/external/Newtonsoft.Json/Src/Lib/NUnit/DotNet/nunit.framework.dll b/external/Newtonsoft.Json/Src/Lib/NUnit/DotNet/nunit.framework.dll deleted file mode 100644 index de687d97f993541832c4c9cab1822ca8aad51e7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77824 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 OB#=oUlfWA-f&Tz8tBd&n diff --git a/external/Newtonsoft.Json/Src/Lib/NUnit/Silverlight/nunit.framework.dll b/external/Newtonsoft.Json/Src/Lib/NUnit/Silverlight/nunit.framework.dll deleted file mode 100644 index d4e0b72ad1b6c1935b852a9881575cf3478d1c61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73728 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 NMj9At;Dgn`{{x*KB^Lky diff --git a/external/Newtonsoft.Json/Tools/7-zip/7za.exe.REMOVED.git-id b/external/Newtonsoft.Json/Tools/7-zip/7za.exe.REMOVED.git-id deleted file mode 100644 index 66ca89ca58..0000000000 --- a/external/Newtonsoft.Json/Tools/7-zip/7za.exe.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -12b9499a28960378cd26a7b7f0733681c49a5d71 \ No newline at end of file diff --git a/external/Newtonsoft.Json/Tools/NUnit/framework/nunit.framework.dll.REMOVED.git-id b/external/Newtonsoft.Json/Tools/NUnit/framework/nunit.framework.dll.REMOVED.git-id deleted file mode 100644 index 2c93f7b42f..0000000000 --- a/external/Newtonsoft.Json/Tools/NUnit/framework/nunit.framework.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -6856e51ef08a8e681896c3a84ccbeea8975d5947 \ No newline at end of file diff --git a/external/Newtonsoft.Json/Tools/NUnit/framework/nunit.mocks.dll b/external/Newtonsoft.Json/Tools/NUnit/framework/nunit.mocks.dll deleted file mode 100644 index 6ee2c1cc20dba59e4fbe2948a130b2593145d790..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 diff --git a/external/Newtonsoft.Json/Tools/NUnit/lib/nunit-console-runner.dll b/external/Newtonsoft.Json/Tools/NUnit/lib/nunit-console-runner.dll deleted file mode 100644 index 1709ce7bd2b96242101956cce9211bca31c90845..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36864 zcmeHve|#L(b?=$k)y(V32>IcLBqdFo1k;zKj~3IAwv_ZoLOzeCNz<5q z&$%AP)1W7$Gt!gWU7%y?orlg~TF#2!20PUaKYe4=|`Ffs0o*y-BZ z@cAC=Ej>h=v;gUU`+J-H(SAgFTST*n-UduUVShT|m8ZGBUg7JN+>BxQ~;9jEWY|I<0C5WIw>0_b3p;RME7wv;Z)L+>G zfHu)p0Urh&|rpY8~3<_phIsS~2hG;|ssn^%uW>&yo7~ z{r-H(ao-)pr9oX9)n%T#%;!rWSw|Fxz$;F?A@X1nchf>ojjME8hn^Zyob;(U z@J*++h}j-&3a6IoNet>En!~C2dJ@Bjn@UHlB(2gA&3GX=f03l@NOJ zoC+q}OL+HBN<}rmie8v*AzL#ED8^a1s)qg!4`KqWQ*sfo;lPvul9dhWdP^&C$#Vgq zO~i!Z8k^!x?F&dX7Z#%>YBf6vT*-neZ79?Rrc93qUuW@X490^#mxbWM1j41UCSK$5 ziPzLpAPJu^8Vz^3P7`s%SpvT9B+3r#8*Vq<_oJMO&uTdzEk5F7uSqH`OqyH@KL47acMLuZerZ!C@+hf4tym%@3iJ?nL?|R0!|snH3Kven8NG_ zot2Ee1wIgLoPX*DOhUj272u#oqjd{hE!-FiOu^lPE9a|g*^*$M(wb#1R*>5%ESWNy zMmObEs!I~)G71+8GngB*F5LKfR&H-0cT~7B#Vl@&D6C@ktC?Fk9&*;8;HzoGA#SR5 z!EKO0Yiy1;H^oEu$D5nuVZg#gz5o$V0KT40fOSWBnYed~3`{gj21b-+C|t~3BXb0a zK#W=-VFLiEMq((Ev>jH#pB95D7Bs9 z4M}h`aCNQ(anq{#@u;&NrS>Qaos42PYZ5mL>0l1~3;9*jru&wawpwn3iy@o@SDvG; zYKFU*rKK>b8uyPew~dYQMz!qcQG8xJ?sS8O==pi^d7eV;R(zh*!`SD10UPTnZaIk8 zhCgte5s23YdG?@qedBy^G0R-c5|{ZaIyXuDrfaa)u+HduT!E4gmJc0-@G)GE;EKR5 zAI4vX<$4UX->JYit_o5JjX=ezDbf_3SF5uu;oHuGi!=tC8f#KZ;=y>0?(psquPJX2 z$zCAtN4(p~QBUmPFxDR0QBT_ zEQ;Y=k4q#)<_h+shd~d;7SUOM3p)%eK? z@-(=I;l-#Gv=FxVE_B1}#VO#}V1=a{G1q+=NFer>5WlMs9CX?v0cX8xkffvi{D3ox zdUHCa3Jb((Rhy+!Ll`gMjDg6>0z^~uEayfPiin0xCLhEeS~InWqaIGX%G1PY%Q`!AwWH&`rEFm2mHY zM#}a_*8^QaksJqY*nJoT`qHU|SQX7XmqsMbG{td^fRhJF(gDCw6SyFqk?WcJf7EJ^ zyMHD_FT;9Ug|BDnlJew-+)R;l8KePH@FT$#7$ceXiuX26BS{a=pT?907oVO+ zDjr)qkrM7Jyp#LEPd{zIbVlI-%FaO<0C7Q=JqWRY z?^}3q=Mb8jPU~_>d2q6h1p<^65Be*l?E7uBYAeBJJoF0nA7%EfPiTx2-(p{4 zK0VN%a2rJHE52MuoGg7WwSj;iErPPmI}h^(HQau1jW7BX&j)Y+*f`rGZW9zqPVr#+ z6jTek=K!Hg5AnW$gQ*NVhZ)=gAnxkC1EpoEgYrai8fTiRW*7)Th4+MwmG#D%z9%9~ zkx|k4o#-4Pv(ad3G*er7U%op^)~t@w>q4@e-vO<=3gWugu@dh>wboN&42V$j-6ct2 zNfWsO_WZbUdls1jD}NuQ*3C9mY6a@JVPj+QMOeo*mVyE}+Z3AK| z<-b!2FcRN|(Zfc2vp&_vcD@fzgtrae$Q|LwOQ(3*EDb|M zE^wlQ{|HwbNG}|L#)o+tvF>EpmIx>{h2_)21v01Ugfx|+$DH<`qCMc;j$tHUaL)}xyZ4tzEn5ecRr|;ooqI&BdyY}7 zeZL7hcc7bd4B+HOgqh?AP!gw^N4jb(#uyLn3_Qs}KaLd}aIKYjnqn!HQ@N`kM!>nA z<>0w>?gUuoUJ9%tkkt|PEbS4>97^2m1Wydbd)o)mF>Lf8in4bTqCcgQ%83KchnRIY z0Hx;XQ%f-XESx8!#``rPUyRc{^)QJ2>k+U+3IP8qz>SP>;rGBNV!C%g#-^i)YMS$5 zU_Q>Js4;~wT~3fyHR?VES}S>+1-Rt`5V$V`;oQx2V+!{Y>Yl(zCfH)e6z(HRJmw*X zMC?UJ-q0GYOBX{PgYS;mcO~OK-+SV)ECQy#FHC25`DYf~2>=K^wrIn-2XvA|HHK5? z#=|O&!kW}-Qff#81&J+-vvnz|WPW<&788-h`o( zA3>Ape3S{KT=*D@mGyhisNZ)+{r)rRe=xi5{2}VB6bu)3ZU%r-8!DA*4Ei@%^2n|| z6b~jp4my6g!Z$7Fkoy@Z3@m&TwpP-g`aJxBD%Jngf2BSZ;PM6sZo`2$;R(<4H#Op3 z+HgJr#wt6xg|iVfAkvfjBOcaND?p8n+2+=Da0JY9$q^Q)2X}5m)Su<#17Nw#^QcXX z7LVc^Y22Y`>v<*o6DH#Kn1t0WaBz`yPxMbw3DLYn)sN4iXHSoKK;ZgW&C1q%rKL*wfnU z_{OuyRL;X_j~XYT>Ko|6RL-Z-17lzjyl#(ma(7!~GUqca1ZKkhO)X*_qNc1EmZZ^i zUj;5+BjH7|$OyT$F|1NkQU^6rA$9SRu68tgh)0;S;a<;}KSEitk<`ihw*D|m_<{tNzoREf_BB^%L8?+>nA|q<8 zte>4~uoJ`9?UrGw_(`VjJc^FUAQ=Bm<0LO^8PItQ_#&otVQq>+er!e zBpSFWJsm_oxR5bM;F?{|7tl{~nMlBB-Z@061>EF3UPh}ihscbk2>!==20VpxTRb-j zUy3~vS_hmjqDRzPyd>RYEl%$0fhi;<*^VoGO1@ZqWG%jYS5E*1cE($5u~S5QOF!l8AkIi1a@?&*C^oIs5Z22w$-~aXT9pruH;2aNjzO+NbFgfR6&k z=p{M@FI%gfLiw!%3j(jy8FM|LK{NV(Jxp&63!t{56X8whd`#e93w%XjoxzkV1a=90yK#dNrh5PldfH%_|IYXX zBw1tb*A2Q1FievsYwUL4jF;w_8(|K_8RWZwuxJ zz{Kcp0K@d}7W2G6#PAEDA#nRvh`GHC7^78T)^tbsnLq=*6Xh6vK72QFz!$?z|5Jfx zkg!=}gY`1#A7+o1<+ujvrn#ZEd;TgatI#|1_wu$bqeLvu% zwQTJl*K#YxepU<4G3M40V{X@>Y|wa&B|HoWYXH+gzmHafz6VT<{!z-Og(h0Zl;;S% zKwuAGnD*7N^=9gL7Ct8M(K;TnwVq)XkU#8C4EbL@ylxG=%dhpK7J}@Cv~5AHmKI^j zGv#h+yMPu;ZLidl=x@+35N`}REl}6E91>WoF{cGmUM%oD!EDf4fbSQ~4uSiytr_$V ztqt&qVD1pg;{xy3mID8flphiJ1%Y1$d=vcwt#6`V39Qk%JWt>0^Mf~|_IqCK z!r*oA+Ph1&X?VoFUabdh^Jr)lb9qs_K6r%Y(;s=YQPi5~{MD+h2+C$Ux`t~r^wHo^ zT0q~C+KbxfgVS^lB`#8wPX+I!g)||xr|6mBaro-Hq;?ktYwkmB`b|uEj6yXJP%FJG z(Vq3|K<%%jrgU$mUrOyRT2S*Tw2fV=`kh+nWA7lk)6eH?p{PECM*--MJ`2s}~&KPlxu z0o3U`QdX1;H14Y;+>TvMBZfL1m{ktK!;jO~wG(uozy|@pL7$cK69S(U_-%pD2z*xH z3j%)v_^0%9zz+JAKuzOv2<4=}G+@|l0-R^A1zc>pMo7EHoH9c67IVhPQqDYL#I?7Z z?=#x8JIx1(;Rn&mt0pcy+q93E$Bh>4<7OkZXrD4aYAnYnCuq6$l=%(Ne;=)#^pEBr z8mqN`GamxXnU4s!M+JV_=n$zowJWVBjXtg4`ZnM$>uJC}RtN2(JIx;$yTJdiF-p<; zk&yv?lCm;NR{NawB3i#{t))Z2{If9w_=<5z`-$}m%Ku`0gKpJ~(67O5Vdzz37cCAk z&!vF3YN^l%A;bDm$ZXTD2HXmbuA{BACFB}?v^TVt`p5;`O4Go!Xm^A@3J&*#PS7#! zGvIJs`*NtujBDQyZ7}cCegyn|+Ud}M`JlE@-wsS&_&UHucsDSe;SsYF{7(?W8&SR? zjM>x{)VL_;!Y638b|`$vd{R3Weuo*-z8-!z%HI#a&wK$IbT|oHYCBmysWu zA$?KwIWw-Wh#sf7{-!9?Y>fWYY|*Zdz5<#((Z_`6uTgeT?xQKdTebH_e{Hns4@A4n ztawF>z~%ZMM?=5nH~BqwcRLRAKhqWWRy;weUg2n8yM!F0e{=-gBFlbwBXi# zRv)oVxO|f}L*J`~j`R<;@3OY)7sTER*?wZ(Y28X2V)p=UjXh@G1j#$-kiZ%Jj@ZN2 zG5x{V7p!CSXzYY|<_WBtCt^P|kL#ymU$u_w|0nhh>p`K9%dCA?%1;P;A)fmY%D7%zTDk0{krf zf}v*B*Mx4>+Up~LU#W|SKC4|;|Co79-&lV^s6~5gJzLnRzYyia^*sVN0{(9OwV^iJ zM~-$r6=>W@(?)W`Y1|MT1stXi0bWLTgwixfhf$8uFv^XT1x(Q`fL-)B;6lNl2iOU2 z-_SCE4f=@ioI!c3ejngn`jddq=q~_91DdvvIs4I94RBvgC*Y@RGJyY5GXuE5xDT+)_)*~V!Es~1afeZ7e!zUf{B!fi zX24oxZMEKJ9kf1d-EV!;dfI9ZT^8CBx&a5w8uoG>d&5iG6@dQ~yaKf#qPmX#v4$=U z1*bU%*I;)ZN+CewyzNV}dngPL;4sM-;UWcqFnvUdeowAw^sTetRxr~u`l{>?=*u@d zBa=D%&6J~{QoEN{E%kz9_t6l!3im_>>Dw}US2A-4&cPqIBrJ^Sr^ zvCGNj?BSy0lGi?D7mEFvaeGU~E!eIaDm_`uGV>98PcDPI;Vx%Ul+D}zP~(MR z$IWH;(BPp$(H^IPJvV|aZ3dUIOzx^f+w8p_N`y~?+D>QlMcdt*8Me!!y0(&QQxCzqc)95nfBthd-egxg_k-| zZNxc%LUGKsGb2>Yj@yui4rH=LU~|r>gUg6hEYO&po1nB9dPgRg9my1J8nuhN`wDDu z3@+x{z*MtQ0~@KYe@Ex0zV6+f+pebGzD+&5`v-=0_YQ3D??!d!(DrSWnC<;NJGb<7 z4fS;I?%B3&U>o%uw1+1#nv9bf-p9IZ&g`=*>s;Pu7bbISTD?K=24`(r(H`^nm9y*j;X&ep&TNl`wMqz^j4Ntl*mK+K?z-wgbRMZ!AYJ}kBL-D^xNmiBr&AZ#lx0?{M=SL3yO#GT&oY!Nttg` zcCXEgXV7-{XR$bEE4j%T9fh}HIl*zWc{TlA&cq=%J33Y*iBxp8T{bMrgZ4zm&2U`v z<_!Ue10AePorQuuz9)BRqkV|yp|gnRMSFOOR5bKvb7yJjwsV<7gW1vi+&+j#h)t6i z6GO~x?#u6W+;M5ll(7 zBrG3H16*=^0tRrs`6zJ22SUW(1{)ldQlZ=*&c+>uZ!xt@-KVy_F^yT++6qOL#?}!8P;*jn(BEDMdCGoxZ>bsYa zs*pPi#e;M2f(p&NkEvx%U77qQCo|&5X@BdH<;UBgbbwn^&-g^~5IGaO`||cplaLWL z@US!EUKlAr%+AT8)0>-wCM=0WOX};+ig#w*LxLT&i$!^giLr|CdTd7a-VDMYFCds3 zdt+~g_me}|;~*FBS96=nm{QDFeTmhfK5m!cq_91oV=R~9|1bn+3&WXWDUraQtr`k6 zm>r+U*}Q&yQfwQe5U1zh1V=kwXsn&r%Ei8dvW|@E;dzr#Ltz8(aU)0+K|kb7s2#f} zzd!3b`EdkK;n}4EX?NC@)a4MzI#LGh$~gsFde0$(MR|sBQ5G-RzH+A${t%P{zgPA) zF{!a>3Tmt3N$&BdSSFX}urT2iGJA41siF;!E{<_<>YdExq%0e%??{zS1;IMu0{gLw zB+c(g6X$Xd2Z2d_Su*)M61Leh}qt>%KHFlwF2jI#f* zb!6I=Vt(qPoFG4pg@6@{*-?IgV2A8*l4qJbDwoL1%yV6(A1Xc#?#oV0U=x-BR5GS2 z*yWUD1@cB4#MUcxXV!hXzMlN#xb4a~ewjD9tKrnDg=;*L=l-Cr=-4qLK?A{QS zbwpR}O=@KLsmwYv*^GsZ97Y<@b9kSm(NgWV4@lrEqrKJZUDCsn>~>B}D4(np%EQdf z4kVq}AbF2VnURs*b4e5*$@B7@L>1wsD%#tAq9iz_o=}$@dC2J+%eb<=(2$!&be}+g zuJo=ne04IHamzuh0K<(U4Mk>}RWF^Kxr}oq&d<)VT*~cBvyrKHhk_r?Q*hzt?rfJq+uw zQZ5;QC$?OWB{kIPF)yV;gWmSz?~i`{YS)>ZAXbP6^02&E%Xe9*`FS0RdmWhrZ^On; z4gbv}hxZt7&g9`>%4I!Nf%^PW5iIj@tQQ-WYvBN~}4$@y!ed zDfsCgJXQ>dInKyUEis1oBe+>P|1PD6thu_Y!nF8IO0D7?ppdJV(1{8BGTOQ(3q@zV zl;Ws}gJ90tn&;qtc00;zxiYs@?P>=s$M%5`$k;9CG~5myI2 z6X3cXZCSzKRv)cJq1;QjUBjE13Dn1cPv9Aq;^@d|IK;4b0W*n~aqvBaEAGfZISg)l zrOx!+(*ZB0;w#rPpkyh=X%Bd1QDWH?m6DLP8rLV8AK@nr|xCu(5 z7i-GeK)(3EEKA^|-I!JpmkVAD56!(1LF{nApy(pTe@-v6R@Q}6Ra0osw^S2+_**B znKN5;GkA}noWq+137Vo+bQo9luN!Tw4_kLTXfu%8_UKlFj#^%e7u9uxaxZ#Jf-~OQ zXg)hHYVVSz4(s(Qvwasqn6kb2} ztj7Lu5amhqU>c<}EgeLS*9ChG9x|cD_wOWhUoLu6st^2!K{qK@V=ABXsK}talWj>U z*6j__whm!TUQ65Ls;rhq|8a~(iwCi$G8oZ;rd@y&@ZnzQq1G{8sz6^nSOOL6#FVUo zvKFr?m#B62j0}0!fB6kZzz-&R#$ z4qAmtR7ga%YVmn)i65-xW%Bcoji;L>u*I=#NbD~fwmQYnYXG=YA+DYXK9)xXkW3Lwx-A3qQ8 zHvBgK5~Uq20pISyel~<};__s~zOp^Hj|aWeoN7MF?=V!efVy|mxbJhuP@+h3-<;@ zyRdTGQERHw1uA)Ste^{L$B)?#Q%S8>GF|A$h}Y-MJr(~qy2^d}A&G-3q3}1#*>dJo=Mp&y#sAoQF4O&K7yY=X{aVm(3^-%ed@Et_X z09tJNg~iN4`n9N7N?(curxWzZ-b+68tIMz7@X*t_J0Ey+ zatm2^oxJ%0jRg{< zBR~LtBG|_cCJ*O98cp<=mrTX~1Z(@NLI;HNI;@iGbE%HMBRh*ML_{ z_%?J1?G?;@QA4Lxdcc1XI`n~=g%R=I07|W~m_d3hR*#W%D`o{TMvQ^Zz?#07e-j;? z#_P~f)!_FTP~SG#xf<^>5Wh0|^fi$`Ub}JpwrIycd}aNq$O|{F`O-)BzxlS{Z$5PF ziFP-8D)jZI-ukT_m;ddZ4?ob-c;db*et3WFX#OuxeQVh-d;jCbG5T_#FOa!=;X~W% zc2C~g`*iA>UwrB9t84X>ANcswTThH{d+EqU|EgcTaiF*L-I3w8dqRJ3$-49Ya`ld% z27dUh&mVo$Gi{3>9@OxT!%(bda10N#f_&&O6pM7*g<&@`a& z3KMv`mMA*>Cv&-rJ(5Uv+c<2%357kfyq^`D&E_(G*pYDdCW>R|$Sj951v^<-zS8H7 z@+|gT#|Z9Z{>^jQrMxHd2|NrgpYmF9G0(}%j5#@F;0S+KvLEW;_!*I}gz(ZwzO{9132p4&WFY-5=a|s;pik5|Si9tx1vsWg(Gia1H z;}9c@}fr*B*l<80Ec*;ESQcSCo6BVjHe7wAaOGSME3d^XH_|nm$IC!a9ZF+m;53kR@K?wI zJj`?s;3caw-KDwPN#ya@xJT4OQdw5~`pz35o$y}oSYEl}v@2(?x2V5t`8}YZhKP*7 zZUs$U*YOjPhUr^_32Io2=)H)8xgHCch~>ml9j)z%@`&~|AelbS&5M|DkwF11wrCL= zaWNBG!}P}++OTWr3_<#!Y%Pm|M#J={K@{^id>W)$Ys2&t2CleZPl<&Rdc)F&IBGQ* zw4wbXb3sG9-Z1?k54JJydhqf7FOBimWyKnn$3TSNv!N%%#kRy^JflSY0qfKT5N~17 zDndPL@_yGaeTuir>1RQS%?>(1-WLS^y%Ov1=bPb%ws>p21yrpui@7$m>8kPPvNyKF zgfYW}m_O&OxE5QY7HeG;G_}@67%M)b$%v;I&V(Xnuwki=Lc{d8r4{sn80=?Kkj=QL z#tg(PnT?tGBGm#JY^Eh*)9=z{xrjT*jeB>mtnAv$_f4`dCOz^UPuH(;5qzH4ST7S?H(7EcV}+ zWtc%L7UOgzAZ06{*Ra>qJdNto=?n2+y$4vxD8-Ob>KGx%QR|} zQ{@EyVt$7A1NHg~#};+k?6{+N*z<%&)1NQB0h35}El;djwQ5Z}Ku3ZP`*K-3v4xM6 z)3xEV(_NgnhLelLwdn-TH1}oQeTdiD;js+%uC8=q=m7Sa&YXSF&L%q3i5(7JL?{-V z{b%F1ipO1(*fNIqUnUY=ZYDblvd&yCv5ntUDkQMC;|(W!1kb6$8r6s;6W9t$hkiJ#a}E@=Z%zo6fakfKDAy}X{@*ZEI2w-u2*_|n5FKO{Yy6r8o2U7uz%p&hm*FwIE~}a`NX}{K{&r} znez@(`K(TT{wRn)6$c)JIQ!!>R6fL>%PA@}e448MU5xkNU<0}sC#IU5nU3Rpk>5l- z1dY^*DDy8L)utg4A664iJo&e`{uunu7=A7%W0zkx;=T!dFUOf@nRfP>AJeSC+2mS$ zS3??xeC+_1KSR`lzHAM3kgQ$`C`xE z?_{ABzbRKfeWtVE64euF?*#t;-ib89`b%cbh4ONKFOlCU<+FG7+H%a?Pz6;BR4q`oK-B_O z3sfyowLsMZRSW#TZULODN1?;Zd}CYvR4q`oK-B_O3sfyowLsMZRSQ%tP_;nS0#yrC MEl{<<|Cbi{PnGciH~;_u diff --git a/external/Newtonsoft.Json/Tools/NUnit/lib/nunit-gui-runner.dll.REMOVED.git-id b/external/Newtonsoft.Json/Tools/NUnit/lib/nunit-gui-runner.dll.REMOVED.git-id deleted file mode 100644 index 0fd7dd9516..0000000000 --- a/external/Newtonsoft.Json/Tools/NUnit/lib/nunit-gui-runner.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -35efa737c3957ac14e4480d2a559ff4127298597 \ No newline at end of file diff --git a/external/Newtonsoft.Json/Tools/NUnit/lib/nunit.core.dll.REMOVED.git-id b/external/Newtonsoft.Json/Tools/NUnit/lib/nunit.core.dll.REMOVED.git-id deleted file mode 100644 index 0cc1e1dd6c..0000000000 --- a/external/Newtonsoft.Json/Tools/NUnit/lib/nunit.core.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -a1dd69866dfe9f4a0ea9975d961b02230aa66969 \ No newline at end of file diff --git a/external/Newtonsoft.Json/Tools/NUnit/lib/nunit.core.interfaces.dll b/external/Newtonsoft.Json/Tools/NUnit/lib/nunit.core.interfaces.dll deleted file mode 100644 index 0ac87882059e3a76a63ae0bbdf03033cd65b7756..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57344 zcmeIb3v^t?kw0Ab&U++{H6vM)ZOIxxFk@s1%MY-L0n3tX%lIwX*kG__X>1Qjx?*PJ z2SP>;ub2RVKnSpq1p*`xmOvokjR_DF5(p+CKsLZa!tw~PgoFgxCGh>Ky6>Gkk|D{S z|98IgKcB{)ny%{V>gww1>erpovJ);Q4-t9s{_HcNd+^Dx`2xQf3?e&HeP4v`3OzO9 z9%JcK6WX?=GV$KDwKd(|9q(xG>9Ml$&B=JWuP2`Bi8rlijdxp}$-1JV@MJA|Wi!!I z0~-APo6GFlULkWrfe|FS9hA7DUi7$5zry%@MK4x*Gllh+SKJ^1ecwt0?V5j%Ai#5< zl2W{Yvmp0)#$F*x_&722Wl-Tz(m#U7iO>S)6$HN6!HDXz$(>o?mwg8SdD2$V6KVa5 z6K$$XXVM+OMYmUwV4jEZcD?4qAa&_vmjyhz0)tVu4=XSL4NdQfB5as9zE*o%YXUYDTlxOo8;-x?3>@d;?n7B zH}$PuaK%x-`Rf~#8y^1Q;?3R}mwRvOE?XL zFrCF{x=GVu8ys`kaw_U7mB8}45|x-%pgzZZYQQ2+xk>ruc0-1@Zj@r(4RyUacIayo zOzf@)Js_eEmRJ4-c@+pE+I`M0$7Z%wmn9ufou!#wb%oMW4fmmaWb! z8+Dbf4!a6-JO7!oCk!bYÊ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 QFk*ob3yfIc^DOZH0B8(6)c^nh diff --git a/external/Newtonsoft.Json/Tools/NUnit/lib/nunit.uiexception.dll b/external/Newtonsoft.Json/Tools/NUnit/lib/nunit.uiexception.dll deleted file mode 100644 index 610c1700ed22be35144f6522175332e291d288c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90112 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 Pfe8&vXkbDEjt2fWQQ5Ds diff --git a/external/Newtonsoft.Json/Tools/NUnit/lib/nunit.uikit.dll.REMOVED.git-id b/external/Newtonsoft.Json/Tools/NUnit/lib/nunit.uikit.dll.REMOVED.git-id deleted file mode 100644 index 58576daa40..0000000000 --- a/external/Newtonsoft.Json/Tools/NUnit/lib/nunit.uikit.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -9087db2d16660e0fa83bc9d3c64bd01e21807d61 \ No newline at end of file diff --git a/external/Newtonsoft.Json/Tools/NUnit/lib/nunit.util.dll.REMOVED.git-id b/external/Newtonsoft.Json/Tools/NUnit/lib/nunit.util.dll.REMOVED.git-id deleted file mode 100644 index acb5c09892..0000000000 --- a/external/Newtonsoft.Json/Tools/NUnit/lib/nunit.util.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -0b315c2106daf056a34764827fa3ca8affd2959e \ No newline at end of file diff --git a/external/Newtonsoft.Json/Tools/NUnit/nunit-agent-x86.exe b/external/Newtonsoft.Json/Tools/NUnit/nunit-agent-x86.exe deleted file mode 100644 index ebcee1be249b1bf77bd7c712c19c9df9da7cad26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7680 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 diff --git a/external/Newtonsoft.Json/Tools/NUnit/nunit-agent.exe b/external/Newtonsoft.Json/Tools/NUnit/nunit-agent.exe deleted file mode 100644 index ec41f32382a836eb24b238fd8969cf5811760925..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7680 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 diff --git a/external/Newtonsoft.Json/Tools/NUnit/nunit-console-x86.exe b/external/Newtonsoft.Json/Tools/NUnit/nunit-console-x86.exe deleted file mode 100644 index e08ac9c81d7a252455cddaba10fff7b0807c33f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4608 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 diff --git a/external/Newtonsoft.Json/Tools/NUnit/nunit.exe b/external/Newtonsoft.Json/Tools/NUnit/nunit.exe deleted file mode 100644 index ad8b08af381ca783992e342487e6705bc79c247d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5632 zcmeHLPiP$18UJSWr?L_&3UNb?srytpMULfRwUHClhIH2})sbV#TkTpVO(33KJ*_61 zo!QLHT2d(OURo%$U?`+^4%M|R0j1R7v{2BchZaIZ=%GiGTnr8Ll0&RR)Zh2bu6DHA zh$J+Jggohe@B9D0_r34EdD7fZZcq;q^`h_Y61|0yTUy}ZpbqiScm6U&w~xF%@|JPw z?UBNY9jL1Bm3^zCN|x(-p(<+S*IZ@0YWi|sRlFr_9z8mEs_8m6Lv+dLp@-i8-CS$7 zyOb~>t=NQDS~pJO~t zbni%u85^(dg%D$Y3RFemw=@SpKieWOnxS3~F&6p(6gsc988z{YLB4}=KVO;oTf@EuVj3?;P zXl)2aQUtj~!}J4994aE?sC=jj6Ab%DPT_=doD1^!21zri{q0>3XXF!Dw} z{Z`-|!-Utn#tHEodFOl>SjjOufebL7Q!IXso|Xt!g!<*TGSG?Q{fF@|WuSjt;E2G} z0w)Ac3Cswb75HO;&jTJO3vifhfv?CMM+8??qLWzX6O;#hgq{REK}o<-$W7#j@gLBu zfLW0~N9VAfJWT_>Ky$`8_12?08l=J*lJ-X|lA~@lgB}xJ2dsWrmSNH!351;VaA1;O_iYJ`Ho$r{6-M!3SBO~tV!9S@RpwOEn>4jp}vo%P&hyIk|F?pCwzvgcPsXgQ18 z54!sPL_xu~mUPAPSG!GI-SF-5N_bF|^O2`g7eUsmR4sR-Z4o8OT&TIBUC}1XZAbfg z?O(S`I-rOl;V)>%S{E#6+cyoxZ)g{7#|~rOWt%8p$P`w5Z7sFUEFULUq-V=D`z*cz zuJ$QYt4|6m{`(JRUw`?P_ll=_{ze0LUVU-#_~hMR;WP|ElUPlW4 z`CT<3?}`Z-rwF&T%*Ssp&PphDF5+`yQMy#yi&4|MME+~zHf$~dFN-#>uu2;eWtmps ziSTae-grD6eAykp$>IX4SL=UA)6_y5f5gRr3<$70Kr+ zEV#AnMZqU~v(UM!EqH2cE39c5lD2-kHltVaW!P|}d>Xh`TD8hlRN38XW?bqz2U`#G z)sXivR%P+{h|*He`*l03`mmaw7W)iV$=RylG&-nG-n;!L<1im%$eBVvaN#jvpY~+uInKgFpE3%YXRG0LcFX*k$kqH_UNpYoI{^;1(JqP5M65 zn@xJB(O{t{Y(bsr&E4JmY``>(4x^#IPu@v48ar`0#2xh3KDyE9q<42XSPmKSz`TRr zLcoYpT4M|5aatA}lOLq9!aX^pFpnVnV=RK4hl8{*KL_}N%VN(x*E!d*LT}Z19eAt# zzv_IsqjjbPSwsnL?(Sgw?(g1@jg2O~6^+=xTbs8wcQCRKE|nwHORCQAg_e9l{H6*m6qQXsn=twJ3my$#C7w_-Mt~N)3inU4sQ64lr z0I%`{6(fYfNCgRad4rSrGo=g$^b9!^dWz_J`M*Sc(Q~0L#FYz&q2=YbmT;1`*Y3?K0JWk}VHx&Lt|WZjN>~D}EK+ zhJy`SjaFY%U%P|T&Lso*GDhWNM13f>45KpY+Pax^*uy~oxXqP&qU3_dDWb~uJsn}t z!;pVqx!JJdpbStc?WII(Soo!?p4NLkL^5(KxS!1PHZsoxdHOVuT4*PZK%64Lk4QXC zFN2>2X7K#EA_ci@g(g?>=T){oUDhdMl~5-Y(*}tvfN!MRfD4foV-4~Q@Xhowa3!6m zV8+W1A>;~W^bld~Ixyi+b#7A7Q zXlT<7ah1`}rgy}2^_0+BtW+9qc2w90^@MQ9Q^a_MUSY&WCFd*!_b0L&OmW@N-LWO> zwQH5l$x$VFqJ7(&C52zLy--*C>G(_4LsanI!~6O-G|U}=gA!B~rI=AcW|DC0f*GP0 zF)t5ChvnXAQ!TficlhM5<6j3JPd-zA=+0x8j%+`(@j_rmysvH?+`H@ehtG@hXJ7fC zvGk^IPd2_)QaiQwllqUo8>~ofohbXJ_VuY#MU(k=RLwp*W1YS3x4lO%T-^3W*N*2} zTkbj_FC(uA0MjTazp#ur^S}}(*?N?ys=K9 z{5o71{NWlX{)1D_sr3cc57@EvZp&;PO^7r%wQtzA4mk?Bs3HqTnOC#YN}7FhJnjA# z%MKexcT6|E<06DSKx|#8A~oc>t>S;71N^q&ExhWf=Zz=AS;(wR!h4nY+i`CQ-!eYQ zKAZ?Nfa|9y?FVk9UT_`w((Z=b0o>+&b?H>_``^8{Cp+1rjeZE{cq9kEp1yN&U zBaV)@Tp*@N2gs84P4WfngEa=N1AB~I_*sxVcqbUdG755X;iW^L{F6v?C{IDv*}n$7 z&*%Z&j*OH=|1ef}C?VsdSFEGLw+44-$+sWAHoTW|sl!WLvp9%`@h&T}8dv(7$lXA{ zVw8eR$aoC%*_Ohr0nqp&jle4jjROs5mBvg9{yfvf9F2yc;V&Q2W?4fQEJ?XS3p~^C zI(RS$wzv diff --git a/external/aspnetwebstack/test/System.Web.WebPages.Deployment.Test/TestFiles/ConfigTestAssemblies/V2_Unsigned/System.Web.WebPages.Deployment.dll b/external/aspnetwebstack/test/System.Web.WebPages.Deployment.Test/TestFiles/ConfigTestAssemblies/V2_Unsigned/System.Web.WebPages.Deployment.dll deleted file mode 100644 index ced1480455e1fc7657229deff5ee027cf2562858..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3072 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 diff --git a/external/cecil/Test/Resources/assemblies/catch.exe b/external/cecil/Test/Resources/assemblies/catch.exe deleted file mode 100644 index d7ef04afb22c37d1d9c7b15929a40e012140d921..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3584 zcmeHJ&uL1wszk!GQ)PB#J{&t4Oe3Pn@N@JMPTd zbvRVHv{I{9qIW8B>o|^}4N^}PFPS&*y?O7= z_hx2aGX35S>LH?DjHgeD?qJqbF#Mm{Dwg}-xZ6+PZhJUz$C`RLFu&|6R+pkCoq)Mc z7>bBhIFpT#c_Ay!lvyCE+}^pf?@*F@c7kZi>Y<0l#S87-9#hKNZe?Onm^9rV1Y;Nl z49ys(RO|xD;MX&)V!*DchYBAP?KZ!iIZ(}%E;t`hCoXxog=h!W_= zI|Kclb#ZpYTM_i1_2Fa96p-MCW{448wWX3SG=r@GA)O3NZ7Kl0Ex9k?Xs}+ziq5qG zIQ+(8?V?+#Uz5g`qAm0bBf5!L3p$40?S*K2&Z40tVhDNCkJ3Xp*7Wa>cE34j-aseg>fr(H)S`E z+d2E~+==5SbcQYDgYQ7L!HUe_A87HwFuw=IHedXhzmWm_n#8nbY(Z9Y!J7=mPj>hTk@p z2jH4w|G1*vgpE*x)@GSr{gOsZt~-f#(r9-REpN0R60Kmg`$qd@e~J2$d%lTVe?XSid5_Tq;(Mxbi-K4*53t1hK$m5|$aO4bWiG*=HL^^67 zs}8IR>kdWm6VPJ%ruQb2TEG;+%Y(i4j7+-USd?4)8KnwjLJvs6-rl){-4(eePrYj& z2HzasTE}+*z7pOYEIE9;ok28ezIt6vWPC$l_iu?-nKQ;=)M z`z$K0(~3b1)S+wA?@-rX zM7;{00Zz{cD)z5&2&E_Ye#)O|1wLzXsqn#%WsljpEaRaos_6Y=*-P{1j-Jdi6**zm z@kPkTvMXF=&z#=bmv@xnLB(HTND!*AY(s{pl)KCWM;#43R|+MTqNA<|PB|*Do5!*& za6)g1t7u{UZb-%0TC&M18W4I@7b5(z0;JH(v0nE*bS&Vtoq9bx9A}7RLq(I} zlGr4k<5?4jy%l#G5_={(ERuiF08U<=m0lBlw#L;avyQa0GEgTET9n(+h^Kgy`^?vT zEbFMruqoc>GRqoX(M2D}F)lg2;z>~^$?!AKw4o1oVb2e*9ReKk!|fY_qHp^pz3>UJ S_}|0_BQG5JGT?u30)GRb5V>#w diff --git a/external/cecil/Test/Resources/assemblies/cppcli.dll b/external/cecil/Test/Resources/assemblies/cppcli.dll deleted file mode 100644 index f216fde980cbdbb8194a82cd151c07dad8c7cc2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50176 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 diff --git a/external/cecil/Test/Resources/assemblies/decsec-att.dll b/external/cecil/Test/Resources/assemblies/decsec-att.dll deleted file mode 100644 index e9ac355408f5423bfea500f79051791f4d204aed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 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 Y)$Pmon$y$&Eq;4vuMO|pdm1Y6AFNgto&W#< diff --git a/external/cecil/Test/Resources/assemblies/delay-signed.dll b/external/cecil/Test/Resources/assemblies/delay-signed.dll deleted file mode 100644 index 3571ccfd4bf14322385363d56c2d96863c1a1902..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3584 zcmeHJU2GIp6#izrZAyU#l@tg`JJ4bf?WVLPN+PoT#bW=`Efuv|_GjD$(FYJ#bI+kj532NHPgC~q^=~v7D6$mb>J6{)xMM;v16hK4+{)J=i5Bw5 z$%XtFKZ_MuOG`0r8ot!U`vSJA@l#40U%d_G^xc4MxDji}%ZWvJ1WR#({3d*ia2~TH zv#-LdRoGe)Gv&g4wXaAJnD-%J`Vd_&wb?Q9>{7*##D$>T;O zMmz(-KnbHOVOpj)Hs_rWOHdc-3j4nF^!VvZ15M+PO+0(?<=k5+eeco1fi;b1pXP38 z4AR27rj_Q8fd?R*2aa-BiR=vZzF5;{sfZN%vm;fPKONfHcciSg{`G@z-~P(?Z6&p< zX3m7Sbiee(;pd%;$@uiI`2z>Po$QUflHQJ$y@%dho8OMA$)j)F*XSk(KYF+2s}uD&fAXijmF`1>+Em3e zr%s={WzD6UW2IVf+$#l5f2iVKC!XuJvu&eEBPTWMA9n0VT-nJB)noycGY#kk?J6n0 zSsH4womR{0ikn$~FAYO&uLNA#06jVzx!C!yS3pyD-0DAF_5S@+cMZE#M7|xnqrjjX zpMVBKjqD8|h9UAc^s(2$FKsvV4)S*YtBViAKmT613H}99vF?7JVu$cr>`;7iz=oLg{Kh- z_JP}oNSlps%*Ybv(Uuu>*{C7(Iujj<@n$<9CR+x2Cf3RBV>mE!HcJ z40RwyF8Pe1R?U+pc7xUko5e?Hqr%rods>ZdVdgoG5QJ$A6C>2s(5cqy3G7k@S*uV{ z(XM~ZMwMqT=dy`pg!S;aLkqK=%Tsa&?oeZzn1{>A46ADqrT(|$B*#Vihbo}^e-m{% Ku8Z`)tH2*VMnt** diff --git a/external/cecil/Test/Resources/assemblies/empty-decsec-att.dll b/external/cecil/Test/Resources/assemblies/empty-decsec-att.dll deleted file mode 100644 index 2dcd9418ba0585ee059055dd45f804ffd8251ed0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3584 zcmeHJ-ES0C6#vb33+-yFrIA2PU@901l*zWV77WO?-3n-1D!VPjXv*yLx=fs%S!ZT} z@}M=M27Tcl@SVg5nxK)GXiQ9eFp~J7@s&Tok0)cI3HUpAXLq}$F@Z6yD~v)%ILR%S%xfLj#W^cfUO+{i>sboL*Sf@Wzyzgj zaGUiDNNy=~A~t~$#xg|s0MMUJp@(*~??b9%59dr~A2#i!Y)5Jjv&!t9D7-jfBoQRV z^TSrw8qJOkk4eBZ&JpKmxa%$88t1D*7vj+M%aLdtiA4bCal*n;-CRnO@>UnUsz4;Tx z<*J%ma^oOGQAKfk5VWngd$#f_a?5_3ia097%bvn96}K22gz8S{RvBnA@bycV_?rwW z)xcMN%#0LkN>(jLa>}bxtz5QCo*Iw2@k+H=H7j)OvL8gT>qLnf>lGgn#HH)m(x+3( zvoC5Yy2rz*njgCrW!2SHSWw}4*P(r~Aaa_PTu<8GjF0QDednJ3sC)eV-qrBkKet># z*Xq&5xBGs|JlFO4rB@fWkKDeJ-fZ-BZ!(Ft^sIbn87r5QY8wr<=2Td5qlhU+Rzuj5 zHKPrhjVCy0E~rrSkH~Av-=H~J^Ws{lj`*q;hqgCp&ecku>%63vi@_VpKT;YSvqzoL zXNL|Q7*W}ShYWO>Fgi`c=zF5ez-Il1q{()Xs~=`NTKXoU364c`dB;{ z1{Wd&KP2arY|Gz-Hifzu8s}MSWpOeH^PV?jyMBFFDy28EXxx1oX0E0Bzo!g+u5JTX z+FMaS1G5{*MNjUIGdUn$bFjpz5lR<$w=NP-;S{M8ILS+Xk@GBGAT97^`u98a(^j)h zbTpyToY%P3(mb(2uQo#Zap6JHr;pbW==I(DvMh4drZnQZjhK1?xjL+-f8-uCm{UwG zm-6xko>sL^7LDHsN~D27W@I$=^Nb$B(SE9JaZKuFxxZVw3)Bs%-O44)Q@k~RIejlk zHL=$9nY+h+*{G1`kxc7hTI^@;id;>{jj@bza*Zl2EYZrN{vMs{GMt6mKu=pdo{yF*$m{U#XxV{Um`lT1V-?hy+D~*_Ug6#vY)yRDl_OQ4X4zPbvwhhft~gph4rDbsa@T~oT~xbsz~W@na}*;paO zLw`WmE*-mcivsBqbnD4}ExY`A(|)O6c+e6c2l+q8vgi(W(3`?(Wo3wDiI>FsG<^_4+wkA$>uQa#2Z!O{t-8K0{g%=ZRSeQWWF9nc5nw1fm)` z7r8G5|6e+STtu`#2$VzfbeRXbPLG`J6#$*!h?0cw9w9*UWy>dA<;$m7aDb?9LIDY2 zRdc1~)S@2pf+=iXGr@kszfw1+~NTKjFMF!wBZITy!;DB++J z=v&T$eeH$VC$k`*itABc-w5rNx<(>BLR+W)gtOb*lp7mf-(fYu+Z`mxOk@udRG*;b zQK;N2D8VVhyL&vU<+Pi*@zHVKG!Bd8K5=Fn*reL0Y*&2Ov^P95@r``^{4$Fbd?%Zx z2$?&JGey!d+C(reSk4-0CUPlDaWzTD1AZuD=ne0X{J|rmC5|33`xqZ*;6~JK0%@e^ zz6MD$aTZJZkvU6toa`8N#?tq7@;F;vIM!p?<36p;NFD$u6)j zjVv**a+02$a248~TP4S6T5=MVEzg&A+}Ew9tZp?Vin3-J5>t-tIhMqdYx;7|v?bOX zzPsW}&(~y2qVClk*D}{o(jQ5#@l40YZNn&2>WtlJ`k0p+x-U`jb=ODPtC^O?xJpX| zZFGo06+e9ZnwhB2z86w|`0~YPsOcmPM?aKgG8PFXNoQA7o)Zj3v(LqoYzwwdQu`eV tBP&ymJKd5c-L%8rrPK_I=ZU_c!w~tvIyXXu@5jQ}x#{?SqyO**egd>jjL!f7 diff --git a/external/cecil/Test/Resources/assemblies/gifaceref.exe b/external/cecil/Test/Resources/assemblies/gifaceref.exe deleted file mode 100644 index c8e2ed12315baaa9bf645032bb2d111de1cba5f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5120 zcmeHK-ESOM6+d%#v%6k9CUN3?l+cXVi7<9EUdNV5!`fLp>!b^|hgQG~eIWeKomubN zxJmj7x$ArGIrpBA-#K???)ChQS1CqBarB1|iQd4-EwAXK$u^dIPyecy?smO1@P;<` z&cO1zerGZ?r{4T0$Bd2}W^1`*;0r||Pg+vu3*7Nh+4i4Lj1_85tw3Vrl>A{97K z^d1*sZ@WpHBC^^jWxQ+*~PGSfF6Uq-FJsY|jrkSNL&uFSjVa+!tjI1%99UprhhOo3jzlQ_| zzf1HH#-ngQxD_`Z53Vdx4|v8tcy*;%z<3JsYb?*$ZW$vtxX@lY{(5&8 z82b3^I2{Z3h;hQT>c~VP0&ayriII6Epi0lCaIJWrYjuA3nCI0IIs-aS=RqC%D(G#+ z|3vX0(+8M&Mq~P-#+ttqzZ41jyq7ILo|s+mbkBJ z6QI3f0v-yYK>yU){Lk9UsEI~L2Uz-p_Bx$_^qi7@Oz+a?AdM>N2PfXA0Z5B_sQGm* z3+d;f)a7emg!E>#_Ljz)zm257De3J<^Q6dQ?T<=gpJyR)je3OuGC>DX<1~6d`T(7z zmw{-ESnqkz0r~=QEnhFDlxlsHv!d%G@G@K8re6@LQp` z@I6|g2a4(%^La%V=>~m+%6PJ33fY3-clH%A2W$z<3F<;U1)k~{em!_&7;hJ7ufl$a zJ_EiFk2JqA@ogCIY8Q}h=Lb*&CT{E*EjRC0o3@;yK>C3pHzh5G-+8M071y(^GA(WS zfvnTD@;7BAh$Q2(YugYl*YS<3(vhB3q2jF5tV_=<+w$hvK8l?RJAB}JP`)aI$QW|x z+CFZKjyQ_HEL(a@(%Y~q(x-637ks+&LschL+u+?7WYEf=i@TqF4l%-<9@*A$tHK2KSLoV=nkefPRDpi`EC!I$X za3?X~&qer)PB4Cc%BabpbUAX+$wyk9yV0r+oEX=oF9Ql`%V8U!5wen6V{U4!RPqB8 z=|9GCCx+bAM5z?uim;zi^lUsLwN_e>iMU6tV3{??^#iNoQ$d!SwVL!^u&Pz*v^QzN z4VIdXhU*2gI=fks4c=^06^*uEdI}#BuC~o6rt_OY_wW5B@$lC-uKe`=>3e6h{zFRL zyZyD*lM@eqc%Z+pOG_nn>hC+OrQ$mE_2Xl$!A^_onwG*k<{=7^;DJ?+u-j9yL|-a4 zMBGoslR~88{56Utp`FxDbtOe#Pv|qL_4TK;=$iB_e_)rzv6novvEVv8xh$`H?zesR za3VVI8Mnc_&fI^u*1dqJblLT0H>G-G)T=I~QMLJe!;SGQ>3PLHCI1T*5b7SH6K$VB zIu|hR&Wax|qQy^`U*Bh*?YEiiYV3vRRrH_bakL1Q!uDW>=&#|jn#kc^K(tCrR05r) z>)?uXjTRsmL9c-4c0c~%zxlM@+b%^De6sCbEvUIwGRcD<3n#0DPlwjXRaR$+t(LKB zV%EpHNdfd+NMZX${53e$fGL2Mh56b(o;Ht%aOhXco-%rrgcqF-5;b<;mrw<@0NyKBL@id(;E z`gLPtETh*=$6CXYzuFlMu5^9JSrJE1fIGr2MEK_cs2sD7@bg>KjfQPi)J4NE8;#6p z=ppc$eo%DQ+$Y3yKBMdq+n2ahAZ8?E#*??2z$vSXp0$DdPEGnx=ykm1RYz<4!4Xku z^0_%DH>9oGOeZs@UvxIyZ%HqsH?8Rk?o%k^nrZtoN=i8y-3Ltz`sgm~xzU{>Kp{8U b+93$M+fUo4u7Do?ub9Wj{%QOFtH6H%HU-QJ diff --git a/external/cecil/Test/Resources/assemblies/hello.anycpu.exe b/external/cecil/Test/Resources/assemblies/hello.anycpu.exe deleted file mode 100644 index 44ef8db84c0d42a418b1ad6dcf4cd46be22c58d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3584 zcmeHJ&vO(-6n?W=s1PItN+F1aoe5M?luQ;9g`yI&AqlvckS#U|RTd@8&UUhcGt*=D z?7HiL$_1;u;mxBz&Q@`-N=mUj=r#X=2M(URz}d3IuX|?MO^6z=%G>no_g=q#{k=ES zZ!-VRUFsvEJjRnJME5akDjNRxYz@nUuYEg6U+-EUx^K;`4=vVx#bPN|r5iHOjUth- zDrd40F+XB63l$cM8h7^W8917SF3%FpS$%Yi|6b~x_K2=9~JKq?KOYhIa5;?`q?I0&~lOJu`a@9x=HlHX4`gjMwCG}-u=+u z>e=Tcyp=#7)5XV{Ng%@w%@8BH=}09#Xa-vm!p>}9>QE8r9mxX$M}zeyR&=aQz~OfR z)(x~**A=9(Ei6gn=sOi8799+44!7@=(Sk2Q; z!Fi)_=JXjIeg_5MzhDgCCMqMsPg<@d(vMaZMA{EbI-TLA3Ngrdsx*9QsWgMR0A0_+ z7XnemtO+LT(te^{TKUZyr2}bB`E<>crz2;%Vr3vhxRXZdbtKPe7W|Ik_h8Yay*1bK zUOEiE!)Rp&kv^ewCd#`;`{>{#4Ptd4P11{W2z-!+aK~N-E-gE>n_dNfiH=czjW*Gj z(2>VevM764+A=;bYK?%Or#cS;;kZ%TiyIDaaVn?xk3!`M8TeJIv{k}GTBzRQUPAM( zACcoFLS_rj)kc)~A$O)l82bU26)u~;#}%apH}OSul?QIiNNOs z_({9F+6xS!A|(P&*QB5DIX~h$hg~Zq@Ed~o`TU{V>t7tceD}v!zPk4I<9pQq&4<^Q z4~;$i7;lo*$H>Yv%j(aQWexUQ+0{CtpTc79z%}W{S41@1@_4MlF4m>^Kw0^oavjk! z!`Om4cOYH5F)ie5i<>f;5_0a;0{woXLmnemG}3>Q<;=Ze=%NRa;MugB_N1D=_2s{? z*SE0i&1*doQZc$x$^%T%Eo;IniUQVAXV3iJ~A#k70V z_xVSEbnd3vn6b%h)_1)ptg+4*+cLQ%5ywXl;)ofMek(N{CB17At1hex>nh0uxW-~oOD`*e0~oE%dF8mE@=AUbaF%|Tl=yQkqD z!&7IviU|7qrLoPKvlcSDu7W+l+D?8^VB)(_f*$r3iVLH z8lt)ZP_lpAhpqJJyC23UTVcSOTq?AV3Hy{&uo;g$QNy=q!d_auc=D{xRN_W8HxLn@ zu-jbOljrvgjJrzluo|=(0z_)UZpi4I^6ETv)ydHJq)=idIq8Y;oU1~odCF#?8~H0- zCCk01ArxazgOzF=?Ko*~K!lGaP(^NtBf#5$M#4XA(0K0l%f@}O+2S< zvkzx0?lsVu+nElFG9?4<8+ram5W3&yq4hMz%oHfj+VU`}oMyBEVsMr1ONJ=%@Xho~Zy!|F0^H MKC|-N@IR=)pMJ)$UH||9 diff --git a/external/cecil/Test/Resources/assemblies/hello.exe b/external/cecil/Test/Resources/assemblies/hello.exe deleted file mode 100644 index efd7c7da9bd1e4cedb3d50b2d1c963352f2fb4b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3584 zcmeHJO>7%Q6n^VCRhkm3(5kc&Dw9nsszNtz5@=L8sq@a_<3gLYz2MqT)v!I9EdA${`0%2&s1tly7F&aS~c+uT@_=Z{BJh7zu6X+bFY4vqq_(158ksD?+>ole8uWgY)Us|o*P9X zW);q4BVvBUW|zw>6jkmF4D_E$Q1wlr5Ypp1hE!$487Y^(OV=DRzHKX`swV+%o&_%|5n2XT$ zJTx7M3T90(S(lFz9n{KS)+ilIY62X+W=2O&YlXExMR)*voksE3X%hUF;a|d{NqcLq z=fi|8fL?1Q29Z9eQIqAm(LOysPC2Z-NaOSpodD0#Abm|Q1DBQ^Iz+F4A3^Ty7VV=u z&^6W$S@7MV!jh;q0zOGK9t6VSEl#E6;ZdkOAp^fc<+h4>NXwP?xfj!t>qq2xv5@J4 zv(kuSKjhAg2 zxr)Mpl+tR$rDZE7xbGPwk}s4y&1C*Q8s&Dx$fT$LqR=)tVF^ zDeGu@*YyUDmYJ6RO`SK9tlXFpa<0YA>6w$|+^GiozM^BECRQ}kv%xavT`_dg<0xo6 z>886%OKyGXG4|Rc>^gXBSB6Bi%yb+4iy~2B*CpScCi){;Ha>;S80K{<(+%)BT7k5H zj(rvS0{DE=z3Ip7gTFg((*&mMQabCmzALS<&Klb~xww1t<|cCFjA#S5QPU~XQL9*W zVO6-FF2(Q@&=UG4dk0A^V2a`8!@l{5OfBP+r_R4IszBELEQ8q2&a-$A3NJ$Esqfi` z!8ea9-t}FFuY`9OOCDXMJBY?i7t+u7AlgJkj5v*@U~(^~c3rj3-Kj%skKbd=)KNmLz-w=y-WcC?Z#CUIbWQpm>e{DJ zuYzZY(+hx#{cjvX>B09u6)v^HfHk>PXay7Yc_(i(9(kgQ-~1l z&xmc}u(#q~18umS>aa-uVFNgMwIux}djBR@PndPIla+zGdC(%ghHkctyvYL=Xg*=P zY9VTh54f~h!=Li-+k#`#DaXW#_>0Rw8Mt^fc4 diff --git a/external/cecil/Test/Resources/assemblies/hello.ia64.exe b/external/cecil/Test/Resources/assemblies/hello.ia64.exe deleted file mode 100644 index 1d50f54d8bd706751503aac96a8e40ac6216699e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3072 zcmeHI&u<$=6n^VCRhp8hl&Z86Dw9n>p&}bM4YVprn8OOQ5yfpkBM$$RFc*D-_Q-y2%5xRO;vQ4VdNId%|; zh!r^tYXNfuwy;`Yz9?~PV4!~_fzB_&NTui&|1+0_=nDa7>ZD4wZ)I(IfTiXQf#!$O5O<_wJ<)2L5a8S9nI#fggwxR*TW2lx+v zOq2)0Ps%Ptp&OJXOgaf}ivI9Mff#Icio;hoatjzU@YOgx=ZPXlB?uW;PZAwf&L74F zIu-9N9p_ZO-Qr}=i1a56kI*EIp$R**1bsv6ZxB(Us+Csbae5BAS9^H|lRl@{G|D^L zyKy>8gUCKjSvo;ypa*G)?$EQ~rEH6i0l}hY=mkpe(mweLzT(*ugGO2=(bS44)jWQM zD%|sgm5c1at@##jaLUIoAo3C0x3LB*F!hr z%WlANI6EZp8^W$0eDc!o_kVtI<%??R?cmL|U#aiAkG3|?O#bp2o+P7(k&$MG(U&H} z80<3$mjmRiI)(Mrsq3L#y(WUihQq6h>v|;=AIkWkbm0?qxDKTBd&P)$Ph-L*jNS9% zr#}A=@yY>lHGdxnBJt7Og!N^XXlw67K2P-9o|D^3O`>X(3iK}YBCWy7(JEbopMze4 zt>lOF!@pX%I*_QDWK3h+1FNG8I<`qRg}`xf2XSBqc2 zU#GtZr~yt9s$9g&2O!<0D$pK&0`qdHQ9E?0hOC85L)VOIe#@}SdiFf3 ztJKsC%Ro@yE5&VDueF-QRTtD+t&S@1@M})$edd8Bs02O^R@uMX&OX(i)pM$PGmCym zaP`q$4=mY#&cjrCc=yMtnTGGNIu9kTj%o9}l`$C)98tozXWHCYUmCk)GKu@OWP2ju z(`J)PbLPrG|CB8y_lsVW0U(gmW-SaZOQ*tpTaNjz6ACGIqA^GKmu=}=_46k4aZB%T z8Ex)e4N#1=!Ez;z+c;`=F~Y|ZtODD|@+-~RYSnWceHmMJwQ7#X2vJy*Q7+gKhvYM1 z>UmgOa;JuCxtaKgg#3dVc=A#{bnEygl({@4>V+06gLH5f8(2eK&da>cJ?1GrZQ3#y z)W!QeG+E7^b@0tW8+U9^@?=vQWc&a&E$ZW4+^5FdO+dlacZP}?VGDpEz7HM%x7cba8vXC;3cE*N`hFDOZofT#%UZlWzEbyA zRf?n;2|p6^%M}sEHR#9Lfb{HGCP;0 zXjk($a*3L8En86hq@Q0jA*$V(A$op4G6-m^2;Av|ZtnVDJOP~D0OX{yoznkRb7!9^ zs9Og;BLcYOBr5Uf8E!=ydVMyo5nYChP9lR?Cu+H5G_bSVcAFwFr#a-X6?FjwoX?`q z_aQ_EpHPk<;qb;J&(sL^@5@bc4M+BKqRN|dmO;;Gv<^9W=Z*Z)Lq|36Rs_^{`A%F0 z%0&24+m$r&qjg0SJIPJcpSV!L7;U|a6K5`z=Gjit*X_hy5Lel1VaPi3Jg{9me^`gH zC##Kgbf0;9cDH6mN4gBRA&*zN2vy8ce{A%ZjA+r>TI+T<#;CU%uPkWd3mi2l?-=ju zSOKH#eFg-06(o>&k)6DTajwPqkspe}geZR-=F{L?2VgucaHsx;qN|rdv)*hozHlJtSti8kg%-bAz0SvumxTU zlzn>jS8{tUCT`Ph^e$~MR(K2`s11#;%Q62KLGu8*x9Ps;w9bC*!GiwzUyi2`+^R!A>#yR>W>eIBf{4{j$ zuO6-mbk)gjtH1RPuqHZhVykeG5Xa{oB#9Y8pH3|=LyuZvugj=nzl)T4F}+M~4&5NA zMNTQRe8$%wf%K`#$@5Oho@w4Ic>=u7uiNV9&vSMK&)_sR%_Eqb=g}YJt}-`a_JB*C zx5(h-^ox}hD diff --git a/external/cecil/Test/Resources/assemblies/hello.x86.exe b/external/cecil/Test/Resources/assemblies/hello.x86.exe deleted file mode 100644 index 1e0c064f6f2b319995056f48890cf4036bdb9caf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3584 zcmeHJ&2Jk;6o2cuB~9C?e5kY%l*y)*LPa)i8nbiueb5;et4zsuJZ(`~~I2ACLnlF6E3W%5P@ZaS|1hbJgd}ypMVF=J(#t zzRld5H>rn+vKS8^65R#YR50`ZPwQCjf9c15x^v*(z+G$h-oRqbSFA3@nsh_vxltry zR^d!GBIZYIdcMp;QRU9z!+j^y(4`roS*wSd{6VpE+6HB;gH~?>3QUtTh>2koF!aR0 zGKmW$gI{x6$ADc^4;4NkI%591JXI4H`rRg4(Q<)kLlf&R~B#`2UW{45paHNtRG=r@GVShTnI#d99NAf_x(O|uS6&-5_aQIEZ zx{Z$Lx`H&e4DF*DBMPur!?KdoAnl#TNMc)k2>bi!^oh(6YT9=i2bW);vUEg{hSfal z*hAdfRB99?Mfdw5KUg&(Lwq{WL(g>3QJNvO@>y1(nA$Kl|uD>hHDESL%eW_hRPgigfGOL^RX#cwOUMtV!{{vL4voGM&)( zn|1ZAQs?e(wGmyvEaXg!n@X7~a_&?EeLvA5PZ28^>G7O0=DlJ>>-t`w2j8A&a_dX~ zVXr;HuJ`W<0!#7^-Gp?jfc~F>kkVgMM1LmB#xk231z)BzUB^5_3y_L5PuHLqF<*hK z>6h&Ne>!oEA)PLzJPW=htg-5zVIitZ5^;R=AdZ+3>D#I4Bg$UOwz=kBIcS@yVg5B)?Jgl^g=Rg16h+^q?a-yE)f*LNAd z65d@bIdqZkKzlHKM`sfo-w4Dr~Ym+jA?Vmd}`O(>oYo))Y|T6jhehlh#{y-4dfr=iEPiVo0rZ}-%DMKN#w8K z8KRm2(6L?jVJqGL>DTbOR)RJ|fJjZ)4H;cfUX6#Y8V-F=3ME$KVNZk?TopRaGd2s|$Y13u zUfy~dLNT@(tXSpfz;SyUB77WyDsn>{Ki8hD*8|@(4cKw(b$cX<5X**&i_xmsBc8Li z*@v?g_Zn!&?No(+BETU((s@Eq^wWMqyHN}5tDP>@oIACokdB2-pR>O(74)J>eWK?#X)8xTTDY-j2$taqc` zH6#cjpDKETGyDNaaNvMMh2X}8Lq!igqy7P?fW)anl<&=~>unUZoU6WM=KYvAZ@%|- z=6U&@&oBg_$Z_u;aGhMJYUhVfJua7C{-K2L4&Io!u9j|0T-x#zy&XsGxY5zAMi@q^ zZWpvZ*oOmfm3RSuan zS;4tbviOCg$3eRg^I}?K_J6=L)w$ryNnl0fDo~a}?4=Fh>Akl9qibL!=Ql$AeuA`n zso6=%{}!xVvk7Flsaev%h8HJsi<-q&r63 zpAvm8h??X=G^q>E0S867t4>P7wAuSl(dI8#Ky3XXMHE>|aU3skeiLUocPI45vm2P#uw{ZEn(@qzK__WNao{&m-%V1}!AkQz(@L@G9we3~ zjFQxEC8(KZx7}_u19L8Ajho%nWU(fi#z4w*Vi!e{YUSv9j)BH#)_*U4K=I_s!%9G zsnP*u)Bbs~pDgg3$a+=&F^TO#4+p**7%q zo?6bq-EY3NUd~97--#r>fXiKJU6Nek%U) zZ$D0dukf>(QY3e$WCk*M--=NiymRO69W#s>^4>+(Y05UqOI&Txn(z)bkkT)r=IGmE zg;*6arS$S?Z|@Un%=(nsW87Z_P1|o?V5d;L;Ssw)hxa^W6lqABV=A|{ZO`9jwhiki zXN%7X>(fVGV}yinMR06CfKzR#;(cN*+)2u)i|OVrwShh(>nU5l!XE#k^!ANaW{Z*pIU`(nIrE8%>r7RyQ&L#ixT z`gw~c)dQpNkIB_?mHQ)hmM&|Q<}z_-RBU}7^x0dbL4BlFQX{G9IU-Fg?j}*~^2r%s+-gD16_uO-T z=iHCixwmf6HX`ald-RCtE_$Y-;ZJ6(7|y@)ZJzGzxOecbHGA*iLe1BruHt3ohQf2B zC{9F03e|{&ABm~?vIygfC~D|&+zrqu_LRzDp%kQ+oz`;TDZ@`XvuL``8e zk2wYB^}>l`CpdgB1>irU4SYaULIggC1LZ{d(Xxg}eZVxrw##K2g^XRLf%BJVrqItq z=YC)^h%4xsV6x7?K(vFE->u`cC(Q|POldH_R`M)YSo$-B+i8eiMe^5Z9Q;GWZ^OdG z-pu*8n_h(6Yvht(`%R$aC|8a4@!nIEhxRO;qUUHIc%BZ@SM(BavFy-JdKvtAI!ryQ zw23~4&Nw?{(f*D|G&&bo8-YASH5ml)iX&T+O6kp`Pe$?$_AWEjVSR$>70$jx*teYma6G{Qd4Sh6F-hF$-r$HNlzr$kV+$wlucwe3|0KV zPuktl6cU0&Iu0aVQGOz4{YWzU;TlQoc0e%+S^-y(tB_+_0#DF~#;U+qOui5HfAQ0m zrCS&7{CexNn;-4?l={AT|Lw(nBlkbSDYLc-vU-GN_4SZt<@>Dc+8yBiS;+0VqTKq$ zIGS#Gvd-x&)Kt8pEs>pjUf>MNf~CJw=YDiYuAPn5bW56InnFwIR0BT0ctH=7C>rU% z$#Uji3B00vk-*9HHC>lVdV@=UW3N5N&XZTyMMy=jG=_|gXFcEhbzzN_-wX>;U7W#l5n;c-8_&U05~7U7SxJqmdaW`nu;ff?B|oz{`hy`7x1JjZc9(zY(fHCVCCG z+gkIV!s?nl6Q{mm9Rc40j&;{}5xxrET`UE>BHhM&w-f%HO=5f_U=L6)7q^S=VfPlU zV5X#&u@Vg$Ota9I&5X0iwoYw>Y8kWmo5gsFCjNY8=gc{Nr;4mSd7TlHPYLs5-2Mjg zPOuXjv+Cxid2tor zm@)hE!nvW7w$O&=VlCKARpRkY+8YqzqX<-y8)Esn_C&oN_?~%t z9k*V$htmj&YUpGpT8g)b=a_BgVQnqF1|H*fro*D-dkx@})spg?_yjCVy~U`veu;2^-gT?4(ZY*tH!8NYu@E_u8Iz zc4j*>>)0_yDdi_c2vYGQQBbiUh(7Qq6_fyi=Ak_B5D5v1rwXNlhYB8osD#9iT)uN> z*1HZ?k_VnpuYJ!w=iKu@XYSk``S>-`h$w>j-g`thvGVAZ@c!TmwiCO4o}iyJ+}?dt z8NR)Ha?bShlIzU6Mp4fjw(a=(w9wtMt(&$!Fgl?Zoq|X=HO2RarpE?}h82xI@7z9J z@pgw)rBSIT+5`?39=}Qf=$O5j40J4N5H~OxKd*EJ6MP;T^?rtEi~O&yAsL9!9PCao z-b-|ci*WC_7=-cf{X`x2?%j{p*Fu+4^`M`skx%<#!3X_jBLMbfu3_AuO>jiq^e8oM_pp>E6!%{mSfCNmv~u5A`!J+>bA#IU2A6c zNrm>0N^603VCjqIY6N+$P+JgTHFo$xjBHTu?C{W<@yl^SdTaS1@miV7YG*UoPYY^P zt>`irRMthMZO}*b&AV1B^;_opRZ2&X;+bS2gM462?L-7o2f@S}Q;C=ZZag0CY{5b? z2X^9!{+&N;iEUj~fW=}?18==W`xV5iqWL=Z^GikaSPqCz!mLFT9j@}{4I_7 zf00m$Fy0z@U3v=q1r^*v?cmiR28A>fdFG)O&9=SzndX#j ziY3z$?u2mX%{=x4hQVQt3(HuLm{&CyDzX^1rcKNA7puFKGEjD1>^+5CE>j7(ChyvO z*Kj0=+$)vfbcY5^ujF`~*9Jx^#Y~YUp?hFsjL+hBIQ=#;ho;6{2F5 z`cawZC}0x!G*ji@f(7-#r7O@`seVyC{+^r;HI>{9mU0z!$qEpL0D5z?b^%9_4NsZP6@6e*K)k!=%B79)t zM$poYo%(o8YuO|Xsgalh1Ndar#Wb~E)nZBlv!fxVvIL^SH&ID6#I!^pU$0P%Z4nT@ zPT+#VU(rdm?VM|r&N%j3p-^P!k|$*=zdKZjk6~`deRw;rtm6{{6aMb69HC7w9{)~E z`MX$o^<`GbAHCo?Wfy1Dg}lg{)`dyo`4`asA=B_YQJl6+>{m{obg3{+*TQ=?OwbP* z*BSfoQMr#-cXG!acW^<-^Hv_=LZk~8->LA6Z6E2q68ql(Ro=aHqAS~B@CmHz?FM%g z)M-Qh+y;EszegAxS$cdmiB@{?`;Utsj=%O3{W;i{oMH7a)+zi(%K;A3IItlar8A(1 z08aqt@yp2F)rwuo2*H!#iUte4R(A&^ZwmJW7j{hCQw40=G((OQ+Doi8iCqI+5BmoB zkaIu<4TGAM zTE`(#l6NN)oH=L^aZCf!$Eb{WR%XvWDwSl95B7Cf<~0Tz4i%`3{Czy<_1RVP;vBgz zxfXrM--Bck)wB?u{y;sb(%oOYk$rNZXzBC9^>Ah$OLnI-NnO}^r+_p1Sn}-Ti33k0 zb$p`if?+wfIF?)#Uh>JFrg%1dxfgX9u)Sl+vTGmp@^hkScn6AR-gP`@#y^mEiboBv zn4a%W>P5pgXK+GH)p~;|U0*XcgpY=gYsY@u{*XQ6JY+lvlTr`9J%PIde1}iYiU>lA1X9ZGdRKK-b@$kF zZ-0#*0C}#R9pDzJK*{32N824yfBOsRn^M0 zLgk05yiie%Xid9=g99U3>cuHw*6G0u@4j}az1tlWhW0!CX;FQtc7B*tah13PDUw|3 zLeADN6x&?X3-qAW3mmY&9h!-$3x0hLxFUQB_%@5nOet9fp4_AOhk^pw!7lVu-ffUt zH_@93>9P!;Hrv2``%}H@n%LB6wzZWqzicLyERVgt5(Ir~8 zD03x9Z8`L!sesQI>xlASz@egp{fuM$K^WrZz>DZRc|14DMh8w}qVmRslVz7$ubp;_ z?kmM}r_ae|y$FbZ;TrygH8K2#@Rh{)VLc{`Kd2iM-Q^03tdpmU;pxjWWzrI5p~DkF zR3#OVR;HiMVV?-UJ7;h>?Tyul&8{}j)V4CAGQ5=b;S@&EhY#>3@mItGsZBa@Si=!& zdM&@G#QF`++W5MaK0i8z0<8xzg{N?gxWIY@yPVZC#D_4#9QkeB2j5YaD%;@TM4LT7 z7p=7deF1@AUDrVnxobgyS-)yLvxP=niwrHOY{iLgV4?cHt|ge($tCek2MV{AL?&}_ zms(-sH?%t$HJW~)O+}k)eoe;;gSx#P0PjO2@j>(N;I-Saigi~2Y#~Ev9`;T zx=*b`^MnILP}m?gn3r#Z|U@EM$7=UiN5DQly9P zHD>!-WR8dxwAg>b6WQBcr!VOdc-6*?v;UZ$4fYYRI`z;vhCYTzH360W&#-vrQEl)z J?|*p$e*p+}20;J- diff --git a/external/cecil/Test/Resources/assemblies/libres.dll b/external/cecil/Test/Resources/assemblies/libres.dll deleted file mode 100644 index 66a2b194d2fe39848e377e9128c3ce98549b0384..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3072 zcmeHJO=ule6#nMrrKD*aD%R3~rV~=7_%l4yCoL*EOHl@jLg<`-zs?O+le2x#yn0d+vA6 z+25+2(&Z4Q@1 zn9V6?LMUncGGl{-cA*})?*jYve`n5A6N0_WJ14RWe3Y%rTxMDV_Ujf zE>(*z>lYGiIrJj6fy-QLiIH^H1_rfscWfwkloj`a7Vmq9ihBJ6C}Mzp6m7TW4))+dI2;cnzroNQbeS4ax5>gIT9)0e z;kmYag_2Y+_RqA{$k)t$cz!0TuLkM`1b#JEiBk^(OjGpYbu^M1KZjpMc|A#019R0k zR4s*5OQSfmISZ>{>Nk`#9yOYNpyINMFZwl=z!<#LkHQ5NcxzfpPNw`u)zwrXTPR_4 zRsFzE*E?Q=2C7k2^}4D*?WDX4Ep1e5fgir9>RM!3J+`jxtHCRWXPy|E`+nEw7q)JF z`ZM~zx%ArNVDb6~46yRHW%c!0*{vIrk5I`SJQI7(*(jV?tEr~It*pe+TZwhxr{BK) z{l@#h{P^}4zi!?b->k&et2c|;U69RYMYcuyC$;X3@thxz;!+UIcz$S_s+4ZDc()&g z?V7Ov1-JBRI%HnaF2v@17j9#hAbC5^xK16?#2d6Z$=*jEkrl z`ZE79uZ%@ZDWiPamv574L&p@*`YWPJ8F-S2taf~fyC1TT4X*@aLt+ouFAojspzISxtoL+Kr!KE0a8zTOrhQqj7-zLjtZP)u zSRpRx*gZSM$({5V{7!wj7IPE?6oO8c9 z_d921?(FE>A0q)E$?@O;aGSG~tkREGOI&W-_e~qVZob=nTa4W8o}9G;z2R3mCi|vc+*n+<%}f`#-${Xy#lnW|Hd4<5d>G6w00eX5Y>{2~3D($CpmiL(@@ z5T}n~TeEcj>^*`VQ4Oth30LhPF+9T|XW}8TvQBBsIjXrOo||wCFY&evDLtjMqx2=E zf5DGj{X^-5kaj^F6iu*{{zyf>Pv;n0CmU(n>Fd zruMUFp?-&2N&@e9&TuWtmB1Zw9?vowt=$n8BeiIq8DRy`K@ioS+rYJpqObPeBauoLLu_DO{l*e#$7bW;-sY4_09&`V50#glkm z9ERNC81-=!s7;(wk+-NXz@om0T`H2nbGVEQdT@n2YTPGa4LR1F!*)KWJ8^=@QKHUb zA4>RvE!>RjWDC)X8=R9%%=sD)7 z8P0kY*f?i!~FYbvv}mMiAyr+pHR)iLufJvmC-8yG%Ls zd=%VyZ_Y$vFj#cU6K23GpzI;Two68N4mq=GxiM_mt;E*2;eta>UX;^`7?nM5&N4AC zNyLmY6LmMV95YjJL(}(aMbn?R%4UGEdN>&J%_`MNZ8WNKFldCPT*q*Ys##Ihlvfz} z5lsu{QATCsCPSW6vux8}-6aYbq2;*~rfn=JYt1e(I|<`b$+E3*vB4p3K6nDu%i)Nz z=&dCk`EOco1$o;pI5p2-Q_^|QQ#Xx|o38Ha0y;0;`}D<;tK!se?^$zqk-l~5?DVdI z``5Ilu9U8cuFfXv&ONCXJ-M}m^VaQ*3$e8$2_e#(knHN}N_R1xkl~K*RNpwZL2T0Y zG`Ah%K72l!T+iWus;^ng39T=cBrvVehqax3iM?Ai8EH%NWmly3$~S#d+i}`AY9~E+ zc%f|8WV0q`eeYr*mg93+VtNNxzR&vnsGb$Mel{4Z9pGu z33Uc^g2%-=k=*%Rct~8r-c)^pUun4nd_7*5hJP`^f7%D2hi z|5`a2RUlTc#`DVAy>=~6M=+}apLr~POZaNR<%8-e*nXZFz$8}59uRbKxlEU<}?&xoT?=yRVLp+znDn8HM1HK|MPi@^kIvIJD^8D6Yn2=(i=U^|9|Yj-#LAf_y7O^ diff --git a/external/cecil/Test/Resources/assemblies/metro.exe b/external/cecil/Test/Resources/assemblies/metro.exe deleted file mode 100644 index 68784b316eedb4c3d48f2e1a8b20b7d815466b4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15872 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 diff --git a/external/cecil/Test/Resources/assemblies/noblob.dll b/external/cecil/Test/Resources/assemblies/noblob.dll deleted file mode 100644 index 350181a383be565246d3114d28e72a67bd4d8f9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3072 zcmeHJOK%%h6#m9>P-$t!1_Y=QH;+mz%*Z7UZKQ@y6BinA8Y@o2LrBfozPJP9nP?tW zv#GoQ!4m#K7ySWUu&62(b%T(AAbtW%7D(N&0*UaQJ2SCOtI|yci=6Sf=W)M#9{0{2 zdG&)YF#(`V-rECiQwlj|eDpBj^s$%k9K+X7?@rye8oN^)SG-tlM`15=`>NvxL71qv zR#6%#FHrThmgrhtIQz~&2K1kGlO7u8hBT92e^^1%cnB21w1q6cuYe9>|mb`(Y~;6 z0d}IVCA2@4oSZWa{3AczTXqyj9Zs9toE(?$2`xhotG6TVhXk5hx9FBwhsh)4081mL zQMaZukJMJeB-9j3u>k%IH5Kr4u0M|Wk)WTxzyFP_|BCFlcH%_$?R6c8Y1Gm2zP7I2 zu8u0IA9upY_u3V;siW8ngTC;@!OW!=ey8Nyh?%!8 zt<))nSdKMGX-Q3goS4J&S$Sd>EC*SXoOxxmP#zF8M$hGzppR$znbokH`uYt7VcQSe zcGvfF6%kK^oSloHCzM(9;;Vmt=iIq)@y6#rEdBb$-G#=qaho9!T@CF~t$3G4eZb}A zFsl3hDmN46thF{p2x{*Hlrs)Lu>Qjxu+01ULiQCMsUy1q)ra^6B;Str9H3qjE2Da; zMr9K%T;_Nl>(o}ThKsaUIKD|;=x+J`U&T9Z9QklImu1S4u*NHQ$6{0$5#xC9p&2v4 zM+nXQtofL3aMq1BnBI>cAxv@qE8$2hpfUkqs=dm z&qwGLQ&WSOo>{R>#5Q(JRXto`G?;7anD}eCUpklgMK5AKI#12?)8zV)*;DqN@Fd2& u8ulZ7Nl&r|=h$~lWZ%@k!)pF*o%D4;Pk0AZ_Mc(!+7r%m5dMF;1AhY+5$^#2 diff --git a/external/cecil/Test/Resources/assemblies/pinvoke.exe b/external/cecil/Test/Resources/assemblies/pinvoke.exe deleted file mode 100644 index 2bd10bf8beb4f1198851ba58f3cd8ffa384d476d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeHK&2JM&6o2bD5C@3p7YY@E!2t=OX7gD}Y8{2W5QktIOIrHYdH*en8 z?9SUve|($Th$xM*zE1Q2GegecSEE%dcO81zMc-$h9DZO;JvltLoqA9D5^w%R78s65Z%i3ji5bb~j6T^!hAc2v? zU?ec5YH@=y@$*cp7?3lxQLde6ulZ}vb+)EL_h9!5(>bE2T!gJ~ooM$~*>-rb5xUXt z0KbtSBz7W~6U=G$i8YgJJ#KIY1krU{$JzyFV#|TpR1Q3TxBms5bo^lI7?SEdPUFRo#w}y17FTu9?zcbe zKRI}kO}3K{oQI>H&xr10{($LXqP=i2W{qEv10R3Syel0)A-lI;|O< znr1Dpz3c*+G_qW!Z^Xcc73NML>Nc7cy!8&{shf6E(QsdO7w7;u_B{ifqIp9*hF$<} zGZjjcrnjg-g7yO+pu@mNDPw4xb|F%m-k~9S+d5?B@Fop#4puvzfW`DG%(TE$aGY}k zEPB5|5{*o&a>bWtDDuLpx*=`3ENN0H3Sw7j-z!mZB~D~OGo??Yo6xwF5fv{?DjhgU zUVBwZ(~cLC?Iuc7`R1gSpJK{aw3B!$q@|l-naW0QAxLnJDq?wDH)~(2gozhO`Q{~9rUwiLT#}Buz&hH;y z`>LH%sZ3@kr8C``Oom@6Y_Zb9vN{-bby)Sg?I1rrbE$n-v=d!a;l#2lO?fDNQ=8wSJUDu2uaF_Zn9qW$svkF4~PM zoT_!xP4%eVbF=>+ligXQl zf-Zq7;J&;Fz5qOF?oOgd>1QwaCfy2W>jJ*>x31=mY@Qt4u#@EBww16M(gG>7>j?3# zIjlO6##nbKft~_agZt@wFlr&D1X>>Ci!ZUXYIORk@f)TRX!JYW#MXv>9^PYejh(2) zkAQAJE{mq_Jajd*o3Zqx3p59x-EQb}Hi^*<5xb9iITU~=icGXs{nE#3i3{HzO7j`^Woe$ zC$7O5@{XYypo%^s6aTpnTj|-4k4Mff2fnCE9i!)rW(Vy4tdOCr%J|+G&0e0H>^+qg zapHt!$5){o&92Bed-lwp&Jib$Wl-{01Pp}nXttum)3LiG11IhcJXfn&EhN3J3Qjw5 zU{?pSB5*=)LB`4aW^XVh#D=j#S)$t|D=iV>0|`-uP5}4QD`QdQd#-7Awi89!zM6$Z zSK_1)E~stBGnh5|;5(LXMZ;&EhXftEf;eS)7Ht_lcTvXMv^vzVDgaG8Xfq!|SeJ_co5qe)s>?3^}MS#LcU*m+p@M*t+ SZC60l|7YN9_6@vt75Ez!HQdJl diff --git a/external/cecil/Test/Resources/assemblies/switch.exe b/external/cecil/Test/Resources/assemblies/switch.exe deleted file mode 100644 index 114083242cc32328f47be8daa13ae6f111ee0280..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3584 zcmeHJO>9(E6h3cS#-SBbKuTHAUZ!ZU*w+DS__3waKcL#u3DcHfjPT~oZTs~7jPJe~ zW?Yyq)WnU!#KbKzy3&OvCK8D;apQ`;OP0iiY>f-?JNLcmv=y-~HJtXId(XM&=R4=U zd*95xdXw6Ss2$_sL!#T5nev)Ho~>bfci(rr>6@K*58pOs?;c)Qb(E-t!AfX(!nS-r zh(t+>u<8rP7gO^^;RR)B?%LIHBne%ZCYm+csQ;&ihmkTeOR>t?7z8fveNp+PxUhVDuz& zy4T!$Y;U@+%j`_|2{U~x-92z%pl6_OV4yd36piT^po!wk6NW|;ms2}o=FAs!r%s$g z5a4ye?_>18gI*%(m%J`Uq2sS8EOj6FIrJ|UDTBK3Hcqdjy6ojVBL1!T-k>ZC*9`;g}#wXe|@`V=yIH_3qYI*rT) z<*F;sk-FhT_NpoCk_z#uB~RHw=sG1THdG`%nlHT}?TF?q$0yT{f{?5bt&Mlh%T+&e zJZVk_Ud3@`Sd?MSv8AF|VMR{hUzV;_*DEz1;mMS$k)*_t&9GH+TqkO@c4J%`Z=2B5 zt>3w{O3;ba43I2k2qu&~BI+?ZPlJZBH4QjFFtZUT*e6 zs{2Z4RW1eoblsK}hP1F61~(Kxhoi~+&q>blTJY+x)I29d*CvB-x-NA?bhD&1%Pzl% zxIv#Kk=LvLCQISX(k)oyGkQ9{O*fPhzq^IM(XT#2&(3QbBE-x1B;15>D^E0)Y8l+0 zAo?ZV*2<~WFy~%UfD>x0+fO08B3s9)Y|0~Go5LI3vR#6029PWbF;Ahtfd#)zZwmz`C=$Azv zWP>^8#&oiv+ zDZoF#Em;MQ2v1^jRjqosHm-?#Fb?brmL9t30-5+nKe*C^J3ow!)je0#WT@Dd6`tig%Th&48?zyl5bMEa$`W^H)YyawA2*=#Ef4AE z8sn9U>)870G_6V{I}}HV!m5g9{N-Sqcur)sA95>cS3~4XWN1S9Ruwp9xez)v+~6xx zZ8Pf0W>f)c#lh8RSNV>el{M)Km-%ScQZs%ncvFU1QFX>`d?C=rWy@7EDM|+!dIXv# o^r21IM~2p$0E3aC<`aUzPx}dNy8|NrT~#=_ZI360|Dz843H|$}82|tP diff --git a/external/cecil/Test/Resources/assemblies/varargs.exe b/external/cecil/Test/Resources/assemblies/varargs.exe deleted file mode 100644 index 4e3acf4cda6b588ed03f99dc4657124bbbc34e01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 zcmeHH&rcIk5dL22mQtj#qFjveQP4ERYzV{<5@Jf_w}6B~G+tzBUrOV4m%MHX5+%ly zM-Rroz!-0O;6RKA{{f6wFQx~s{sSJwneHwi0gP9}WZ%qu-^{+5H~ZR|2QSeCAWCa* z57;Kll5ObI)iVkwuYOEot7WHiTTJhCF07QRa#gz}ZB=B!avax_%S!5+Bg>8)xto_2 zx2VjvwnTTZ_1q{hEh4z{V|OI1R!35_in!lY#Am;!$x2#TTC5})igDj8p~Vsb;#ufi zM4xXw2R49y3SOjveBd8zvcS1x1AieUKquIjIN^zX1el&$_XzKDuM}$>An2P=LnN?d zYGu2Hpoc8coD-vUNU}ig5d0_ibJ|bm-XbvYP6BlS(8KdPQpwLfO}F>Pk)Q;6KXn1W zkRd10102u4mAseaVi`JELX)>D`G}H=L-JS6keBGm<)?B2oaoPDtVwV217&>vr%93gIt@C}aTYMOrEUBHA&F%jo6}j>zB<3=D_N(2QHG+3FVZkE@=lU|5$XJ*6$r)tIk2Ub&)( zs#TQZO;}FRRxk@3TeGyKX?~Sz!PRzo8Dp-CoTX7Ey#ch9U||C;96X|0_v+uCKAHM7 z{(kKFrJ>sO*D$0Isg@=KB5DYcq?w7B5fQ`jc-)AJB-?1SNE!6*hjiF1@P&POfDe1& xeLdhF-gfoqx|*@dj^C(KX3^&RK>ujhAhQkcOr0HnVUeJ8}v=>K{GzX5YSeQ5vy diff --git a/external/cecil/Test/Resources/assemblies/wp7.dll b/external/cecil/Test/Resources/assemblies/wp7.dll deleted file mode 100644 index c3cbf7b6f1b145382d4ff0ddc529e66762775762..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10752 zcmd^FYiu0Xbw0B%K5SAF6UA1xyyA6sO)t?|Kj9Lx)N(wX*5CmylJAD{!9!=380qiyf6sK@2ymWwhvzddN9*@44rkd+xdSp1J4D&i>S|P?U&bxZi!3=*xKWH74PEgDYt6 z{K>C$(ihvl)%|5<=3Cv1tGcaLEwf~4WwoGHDyE|@3)QMsRK223oz1IdvnWy>9qk7_ z(eo#XW|Sz+yzmES{ocM$k?y;cR-z;@2^afo<9MoWS!&1Sh^seaS$}z50|cJ0D2+W$ zv|aw!pI+4^p)-)1=kf*Ife=P`*A=3>QT+ZG(S8qgM-P<ngE25ox}#@tSk9*il02bvSq69?{|ca-)--$ClZ z;%GNp7{J!;yG^jR6BD8gEl{9C{5aHb@61H#9WA6e}4~)Z{-2ZcRJ{Z^I zOVH3SFn;%C#zm~$Ce}#AdJ3qXJ&@z<#bUUOnT!GZnE<`F83%NG(SGY|KI%lV|v$*yQ`Q3 zdEElsu2B_#DOx9u%4EofePvX1s-Qum5{XdrS!|r{2LaxC;j5$L)hg7~91KS7XjgHq zk4zexZRe8nt7b)@y*~wz^cu@X1x>4tQyodC?ZT=kYj&!v7cA2@SDaMAET=E&m6i2$ ze+TByD8dyuMaeAiSP^r z3(oc%(;?=D)+Wp$(iwe4@M1c<{Fo>>zBJh#6j~6E*K|u1RZ}*r&Z_39t6HUK2wOEg zR#jZYq}l3W6WzM-x5uB*Q};jm?FFiKiHON++zRF_f~j#nECf~MPi+u4}0qLvLPx(_DVxx zJCBqLTSS;uQCTk=Somelu~Vj1N|!Zjtyb-WcdNpUE$fEvY)B91$to8{rb`vm($GsT zSxl8JE3&8K2jG27TU^jhi8?pbgVi4S4@z;GITKGx_?+99|5$WL;!ZozMzvz6GF61+NVY zGFS)KPr)rSb85l7G$mH_iq7xHup4Ev(S}ylpVsl3V+KAY5Z9dcPy^v;x_PG|t>C>E zb;l6%T16Og>~J2gh4}rank$=~wF=;FyG_6BPa8UvYlTfzAINZTACCh=d%xbLq->MkN7Ho+1`AlK zgo)x~2UeA9-adDAs#>uq7nA1B91B{S;jW?JjmDC= z;w~XRjpVg*)!=PY6so;y;;>dyYc}sBtewzwO=wo26!X2utBucx{(B#6;a%iz`^I*4 z^VSDqR#a*yE9^eulze}{hV-w|W|F3{`6p_QgR?6a&slmdnVv3VFm_t2R+lwvX<0UB zQ`JhzUwa-$cI!I&ANA4Sq>uhP>m$X(pGNGl*~Rean~vOP@VAr4uWlXG2Nuyp=X5i} zG*x=EDQU1AZ+|@6yoTi3<73wCSx&ei5KZJCoKU=M1m`v`_9G-ani=dLWP&(x4h0W7 z@N+~Co?k?qcp&dsSotz_I6VWdEN^G3E=q12TdLwoNlJ~@KqID?#3V6>* zSd{STIBW9N_^a_w`bP=l2`;M%*7k%fpOes%@T!ELm+;RL-%E7Tk0fku>2B$y<1KQG zEtgS#w&jNM1^O&zim%5cWXmX+9UB&n%QDxt#kV2CjZp_(1J(0vNLXzf+MlAGfX_?# zdzhRk^~L`ZFc<$WU_SmTU`4`p;9bgjmHD4(9aegPS(UXXTTd%}s5x%io+HXW%-!p5 z8~tkJan#=MYJVPChc0h=wI4=)9(Mazua=BHgM8n=d$rl;?%)Z~ve{^2HEBO!FySGZ5|+X$hwRK6}lWNZb_(Cw0>~ zg%1wm#M;slpZ?+dPwB!a2A%q1CDmrNgA5W)A_CM6VVxEgVR7nV+`)?khYaBlWx-A3 zfyJft5+OFF3XW+}NjOV^He@%{E^0q0g>)$SAKH7X?zD z2w2^^nd)A32ETOGYupXA?w2OL4CQ46fSY}1qjHt6VZnRXLuwgt+mV`$sic*%h(8yi) zn}l-c!HHA3x&prDO8J6#A=Z`ghEd;}zTfcon_N0<0AvGdnnCBLPa2}kYtY{tUV|md z=0)L)hG}?%8CVSOA-k?e-EIgH2=_y9P{i(m#UO`_4(o#IIDh}lA-cc3qLaK+4;c1fu6hzY$M6(#Q^lL7&oU==&wdR}b6b8lF z4w^F^ePv@FTT@uh#(AM(6VKWcHQgvKYW5n9dx>yR6l(>iJ|u4eEQl4u-DLskq*>jt z*bmf+eJMzx6!9IvTB|pCUXTrma77IXC$_wkvc0_x^!?`8)1PJy;Otqg%4=f zj2W$FP%R<$0z6m@(?zy8?_ap6f&|4jr_9elXL836699X?`pyBZp3D*)@@$r{#aX{X;q2)B1qQaO;pBMHf)(QAq1 zr~m5S>F07i-Hk;Ja99ZJ`(xEfLR?`Z?tt>b%I1W{jCoXLNJL3a#|5_dmy?|2}= zEM0x>BkMknx{qP7D{e98KF|Sr9G7sK#m&m%tlRoAesu151YeFJ@?5M3DnfICTgP2S z*ZVuU|ISW@+I*+mPqbU1u3#&xfBZRB?ayR^kIOUVeH>veM(#OpX;rwq;GD6zYT-1e z+^tYc*8Sp1^ngMKGlNG91A|AG`?O<2nZAL{v25RPrm)f{L}55v7#Qjw&a4pC6iSB< z620DL$X&$O(_Xls6>QC%cchT24rZZ6=SKqnHl^Fh?QXDZdmto81;6U?sghA0Ol4J1 zB9FecRq=je(XLQjRQeF&Q-UYs$_+HN$U*aQ*8gn@pO0s7|K}L)B+){CDqni&M*8iq zUmgF_FR9yazJ1pZm}zR{QGORZ8dx?|!dJCNLLR%h_1*hP9dpV4PawzKMEGofrLj9VZ;@$&XF84`K7N7dIvd!# zu15w?dKka0Spqx>e~?F%c$Vf+p9VaIGG8yo-g?K4JQP`X%S0dbYMg5ciIvzXKm}4Y zvLHv7z6B8|t-w3*br4ZHM>3Z5H#XYq9!3(-_1Ja@RiKjtD)wikCX(KSN(yCyzXAMe z1va2j#P&)+KLu}O!;7(;YT(JZpRN9wz~36;eHgqJxLxnZJXyq(nc(KWIzi8)W3Ol7 zsbM^GfMwL1^^u|?DBxo;FJ0iB0bNOQvG=UPL$jtOyer_HX)8`eM6TkmA9`c~u^*%k zXFWc)7VF?!o@?)~%Yd}mJY<;AuLgTLp;0s&2ho7ERU^-4i*2^okmMPMO>K<3j2Sa9 eVil{U(bAjwFw76{|B2Is6a%sQ(+*$e|Aa diff --git a/external/cecil/Test/libs/nunit-2.6.2/nunit.core.dll.REMOVED.git-id b/external/cecil/Test/libs/nunit-2.6.2/nunit.core.dll.REMOVED.git-id deleted file mode 100644 index d04c5932da..0000000000 --- a/external/cecil/Test/libs/nunit-2.6.2/nunit.core.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -8e6d9566c1347d99d53bc27c8e2085d3860aa7f6 \ No newline at end of file diff --git a/external/cecil/Test/libs/nunit-2.6.2/nunit.core.interfaces.dll b/external/cecil/Test/libs/nunit-2.6.2/nunit.core.interfaces.dll deleted file mode 100755 index a966ad52179e4ac5e150d864da493cbfe4700462..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61440 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 Qn1BhGfC-p@2@DCm09u*j=>Px# diff --git a/external/cecil/Test/libs/nunit-2.6.2/nunit.framework.dll.REMOVED.git-id b/external/cecil/Test/libs/nunit-2.6.2/nunit.framework.dll.REMOVED.git-id deleted file mode 100644 index 6052807984..0000000000 --- a/external/cecil/Test/libs/nunit-2.6.2/nunit.framework.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -3e24ba1ca6260d7d0499624d13d2c5a2cd75b52a \ No newline at end of file diff --git a/external/cecil/rocks/Test/Resources/assemblies/decsec-att.dll b/external/cecil/rocks/Test/Resources/assemblies/decsec-att.dll deleted file mode 100644 index e9ac355408f5423bfea500f79051791f4d204aed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeHKPiz!b82`<7w^^#KfXbg3aGIh)QZ_5J6cW&-e<(;xE4!^mjdXVQu^pM6X=Y}z zRikU7Mh+$%jF=dE;^4s;4oxH^CMJ5tvnNBmdhkXJ2kY;9v(u%}D4HHH;oH9N|NGwe zeecb@>G&%b(FP#RvAhgiB^4-W{P(CqbJvsCy0En2diPah?0R=;)(OqIz^?{Y&9p7g z^CPpY%%JX>j%N-}6wR7nQMt~}j$O^rlOw>G(S|R7x^yyG?FLfa4;fj2e`t@j-#krf zauhfOnIx$=Z*n?+p=fYWFVKdV*rymFB#rDJC<(!>bhcD422j ziFcOr@kAiaMQT1GU6T4t4ypBy^{Jl81z}**q;o5fk&Wu$xD5(yNG?#WPe+~W42=@2 zi{myZ0E4%Qn!PA}B}i^5WH4(2e`Ekdl>Y%bw(i-P+RY?8_H=ApVYzVeg+ZekRdPJP zFPG2t=Lhx;$RZiI#D}?P&%3}^q-o)cQQ&yhP&~e7J<_6{sUnuhb63$bI(1^0^he5l zJj6YNu3x4sK$S6C0yc8FpF)GI@p8`E|iMn7#eyhwaO#J;=FpABL zGm33^hPaEh2+rYATqAx0Kj-!3gd6G?gX(m7eW*+eq^?>_EDKJK!c|sXGA! zy$Q=r822l6S3QS{vO{I>wW26jab1i#<-iISP^^~|wieoc;5ua#7s5!@Fj0O(*%6NU zK5};C2N<-1rY%=gc0F*Sh1{eHYEBqBz84}s0kueq=lt~pWMXev7{b7@&ywdzK+nVJm#l6mL*%c-%; zx!-OzZe|ye{r0WbrnmRqxWL1frIV2{4P#ShnmF6|B4;!{h&!=nwJXXss_iwCUiO;P zDv<6Rkq3moUUR7KM)g1)@l-tuEVtL3te0KKKB*Q;{yF6xDGv--{dWI>XAkY~Q~863 zHXEf>=ag5oJgcfILww;HSwlZOz)m@rGH0E*c*v8^HXO0Kh zIqTT^2{b-#-Y@b%EedZ6cQ+*W5O8M54~AWL+;TkVr$QB&U#h4z>!q@g)`Xi}Ct3_={yM>5;KBXA0q?dSk z8_X%9mqUGZjYt=@Paesy4`uS;ZJFZSWaVM59>Ugf=2op^(l^f+Z_9U@z5%^kx#W41 zw+2waBlMSQBJJxjcbEOL_#L7cuR?4yg5bTnu80vT^pP(pV7Ja~jP|OYImD{xu%NT6 zVwO>%AHm~#or$JiIw0#LHHma@>-FjSCK<JANyZ%^Lxh}FGt!v+RP|K@A<{)3AQni zO*@|jnuV|sQYl((orI#uBahOGr$Mzc4h%+`HlhW`(1@$Jq3AEGTI|rc;yGdss;{8~ z(-BsO-*sX8q_b0v{i(3q=`6!a!(V&G&@G&|aaoNuLuMRPbrR1am1yGH^NAMLA2v3# zw(1kK<~UED)b)%;)|(Wu2fB!fT``D`3RL(wb`JBocP%qOrd$lHJd$SM`B<^cqGg`m z$U7LF^;Sxbb+(G8LT<*+`G#Lcrj(1jQ=W%0!^fqP8`ybk+{+h?z|Pr@9hA=n+`n8Y zu%d;M5mQpQY{&95mcMSBmfB!Zuug~8^zDtSOD_y>XJa=-#v|s`3pn&!7*OS2U5nK>3mtl+@AQo8y3d)j5vnBtDcpBG1hhy~^~0 zLCgwOQhE!|Ub*{uPBL@WFvD4^ob4!y1%=~pAfM!QvPyvx!z@?$be0obDYi}Qku~F-Ii-9R%h~Ux z2mN$G={+CWV@G<&^TmqLV~^HfblUY(7!5K@GCQA#F4j=2c#1)f{`DY%eF#sT2mS%T C77G%85V+8*qM^{%yE zmjnqE2?@akQK?)wgXob15)~3B4xB3SC-hFMUUJ5KZ+17?ga~m!;y|A>Gw;{D`QCf8 zlcgJ9q7Oipqt^rOaTO}*`R}J4nhVeVRKO3%?vLFw7VnR(HJy&x4*W)7x6GRDd46bC zl^JwB)A7vtm5SN&>&iNDB0mv_UM&NQMjuwre)VQ@+5;4fr;S_$N`MKO@hEW>bS9Tf z|*fDsc|5xxXGjQ5GSN1MR$J>j1-gC;PLa<5aql9H`Z zZH1IS6Ogp&1P+}~^`;ecf*Q>lTPgNqY0^|8dMi+_Pe+Y)lU9k9=SWcrm`#bA?L9YW zQolzfGh%PVt4Pb_C7+||=A0jtx73pDcxZKMexQ_9cU>frqP#QcM{x|;ATEP}xa2NS zPTG5P?0;7~nwjL$`ST}>S&T9?g`wg6%TlsT?(0c*B9}Y0k&4>q#c8qkqs@7jWBg;F&I7&?z7htG*XWSN0HaCH7eDHplBQgd8)M zS>Y3U0x#(~%4iS^l=|s!;GrpoPe(?yw5z4tcnc>fn`2_Tjki(I*UZ2=Wdk-5ivJLv zr{%QfEu6tQ^4T4_9H1g4L7$ME8xE8B&H1gi9XeIVb;9k} zLN=<}4OM)i6+2nt<+v)SsNj}UQ@WGH+GoNT`0>Mc)=y78_&f{4C@_hEbA`UAjDb<9 z;#y|-dSJJgeXqP#Q|-|4y|rfGf6y_`eDurosb3$JzwNKTa`%Pr?k1`Kx2vJA*GTk= zrl3UkgB{yRDal41lXq>S1l&or^G;@p+I3WLlXDqY$u01uU8cOi`Ss}4#n0KtenSyv+;n@Gg99pU_{}8m%_99olV#^z$i2^nG@h&<$b= z>E%%0I3m(-+NX%*H-##BV2UrhfmQDGQAZawMp-9@fM+GA6k*Xf8NdX07?|UZ7T*ZL zwaqHnlvIo<@i`dxu+Jo`VPKKF8r<#bh;7D_EE;GM31DiBdHP9JLXFJR-uuy-)Vlon z#Hg^v0bJ0rlZwt$*I{lFxy>j^W>NgJjGp8pImkK5XHnGkN#Y!?3{rKG`p6q7SXbg4 xq#Kf1vR|aAN=IWB9Q*Z%x?U%u7WV~se-9N8dP0A#fEoQC%Sa=h(EqLie*$+u1I_>d diff --git a/external/cecil/symbols/pdb/Test/Resources/assemblies/VBConsApp.exe b/external/cecil/symbols/pdb/Test/Resources/assemblies/VBConsApp.exe deleted file mode 100755 index c86b64b15104fecec5c389cc3694ee7c334a3ecc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15360 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 D!qQIG diff --git a/external/cecil/symbols/pdb/Test/Resources/assemblies/fsapp.exe b/external/cecil/symbols/pdb/Test/Resources/assemblies/fsapp.exe deleted file mode 100755 index 7cdd2368ec004dabe05dbacfaa4b81c430f179c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5120 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 Wp3^@QdO@Q9bCu0B{Tdy_DgHn7r(?nZ diff --git a/external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.Linq.dll.REMOVED.git-id b/external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.Linq.dll.REMOVED.git-id deleted file mode 100644 index c29ed1e2a1..0000000000 --- a/external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.Linq.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -5c56946c826a7f77c6a0d65489629966c18f492c \ No newline at end of file diff --git a/external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.PlatformServices.dll b/external/rx/Rx/NET/Samples/RxRemoteMouseMoves/References/System.Reactive.PlatformServices.dll deleted file mode 100644 index b1413d0a61114288e7d6715395880103fd0b6092..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35824 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 XAp>@ucqE+F$Xvg2$v5~5{|Nmr_G;ge diff --git a/external/rx/Rx/NET/Source/.nuget/NuGet.exe.REMOVED.git-id b/external/rx/Rx/NET/Source/.nuget/NuGet.exe.REMOVED.git-id deleted file mode 100644 index 66066768b1..0000000000 --- a/external/rx/Rx/NET/Source/.nuget/NuGet.exe.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -63c19c97db9c0fbed1eab83c1688f45a776f800a \ No newline at end of file diff --git a/external/rx/Rx/NET/Source/References/DESKTOPCLR20/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll b/external/rx/Rx/NET/Source/References/DESKTOPCLR20/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll deleted file mode 100644 index 387ad78fabddc1de49a8af3223708f5af9fc241e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77824 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 E2Js>;y8r+H diff --git a/external/rx/Rx/NET/Source/References/DESKTOPCLR40/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll b/external/rx/Rx/NET/Source/References/DESKTOPCLR40/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll deleted file mode 100644 index 37a149f7353315f0c6bee113591b9c5ea579b752..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81328 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 diff --git a/external/rx/Rx/NET/Source/References/SILVERLIGHT3/Microsoft.Silverlight.Testing.dll.REMOVED.git-id b/external/rx/Rx/NET/Source/References/SILVERLIGHT3/Microsoft.Silverlight.Testing.dll.REMOVED.git-id deleted file mode 100644 index d222674921..0000000000 --- a/external/rx/Rx/NET/Source/References/SILVERLIGHT3/Microsoft.Silverlight.Testing.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -b1425ca8499b5bc912f6bfda68dbd5d3de1f0c94 \ No newline at end of file diff --git a/external/rx/Rx/NET/Source/References/SILVERLIGHT3/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll b/external/rx/Rx/NET/Source/References/SILVERLIGHT3/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll deleted file mode 100644 index 0f723cd679a19a246465039e600f5af4e20609b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63320 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

-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 H5HbBfEx=6F diff --git a/external/rx/Rx/NET/Source/References/SILVERLIGHT4/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll b/external/rx/Rx/NET/Source/References/SILVERLIGHT4/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll deleted file mode 100644 index 9313918b18d2dcdb4e80594637103d1cd11623c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63336 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

-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 H5HbBfEx=6F diff --git a/external/rx/Rx/NET/Source/References/SILVERLIGHT5/Microsoft.Silverlight.Testing.dll.REMOVED.git-id b/external/rx/Rx/NET/Source/References/SILVERLIGHT5/Microsoft.Silverlight.Testing.dll.REMOVED.git-id deleted file mode 100644 index a9a4e371d9..0000000000 --- a/external/rx/Rx/NET/Source/References/SILVERLIGHT5/Microsoft.Silverlight.Testing.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -0c6df1878d9495b8a57830f45e6835bedb96e11f \ No newline at end of file diff --git a/external/rx/Rx/NET/Source/References/SILVERLIGHT5/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll b/external/rx/Rx/NET/Source/References/SILVERLIGHT5/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll deleted file mode 100644 index 9313918b18d2dcdb4e80594637103d1cd11623c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63336 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

-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 H5HbBfEx=6F diff --git a/external/rx/Rx/NET/Source/References/SILVERLIGHT5/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll b/external/rx/Rx/NET/Source/References/SILVERLIGHT5/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll deleted file mode 100644 index 9313918b18d2dcdb4e80594637103d1cd11623c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63336 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

-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 H5HbBfEx=6F diff --git a/external/rx/Rx/NET/Source/References/SILVERLIGHTM7/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll b/external/rx/Rx/NET/Source/References/SILVERLIGHTM7/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll deleted file mode 100644 index 3e06f9ad96fdce3e2c50a3c5efa627f008dc3322..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51200 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

B@G0FT(I7&AIuG~G1x%{zbuy+Vd zwHrCSWbA^k7??Aw?s887*juS(mG?vc49DcB|NTzM-<`X+I@0}!lP-H7 zWri;!zt80z!-#Q6nSC70qpt$}f95mtk*jli>(o&0&h8&`M4p~Vq`&_O`GvVn@|dgj z*bWa>@XF)<_dOsV`BlEw$FjJ8-t+O1mpC-FH^=tI&Z%Q_bEh^COy7j)%6`YjJc8bc z5&FOTc>L6f50yD^WH*xUbbRIb)pOSaUSCvnobM!ho~T9kF*EjnVS9{OC{EqY1nhGe6Ovi<=SHL_E)KMWfEZo4sr= zI$)k*@OjZvN0-bEp1S{3CvMYa^UimnD$G-_O7fdO>p2RtkK~lo`0w3K)R-q{`L8CH ztU!wyC`vg;KF8p3FkeP6M~kImH8Recw-3Y`sO9Kb*s69iSwAroZr7Bf&?8vLodR*+ufT8=p`A>(cXIm!5n<#Geka-zYxvOV79&eB=-F?C5TSn9^M0g>3Aw z(Iku8jP1CBMX{q)CD;+fmnP3+&BXW|kBF?1W=zD*?!kqon}4UvxLMzMjH04gb5zE@ zH(u0&VB?*=0>5qS1#tA(tjIdK#EPtw>z5Foxc`dD?H1ofY+%sNV3T*YhO4*`(&4pym9c?AJA+LC;k7O= z^7%_m-5LX(0e>5dTZXW=5HnPQo`;W*pZVk6<+{QHKHVxMwIxa&r9e-6- z3y<6|asXe`OYRZEw}0bXa+xvk^=(aa@b#+r&Q^`S{N{&$t-rVTvYMTXu6p_d3lCL4 zrr(qJYOH$e=2Q1SaCM^Q{WpE>2+#R^!H?#C=cTQ6y|b>X`0bqAK7Vh~ z0pIb{e!SKbimh$`dbN+U$Gbxs&!CTYAdpA9`*7C8_HUy}o?yFR$Cu z^NWg`mp=Wcb7#~?mVfU4MEz^``#opft^~b(vPO#`oJQ?>5x%1*wR06dMVlPNXKP(P zEi`7ShEl#W)uYiupC=R<`7-|NxGxGq-+B!}O}JX}`dlGox`GybJSls0lN znn$hgAiJmtS6u#3C{h<5c_iR-19Byl@b#yQsW84CpN>oq7~(qjn8?TvHNJsz`O%P8 zLV*|^6CQaIDX%9~zll~y3w)l)G}v$yZ9}wZ8GA*V+}Aghjo zFyQk-0Ipo*^ZD(3#lY{6>0nS?qLul4>Mkz|@#IcV+9^PffFI)P6yEEBSa1~VEFhMTFww$$i;nRXvZt8F-hxT1rQGN9`0=Cb zUYH>s;xxE@pBspdvGIq(d&79@{Dh2p2-e8P5RLjVpfFbMx)xpwQ-^uxn+Par$zOts zk!fQVYl}5H>A&+KeSEh*O;O*i98+Je9OJLVjq$hG;6ueRe7#U-4}U=h?u8*BRcdsM z)n2SQmB#0?USNPNP=9KY04Y6s&Yd-X+w2o&&1>A2nALe=_ncYt7tWoV=-SrZz3{{?e8;y& zp}7sS8|KcLGiQE7svvRnNmey9EvzxT3#ZE0Il`|5tz!?C7Mo#g)NTfeyWD@@a~XiHPCe0xHBqO*U? z+O^GF@RiYXw>Z9$dJF5p`jX=<&Tq8dg6|&zJ-+Q>i=~Zs@RiqtJx~GBE0ERv2|a~W z%*1k@T$c5NFC<8}^!2Uk9irO8HnagL2++ z86U_NiZ8mifUyRd>HO1e54zZ(};ika{wGP8GYxWudS{BGyTGOG^`FE zxrTnGL%x;hS1-n;PpoDTI^z*gZ(LHIycpdM2hRPRjlTd9JE{>U!r%Tun`?|V*v`0R z(*_u0tIcOe|A;ZSb+ZL8IBNLhHNV!3Z&Q==F?;0l%a`Ad?60Iyvx*Q}v0Y{J&b6+I yY-=Gx2mZ77>U~u{4_5Ei=JIJYY?N)2{lh=i&!Z%N%_Da5Kb6$~687(;f&UGyV`dcq diff --git a/external/rx/Rx/NET/Source/References/SILVERLIGHTM7/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll b/external/rx/Rx/NET/Source/References/SILVERLIGHTM7/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll deleted file mode 100644 index 3e06f9ad96fdce3e2c50a3c5efa627f008dc3322..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51200 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

B@G0FT(I7&AIuG~G1x%{zbuy+Vd zwHrCSWbA^k7??Aw?s887*juS(mG?vc49DcB|NTzM-<`X+I@0}!lP-H7 zWri;!zt80z!-#Q6nSC70qpt$}f95mtk*jli>(o&0&h8&`M4p~Vq`&_O`GvVn@|dgj z*bWa>@XF)<_dOsV`BlEw$FjJ8-t+O1mpC-FH^=tI&Z%Q_bEh^COy7j)%6`YjJc8bc z5&FOTc>L6f50yD^WH*xUbbRIb)pOSaUSCvnobM!ho~T9kF*EjnVS9{OC{EqY1nhGe6Ovi<=SHL_E)KMWfEZo4sr= zI$)k*@OjZvN0-bEp1S{3CvMYa^UimnD$G-_O7fdO>p2RtkK~lo`0w3K)R-q{`L8CH ztU!wyC`vg;KF8p3FkeP6M~kImH8Recw-3Y`sO9Kb*s69iSwAroZr7Bf&?8vLodR*+ufT8=p`A>(cXIm!5n<#Geka-zYxvOV79&eB=-F?C5TSn9^M0g>3Aw z(Iku8jP1CBMX{q)CD;+fmnP3+&BXW|kBF?1W=zD*?!kqon}4UvxLMzMjH04gb5zE@ zH(u0&VB?*=0>5qS1#tA(tjIdK#EPtw>z5Foxc`dD?H1ofY+%sNV3T*YhO4*`(&4pym9c?AJA+LC;k7O= z^7%_m-5LX(0e>5dTZXW=5HnPQo`;W*pZVk6<+{QHKHVxMwIxa&r9e-6- z3y<6|asXe`OYRZEw}0bXa+xvk^=(aa@b#+r&Q^`S{N{&$t-rVTvYMTXu6p_d3lCL4 zrr(qJYOH$e=2Q1SaCM^Q{WpE>2+#R^!H?#C=cTQ6y|b>X`0bqAK7Vh~ z0pIb{e!SKbimh$`dbN+U$Gbxs&!CTYAdpA9`*7C8_HUy}o?yFR$Cu z^NWg`mp=Wcb7#~?mVfU4MEz^``#opft^~b(vPO#`oJQ?>5x%1*wR06dMVlPNXKP(P zEi`7ShEl#W)uYiupC=R<`7-|NxGxGq-+B!}O}JX}`dlGox`GybJSls0lN znn$hgAiJmtS6u#3C{h<5c_iR-19Byl@b#yQsW84CpN>oq7~(qjn8?TvHNJsz`O%P8 zLV*|^6CQaIDX%9~zll~y3w)l)G}v$yZ9}wZ8GA*V+}Aghjo zFyQk-0Ipo*^ZD(3#lY{6>0nS?qLul4>Mkz|@#IcV+9^PffFI)P6yEEBSa1~VEFhMTFww$$i;nRXvZt8F-hxT1rQGN9`0=Cb zUYH>s;xxE@pBspdvGIq(d&79@{Dh2p2-e8P5RLjVpfFbMx)xpwQ-^uxn+Par$zOts zk!fQVYl}5H>A&+KeSEh*O;O*i98+Je9OJLVjq$hG;6ueRe7#U-4}U=h?u8*BRcdsM z)n2SQmB#0?USNPNP=9KY04Y6s&Yd-X+w2o&&1>A2nALe=_ncYt7tWoV=-SrZz3{{?e8;y& zp}7sS8|KcLGiQE7svvRnNmey9EvzxT3#ZE0Il`|5tz!?C7Mo#g)NTfeyWD@@a~XiHPCe0xHBqO*U? z+O^GF@RiYXw>Z9$dJF5p`jX=<&Tq8dg6|&zJ-+Q>i=~Zs@RiqtJx~GBE0ERv2|a~W z%*1k@T$c5NFC<8}^!2Uk9irO8HnagL2++ z86U_NiZ8mifUyRd>HO1e54zZ(};ika{wGP8GYxWudS{BGyTGOG^`FE zxrTnGL%x;hS1-n;PpoDTI^z*gZ(LHIycpdM2hRPRjlTd9JE{>U!r%Tun`?|V*v`0R z(*_u0tIcOe|A;ZSb+ZL8IBNLhHNV!3Z&Q==F?;0l%a`Ad?60Iyvx*Q}v0Y{J&b6+I yY-=Gx2mZ77>U~u{4_5Ei=JIJYY?N)2{lh=i&!Z%N%_Da5Kb6$~687(;f&UGyV`dcq diff --git a/external/rx/Rx/NET/Source/References/WINDOWS_PHONE8/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll b/external/rx/Rx/NET/Source/References/WINDOWS_PHONE8/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll deleted file mode 100644 index 9313918b18d2dcdb4e80594637103d1cd11623c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63336 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

-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 H5HbBfEx=6F diff --git a/external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.Core.dll b/external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.Core.dll deleted file mode 100755 index bc2ece9c4602ac1b258762aa72c6b4e597a29e75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89600 zcmb?^2Vm4i_W#W6=9|r?kVX)CI<3x)eYf>g&>G+uu&>H z7je>O92`>JP`})Tpx6qV#Rtc9kQ<+r%_iwrd}y0dDeB`*O1=KJQn8%JZB!~fMXBYW zH&gK6e0rG>x>B&>E>o8d(FW*Q6-FBd*O;bML`_ei3QfBZgyEi`n?~Wi9fW;0cb7zN zUsBE>b3%QvLgfwitI3{C|6YsVs_mJi)-wiv3%Z%2@_*A=m84Tl^@p>l6IFnjqI1^& zZfA-$Jh>2mN*G-`=;lZP-3R;B3h0NwbN1y247FHWtcF?LYuQ1K&&{I-vl@!J2c259 zh;n=dZa%4@{j_q@J(=`9aFELI1>COS?Lk_lqH0RR4y6uLna8S3bQR4uIRq4R=bUf> zM1zir79w^c3~g18h#TXyIz=FdyHTRmDQ3F6P4{3LtrZOSLcp@}1{*aPF@|bRxCBJ% z?t|EgFtoZ86@|XOAcy-Qs94}RCaG72F%JbRZtB4B`d@NK377q%XmZnp%PIQhzt`&Z z$K<^JaDQh0-pib*iYaSN4S^LNfPet*u#O@aNFbi7L@Hj@r0ijo60A6>quwwFY`B`- zhdOY5wVY85YvhCnQN~z#G(y60iDEp*oe*zb;|mY@MbQ(JMTb)KwvJZVc0DsL>NEM_ zVU+#LzGSx~WW(RUcw`vP46zAns)>vM_JuHF2DJ?yAOBdO5UNI9m}84h}Q1OloVSY87+!&JxJ zkED?Z_Fx#QbSKrV0jPsvsJ>acRDDM z;ay?JuTr_WR!^*oO(s-J7g^`u7zT?I@*v=(Mp zOg9n6byxs6-_((Ilc)B36Q7jUQm8OA4ccO&qbRz-By(7daYvI;XA0dhNSM(60)4eo zLZL0Sp-nbUYbcuv3o8mLIFB3(5)XChSNa}S^_5ViT-@kB#Sgi75B1aP>NCjyq?3r{5HBG2Kz zD0&?Yn#?FAdLW}Le-z7mu%bKaj6uUKRgQ@q1X5jpz=EKOFqhArim))aCzmqf4HIET z_h1CC+x})$rphZ(6hWUi3R8l7%v$R68m}ivCPEWzE%wM9(uuAdmDAU5S*QzBP)A)@ z0-%fa5Fd1+O2&avIV!tPLYKy{MrVkP#XrV7FKZjbI886eNX<1NtWzMsK7XCHnmnI7 zUC7vC_zPNf&=f|Q+ykBpR6404^qk=9PVH}i^E0i!Jbyu6N{&A_#ZyT=?hMEk?2m;N zRS?2qAY|5vI|{7MqrsF)<)l=m=J>7ZG+S4UE>-TScM9@SbDZ4NWc4#?Wnq-oTNSBL z;aC-|#WnMP{`uz$sL+`BjOw9A9Hv+Uq*toZH(6g9^^_|4#HN+HSEc`1)s@R!V*3iV z2;`Av!yLr3~g#IREsSYh`W(5^6THXe7nz2pZ?J={P2^;R5n3HcuCIxl0+Krmg~oNI??G;KRO^GTD!0EHOCQAc6Z9`u2|kg-zo&}! zH3(y!HG*_-&w!W-=_W$1bhgywvSp89pFgk*O8C52FExPWRX1UI^1Ex1x#FbI1u(JT zJkDvZ13!8Dl<;_ton!M`ogqksqmT_ZA!ugSiaMV^C3FB8Sa+R@^ZiYyffs5

W8f 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 diff --git a/external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.Experimental.dll b/external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.Experimental.dll deleted file mode 100755 index 094f6bd6211716e8df8962c3dbbd236102ec4490..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26624 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 diff --git a/external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.Interfaces.dll b/external/rx/Rx/NET/Source/Rx_Xamarin/iOS/libs/System.Reactive.Interfaces.dll deleted file mode 100755 index 568889931e05a5743c25c7bd5a6209b25544fbf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 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 diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/net40/System.Threading.Tasks.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/net40/System.Threading.Tasks.dll deleted file mode 100644 index ebbac4cd1080dca53b75756aaa88c421c09e7b80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34960 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 diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8+wp71/System.Runtime.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8+wp71/System.Runtime.dll deleted file mode 100644 index 97ab730f29b7f1f76f3376a8147737d017975994..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39024 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 diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8+wp71/System.Threading.Tasks.dll.REMOVED.git-id b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8+wp71/System.Threading.Tasks.dll.REMOVED.git-id deleted file mode 100644 index 3b60eb99b0..0000000000 --- a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8+wp71/System.Threading.Tasks.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -74f5e2caed93499de991cfd5ed70b868e5207474 \ No newline at end of file diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8+wp8/System.Runtime.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8+wp8/System.Runtime.dll deleted file mode 100644 index fa831ade491918f26b7cada022456375927ef3f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22128 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 diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8+wp8/System.Threading.Tasks.dll.REMOVED.git-id b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8+wp8/System.Threading.Tasks.dll.REMOVED.git-id deleted file mode 100644 index 3b60eb99b0..0000000000 --- a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8+wp8/System.Threading.Tasks.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -74f5e2caed93499de991cfd5ed70b868e5207474 \ No newline at end of file diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8/System.Runtime.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8/System.Runtime.dll deleted file mode 100644 index fa831ade491918f26b7cada022456375927ef3f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22128 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 diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8/System.Threading.Tasks.dll.REMOVED.git-id b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8/System.Threading.Tasks.dll.REMOVED.git-id deleted file mode 100644 index 3b60eb99b0..0000000000 --- a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl4+win8/System.Threading.Tasks.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -74f5e2caed93499de991cfd5ed70b868e5207474 \ No newline at end of file diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl5+win8+wp8/System.Runtime.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl5+win8+wp8/System.Runtime.dll deleted file mode 100644 index fa831ade491918f26b7cada022456375927ef3f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22128 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 diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl5+win8+wp8/System.Threading.Tasks.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+sl5+win8+wp8/System.Threading.Tasks.dll deleted file mode 100644 index ebbac4cd1080dca53b75756aaa88c421c09e7b80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34960 zcmeIa2Ut^0(=fc}q(SH)Rlp#Ep(hjp6{RZ*h=5=LAwVcnf=N)p2B_G3?_lp>uh@I< zz4tD*+pgd2o`hn#pZhD%|Ge+@{?Y8&nVp@Tot>SX-LoO0`vk;72(jV&;|D@p;E6x} zB>nrO7>ae9Y|}*>G*8%Up~6qt#AaqG1o?7VhFp>>NR{N}$&`W=sX$(kC&61Lo$c+(L ze)1`Y6z~p36!a^37$(L4>z*nQqu>(^eB*H@8Su4C0PcX$gf{RjMo1eT+C34ngy%p0 z2oO?TLM$tm8S9`yg8=&fQWHqAUg3jfqY(#Xx`Iq@2x$^*T@oc=*w$fwpNr`-dD(|) z_l9@wKW>C1S?|Vx^0#g~3)?Omweqch>dTM41MK$=vm0+UQ=>UA?7;0+TbAmjP1-zk zfgRW1bL7le!ML&3R}Y-5>c8>f^x4C#LLWLCPq*kkGn;-rn8$im-fdUuiB{iI)}%GL z*>w(K#s zpyQYb!2oglw232^t;?2~0hy_a4%;$xhM|MOu1BZKk(m=pET0w7{mf6@u9_#XBr-OJ zCuo9^k>5~8jtqLhceJKu&@u>XBx0fFKo2T1pc{SXf|i{W&=_9`7VIR{A+?3N@X+GX zG6AmB{WMma&<66fuqmXAF--bHBRk*)YB8u!V+%C6`;8o-0X^IRj1FIm$H>b1W^=%N3@~#Rw~-J$l9N3vY7i8&g`fw%3yT%y*vQe{WGsvdRSYJ?20I-D z%3x!o<$^(jsBBPRfAYlqK?VeBHlXPNpmw$#Oe^0I;YOUC`CMlnR{@5>1+GAc^$nw{ zrUzBA<0TL?#vqmgTZ#;DuhtGh)p1&HSWl1dk~e3hdGg2 zN7IBGhb<4na)ai$j_!>}7mL9VKwT_a1}f*%GG|DIE|4&G<_`S< zMHnfq)&rxRX}69PEW47^l5OeOv!i3(bTaqj0;#Lu@kn;1M_D! z(xF;|75}uw4wm-of~} z3Qyoyj8Oz%4C1n(PevjNfrmjbt_HNw3uwSv_*_{F+&ZYCk>g+T7_4JxfLjcfz?N^X z1+hiSjVN^~wheh!EeI2q?Kq9q8wRBD7@W9h$yY+D0_GaOi1pnB<784ic1u_d%IN+u zvDnU9@&lN>B_;=($2jnlG)e_|fw{pTV8F)yi3>*S01qwRcP{ja>8m!w#l=gaG#-N!!jK_iQdv4s@R$GRm1W+~QJW0-3SXdi?DUxAU%NrPbCu)(<) zfvUmixC&^AZ^tjjXoki`mrM7@9A&Mc$jOvQ&J?K&8bigKO;jwkm?!p+-0P~EL{W%> zCTZ|g9b*ufCPMDC5@Q%O0*v(o2>dlr_(5ZQa8nSw@a?%ocYq>eeHsRf@t=I|X&7wA z3_Y|I5QFfQ(7VQt+|%Cm@cy;qOh60U;c}3fjch?KP>?|r{#bZ4=9_3a>2Y~HHyhd3}b;h;wNYb%$5@RfG&#~0C>J- zLc1_d1}tZP)*vt?X2O7lauwm26-E&}EsFs7W*ffQSj)42Z>_QeR63--57=jW?l<=01Q8y zB?MRQR0l-^8^@+J);!l9?2{p43t`e}rC7KlasxvG!Q z8B!Pe+L-jQ2h?N>CI^}&FuICF@omG zU~|A92$3`&yCO2S;H#KA!emm1kU$~k2UD{lza})z5=t-+!jEaEj;SM;MW!?OOLJQ7 z90@NPc>pgM_xiH2{=kJcq==n0<_S}vEo_4{kp%|A06XJum^n-X@Vt!FtO9UdVD>JW zAOUz_z7v-#OM|DjMnhS+*mm&95q|^xaI9f42s;T-7tC4WI)Di{G`^!2*aeIa`P4Tc z#(p4<<1zMQ&BET9?|5)9EJSQm6CsQ^-=*mw7!PL7fhb%B3?aW5qX=G@g=@G9d%;5i z7Rq&;1j~pG6tkS6{cJ$f1DXQ(-5A0Unr<`@ybv2t3yiEYN(LfENyfCHE#XqIN0{mV z=l1wp9{Q%rhMwW}fw;`(q`#XweFo;(Ve}28GQc4^WOMFs4Hw zg~Jv2KnQ{Qc)E&QJwzU2us6JGfJTr2oQ&-tgvP+r2UY~z7^OTbFGGPT_QMG0(}3#| zgFL}8V3%s!u1grKDJU4=WRTuAFh>STAs-;6;^!~W8i}3PXFCtl=TE=hSBk9k~_q=8F^Xl7}0 z(Hu=&cOyy9lJp}dJ_MTt6rkj~P<^gBs0!#bBwb9>9eS7pPamg0__)-cn#b7gb$OUYTu|s|236KViqA4l{*Aq_4G-0*FPy&IpAU4+kC=(5a z2we}^gJaT1^MNA=xH-U6AFY8h4y@zOr0f9TxL{#o0^I?K52oiqczz+2=ExhB174FF z3~6K33Ud0$3Ls5@S_6cTCxNWsR0cy41hRp1stTx)M(WukDS`T`pbP?yR6&_U>V>49 zJ+X6rw2nGX=|B&%KsG(v1a^-WbYs*4t*6(4Mt0DfAU#0RlO#O{sSUbCZv*+wS(_kI zP+d#I7*qeohuW7&)T-q--J@Ko0@vBY{fL74tU(CvW36C!1jvs-Wx(?s_!TjM7|Fs>2!ZaQ z73@SR9L3k8j6nSuO7wxBtEd<>jzDEZgE4513c?zU zMJot&hnfiWx}f!{va6i6R2Q^Y1-%0(9-Uzz4SntosvEkgDl_MvL)}n~3bN(yfwJ!e z8iGXJLsWO9jRR>^qS2W<81+Ep2un4#J&=HuG5YL*5(tE)enIs>asn|@_dvxe2uq!S z#u12-IuXrKm0_t9(RCGsrA|TuC*1lFjU(K@C<%%sP#N^$2SE7@gv_}bv;^&7C;`%? zQ_xpc8SYUk3dO+zVtSN@+7pQBkrYKS5W30jNJ){BKunL)(INs(MsB<(R64pyAlyG! zIvw3*>Vai>0K_AU9MjtjWUPX4Z!?iCftcQAA$*#IXDaS(7RpgUxVPD;N(JFj$wj+W z5bi@R(s#x6N>D%EIf#*h8HkKZ9-6~QjRxqi;^6oRe-3ggfHI!}0K&4=K`VH^bnn`- zO#sPJ65)yGN?RI-dK5a$!|4e~X>@@{!+LVJ0j7Q_j>77fHqyYD3qa5QM|dj@%paeW zt6Q}CL!RM`OWDY?9!-6G8^Ci=*dI#k*TQ^QDn7Ahbv%gDF{r zlC7fT>fl~XAn9aM7pF8@1St!xCYbdEvytTYLMybYE~9g%b*4w>2+dWJ-m90^K%Pbn z=3_lPKEkBPL1x302Y4D8kkTe3Wh7zJ`kZYEC4;G-#~di+MACmk&q(4y= zhe7@v#H9zdV_BY%ma+V+BLqL#zNQTjvC%a-A2faG=p-+n`lC*6eQ7 zVI6zOKhkk!hZ9O0^p{QuJB!lRjbl3?OWjO%Z^F$6h3XCjOq}j8NYiu&Llh&^oe6oo zj@zIj-FfT)YMkyONGC&TgJ$SfL%KqD8>@u61o-qkbS~3RxGYkceUm@v2i0_NG%1UL~fG z^dYZ4!yK~8q@hIp37j;Pt6$9? z0C7V{>It<`{~W@ju#>Y0q&>v?MD5W(#gU*J`qvU4E7Z|| zy-glPqm2k&sGvP0Jwwt@kh-GDs145*;;BbmS6I88A>SD3K;8-Ug4Bbg9a#M!-+?s| z(pG34q@$4+P!gf6CWI)u(CVn2As9HHjpwHoYL?jo&~c%6ns97I>8=-Mo};uX^4rmAWel+cO5hc^#QIk zAk{cHy5TFBbPLhLi_8|-Inio@n;!Jglo6VK_%ImlrbBjAB|mQ0@# z=wvp=kaw&EMWLG@+t0YoS{R3rfTVcG%&CR&p1BTk(K6)JL2VmAi47op3Q;h+{+ZGdN{BJmMT70D%eK#v{OADR8J?>GXmXb;r?_+R%|R- zXBFIE^(;ZpI2d1|f`_Q!Au4#P>N#75pRI!Ds^GaQc(dwRt-@EU;9V+s7r?r3XsQoi z3;3ELO;#iLHbeUG^@ML5_-4X)7E1`_e&`XaE&9R|K;99)5h#_diwfBK@J#}|1ilLa zzZ7^Zhi^FKqmY6Vg>G{iBY(JmBZ6JDKb+9`qb4XA3E*i1XCzJGX$#+GfU|?AJ>Z(d zQwU!Nz&XOx32@HvB%jt1vb2I6X&V$%s8C9CU1KxlQb`&dHM+)16xj;bw459io|TcQ zEXY@pppbsj)B%>0Ex5mq$n&> zrp!t&#Qn{YVpXEBAbFNDD^-&7O9^I(g@~3a3UZXtx}0+3MeCrmAyq_iwWzDyxSNvV>2WdWE|65Or> zh_o0a%P&Mp(w}Sj@*z zD9DxODH&CTDHs++g^aXedFe7$hia7{^_U__ z%|@N_rE-Z9CM7dTu^b`&fKeV06vkyKvQl!GVa-hf71x;=!#)-s^>9*U1DFvVv#hg5 z6)u+Pi)zB6+@w@y!XrgeR$d=jwp2YmQCLGT21EtB2DARXS3zVJ)*63|tU#WMC$f4_ z$gGg2sbM_LQK(#&t1{Z$B&EDS3i6~&a$xwwB7?%a#Dv9#B!xxBdblS=ghir|u0P=d zx`L3Z`L9qhu7?QemnzLCbLMA>p$mDbnQ~cPRuK$At^CX`m>%G+!c@*769I z$)my5K{+l8l=TbCgSjoqQE>qErQ$B7sT2+!%}q*SyrNoRfAWZ~zwuM9zilL-uOv&^ z34F9#nXv?ey(li}lBbZQOBH z)vkV>3Y2y0NS4}9gR_G5nsAXz!NKN{^#g&eGk&ZtC$7u7*JTxmxV!+lTvAxaUedsK z=3yCAvhvbu-TE&s8x}>z4Jxo7gAHz)YB?hQRzkdYCplhJ2!fFsVT};cNiFrltDa_R zPbOy;RcY4W+7Q6tUMom=ETkl~+I}3Cflh{yYG2 zQn>==5BN#2a@=Al)@fgvJiAU&>Xlwa`)ffc#7ciG#4C_Imk1!q`6Crx0OdHm`;|L3 zLP=h|fm6#9o2AT={z@M#Riw(Zh!g#_5EPo8l~I6KFiS5CV4f8y&>y^92=;&h z@(hLArh~I28F?}VM6U{n6tTa@6Qxec3=T{kwi*yvV!O&>R2D7Gk@O=SQ`C{GmOf&B z%B+;EoGfKMBV_JD;0Os;ASRL&tHKZbfJHV<6)nl~>UzZlG!S#DG9IWk6Kk|dNlFsI z89gJERNhVs`wZ|hX?618MFfY!DxHUC<@H7(c@X}|aW~cIAX$zo>Q=ZCCRwQ{td0!S z9|Oh&F?g(u_(Qb-SRfMqVoAhE?Hm<27{z-c+;n?MUK+Hd5(EcADokzV+JFX}9geU; zJz#|}qhxXti9*$SD9nio?Ql#amBX(kvT?M9Cp-ybGGU@fkt{zcq;~;mR9T3kV8F0H zfpsgUAU|Iw2Nl(+H$svvRdt%ED!35bdR8j4*r{R)?BqyR)iTJSssgq|f@v_Q?5un+ z%xozk3{%wSSx1kX2$rU2;h+jaOx2KjB8G9G1VTb+D=AEYqX-y=2-q)4<;;$vPUhB3 z;J_F_P)xJdZG4lG$c{2CAWxQ8m@6w#FdWqZyjaCn6>uXkMbL1#q)=9W^7@d0cMzAu*u0#~BxNU6{DmZGX-R)@RAjh<3gmL|S9NY3i~<{P9Riy@Y*qkO zJ2+hw4Oa>ECYf2P$t5h!43JBS;G&}@mXPH1g5ab%AMynV!UcqkgUC|?7?_es24#hC z^cD@}@QzR~7-hj->U_Xs4k#lAN)?1Q7w#{_qD)ooG@#2v8Gwrd{&M){k`|?q&q76z zPisIO13WOD5>9ypK&yb$R~f)LK%D|V@%q>8grI)FH5KGkLLC{jj-}5dvi18DU$~9- zujFsY1#2q@{-wY(6=nZk+JJ^!JAuA%zp+jkt<*37ZGX+NPMI-?AT4E*nxOF*tYazY zC0eXHK$S*Xq%%D;KWsxiRZ(3nLqPf|k7Xr{bxD_uuKOKmH)EZzqSx z?z)qna-QFRY_ogutH-a?62i47?^!uhn3&?cLh5Yw`J$gPQRedC^`M@Wdi$sO*;|e> z43e4&a(7SmjOc!LGQ4Bb1@ZY{i|_+AYh+Dn@<9Q`V*vpmPn88lgKl{05}-G|fFW*?Og=uJW-`_k{7TBu&d`O=gZ?qz1XKZRw0SHBVOac{CZb}=uzRpHEPk&E zA{KuF8Q#OCehqyM_^1(D2v1<95at-T5e z%3%kRsRvs-DMaE4fkEL3VqDXcLT-DP3nH>oqfF23RL4-m8 zXENk$4OT-73K{>l2HX~gAMX8pR?EDzg14L$_$^>+KUsgsmWzp}zWe_}Bqj0#eu$zW&$~2FE-+xg>EmrR=yPf6wZiUS@l7oz#{I zDG6Sl37*~w@I&>4EWEYKm8NCEb~54jlDhW6noU)}fnBd8Z!f7h)!W@WL9Mz!)X7gv zfyVxeesUlnR)5Cfyg&^#d=}TEt1E#MTzPO#PJ|>Y50Q6QQYm=>i79^A0WY|D^#9d| zB8|cCKZ+Z+$jm}8=wI-du04FaCL^?gyp_fnocDw@4(@^^K^lUhAr}UBBq9M0gESQK z_*2b(^&PLT_yz?8g0;`Kq!iz^W9~PoK=KHNlmf0e-VY@)EW8haxHTPOOZ;g@YQ;jS z1h5K-HJQj6NAt|5iromu7$B1psF;}gS57q`5(V#^)&D#pW(FO=jb0PLx z=n=C+!TckDV=C~)dmI@^g`;UqEeC3x)|aL$+zy~>dl3vVFy6UfnHt8z^&|e@?~~NA zH`%GdZyPl0@r?t%a^PGSTf0Nt?FC;k{0iQc^a{ohZu(F}lQ=S$L%(qJUe~k#9T{99 zvd8-z{27YefNwbP%pe@GF7U1p_c8-^BltHs%Rxu~TyL&GEkFUJ1wlPNc>jWT8+dOi zhr2ea{RQw(CVlIqqQxVQ`=%aq4B`DHY>z;$zu%A6>A8L%qsTZ$0e>0vya2{fSxtXannk)*Hvlr0CNMuv59=p-bOTp)LgU1woj1Ia)nQXQ1uBgr| zFEuU|m9qDVN?9w*Su{n{MjkLAPQLE#_pCe8{w*0CCy`FAU=-X}6!j$%vAVFiMs$}L zv60At3xI|ZKVG7Mi$)o61w*Va(#1%g5ieSrmMhCk6I+WcF@|sS``B7+BWi-nSw?1c zv3D%Ii*SLn)7*SPR8WA(+EhpEF7g$5x{Jl`9-iF+^Z_LVd(`B3q_MmcQ+h>OHuq zlxkXE!xRUxN-4O;UJ8Gwpp>G}l1(CAmUK;2_pt+3Vilq~8l~pO&vvzGRltna`hX_aC+P zdxdk0l;nKhl821={LGXcG)Oe$tvdHe9F}y_+VYF%&ZGyzF8Q%@wmctzx`g%+&Jf0h-+8@F(|lSgX4<3S? zM_K#UpWhdGN@VSQen#~9<+dT~)+7Xkb=r`UIhh8FrWTe`nxGMm$O=?yrOP&9H(G4w z5z}^Raz&8It8oV_&pK_J*Yz~9AuC(9naHHLk*(*)E776({1^UT`g~dMRJG4*y`Cr* z*Kfj(5OoxVmA5MoDGSO}D)U>qxuwc;Tyxd?MAuYVu3LU~7RI{4MhU+sR=Cv;BeqLo zmSB~xKqBhO)qq*afs+P`9WLr1YOjVxbXjXv1AY7U{apiaXX4MCl_Dc7uN_-k#8E*}5q-wQ_uz&TpD%s4mTr91{_X705uEg1_GLZ4 z5AS;YVCp!Z;&&RM1Dq6Vb$11q>dmyvqBhP|C>s;+;2Rr`RunJUFHR}aMJSsva{8;tqBE_ zO`N_4e7IW$y!w6Evh&Hr_SP+nQ?WuhpO1x9PB<13GPOJfZ6S!tbNsY0ru* ze}9B;b9co(sztkRZl%3SSnrp6U7r#^_e;m~x~12A#v6XWcdbnWD){Qg2}=oUwZQ@fUPICpOA^^W+qI>B~`!?QyN zIvjr7eCWAB2ZOYxBF@@Q(%uKujwu;5mGHZX%BttBy7gYt-6P`a3|{e%q1HQxf0DZg zyb*QAliPp|{$f$6C|LZ{_<)6AQ{osodWgMzy_`JLCF!CRZ?TIc&BNQpQzG$jk+cBN zyG2T>$O{%kPf1z>2YAfj@zJvzOuAA>yj?v^Otyy4;x`e+;WnGFJBh#rmV*l{3;Ex2 zfMCmD$>8^rL_RJaVi$LjSVUZ4ceQ^47Z@o5C#Z(O1-AKTF7OY$l|Ri~;_t+l@*EB0 zJxVUjJ^1WX%k#kz8uMQEyw$76=E76-oE?2K=S`@XqqT4Ff-$cnwoUc@qI3Js?01RH z^cs&HVcc@SwbdurAIaI~>l`w$nL(_*NJr;KyQeJPgZt@;&i&_FE!Y2SS*3i_DJy&4 z@@7M?zL-{iOR?xxFN;+jQ|7%Mu)ERV_9r6N1%Ik(Jvle<^5X#yP0MFzW@-vQ(bHcU zu(oAHuio=yy<*AP)Ds=Z{^4pJ!+uLcQR*8a}UD_^OGr?c%Qy}cgULKnJ@O@FC ze|3`+k3%l3xtrMLeZirJ>8Z)bFU%S`d~7q(hgY7bQ?1qpW^~Z)xT~e^t4&i|F7>%@ zH%Vj3h;#_sI6J`KEn@r~U*chp{|W{|;-8cyN+JOoUvrZE$jNV<(0>W zxvM~T4E`tm?7s@F*2%jin2XYOS~jI_NVN7uaK`6G|65rn;~$y^oDaqQyi!j8RXx8q&?W_N3D!H82U6v2Zp zm0WvU{iemDBMBkbD_8s77G_SjSh`rQh?8Dc_DANeUH5ZEbFJ-(Pe}?w~JhddNG{uiV{l z!ifqW?y!W&xKg1b$9;3hOPx|5opnih9pd+Bl?M7Nv|`?w9%Jld9v7|X@Fw(>cWa+{ z8~P?JHk~*2n8EnC)_YcICb7<`Jy=ihVBJM}*fSVW)DJdC#DYgX@AX?xf}>(9JvJLQ z4rL-kuBK{VVob3)gfWD_wKy6_Y~Rj^BhT57ntEqOa;s%x*^<^fF1v`#Yl+}*G-_M( z;RL7vPECSPKm%W6VKLL;%3#v*bZ}CRBAc-?i8NYo4b)8$5b4BY_xb{V2rauy_PAnKx-F#hPYFzMw&L=)SS=cr1#%wwy*e&VZ)ivi!-SfUKnrd|a zS=OWF3!HZzcGB0Cj+=Sy{esVi_L@?kDX)u~bl868PTb?u{ic~E9Pu(qx-r=*Y@Ex^ z)tD4ET-;0#Ka_hLzLTwOol*KJdfiwL6REZCs2ln>)85HWhMqrX`lN6_ zd&9Xe&bOM3nzxGo#i+Ue>ieJWEFT=YotNBBn(QB075F^z#ri&lm-(KWxt7J^CUa-a@qD))|?BduI-JKfHJZslA{}y?RJmF74xqEqta4_mFCLsKE zC;s#z2{ftti5%u{UpZ$*{4RMc#~ru&4$l?^De{E`D_12Bdnf2 zid8$qv>rWrGFM$=@ z;>ME=tNUI%S=c#(TI;Ip-6L1qXywVB{l{-{J#V;ROm51Sc=}kRz$j|wjUxZM@!KoA z&a%8?MU}1E-tW!m)6ZK`FYoRg&*vN-+x~7%jPZ?5D<|E5G`81;;yn+iyy3bHV?CMZ z*sN*(m%qN=?>Ey`=L7F<{tmOqx#P0=@~K-YeCK4i9O$h3G$o;}$&As0ws(0J?w^i} zJMbY>&vmFDq0{fqjk=wi!9o^nf zn$UwXG{Bo_ZBTvdToh3(A(C~zK>Sx=rO&!hXys;v3`A3 zM8@Iyfj^21ZHng^i_#wl8uqj}Jg=$E>7XZ0Pqx2nf86=}W%uH6d&l<8lDa>Qd$r`| z%(+Kf%BoA6E4cU?;N z?UD5AxmLps(`Y}J%5LMg+_!nKvFd2*hJLY}^8v0=tEN;f?zeJ%`LqIyE0cyB6*P5o zU#5{)-eZj2uJTtykJ?;(X5Hz?te0W8KTuNHNUec~vkpJZd%AS`NwLEZ-2*)mE=M%3 zxcu2|UR&2LCfP@f7Jd_#3WtkIg+t)1R|M1TKX)#{oc{iNY*KglTwbythij@sYE70{ zyWY_=8_sv@j;6K5x}y4}#yA*MS7eJJ7_{AawkEjy?ML!m(;W5*PTR3V-fs}4)nlP8 zjuXX}w{7Uv@h^HI*K7Rw?jG5Pnzr9$k$vpe z-T^x{-@QNnnOsx6NG|{I&3W*MQQG%DSloRve8}Zl)zhMfpQtE}9i+=WF=4aKo9gWy_=9Ogoj8-{$Pz<3%ysn&=OHK>6@Zhzmyd_`)>PoW!Kd?mDxLy)7P)F z4DQt!`Xb|wmmlhfF41a{)6{y}qWj(Tl|kAQ*Ny+6vHSJW!1T`FDoX9yqEfn9-57Dj zr8FF>(FVjS$Nk5mfZxB7sArRjBC|TFSz@hPfJcEv*4i9LtcPD0;G08Y9}jm=&+fli zq>I4Tj=lY=>85s(J%~&16 zx89%aFi&aL|K^NEFXF0w-nD6Ud9OIhAm-NQS9>-Vg`|iE$yaTblom^Q3oq;(x!Z+1 z$~&RA%cFiYw=e7X&N=?=jQy`H@YtetRr8s}Vb>?G`4&~x>8q|i4anhC4V*aD>FTXL zaq~+y7-t8ZFnjgzR`uQ)Wp0a3b$#1A_3V*5f)nd3svIY|Db{6fY~O3)y#qUwUkn|n z=-y`3fmc<-w5&2DD^|DJ-}Q9+=O3akwSDH#KIi*kZ}wQz!#xynD{k$1JM2kcGy1tW}oBN?}YWY&!vB25|`Q@ z2HgHyUE{Y`wi^Mp7HmhXhgFzd)}E5G*fdNxQ9@m1c!PzHivIWpiyUUutIHN#QdE^T z%Sb4T>f^9=9Na+qxgGa(WU}(whB-sK zlyo}Vwyd}nXWjXL(NzO3v>SiGu%jgGsz5TnI=J=yFPCM>yh!9R=Y{^r&ZW1aE?!wT zx6OxYjp7M(==46LPOOysF6!M}@9x)iANRlBaAkh+n+HLoV!zp>=6!5mWPSAd+;>s; zHw|ezrrjPZ$KWe>r(ye|KJL4>Pxw*U`&p;vLBkd{j(DG5mMm#? zBYtQ3`$2kc^ZZtYcqFb{(C5sp53s%Sx~liNqJXNV;X{v)iVtF4Tw^uc z!_SDCl-_DeWuNagX;V{%nB9&KYIU;R!|MfO&VDjxAGPfDp*{5?(*24~_})VXZ}rmk zhAujMY2W5HAK%>{bMZs?))Q~GPS|~#dOD=N?`(JexNm#=-P>Z?<5Z24Xs37I1)pR$ zn_N4c5ET8{dFrYs?KqMTimD6u)ee>SLt%^ean--oc z^_{~OC5sFM7NZSj*rRWE(@LjWwGNziv2%Xa+|9lnSRX$J&y)8IT-eCD@uV}(1E<~^ zJK|{1CGUcVoZR?iYf8=~+IV@9Xsxj7q=o^(|djU(Q=msvqIG?aijHHuD1;J7z!W9<^c%*T;e#wr%h}ZR;D}*#`|TYt{Jd zoyn~_?0bP~Bn~_`Ql~I&_@F7t&2lQ|h0S@A+4JnJ*)i+*&ig8_EO%N{q*-}sTDPOg z7Mv&PeIC0<+Z(z)TB#9rYJKqL#LN3#Sp_RI-yX|-+cKfT;(g^R-+9_j2XH|o1{ir=d*_nf-xH;IT7E+~@UHf*^$tmowyFM=ix zxzc}K|FXtc+N>Ru_;_Tep%!l{+`8SL(8^_vN7n zjGJiVWw*~aFKuwlwmEvM&25Jsd$)~MHughO&FSb}W2Ow>vD-#zmt-c~biBFH$8Lsi zhZd&>tev#R(st?c^yiW$z3vFZ<|d7}YnOP=remAv{Tt)kHe=PCDeB>N!S-H$qF(3F zzUx1tJ3Cgm~9Cj5OROdK6%k?`J-mHc7@J7@M^DR z{IwxtpGSm=maZIk>v@m)m0xdErQh8%y`=w(i!VAp3UgR$BwVs|U`Fx7Q7QeB*0~M6 z6h9|nS6`v<^^4qn!tu`I{k=Qwxic(y;-JL9UJ=KdFEOybNC{d&uhQ%)MPuoZ4UWj_7`y2jBQOSHPyntOYT~snf zR5G#ll+Bd|F`cNbx;dIM@%X#u@Zy~&OI5&Clq~qW1cj;j3fD|!uE@WZ0WI>hb{AOH zyX2chE<59&38uo8+9YzRmia*i!+2R?uV+$=@&s|n#G@Y$A z&EQVzq?v)!2A(a{p0G!nFj+Sp*2ab+DUG**d9{gEDhuIJP8ZSP-(W>th-@8xJjs*MlE3$oS zG;qlT<&d%Oj@i?pj(bPxZ(p>WqdogY=I2b;spXDs9kaWJr8d#b%IiL3+WjH#c8`A> z>U8sKtJBq9uk!5HJg98`;`EKTx|K79(`Q8J`f0t<7$;81%#$tMtla0%;Vz*Zg>6dP z8bzdQ?Oq@8{?7QpmNMgkAxrx_@OP9h+?N=gQnt@3wZ-(ZTUXzHd}C5EtNEQ1i>IG{ znV1@IuLp0=@HX7O+%w#@1x*_5lt?z#TtC>Dz4KPUAzk6in^L#u)BmbSn06UmtO%{{ z_ICPW&5rH$XBIa(jT{cFoxQkiNMCEOgJ%~km|s-X^mF^EO;&zsXIuP!-p5_pn>$Xw z`>dd!#q+1$GYic+{#-XpJ^38&1zNoRrG=#KJM17g51=JerM*!MRwX% z9N)B}pMkqg(W?Od+O}Vo9bc5Vr((qH_}+1m?L&449+};z2fw&|_P4_Md#ZDDdmV{Z z80i#6oe-BAe-xD(zaty}ssHJPi`oDGX8%@iTUcIl5AGoH)yGTbY%v^RQ~&2jRc^Ig zSxvUMDO>PZZ-z#h@AdLG_Y)+IT6Jk{*yrKEuI9H^zxshLr=Bsh{*N77_1G%?)dYPS{nzfykznu)NDcd(-o}qcORVZ{~#e}4u7`E_1uLEa&JeMb8asPyZgLf zXyYo*L4}Tg&WpQ~&RyA6GwRD3hk=3aiz~lpJl-8}j;@p~b3W3=ewEYiRc6$=TL)IO z8s4e-+00ivo=c9eI@o*V*Xj6OxCnt6aM-*d-9&CBShmnzQ27nFmpwd$~|ME3rptC z$umk@QRQ!UdHaEd;Vth?@xSaa!g25W82#eHuUnSxJ?-l>dfn5ZJx=!22|MYSzp+=& z-dD~`1;UC_qXs(T>;cu3rdYooN0d^2TrIWf=);Lb zDdh~uJVICpn}HRnSP$*SXHjs~rQulyThQY{*0|=j`@bKLa*WzWLOP=5|gEijdl~)wLCGxP>S7XyN6B zUwe8%zz(1%21Nt@En5qFQ8Q+1VO6)aXn4yRZzn`xe7}b4^)Cf4x6;|s*I-mj!Sk<1 z)8Bs{oHZp|8LNL`F&~u<`|@HyW=H3w1N$CG_V(G_Cf%t=jd4tKwzx?^V~eR)CpC@6 z4UmYstrZ39y-pr6G&V^4Qp6S?jrD;yCa=1v5XIY+L zU77n(Yo#P(Vp2)$+EbImC+*q4B=L;IC{K9M;!|1i_FIy#p?jKJHOnxRTiA@M?3gw( zDrIfrx4upMYT^r4RgVgc@b7#^Zw|Lj#^CqqyIIqM2faGo@mt=5Sx46{dsF1d7uQ^k zAUM`)r+V-0?o<&PJG?5`$%wNPm?(mr&H4i^;rv? zMpAeGHe9^`zmOayp71uP|A5fO2Rt&n56kWHcb887dANGvuef95A1_Eq$vopXWkQcj zCuf=M|G&LnR~t^^a~Y9~sD+EW2MJaGA6&2d18)dZ%So7uZ~l}_6_rd9m5gr?sg{WR zY6DHmMEu7{HL7D66Q%}5#ki^d%HBVSQ={M~TXk_N^M^$658(bqoXUGRqO;E3gSTh2 zE$Pkjo4c^WMz;RhlH>2iJ5O=$F8}^HKG$5de(!T}%RKVbIt1k)c0pL&{l&1e?aQTZxR|8V85!3PJw@gCT{ zt>v4Ug&ihFqe>q=)Aw$LCDJR)H)h{Ibn>sGMM&0B6x^(7>r*dSi>Hn6=CEVaH};+U z`R*N>f9q1|_I=ZXaUR=Kl4f0t_kZ&G7N&7D@gHE$&< zXEfE2T&;?-mQ}yLgKj+%^A=5R`9a#Q-{X(V+OPa@Q$9$NE$h3yIjNSGsq+mD>OP%u#NQ57|_9+qmX>aO>$& zy)RXqJ<#P|*3I}mXKspie>?s#;)~9%#7aQ!Q6`}0fWxTwJoSMV|af7YerU$4NG z8h39T35fB61DC#A)Pny#SO0&xP~DjK;_K(ZR;E@XF6=oYGYs3|V`1>ZB{kRl>*+Oz z_EwH>dFEjCioV8ajhfS@lWw?4M=w>j>pNZ8>|?v2US|8=l>gzU}tJbjxhjxKBW zR-DD@{bGPt(8bF$jW`;^gD&f>%ZzS@~@)eBW)(3EMtGk-K9x%AEZ#6xo3CG__lF_GymVNTmP4rw;|GipRM4_+sx_$r~cyqSF6h(c>jFd|F15^kaqy^ zdls%q{G-A#9UJ?+9(R1+$@2xWxnGl~Jno4 zMjXF;(zE3swmN=1@?w0l{Vd&UDMPRB|0_js_=gSLJ$yM!KDzSQZ%az5JeOX?;yV@Vz;B=F>u)XlyLw}=p*RsuH zoz}cQxxCV4{hkY(&R_6#XU}`uS2zA{NVv}QkR7HgH>RddURa*>@WP75=>eTC2O96_ zVE-obhhOWzQl1-~x$gEXT6}4rkK2l}ro(j2b_(D5Bs_ZDX-~~x8uBAYFXc@3-_JI_ zIWoq*v}i-~1sYxpcT|+J3gK{8f;X}y_bUDyZx9yP@u3fOZ|qsd$g~6N>K@&NpIY=Y zfA}$^1-C29en)x9UQx-eMI}2#C0qY3q4!U}uK4w5e37v+pcbJ%F5+Mx zAF-3jfeG20HVoMX%pcYiL`dLo*vkb$_zxP^-|xV60r*2w7tD>UL`}`~u+t}(58Pp! zA?{v_@PTXd7$NElK^Aj=2KJipR^1JvKfa0qoX)+be#|N#E!%it}CA-y`U*XWqi8%WJwCaBe$Ioa^yrZjs7;7tkBb2-+AuGvFm3?YxZgNpqX3r>&uHLw@B5g5S}y{Trs-hddh~E zA0r!kZSQQP7n5+rxYBJ-)#um!znvSn?(E~v@LBxfvUx}EUmZm5nPoPWvOLp$ixYPt9Ls@I2(1s_ZOT-{`g<<;ij z_j^roJyW`6wr<(%9RKVdy2g)s=br2IaM+1uQXLytI&RF~1G59>YJF(!DNKXAFYjUU zy(W`y@_#mNP+freHL|IH09H!5i!5qSJm6-QPJ=TI(a$GZZ5It`m!A81Uu^6Xt<^^^ zCe9mrX4&`F@-90I4%u{L(FUTDyY(2*+TxP4qLNdhlH;P1wd_W}o4#;iR8&&DXwZK} zWx;K;n7e+`s>;+KRkJNdFWvgh+j~~@@%okz%MQNV;}%pHIMJ28G(*y==$&=Lj%%fEcbGC_`qkj$1qs3vti6XU^_)*U5YK$uVOAG^rw3sPSv8l< zSMKfZ&{4DViD?y2L`fD!m1C~dJd?jk?jOR59oCe$XqfAn^ZQb61h=)a8@0LOXyxR? z*S`(?n(*{Nb=SU~FB$MtQ%ue6$I0j0+i#dW;>M&l?MpsCdvJj}-XpHxj(wGr*X=5A z%sbU~Fj8L;U2HFMA)3yHpw2#Jq`q^?Av*up9gJte(c|mz>yp y%zV+2)6wx6iFuMi?9G9>LUVuD7WZP37dTcAD(O}|-G1r`pJTdhc#S6@^uGWkOg8iY diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+win8+wp8/System.Runtime.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+win8+wp8/System.Runtime.dll deleted file mode 100644 index fa831ade491918f26b7cada022456375927ef3f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22128 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 diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+win8+wp8/System.Threading.Tasks.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+win8+wp8/System.Threading.Tasks.dll deleted file mode 100644 index ebbac4cd1080dca53b75756aaa88c421c09e7b80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34960 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 diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+win8/System.Runtime.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+win8/System.Runtime.dll deleted file mode 100644 index fa831ade491918f26b7cada022456375927ef3f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22128 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 diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+win8/System.Threading.Tasks.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/portable-net40+win8/System.Threading.Tasks.dll deleted file mode 100644 index ebbac4cd1080dca53b75756aaa88c421c09e7b80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34960 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 diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl4-windowsphone71/System.Runtime.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl4-windowsphone71/System.Runtime.dll deleted file mode 100644 index 97ab730f29b7f1f76f3376a8147737d017975994..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39024 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 diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl4-windowsphone71/System.Threading.Tasks.dll.REMOVED.git-id b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl4-windowsphone71/System.Threading.Tasks.dll.REMOVED.git-id deleted file mode 100644 index 3b60eb99b0..0000000000 --- a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl4-windowsphone71/System.Threading.Tasks.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -74f5e2caed93499de991cfd5ed70b868e5207474 \ No newline at end of file diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl4/System.Runtime.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl4/System.Runtime.dll deleted file mode 100644 index fa831ade491918f26b7cada022456375927ef3f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22128 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 diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl4/System.Threading.Tasks.dll.REMOVED.git-id b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl4/System.Threading.Tasks.dll.REMOVED.git-id deleted file mode 100644 index 3b60eb99b0..0000000000 --- a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl4/System.Threading.Tasks.dll.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -74f5e2caed93499de991cfd5ed70b868e5207474 \ No newline at end of file diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl5/System.Runtime.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl5/System.Runtime.dll deleted file mode 100644 index fa831ade491918f26b7cada022456375927ef3f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22128 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 diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl5/System.Threading.Tasks.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.1.0.19/lib/sl5/System.Threading.Tasks.dll deleted file mode 100644 index ebbac4cd1080dca53b75756aaa88c421c09e7b80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34960 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 diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/net40/Microsoft.Threading.Tasks.Extensions.Desktop.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/net40/Microsoft.Threading.Tasks.Extensions.Desktop.dll deleted file mode 100644 index fe18d0383d9f4f9cf9ee0201a7b656f2af56cbf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47344 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 K6L@$j2mk<=3txBu diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/net45/Microsoft.Threading.Tasks.Extensions.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/net45/Microsoft.Threading.Tasks.Extensions.dll deleted file mode 100644 index e911377c2c89e62a14d467bf882f2775ac94d708..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31440 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 K6L@$j2mk<=3txBu diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net40+sl4+win8+wp71/Microsoft.Threading.Tasks.Extensions.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net40+sl4+win8+wp71/Microsoft.Threading.Tasks.Extensions.dll deleted file mode 100644 index e911377c2c89e62a14d467bf882f2775ac94d708..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31440 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 K6L@$j2mk<=3txBu diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net45+win8+wp8/Microsoft.Threading.Tasks.Extensions.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net45+win8+wp8/Microsoft.Threading.Tasks.Extensions.dll deleted file mode 100644 index e911377c2c89e62a14d467bf882f2775ac94d708..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31440 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 K6L@$j2mk<=3txBu diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net45+win8/Microsoft.Threading.Tasks.Extensions.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/portable-net45+win8/Microsoft.Threading.Tasks.Extensions.dll deleted file mode 100644 index e911377c2c89e62a14d467bf882f2775ac94d708..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31440 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 K6L@$j2mk<=3txBu diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4-windowsphone71/Microsoft.Threading.Tasks.Extensions.Phone.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4-windowsphone71/Microsoft.Threading.Tasks.Extensions.Phone.dll deleted file mode 100644 index 1d110cc218b9269c9b6c8dd34bc98ff28037e93d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28896 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 bOd~sVymimPH2Q%nyxd+wgH-qOA@TnQKW6mV diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4-windowsphone71/Microsoft.Threading.Tasks.Extensions.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4-windowsphone71/Microsoft.Threading.Tasks.Extensions.dll deleted file mode 100644 index e911377c2c89e62a14d467bf882f2775ac94d708..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31440 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 K6L@$j2mk<=3txBu diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4/Microsoft.Threading.Tasks.Extensions.Silverlight.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4/Microsoft.Threading.Tasks.Extensions.Silverlight.dll deleted file mode 100644 index e68371858303ad0e600dccef90c9f8bcc7640b8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28928 zcmeIa2Ut`|(`tAo>gww5>gwt`-Hn06OArkqM2FwEZwPIL zH-216_~#%WvSl>4%b<;tr?j?G0#0d#CngD4>3rTOJ|~qG$4N`$30bjR7C$qMm6XQv z3=U(Z^5VH>($Y-b4$&cA2nA4RXyKF8L7lbTMN};*iWEWyK#>qpXZpaK1-}^hAtXnp zsiJmc0&YL~lmi614x&K6VkTi${D1em1H~kGtUzuAPQ)N|w@V1%7VvX{Up_*;;Pn~W zsRr-A{jj>4P8N{>+_y(zGa+}35b$~W03eU-E3~`k!-7_s@df-iAd+p1fdm77M)2$L zxWaIm@wq8HV8m_3ZN@r41pInDt_ZpJK*?k})+;=?ZB!(NHiFK5)e({;sofxiB@)|B z`E{z+uf$_uNpRWq&6iJnEy=n+%-grLX4{*^ZSE#+9`1%yWp95u){s?KHSEy(>233L zgT|*E^*)g;V^vapHTpyCF}-sow{N(N+tO?K-3bfBM*C(ZN$sj(>}b#IuexTla0c6O z@18N%x)LStlr}a({RkS$2ANPoUZBz;3s=mb3HkurI4p|M zdmL^61IqWs<$;eWqL6K5+}SIlnMD&^w){i{*mJ$pVrm1E3=b#!Bb)$C;h>1|}vi0Cuw9m>qP8MNso#c4Hl4 z1o{nyx^$?A)8FZkj>dq!ft|_=pwFZ%Tx+Keu_(|Xt{v+Tdd(1k5T=MiHjt4=woMjGsq_J41h!`k(4N6!(G5i#DaOG5QHBc`$)NA7m0HIGqRc^*cL+p_CUu39{dq4Rna5Q1j#gf(|hP z{f2T~bJiHAznimSCKBEs(Ns#hr5&ivk_u24Ee6Ru}>h!W2=+HZt)(zY%m9vX4LIO`VmwF!VrwMJT(tI9GzziOw>HkFI|E1 zRS70HRh(xBG`-t$9driIp2T5+6ZIJ(ZEYk6%A??R4h4B&A@Twsz*x}6VX;(GDL!bc zqqz*SDj>mdb&>=QAaoqAmkNUfS{Ds6Zvd`~K{klz2@Xfx=!tIaSb%yC|r z7uxI%Z_+S3+l(`KJ^(=D&9cbA50W4NDCvTMkj@ZLs=yx? zh4qbs#~p!-kyk)pm0+y;F^rb|N*)NJfo~QBKtZY?kSva*Ku?NCdg7n30^2kmZpmF!XU*9$LLK`k5m|GNhJh^g-{QN z5CI%U?qLJnDG=Y`rx*OPEX)WqYr@t7EDS*mlLAl|I-@flp%Qra1}2>_AwMZ?lmK(A z0K36FI)lTI9IUZ;dg=HK_QUgl1-OA2;O;5BSitc^1^bIArAkP`K%$TREfLrft{vMq z=nlbxj9~g9FkUj2G=VqH$9Z5wWE%W1scR4oaVdV7BppTv9Y%Wqo+9BDfK1ec;*kt` zgB~FTq(s5FI+VT?CQ6~iL*)x8`4k3P0d!S#03Z|Hqnw9a1~ne|Evf2M2KazhfI74l zP}Y%z!$>%Rgo{YnNW$YJY#||oj`=l7=s?1FdKjI77SfC90<;e1ECb!7?*z(cfT~DU zY$sg?6^T89)@~!=MFviPB;k2+oPI^Z^Ab4y79ay%l-vXDd;^ey#F-e52B?gRn7Ci3 zm{`8M6s8}OS|i0kcS!hzq)>b9A+;wOeQX52XGX1 zBfvJXy#S9=4+7jml?0yG40(W}TvKrkNFSwYlVwG@Azit85>aF>hs?#2Uo$3jVgx;!r!C4eqS%1O z40J@8BjiaUyDrQIRs;7g%mc>ZY8Ms)W0RsQDi=%{2{mSSVWUA~g3L=eD-%>?J%^0Z3KA<;;ZR!;f%cN+W}`>UBpQJ}cVHu>G6AdY;(Q96cUV}asGJ2- zBXw4cu8VD@SfG|3c~+=aMQT?h#R~a~Fr*}|OtnIaJ@RZ& zzm7a7aeb-{GU&hti?@Iy4JCCgl466Vi!dZDF&H?9_sFwDu^oA~68cm-gkw4A0}7F7 zL3U^^ISwKzcId1KLyD3`z`3|bo&&1t$a9lCMsYy(9oR_87UY0J$WakVaX>>w81i7^ zyk4X}JM(&rFtnY_!@hJB6?^0ifd8p94dwhG?N^lipLl+zU^#U3cj%LTkVZjMfkK5j zi2EfV9SX9qwU%z9kcae!jzB0vgy2#|`NkZDf_PGcSl`m1yf;!t0q0uoLk z;cOBvBw+;!Ye?8Y!fhnnN5W$yJV(N7By0ls9=!ti8MOm!K@H|=RgxgVnNN-2Z0F4m` zpcJ}DGeZMV1Ef7r3qXGohLMyJWI7o=r@NB!JxCZs!h8~zlduXkQn%CglIa6vtL~C% zM8WN(QE)q1WZIR49wa4(Oy`quB1tJH(|bvHfTY|d)Az_UqGD;~R4i>T3GuAKv+F*E zPIaOBQ&XwA)Fsq4)MM0#R4H0N+CW+iZ9MHFPh`TC1|!Z4_YW~7%h)BnKp|? z&lgF+ktLQyp_oE!0h1Bts_3Dh&18ZC6bMnthY4{De!k~>^b49O2Kt^a16TAz*)1fE z0aS5_rX=7k36KeIDS*A;Ee%ix-m>t+j|MtUmeJ~X_wRV?qiB-B6mUIs7k&<4=M!mU zA;&;od}a#Q83iWA@p%GXg3v5Hk}beALpUj! z-0+-qF6u6fYlvZY$_U~LQ3N;EBPEHOCPbdR?6edfCtmb@fjQl9f6!olQfC3bUcxj+8Fcogcn0Ih<VfH=KTOvw8gFZVT!(%nsh4GrW^hxWCQxOT$xxR6Zx=w_F~)^c+5(RXgOV!Nt{t>Jb^F?M%R-Yn>lI}C$?u7 zMKl;JY=~WRr*kZ^qF^NWU4BPIAiEmMP2r3oQ-bbZcN8QQEKG_`N=Xv-P;-|z>n`v= zb&<%?IW9UH&*T(NjzHwCjNx?=|Nxv9J?ZuIvp=xQSZ zAMo3}@5_k19hOWw&!6iB$KKug6NW{XuE5$nlqa zcE6$9gU2G((pjpjeWXHurgl<9O8BYoY#5gx?Tc+m_KRGVy2O9ieJu1B+1>sAenrC_ z=l;-fwuPvNKXWGhE`v?ZK| z)<0^(9y$J=+vd+QZ95gxvwT;3NuB&Urzf?0dbo20T(^#;RTR!3KS5AtN=h)_D>Yr1 zgTnba9uUVsI0d1IKSUphmmckvk;%bc4?)K>Q(+;;CA`MOamnR_oY8&)w^#u$1>!Iq z!u+i8c;wh4Fu~@+jzb~}t~0D_RqhrmB6s86p$-hWXlX+3u!5&`i212f3j%_ZpQ=qj zSbcZ}@ZqLmIo$Ye*X{UY%+tdS+DAuwa3Io(cT3}?<)rd51rUQmaN@~L;f?|^><&fr z44Fb9_~1f_5#Ob{;7nm~LMSY4-0q(JvQ`UH++YE$R6;x+*t>Oz25}3e7E*?(M16e-es5Nz}HMX z;zLv=fd7zEJW7IhI()qfQ5?e279Y09Igl1Y4iBZlDMSLwgm({$P8{%K3Kw?l;rq6W zHylbN0~Jc4*MrVXlp3exw_7RWkEPZHkw{|fvq@KWugaMzQSTBxLH-ic0X}(@6yzx~ z3Q96kT}g$$9ccx1pu^V?X2EHNzP%8w6OoaT?nV^)LU}R^i-IzpX~^h>=$&=oGMxzI z$cQ7VLSHBVUtsvH&=)7P6#6R|%F9v6YBi8TebN8)XXb=@^ zvW9D-{_(PtFp6jT;MMq%b+QNNJL#!SRq)`duu}KVwF(@5el8tI;77A=`2i`O=lqmb&>cPz-S6XPiJBPMRhw%LYm|*?I^wwiW}hK z3q>VMF}I00iw3pJs9}W6UE0B30qg{3uMn{>#T-@=EIMWv@e_1Jp~^@i8kmNRoI+nF zq-5mtYal5mj%i>#*lPNMHmEogry&zd>MQD@yc|?xNH$qs4(x!ch@d*ELVkldNXT!H zmlJ1!5;rLr;zD+!LW&5#O+i=iaumHV25KQm){utciUGh0RzB7)ABTv!N?$VxWGIjIB2Rkmz-)ujmMeg2JiN zZYe3e>_GT1NPtrMd zfJd)5VEEqqARQW z`~6S1PGBpE+^7+!AS!&0!%D-dMIS&a0H(JeFH?(5-k5GI_C3* z-_RI@iePc+e2VBWmCz6rhN1y_p-@Qqpo_es(S-zF zuR81+W1`0sUKEhZfe6AIVuuun1N}U)ej#Zu$wR<7p6EX-6bmW1uL|dp6xh|~p;R)SNrPKLK~PsJv;#kZATbW)@}O=W zv`Pqrin;l~jbV2bgV1!u23eiG@B|40vTPFYcEv@%lxYSVV~HS*3-WMmh5LYM9FUL< zKQqw!7?6QuBmv~(2n$ogAf1A;fX;_^5|l~=F8o-*?r?WohL9YcC2>9*N)zy7!)YQ; z;b%IshB8?DxF$ZlIUu!L8$avfKih6I=sS)K@lyo1FeorO5Dt^Az&cNdvB4wU*~=Oj zi=W%{yYVptZWeMQYhd+|BLJ!>vc-MIx{L>n;AbAGkKhhoJStcpo#Tr!k(K=1hJR8o z*v3MjO+094CK+FMkI=8|^*`GdtQR}dw!Uw}j~4bT`*I}9xq;;hK+CBx15;o`Sup#t z=DV%)S7mX%|L^$=4Y-Q#P?eB(r~ZQX|7HK*rvZF*ib_R9q4O(-q*1YN@ds&&IJLac zxfw{esT2xZijZW88OzY9s$z%;U@(mt6gs8QmP(@ZGoJ znC}}>+s1@+SHmb`(1dKVMYO?mh9Y%v7+aB$X8ASs@;7ghn4}wgq8NSXr>y z7M51S0ks4|CrT7F{v$1uCZur7q!j6a!6Bh+eWJez)kyP5N{6#OmS>n3%PTC%!GrL& zGPNY^Y)n19yzSWi2^~?7)PC8cj$I$3kfPmF!xS+@E2PMRK~R{~LJ9?~+)T*Oxa&iP z7bj0z?pvX8Z10Pae&Unvrq3U{ds}pDG(+#gH2WPY+SO)r)?M|V?4Vk=c;fn_BkiZ} zx5!f-^W4_X;Z^LX#6oJ~v!^>;r#5`8FtLe^Nw<%QmHBj7#g11$=d!DG{z~aF(`=H9 zr|R`l`BwilaQhBJ#fOo;Gt<3o^uAhIueECWaQ$lJlZE5hTLLvBo{qg-DxJ_vL&l6~=NI@I5l25*vQk=-4m4go5Ojvnu)Vk-^kR*U*M{|xZhpZVV-x36 z!J;Wug%nB9h!~*`Dpi-EE7N;dt5}A)l*UweD8HO}xbD31_GLrQk~XBSLsub`^Ly)9 zwOtGKPG>%M{gm~o(YXGAb)zg1j>~J(0||e^uiU5HtJot^C`@-SH;?0|n5A|dpU3f1 z&C`>UFx4Esk??_wlo9zYBvd^>T1TI|?SL3Vcb zuPWg3|3tEoP{i%+Pwz!AJ4MnYdYTJNNH7-)8h^4r?}7R5mLZ$Y2yUziJ*RAcc;l&$ zSH5a+H?{b_S?oPoEMc@>@yM@#483_cZl+!STM6&6#)1Z!J#K4G99c7Og>7rRebb>! z?We_0uf5;DHEI1t@8+)w7LHfS4q0e@e4*OEd}J?o6M0LA!iis=t2gdGJ$uFM{u$fW z^6Qt?-9Lk3r=-_x9T+nGg}HWo_3DR#$)zT0InP#Av9FiJl&nbmI+rT#VxlX3c(h)@ zpos(Jc4WqRu1S(OOncgVM(X(xhi5POtC+psq6^wv>$LfeEeDrK8IQt(;l}Fa>zLEd z4p@E*f-i*Xf6y9{^N%RgHM8U*=q-{SqvJQ_-`;ABbOULx6F0zs(-DWU$r&!*EbuXS~)f$AkINWd@*ErMi zVT4QdASJ8t>N6Xs)wry-Z88mcZmk^jGBEdsV%Fq(lh$F8HBXza7-rt@H%Wi-n>N#B zZZ^hJuAg=f*uE_?bFOlz|8dJhw)JnGj$i%GO({}>tFC3+YO-BhO0Gd}X}0#HqOrl- z`jynbtNJ?aZLdW^zAr%%4lrfU#GiKCS>PrwYiagD|0q&zHz!eJ2z@v}!i!O{m>>*W(#2SLR8HYL@Qw(S-@>dg;*27y3%UC(wGVuBW z@%(Q^8oU2!=UceFCI;cjEl&r3vBI11WdATeU?JF)#1xGz+1B>f##RZO1R~a!ZOVza zv^BNja4bzZHh|jN#KsZUupnA-;=gl%C*&U;Kfh6VDCL-~nWeJwwtz)UO=1YHQ?>(T3K5nCmzExW+U{`CGf-mLi;;ImkJyrPhPq^DR^qafiX~D9CR9#;6}Y|B z{*(0Grp0fgbY=U^n5^V5_Qtx?jmJ{9+nace)0Gd`Bc!Fj`8=VCKe(R|WsFyHu?&ab??O8jPgZ zc&9#mmz(3dOY_ttuS@HjqnzJm9(kA$7jyE`qM|=$=n@}ZTAhtkZ*U(qP{x0cgUrj# zr4Fm??)RS~v2t<(gl%Fw!QZVA`8y`ZQV;$J5gzsr$|9o40F5a*M{mm9*Cz3lzREOM z+}M3_+}MLC*|qkuO$lR>3)Ag(VWB+uOJWaLtCA9u;$W|l<(3JjYjAHWhm6Vy!VV%a z3%0$b1voQ{4%7mp|E8b)tI%o#e^_K+B7Tqhq8Jv-ePLEuigUlqyptzhJxTsrrYv{& zj)QQb>K5~Ii)Y_%?{^QZ+5-5S#d1V>t@|Lr@ID;WvZ*H`GO&@`pmok#d;pU{Bl;bMz+_)Np{L- z1tY}3WM))vNHV|PSL*8=p<#2DdHAi~#IUyWGh)A-I2P^A4%w!!c;A&c!#9*O&^}@t z!7%3RS-!2*zM{Hltv4bw?O)YI&5Hnyko43+&=T%dpZx>T< zD!rEm6ZXe4VVA)Jxqau$WNHgzT!-kFJ?O9a*{F#bRyyqd3L-@0%lrr*!mHe)+^yK< z@B6YYd*_2`$AM*&UM#%RYk?Q@CBP|n;^4*X{+<^TUBJW>2G19e`m_I{QqVAa=Lve= zbx(P&4Hlb5Kb0|0TkZGZX>{iEfB~jgJl08lJ@MF-U8Qq!Y{-Iqt*BZj^MLJ@tA{MP zm%d}`#>dng+_lh;G9JdZx)EcHU$!JBP+T7-O;_9!PgW9H79Dk%(Jv-=Vzw@*BrA8U4 zi&fjyTEi}nI;s6FQvFor^j-QJa^i+~Rt`GV{ z{ijJSHI*j2j~dI#aAz*O@victf}SMTZr-b0&4D}4H4S-mcFcU0$Ya*Z(YNNR`^_}n zz0S&0?S-6@DvG*gJwogBf+LbICdo_>PL)v%avE#syM%x4P0I0o&(f13t zFKzgTGgYIQ!fKo6rsjQ)KIGdfyyZ1Gjw);q-7v#anX4f)^_JZ2__w^%-WM#xvDSL&$R(|n>x&a7_8M)vBP$uH z&tLaiIq$vlMBQzZ&x~H}!!}=Z^InG26*NB9=iKSZ$F{0`l;O|VSLIYkbshaJY4QAK zxz%zTZ9^n3A8;ZH8RFo-Uv~O$KD?;Tn=NGD|7>02s6y0S0MtvVO5PDrripNd}!FIDoJ z*Ux><`UR1M-gT7xC~w!ZDdMspWatZ8r<~M0VX6Da(${ZCshNDvYniP6q$Q}TVxLaf z@fjbz&PbjeS$DSHonG0#GG*?lD+V{c!|IFAJ}~e$)2}TK9vs^1KF#FQ=#mm5?TNcN{bgUtXs%#*LkQa`Bx36X#ZNsGHQK8$N$nyn%9B z+duqUyV!yKEU8ZKy%xOpsz3AIzx)vX&U?#sIbrbL;Lj0JumJm39eP0tQ7|LF_pjV< zMcfL`KOSBb%H^z6t{7Ney)Hm7^sTs}8TY@&>;J7!chI$5+0+A(G*6pbk2kK%zHvHd zP#~qjOqekuwU^@B)4TI#Z8f{7P&qv{c54LnL=a0cWZ|t`*XD>Fbwd}aHK|jIYj=!! zJ?-qX0hAZbyJs=Qj?VCHZVgkq6})!N{gxS{FXiuhIPW#Xd=l;PY$ILm^iS_U-ygHk zO!|X(bNWt|prtdDnf%hN74}O;nI0M>^CULXMR~zAmP@m^szv)r_P{K*lQCcF=#zA( zZoJaeT)ZZsZ6`A7*cv^VfSX zc;~n+VQ8bNc}x4G;**1hJX)GQFQwK#;Ntt7J!@2QV+~(cE;h7cWUIy=bJ9rFENqoJ zVzT3mN8^L`XX7^ATd`Vby*21ihK_<>mXu@Y^o-%&9=&%qHr5A@I=bBbTYipK{xT&Z z;gP$-NY$guw6)H9JT`v3{_b+heABn$+T|R ztgZL89&D;V9=CB!xY$KEvyj?(_0?n6HkQxNRJ}Im55-JvbBomyY2_oP_uo_gvgo+h z<)<3K#}>WtyZeE{%1*NlzsVdL5qUMRU&Ymr=F42n1}i5YQ>^;J zE;M*g6dJsSy@@aoePO^SQj>6AsrpHmN0P>|Q;#p6Rf^+r2d{#g-v@ z<|^S}u(KeY4Z+|oLq_k$rIiB?2lmTthV2_Z-m$i~)KrTH z>w0TmzxXsfC}dai+YJA+c}tENYR^wR;4QP`;OR?A>d(SYcxd>oDd9}nQM=~)!))&- zAI&Nh-Gdgy)zxG$68p}#Zq=M|;cy>^`Azj2nW`0qdX7XPRkwR+8SFwT?8Q;#Nn@V* zuLTdkKFH`{%29+$cdKb^sV+pE0*2gWs$y(ee98cKlWYkBzH6<9|76JT1lF1M_V0WT zecC&=F?0FddlUI>J#7VcXtAyM8BdxoxYGBrC0`=6f>Ya^9sXwCvC761ip!7Ge|j}a zcXW1{jr3Wo$)8VVuYHu8X(;YgWFS|-h(T)tgf~C;^SU4}kzBNAib17tK_Tu#Q}LGpy|tGSDxHANINb%QPe9<5smk zM%QaE%I#t_Wu)6u>Mm|Oq)%wx35pyNamRBsdLDCCa-vsL;!dV@-$5w)eW`<|O<|VQ zw%7Jc%?`Y|B{)8Ec4*%Hy}Pml_Y_oaNLvwO@!*j4<|!vXJXYOqwEf8Y3WBI?FmsDZ zFK9Yp>UB2j$*GGQhtFMY;yiq(c539(<6soJa@~`gPGJ}7!WoCo=Pq62Loc1@Kza`Sr;3ksv5^H8+Ul!*OOkh1GXQJ zi*mjwUL*6xZ%S0}85eJt7fQRpj>;~G$g6woAWJmoe3b4#)awZunt!+NE(J{*|Bvj_ z8W4IAdci@MX7~2Xk2}aL*mh%goQK&$^iHs?$ekBB4-WEPuDvQ zbul@yEy}^c_k&DI`1qS!jhOvX2Mn7rvu}UK*`OHVjg3o+1{VaMcPY*vAhzM6+qC+z zmwaX&Qt;>aU1xD-?ecWI|LH0(Mmz{vE_p6DWl-UrkjvLLEOq{{OCrC7>RpyK_0(Fv z{fZ2I+2+q1+77jxfF!@p?7rM3CyY8=10^lixf%@eh!`|MLU@^rR)wb^WI z!@71Q!nnw-O0Z*5da2=(S$d~V+wTeJYff9T`GwK&+Bt7*oaLKe8$J%HbUkgMqA&hn zRa`+$RrMQm?UTcWC6q>fl{MXK%+B4r^3NG0$4_~4M_8h`ujstjWmn#fNICdtdqn43 zCJ@FOi1s}C;{&YDod+7N%kl#xC_Of1I4*RTkU0%zGN)gAWW>otio1J@eYa=gn->2d zMC?N0nm)F++M7~WAJ3$g{{8^$m*-QwbOCt=2Bz4xJBw{E8Us_p)|9X#_f0sRt%ZG) z!9*DBYknDMeHtrH(u6!nNzKoWz>es ztaEo_URLA;ja()-R;TGzea3}cw|eb>qLWi2JZP8Kt1q^6Ql!jD7%;Cc>uYO#Y3xLm zyAd7(PWwE(nK}J@yAu7l+UO6yl;=Sf*Q5jXACZ3}n;=`X;^>tFTb$e8-k*N?L%_CE zueX)#Jxh5q(bs;l1#{+?{bTNJ?K9#`t1+?LHoLN&cU$wu*+`Gjk0zzHkA1{A9|ZN6 z?(?_CS(Z^RNt7|Zaa#ReM9+U{vdQ}8ncxTGl9fxGhh1ML(R%7~eZDVedTII7{08sK z*7Zp)U+&S1`O5O+7o5`ZP-Q$`dULa6?jM(`Z_)QSR9!Cocy2=A7-j$GjsvBU#7y-3 zQL*P;|6BQ$6&gEVn8$CIEqg5EbgE&>K)uJat(wvwtR5>Juq5EA{JcKKPy2fPaeuGeyu*bk(&ee_($AL(Az+oa!|b0*_T@64EdeB{cvo)b@Rdb}+*}oickSY9)8ehitSpa{HND_Ex9#3-ap_BuIn{oKEz-No6|;BG zb9(vdp7C%w&A=fBmAU-83JzQRMqYjX+++5{Yk3>;iu+x2ZkQhRXi9LA>gx*gVfRZ0 zn69@RdT5LDSBndcG^d6Qb#v^-pI@49@-Aq|Y%S~l2kg`0CxmTZBD=1yPSJ_C+iAr! zK18>k4c#++-XA;nY6<&Cs~BuPsc&G{e}Vl#n=@k@=B!uKSyhwpjH5Za$-r-E^yKFL zQ5UrQokI_9ig3}TwVulzVSY*HUV4=5An)wPHq^AUmRcBnW3N)`?uIv$UfHb z+o`hEbFA0>eFyltclj;4clLNMJoIwETEvZsGoA(d5v$hDyz^|t^19Er>Jysxl@;VY zzx>?4#m{h+qQS~l<3{B_oEkeOdV_h>zNSf@Qw~Z7 z9J*NTVJ(uZZ8XZJHLLXcX`T!^LH;#p5C0D8GByUU+s;f`?S!r^$wU3(G$oVLhA)_Zf8yJ{v)*_c-~K${>@MqLZ!L&km>0W%QpJiGY>QOA6~cq!G>!$lqL`I8fs^ep|3ij;jMn#Z4(Dp z(t-`crX;5ER&5a;a1~>$q!<}E7rH10CP?jV41Cu#Yl0e2X`I)ptOu?}+^Pdnp|QmW z)Z=W*itk*1)Am}qVv&B+sp_(`FQVey?u`&%@`p1cn{kfOkg3^wH;1#S_2%Jz^xb#d zj>s6ixXm?xR`$Lka{g6xxx#zbus3DZlK#GO3-dM4BEv%si>qC{vNfy^pRcT3o|~)v z(YI7{?I$0d{CCUR_9SodFKd39IY#x_6WfJ3D*oRtH|iv2KCJurdD>H{{3l5R>OK?C z=>aqE+{sLho9%RN>5!n{J^2yZ6=UQrv~pj%F&kVytv^l?kFy*@XP?Fa5U{F46b@FTUS;d={1$QdHsY zBC~T_sxO@lTi=xb|65$MfVLa<<{oc*)D86P_ubz+#&-jmrX+R^;OqZdf#o$a zBhS89dS$>#nys1`Z|}44{;4y!CTlgw4jxYIr*EjfnLSFY>B+TrC9j;a+Bqxk)-wWw zm%83L=z4o+A?=kJGvVS9%J$)n+eXOsNtHocEhyQui$|p7Xdx zd`_UMzR~MNZyH+Wsd>8W8M`JWyZ6?b@*|7iC7eoFes^i3gJdyGbdZ45JGp)B}<>l|uV@ z8>5io#E|N=I62tKD5RLc_K*RrpSoat9ioedF=-UIS@ZoK2%Yul@>av^ixxy^MvdJi z7P~pu{>|&M<%Ke5;p{X6?)wev4D=-njL1Nr`op^Pe@>uJ zblj4$g-d^IOB-uze98*{Vk$ zYigZ;{FIQ`hNv&unog||nYFv7x(B)rIw!k?;XG=>yM(>8`JUrnp7sBd_F&QRhSjfg zjhO7#>p_g!ncg(5JJNF**j2fxDgd!HK z9oV@?^AI%E{HI~=CHMo)sqB(B9(iNE`yH}O96l*^@Sojr`TJq+rT0Tl%z9KA8Jl>{ zXIzUP%Ix1pxFP<2qVU!uB+NXXo4|p;RsI|CZ3z4oR(E`h{{r!E#kb-QCl8Wt zK74n9OF;(BX=zo37O(N?%9HQdyU&O<*L?jLk=mDN+ni`^Y}l3v`G03tzg+9j)6l;qZjl zw&RAosJ&j8GjMh&sIr{5pXMLd7PQ&-#Z%yU}x{8_^ccW(Yd zZ%SWoF;M@@;5zfKn;*=y+z}hS=thL=<5#B_CX`J7Had2~twRH)X6rTEKkGX%BW`J) zR_cKzRh5n(Cybjvx@64C)bmYC+SNbXU7h##a5Zy&@rqr`RM*qpCvM%8zgXLjwWy?Pn?IhD%*(DRII&8y)_%vc!zZp5 zZsea*f4g-OMI--HzbQuH_8UfAKPo+VVeTJ-0TK@vm_C_t*V0VE@ZDbXaDA;0M{9$w z8*FW;xiNpkD)-7`XZpGY-Ysr7T2v*UKwQ`%wD7+Zm-lYrRP%mEwCaX!T7T2iu`DFx zO2zp@gYPBXj@WnZHnI21$%lcTr1wMxKVGWQ*Uo(BnW184FQv;vtgpY6)K|OIINn-A zV*7QQ8yBKy-4;&vQ-B5MIvfw|?{Pd}+P|Q8bmgVj7s%De^vBib-*xHuk7eKnkA*Fc z1lV}Nfjj0lUFd)3>i?Gu)#W+s-J%v++ zpx1mSzkST}Trt1x3y&^+6*9oX@9Kg|cVmHDVOlQz!K@37RtGg17nu4EFEU3Tcer$I z;LH-ecWKdqAD-`=Si(`04Bu!uTH0R!)b`rc@fHDI zM^bjTH|8k6r;M3<$kO!5p=pa0XQ&RE`{d-iwe*>jp6&JCk(+7vY|>h>_DXS6<&0<6 z33igUgSgw4Pgpj;@LFL*i)6KrxID!}t8=012b${Bf=Wj=iG|6c5 zEiF0s-C4me*RB7>yW$XOz+cJWyW*nN1x^dt|EbmGH?n^`Cits6ION#@{P~O%-JE$r zEj(!RlI`alTzm?g!(Z5|WTKX3x8(~I5Bktn9Qydpchl;vYe!ldtcta78g8FY|8it& zQM{qD%=X;l^1;>jTgR5hF6XzsAnpXsUVrL%)qU|^o*R5LY935|a_CFurG4L~OJSIWfe5PR>W5>`7#cN|S5z;XUg`pvtt_*hN6&N`}>fc zCHfaVS%DnoO8nx%a{*(MT+V&NfsUO3-M zF)?`gY~6^wL$zhCvp)GPG}`|<^>l`+qwq%d$BC0X119P_7&BfvDNYMB`aCN0&5H!u zrxOn!EMQFDB6YTLsgBjkPpw5_sz*M1Zj+caX0nR?lZ2L+dL9SA2)})P^yHJ~o7YdZ z+#07GYkxJkB6Q-0#ze`+L9rv+dF;;-BR3@O(a8B6Fct31yo1U2iky6N|J_eP(Z<;? zBAf3w&MXMkt{o4!2qyjAo(A#bM%eH+{d$5-ayL&al2UB(NoW>vI~z>V(tNwv+m0WzS+mloK?Pj$J}Gex&`NI7%_|!Rdo9KTeh&rD!4}sWe6_Sxsx&r-g?@lggv#zD7^NF5Eo2 zbmYvmdpwQuy>9Ubho2eTJY8< zIC|FEZHIPmb~eA!9=-1HCiQ;zHalx3Y`)@_^2IdrV8w$rsXI<8vmEZt<8 diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4/Microsoft.Threading.Tasks.Extensions.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/sl4/Microsoft.Threading.Tasks.Extensions.dll deleted file mode 100644 index e911377c2c89e62a14d467bf882f2775ac94d708..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31440 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 K6L@$j2mk<=3txBu diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/win8/Microsoft.Threading.Tasks.Extensions.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/win8/Microsoft.Threading.Tasks.Extensions.dll deleted file mode 100644 index e911377c2c89e62a14d467bf882f2775ac94d708..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31440 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 K6L@$j2mk<=3txBu diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/wp8/Microsoft.Threading.Tasks.Extensions.Phone.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/wp8/Microsoft.Threading.Tasks.Extensions.Phone.dll deleted file mode 100644 index 1d110cc218b9269c9b6c8dd34bc98ff28037e93d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28896 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 bOd~sVymimPH2Q%nyxd+wgH-qOA@TnQKW6mV diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/wp8/Microsoft.Threading.Tasks.Extensions.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Async.1.0.16/lib/wp8/Microsoft.Threading.Tasks.Extensions.dll deleted file mode 100644 index e911377c2c89e62a14d467bf882f2775ac94d708..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31440 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 K6L@$j2mk<=3txBu diff --git a/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Build.1.0.4/tools/Microsoft.Bcl.Build.Tasks.dll b/external/rx/Rx/NET/Source/packages/Microsoft.Bcl.Build.1.0.4/tools/Microsoft.Bcl.Build.Tasks.dll deleted file mode 100644 index 2097a515cf873a9f8ea8768e51a21b68defbf4ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17920 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%0DnNOdVlv5FR$n_E~hpZ8f z(yMIii<2-Lfqs>`JzgAo-N>p^4~$RXt#l62Zbf&Qpe+kD^rO5lwW%DW z?mS&I3;e3vAxxYlv$AWDPs079|2&FSctnic6i|-+G+&X1q zjpR7TFF$Yq0}??$X77I4bXoSK#3yBpcAiFbhMx7aC8p@()xj*&XfS=s^jkvi3rHGp z_LuVc1GYpIbfn+R>=5U>4VO3Am=k;6eb>RRxRr3}Xym>5UpMWT#C(a}5$0p;UwBqU z+x=;Yc#0FS-zx61N`-7?uj0=T(z_@#4RuVOk z8>RiF@ewrLM-N(#J07NOn@~Hv@zxSNs%m&1C>1A4RnsSi&`#eW;0w3{;5%(qKc(D_ zHqR`1$aDkzNA@tt$TKPJ^bs-zwbbnD+F{@-i>FI5adlVUjn~ae5E#E}&~+ImUQz z>rwn}6qA<`@Od5M&9S9Zfui z4;v8HjbVDe^8z{?w z?Nxig#`#e?KY-=PHv7^ToddoL`Fwm_FyHA=`4WGKo7~7Oo31 zKhs{*MYdoChYdn1EhZb7k&eCDvHgw3zRU=wh0Djv{YP}7q ztbfkcWZ6uucStRMU4%D?DV%XqO$lX2ai+PIlt>Zvlpvk1%2ZuzVr|nRnXfugx)&Ck zK z`}VTd1?c0TEhj`@uBiihb6;~y9ehV2r$bsh4qoOMM~hAo-u2SvG6Hm%DH~XJhp(v-fy8t)sfkyWLEq8)x1g`@eB5jjo?5 z^>@3IMr+=i{V0%w6)83WD^_3Dqx$I-%m9=eeKh*3Jzv@L?1x|fVa<=e@nZ@QNXj~3Gt-%netxJNW8iw=^n#M-r20~^d5;dU! zTrb|x3J6=XA4S9r&m$9tnR*@+2<3vP>Jt!}Kp(eiZ23-OQ78h<@Yl+|7_apTv}zG3 zH1!hx19jYmFdLHiqIy6BUBjKuEx*j3*&5)YWv)dHs>WvIPV&tuN&H;Rm7*(Qd=`eH z@r4GLF{-9P4Qm#Vr1U8Tg&Mq+2{ zFxKN|W85DGp4_e5Fiv2{UKtE$Tf+Q?lRv`Qsznupd*l(-P@6qZ_B_saKQ+KMlR@*m zV$_1kbI+x;EEJVI0T_$^pY#}T*vUZOd*iLe2un@yL-d6!#On{CbGHPd7>q`w0dH5O zqr}_dEdfjuXO}lNC|bGhh4Hi8lUs1BF13H>Q2A7*-8(PYhBsySHQA7{pq$0KqRfs*`AyLN$`H17}Z}6AN$#U?P$m-qE*L z$iomp)TPihe|{lR4&@Tq2v1n^JT&SX2fwsvPbx;JeZ?bx(wb7o`r=FH|Tog?^t zkHSCk!3T0-5Vh$hJ3WEGzq}ojcS(*&^?$p}KC%RqVf@}@7?*4h4fYRyX59-~7aarKiRgBa z2Iv6o2R;C}3u*p*P5;%~?hOjALC4p9;)jv)VTwEVdIUWB@l_y|e^9YYVrgs>5w(vZ zdgjkcku!wcG^h?@?W%o^a6GMl140$(#QOpF#}>0CofDq*Xt(>L!o?C3Qi+%~xRhbGn94CBs=Qf@`R#QnT;$bpx4d9oLqQ|7zvD7e3{ z#Fb^w*k3}XyEjZx7j_@qu3_9#Rm74-=)wCS-YHdDHoIN#rb7zxIq&B1I|jK)vlnv5 zL@HZv0(Rq;j$x;TeK1|X;GJE^e6~x0JAr*X%jZ3)FNb%4ytn4vy)8Rb-f8hCEA2br z@p7+o`}}@qOm_Ek= #include "jni.h" + void* JNICALL ikvm_LoadLibrary(char* psz); + JNIEXPORT void* JNICALL ikvm_LoadLibrary(char* psz) { return g_module_open(psz, 0); } + void JNICALL ikvm_FreeLibrary(GModule* handle); + JNIEXPORT void JNICALL ikvm_FreeLibrary(GModule* handle) { g_module_close(handle); } + void* JNICALL ikvm_GetProcAddress(GModule* handle, char* name, jint argc); + JNIEXPORT void* JNICALL ikvm_GetProcAddress(GModule* handle, char* name, jint argc) { void *symbol; @@ -83,16 +89,22 @@ return NULL; } + void* JNICALL ikvm_mmap(int fd, jboolean writeable, jboolean copy_on_write, jlong position, jint size); + JNIEXPORT void* JNICALL ikvm_mmap(int fd, jboolean writeable, jboolean copy_on_write, jlong position, jint size) { return mmap(0, size, writeable ? PROT_WRITE | PROT_READ : PROT_READ, copy_on_write ? MAP_PRIVATE : MAP_SHARED, fd, position); } + int JNICALL ikvm_munmap(void* address, jint size); + JNIEXPORT int JNICALL ikvm_munmap(void* address, jint size) { return munmap(address, size); } + int JNICALL ikvm_msync(void* address, jint size); + JNIEXPORT int JNICALL ikvm_msync(void* address, jint size) { #if defined(__native_client__) && defined(USE_NEWLIB) diff --git a/libgc/Makefile.am b/libgc/Makefile.am index 49dbe4be81..a53aafcbf3 100644 --- a/libgc/Makefile.am +++ b/libgc/Makefile.am @@ -68,7 +68,7 @@ libmonogc_static_la_LDFLAGS = -static EXTRA_DIST += alpha_mach_dep.S mips_sgi_mach_dep.s sparc_mach_dep.S -AM_CFLAGS = @GC_CFLAGS@ +AM_CFLAGS = $(WERROR_CFLAGS) @GC_CFLAGS@ if CPLUSPLUS extra_checks = test_cpp diff --git a/libgc/Makefile.in b/libgc/Makefile.in index 0830dc26fa..6aa745d241 100644 --- a/libgc/Makefile.in +++ b/libgc/Makefile.in @@ -382,6 +382,7 @@ STRIP = @STRIP@ THREADDLLIBS = @THREADDLLIBS@ UNWINDLIBS = @UNWINDLIBS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -490,7 +491,7 @@ EXTRA_libmonogc_la_SOURCES = alpha_mach_dep.S \ libmonogc_static_la_SOURCES = $(libmonogc_la_SOURCES) libmonogc_static_la_LIBADD = $(libmonogc_la_LIBADD) libmonogc_static_la_LDFLAGS = -static -AM_CFLAGS = @GC_CFLAGS@ +AM_CFLAGS = $(WERROR_CFLAGS) @GC_CFLAGS@ @CPLUSPLUS_FALSE@extra_checks = @CPLUSPLUS_TRUE@extra_checks = test_cpp diff --git a/libgc/acinclude.m4 b/libgc/acinclude.m4 index 526d00c1be..5216cd14a5 100644 --- a/libgc/acinclude.m4 +++ b/libgc/acinclude.m4 @@ -22,8 +22,8 @@ if test x$GCC != xyes; then dolt_supported=no fi case $host in -i?86-*-linux*|x86_64-*-linux*|powerpc-*-linux*|powerpc64-*-linux* \ -|amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*|arm*-*-linux*|sparc*-*-linux*|mips*-*-linux*) +i?86-*-linux*|i?86-apple-darwin*|x86_64-*-linux*|powerpc-*-linux*|powerpc64-*-linux* \ +|amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*|arm*-*-linux*|sparc*-*-linux*|mips*-*-linux*|x86_64-apple-darwin*|aarch64*) pic_options='-fPIC' ;; ?86-pc-cygwin*|i?86-pc-cygwin*) diff --git a/libgc/configure.REMOVED.git-id b/libgc/configure.REMOVED.git-id index 50384deaaf..eec630ea9d 100644 --- a/libgc/configure.REMOVED.git-id +++ b/libgc/configure.REMOVED.git-id @@ -1 +1 @@ -52fde0f680f5be6f8d59ff02d5040350384ada1b \ No newline at end of file +ec75f52b4a09d98c0cc1707b0a0f796e4c7a91c0 \ No newline at end of file diff --git a/libgc/configure.ac b/libgc/configure.ac index 837e2cb9f1..7dc04985a9 100644 --- a/libgc/configure.ac +++ b/libgc/configure.ac @@ -531,6 +531,12 @@ fi AC_ARG_ENABLE(quiet-build, [ --enable-quiet-build Enable quiet libgc build (on by default)], enable_quiet_build=$enableval, enable_quiet_build=yes) AM_CONDITIONAL(USE_LIBDIR, test -z "$with_cross_host") +AC_ARG_ENABLE(werror, [ --enable-werror Pass -Werror to the C compiler], werror_flag=$enableval, werror_flag=no) +if test x$werror_flag = xyes; then + WERROR_CFLAGS="-Werror" +fi +AC_SUBST([WERROR_CFLAGS]) + if test "${multilib}" = "yes"; then multilib_arg="--enable-multilib" else diff --git a/libgc/doc/Makefile.in b/libgc/doc/Makefile.in index 4a9f711729..41fff87069 100644 --- a/libgc/doc/Makefile.in +++ b/libgc/doc/Makefile.in @@ -236,6 +236,7 @@ STRIP = @STRIP@ THREADDLLIBS = @THREADDLLIBS@ UNWINDLIBS = @UNWINDLIBS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ diff --git a/libgc/finalize.c b/libgc/finalize.c index 91f6970180..5626e87213 100644 --- a/libgc/finalize.c +++ b/libgc/finalize.c @@ -366,6 +366,15 @@ GC_process_togglerefs (void) GC_toggleref_array_size = w; } +/* Finalizer proc support */ +static void (*GC_object_finalized_proc) (GC_PTR obj); + +void +GC_set_finalizer_notify_proc (void (*proc) (GC_PTR obj)) +{ + GC_object_finalized_proc = proc; +} + static void push_and_mark_object (GC_PTR p) { @@ -877,6 +886,10 @@ void GC_finalize() fo_set_next(prev_fo, next_fo); } GC_fo_entries--; + + if (GC_object_finalized_proc) + GC_object_finalized_proc (real_ptr); + /* Add to list of objects awaiting finalization. */ fo_set_next(curr_fo, GC_finalize_now); GC_finalize_now = curr_fo; diff --git a/libgc/include/Makefile.in b/libgc/include/Makefile.in index 408a4a5f46..11f1224fec 100644 --- a/libgc/include/Makefile.in +++ b/libgc/include/Makefile.in @@ -252,6 +252,7 @@ STRIP = @STRIP@ THREADDLLIBS = @THREADDLLIBS@ UNWINDLIBS = @UNWINDLIBS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ diff --git a/libgc/include/gc.h b/libgc/include/gc.h index a3eb3c2dc0..4693a3d9a5 100644 --- a/libgc/include/gc.h +++ b/libgc/include/gc.h @@ -778,6 +778,10 @@ GC_API int GC_unregister_long_link GC_PROTO((GC_PTR * /* link */)); GC_API void GC_toggleref_register_callback GC_PROTO((int (*proccess_toggleref) (GC_PTR obj))); GC_API void GC_toggleref_add (GC_PTR object, int strong_ref); +/* finalizer callback support */ +GC_API void GC_set_finalizer_notify_proc GC_PROTO((void (*object_finalized) (GC_PTR obj))); + + /* Returns !=0 if GC_invoke_finalizers has something to do. */ GC_API int GC_should_invoke_finalizers GC_PROTO((void)); diff --git a/libgc/include/private/Makefile.in b/libgc/include/private/Makefile.in index adb9de4e74..69fd33dff7 100644 --- a/libgc/include/private/Makefile.in +++ b/libgc/include/private/Makefile.in @@ -192,6 +192,7 @@ STRIP = @STRIP@ THREADDLLIBS = @THREADDLLIBS@ UNWINDLIBS = @UNWINDLIBS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ diff --git a/libgc/m4/Makefile.in b/libgc/m4/Makefile.in index efcaed6595..b5fa04722d 100644 --- a/libgc/m4/Makefile.in +++ b/libgc/m4/Makefile.in @@ -192,6 +192,7 @@ STRIP = @STRIP@ THREADDLLIBS = @THREADDLLIBS@ UNWINDLIBS = @UNWINDLIBS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ diff --git a/libgc/mark_rts.c b/libgc/mark_rts.c index 4074879a71..b3e996a29c 100644 --- a/libgc/mark_rts.c +++ b/libgc/mark_rts.c @@ -375,8 +375,15 @@ ptr_t GC_approx_sp() /* doing something wrong. */ # ifdef _MSC_VER # pragma warning(disable:4172) +# endif +# if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 408) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wreturn-local-addr" # endif return((ptr_t)(&dummy)); +# if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 408) +# pragma GCC diagnostic pop +# endif # ifdef _MSC_VER # pragma warning(default:4172) # endif diff --git a/m4/Makefile.in b/m4/Makefile.in index b4e2847bdc..254a429464 100644 --- a/m4/Makefile.in +++ b/m4/Makefile.in @@ -161,6 +161,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -169,6 +170,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -235,6 +237,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -284,6 +287,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/man/Makefile.in b/man/Makefile.in index e1d1c55810..2d8708bab2 100644 --- a/man/Makefile.in +++ b/man/Makefile.in @@ -193,6 +193,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -201,6 +202,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -267,6 +269,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -316,6 +319,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/man/mprof-report.1 b/man/mprof-report.1 index de40af60d8..4b1b781681 100644 --- a/man/mprof-report.1 +++ b/man/mprof-report.1 @@ -211,6 +211,15 @@ The following commands are available: .IP \[bu] 2 \f[I]heapshot\f[]: perform a heapshot as soon as possible .RE +.IP \[bu] 2 +\f[I]counters\f[]: sample counters values every 1 second. This allow +a really lightweight way to have insight in some of the runtime key +metrics. Counters displayed in non verbose mode are : Methods from AOT, +Methods JITted using mono JIT, Methods JITted using LLVM, Total time +spent JITting (sec), User Time, System Time, Total Time, Working Set, +Private Bytes, Virtual Bytes, Page Faults and CPU Load Average (1min, +5min and 15min). +.RE .SS Analyzing the profile data .PP Currently there is a command line program (\f[I]mprof-report\f[]) @@ -284,6 +293,16 @@ where \f[I]MODE\f[] can be: .IP \[bu] 2 \f[I]bytes\f[]: the total number of bytes used by objects of the given type +.PP +To change the sort order of counters, use the option: +.PP +\f[B]--counters-sort=MODE\f[] +.PP +where \f[I]MODE\f[] can be: +.IP \[bu] 2 +\f[I]time\f[]: sort values by time then category +.IP \[bu] 2 +\f[I]category\f[]: sort values by category then time .SS Selecting what data to report .PP The profiler by default collects data about many runtime subsystems @@ -319,6 +338,8 @@ version \f[I]thread\f[]: thread information .IP \[bu] 2 \f[I]heapshot\f[]: live heap usage at heap shots +.IP \[bu] 2 +\f[I]counters\f[]: counters samples .PP It is possible to limit some of the data displayed to a timeframe of the program execution with the option: diff --git a/mcs/Makefile b/mcs/Makefile index 78af02bc44..a10dfa504c 100644 --- a/mcs/Makefile +++ b/mcs/Makefile @@ -24,7 +24,6 @@ centum_tests := \ class/System.XML \ class/Commons.Xml.Relaxng \ class/Cscompmgd \ - class/Microsoft.JScript \ class/Mono.Posix \ class/Mono.Security \ class/System.Design \ diff --git a/mcs/build/common/Consts.cs b/mcs/build/common/Consts.cs index 104d5c4d6d..a1884da3d0 100644 --- a/mcs/build/common/Consts.cs +++ b/mcs/build/common/Consts.cs @@ -34,7 +34,7 @@ static class Consts // Use these assembly version constants to make code more maintainable. // - public const string MonoVersion = "3.6.0.0"; + public const string MonoVersion = "3.8.0.0"; public const string MonoCompany = "Mono development team"; public const string MonoProduct = "Mono Common Language Infrastructure"; public const string MonoCopyright = "(c) Various Mono authors"; diff --git a/mcs/build/profiles/basic.make b/mcs/build/profiles/basic.make index c270cc81cc..12f6c82cff 100644 --- a/mcs/build/profiles/basic.make +++ b/mcs/build/profiles/basic.make @@ -65,7 +65,7 @@ do-profile-check: $(depsdir)/.stamp $(MAKE) -s do-profile-check-monolite ; \ else \ echo "*** The compiler '$(BOOTSTRAP_MCS)' doesn't appear to be usable." 1>&2; \ - echo "*** You need Mono version 2.4 or better installed to build MCS" 1>&2 ; \ + echo "*** You need Mono version 2.10 or better installed to build MCS" 1>&2 ; \ echo "*** Check mono README for information on how to bootstrap a Mono installation." 1>&2 ; \ exit 1; fi; fi diff --git a/mcs/class/Facades/System.Runtime.InteropServices/TypeForwarders.cs b/mcs/class/Facades/System.Runtime.InteropServices/TypeForwarders.cs index 48a4e24b5f..060d929226 100644 --- a/mcs/class/Facades/System.Runtime.InteropServices/TypeForwarders.cs +++ b/mcs/class/Facades/System.Runtime.InteropServices/TypeForwarders.cs @@ -40,6 +40,8 @@ [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.COMException))] [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComMemberType))] [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComSourceInterfacesAttribute))] +[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.IStream))] +[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.STATSTG))] [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.CriticalHandle))] [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.CurrencyWrapper))] //[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.CustomQueryInterfaceMode))] @@ -76,4 +78,3 @@ [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.UnmanagedType))] [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.VarEnum))] [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.VariantWrapper))] - diff --git a/mcs/class/Makefile b/mcs/class/Makefile index 1e604f9aae..b3d367cb2e 100644 --- a/mcs/class/Makefile +++ b/mcs/class/Makefile @@ -25,7 +25,7 @@ net_1_1_java_SUBDIRS = \ System.Runtime.Serialization.Formatters.Soap \ System.Runtime.Remoting -common_dirs := \ +net_2_0_dirs := \ corlib \ System \ System.XML \ @@ -78,14 +78,11 @@ common_dirs := \ Mono.Cecil \ Mono.Cecil.Mdb \ Mono.Debugger.Soft \ - SystemWebTestShim - -net_2_0_dirs := \ + SystemWebTestShim \ System.Xml.Linq \ System.Runtime.Serialization \ System.Data.DataSetExtensions \ System.Data.Linq \ - System.Web \ System.Web.Abstractions \ System.Web.Routing \ System.IdentityModel \ @@ -179,7 +176,6 @@ net_4_0_dirs := \ System.Xaml \ WindowsBase \ System.ServiceModel.Activation \ - System.ServiceModel \ System.ServiceModel.Routing \ System.ServiceModel.Discovery \ System.Runtime.Caching \ @@ -241,7 +237,7 @@ xbuild_4_0_dirs := \ $(xbuild_2_0_dirs) \ Microsoft.Build -net_2_0_SUBDIRS := $(common_dirs) $(net_2_0_dirs) $(net_2_0_only_dirs) $(xbuild_2_0_dirs) aot-compiler +net_2_0_SUBDIRS := $(net_2_0_dirs) $(net_2_0_only_dirs) $(xbuild_2_0_dirs) aot-compiler monodroid_SUBDIRS := $(mobile_dirs) $(monodroid_dirs) monotouch_SUBDIRS := $(mobile_dirs) $(monotouch_dirs) monotouch_runtime_SUBDIRS := $(monotouch_runtime_dirs) @@ -249,13 +245,13 @@ mobile_static_SUBDIRS := $(mobile_dirs) mobile_SUBDIRS := $(mobile_dirs) xammac_SUBDIRS := $(mobile_dirs) $(xammac_dirs) net_3_5_SUBDIRS := $(xbuild_2_0_dirs) -net_4_0_SUBDIRS := $(common_dirs) $(net_2_0_dirs) $(net_4_0_dirs) $(net_4_0_only_dirs) $(xbuild_4_0_dirs) -net_4_5_SUBDIRS := $(common_dirs) $(net_2_0_dirs) $(net_4_0_dirs) $(net_4_5_dirs) $(xbuild_4_0_dirs) aot-compiler +net_4_0_SUBDIRS := $(net_2_0_dirs) $(net_4_0_dirs) $(net_4_0_only_dirs) $(xbuild_4_0_dirs) +net_4_5_SUBDIRS := $(net_2_0_dirs) $(net_4_0_dirs) $(net_4_5_dirs) $(xbuild_4_0_dirs) aot-compiler xbuild_12_SUBDIRS := $(xbuild_4_0_dirs) include ../build/rules.make -SUBDIRS = $(common_dirs) $(net_2_0_dirs) $(net_2_0_only_dirs) $(mobile_dirs) $(monotouch_dirs) $(net_4_0_dirs) $(net_4_0_only_dirs) $(net_4_5_dirs) +SUBDIRS = $(net_2_0_dirs) $(net_2_0_only_dirs) $(mobile_dirs) $(monotouch_dirs) $(net_4_0_dirs) $(net_4_0_only_dirs) $(net_4_5_dirs) DIST_ONLY_SUBDIRS = dlr aot-compiler $(xbuild_4_0_dirs) diff --git a/mcs/class/Managed.Windows.Forms/Makefile b/mcs/class/Managed.Windows.Forms/Makefile index 7a7439b744..37a323899b 100644 --- a/mcs/class/Managed.Windows.Forms/Makefile +++ b/mcs/class/Managed.Windows.Forms/Makefile @@ -93,7 +93,10 @@ TEST_DISTFILES = \ Test/resources/32x32.ico \ Test/System.Resources/compat_1_1.resx \ Test/System.Resources/compat_2_0.resx \ - Test/System.Windows.Forms/bitmaps/a.png + Test/System.Windows.Forms/bitmaps/a.png \ + Test/DummyAssembly/AnotherSerializable.cs \ + Test/DummyAssembly/Convertable.cs \ + Test/DummyAssembly/Properties/AssemblyInfo.cs \ EXTRA_DISTFILES = \ README System.Windows.Forms.dll.resources \ @@ -106,6 +109,11 @@ TEST_MCS_FLAGS = /r:System.Data.dll /r:System.Drawing.dll /r:Accessibility.dll - -resource:Test/resources/32x32.ico,32x32.ico \ -nowarn:618,612 +DummyAssembly.dll: + $(CSCOMPILE) /target:library /out:$@ Test/DummyAssembly/AnotherSerializable.cs Test/DummyAssembly/Convertable.cs Test/DummyAssembly/Properties/AssemblyInfo.cs + +test-local: DummyAssembly.dll + include ../../build/library.make TEST_HARNESS_EXCLUDES = -exclude=Interactive,NotWorking,ValueAdd,CAS,InetAccess diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingSource.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingSource.cs index 3e928459ba..a16a996355 100644 --- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingSource.cs +++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingSource.cs @@ -207,6 +207,7 @@ namespace System.Windows.Forms { private void OnParentCurrencyManagerChanged (object sender, EventArgs args) { // Essentially handles chained data sources (e.g. chained BindingSource) + ResetDataMemberIfInvalid (); ResetList (); } @@ -349,6 +350,7 @@ namespace System.Windows.Forms { DisconnectDataSourceEvents (datasource); datasource = value; + ResetDataMemberIfInvalid (); ConnectDataSourceEvents (datasource); ResetList (); @@ -454,6 +456,19 @@ namespace System.Windows.Forms { } } + void ResetDataMemberIfInvalid () + { + if (datamember == String.Empty) + return; + + // if dataMember doesn't refer to a valid property of dataSource, we need to reset it + var property = ListBindingHelper.GetListItemProperties (datasource).Find (datamember, true); + if (property == null) { + datamember = String.Empty; + OnDataMemberChanged (EventArgs.Empty); + } + } + // NOTE: Probably the parsing can be improved void ProcessSortString (string sort) { diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CurrencyManager.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CurrencyManager.cs index 277e71c9c6..e69308f62f 100644 --- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CurrencyManager.cs +++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CurrencyManager.cs @@ -390,7 +390,8 @@ namespace System.Windows.Forms { else if (e.NewIndex <= listposition) { /* the deleted row was either the current one, or one earlier in the list. Update the index and emit PositionChanged, CurrentChanged, and ItemChanged. */ - ChangeRecordState (listposition+1, + // FIXME: this looks wrong, shouldn't it be (listposition - 1) instead of e.NewIndex ? + ChangeRecordState (e.NewIndex, false, false, e.NewIndex != listposition, false); } else { @@ -412,7 +413,7 @@ namespace System.Windows.Forms { } else { if (e.NewIndex <= listposition) { - ChangeRecordState (e.NewIndex, + ChangeRecordState (listposition + 1, false, false, false, false); OnItemChanged (new ItemChangedEventArgs (-1)); OnListChanged (e); diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ImageListStreamer.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ImageListStreamer.cs index a930aa9301..5fa129b4c0 100644 --- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ImageListStreamer.cs +++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ImageListStreamer.cs @@ -150,7 +150,7 @@ namespace System.Windows.Forms { } */ - static byte [] header = new byte []{ 77, 83, 70, 116, 73, 76, 3, 0 }; + static byte [] header = new byte []{ 77, 83, 70, 116, 73, 76, 1, 1 }; public void GetObjectData (SerializationInfo si, StreamingContext context) { MemoryStream stream = new MemoryStream (); @@ -169,7 +169,7 @@ namespace System.Windows.Forms { writer.Write ((ushort) (images [0].Width)); writer.Write ((ushort) (images [0].Height)); writer.Write (0xFFFFFFFF); //BackColor.ToArgb ()); //FIXME: should set the right one here. - writer.Write ((ushort) 0x1009); + writer.Write ((ushort) 0x21); for (int i = 0; i < 4; i++) writer.Write ((short) -1); diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListView.cs.REMOVED.git-id b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListView.cs.REMOVED.git-id index a5b0ee4eb6..2e108650fb 100644 --- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListView.cs.REMOVED.git-id +++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListView.cs.REMOVED.git-id @@ -1 +1 @@ -c1b7d791f8d2974c14d91a11622fb822eee0dafa \ No newline at end of file +f7075e8ef8f7cfbc0c67a85dbedc54b114523b38 \ No newline at end of file diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/NumericUpDown.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/NumericUpDown.cs index 5ffc23eb61..856137cb17 100644 --- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/NumericUpDown.cs +++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/NumericUpDown.cs @@ -109,7 +109,7 @@ namespace System.Windows.Forms { hexadecimal = false; increment = 1M; maximum = 100M; - minimum = 0.0M; + minimum = 0M; thousands_separator = false; Text = "0"; diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIX11.cs.REMOVED.git-id b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIX11.cs.REMOVED.git-id index d2abee0578..538b273725 100644 --- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIX11.cs.REMOVED.git-id +++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIX11.cs.REMOVED.git-id @@ -1 +1 @@ -e05a093aac549755036f160867f3515bc78def96 \ No newline at end of file +1f3af25846450af900f33b95ed551929392ee807 \ No newline at end of file diff --git a/mcs/class/Managed.Windows.Forms/Test/DummyAssembly/AnotherSerializable.cs b/mcs/class/Managed.Windows.Forms/Test/DummyAssembly/AnotherSerializable.cs new file mode 100644 index 0000000000..a6336ce275 --- /dev/null +++ b/mcs/class/Managed.Windows.Forms/Test/DummyAssembly/AnotherSerializable.cs @@ -0,0 +1,88 @@ +// +// AnotherSerializable.cs : Serializable Class used to test types from other +// assemblies for resources tests +// +// Author: +// Gary Barnett (gary.barnett.mono@gmail.com) +// +// Copyright (C) Gary Barnett (2012) +// +// +// 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.Runtime.Serialization; +using System.IO; +using System.Runtime.Serialization.Formatters.Binary; + +namespace DummyAssembly { + [SerializableAttribute] + public class AnotherSerializable : ISerializable { + public string name; + public string value; + + public AnotherSerializable () + { + } + + public AnotherSerializable (string name, string value) + { + this.name = name; + this.value = value; + } + + public AnotherSerializable (SerializationInfo info, StreamingContext ctxt) + { + name = (string) info.GetValue ("sername", typeof (string)); + value = (String) info.GetValue ("servalue", typeof (string)); + } + + public AnotherSerializable (Stream stream) + { + BinaryFormatter bFormatter = new BinaryFormatter (); + AnotherSerializable deser = (AnotherSerializable) bFormatter.Deserialize (stream); + stream.Close (); + + name = deser.name; + value = deser.value; + } + + public void GetObjectData (SerializationInfo info, StreamingContext ctxt) + { + info.AddValue ("sername", name); + info.AddValue ("servalue", value); + } + + public override string ToString () + { + return String.Format ("name={0};value={1}", this.name, this.value); + } + + public override bool Equals (object obj) + { + AnotherSerializable o = obj as AnotherSerializable; + if (o == null) + return false; + return this.name.Equals (o.name) && this.value.Equals (o.value); + } + } +} + diff --git a/mcs/class/Managed.Windows.Forms/Test/DummyAssembly/Convertable.cs b/mcs/class/Managed.Windows.Forms/Test/DummyAssembly/Convertable.cs new file mode 100644 index 0000000000..7f1ea03138 --- /dev/null +++ b/mcs/class/Managed.Windows.Forms/Test/DummyAssembly/Convertable.cs @@ -0,0 +1,119 @@ +// +// Convertable.cs : Class with type converter used to test types from other +// assemblies for resources tests +// +// Author: +// Gary Barnett (gary.barnett.mono@gmail.com) +// +// Copyright (C) Gary Barnett (2012) +// +// +// 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.Collections.Generic; +using System.Text; +using System.Runtime.Serialization.Formatters.Binary; +using System.IO; +using System.Runtime.Serialization; +using System.ComponentModel; + +namespace DummyAssembly { + + [SerializableAttribute] + [TypeConverter (typeof (ConvertableConverter))] + public class Convertable { + protected string name; + protected string value; + + public Convertable () + { + } + + public Convertable (string name, string value) + { + this.name = name; + this.value = value; + } + + public void GetObjectData (SerializationInfo info, StreamingContext ctxt) + { + info.AddValue ("sername", name); + info.AddValue ("servalue", value); + } + + public override string ToString () + { + return String.Format ("{0}\t{1}",name, value); + } + + public override bool Equals (object obj) + { + Convertable o = obj as Convertable; + if (o == null) + return false; + return this.name.Equals (o.name) && this.value.Equals (o.value); + } + } + + class ConvertableConverter : TypeConverter { + public ConvertableConverter () + { + } + + public override bool CanConvertFrom (ITypeDescriptorContext context, Type sourceType) + { + return sourceType == typeof (string); + } + + public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType) + { + return destinationType == typeof (string); + } + + public override object ConvertFrom (ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value) + { + if (value.GetType() != typeof (string)) + throw new Exception ("value not string"); + + string serialised = (string) value; + + string [] parts = serialised.Split ('\t'); + + if (parts.Length != 2) + throw new Exception ("string in incorrect format"); + + Convertable convertable = new Convertable (parts [0], parts [1]); + return convertable; + } + + public override object ConvertTo (ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType) + { + if (destinationType != typeof (String)) { + return base.ConvertTo (context, culture, value, destinationType); + } + + return ((Convertable) value).ToString (); + } + } + +} + diff --git a/mcs/class/Managed.Windows.Forms/Test/DummyAssembly/Properties/AssemblyInfo.cs b/mcs/class/Managed.Windows.Forms/Test/DummyAssembly/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..73e9fef7f1 --- /dev/null +++ b/mcs/class/Managed.Windows.Forms/Test/DummyAssembly/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle ("DummyAssembly")] +[assembly: AssemblyDescription ("")] +[assembly: AssemblyConfiguration ("")] +[assembly: AssemblyCompany ("")] +[assembly: AssemblyProduct ("DummyAssembly")] +[assembly: AssemblyCopyright ("")] +[assembly: AssemblyTrademark ("")] +[assembly: AssemblyCulture ("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible (false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid ("c80e062b-a918-4aa5-b62c-7455ca2c56d5")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion ("1.0.0.0")] +[assembly: AssemblyFileVersion ("1.0.0.0")] diff --git a/mcs/class/Managed.Windows.Forms/Test/System.Resources/ResXDataNodeTest.cs b/mcs/class/Managed.Windows.Forms/Test/System.Resources/ResXDataNodeTest.cs index fb231e2634..4c6ba44c18 100644 --- a/mcs/class/Managed.Windows.Forms/Test/System.Resources/ResXDataNodeTest.cs +++ b/mcs/class/Managed.Windows.Forms/Test/System.Resources/ResXDataNodeTest.cs @@ -144,15 +144,14 @@ namespace MonoTests.System.Resources { [Test] public void WriteRead1 () { - ResXResourceWriter rw = new ResXResourceWriter ("resx.resx"); serializable ser = new serializable ("aaaaa", "bbbbb"); ResXDataNode dn = new ResXDataNode ("test", ser); dn.Comment = "comment"; - rw.AddResource (dn); - rw.Close (); + + string resXFile = GetResXFileWithNode (dn, "resx.resx"); bool found = false; - ResXResourceReader rr = new ResXResourceReader ("resx.resx"); + ResXResourceReader rr = new ResXResourceReader (resXFile); rr.UseResXDataNodes = true; IDictionaryEnumerator en = rr.GetEnumerator (); while (en.MoveNext ()) { @@ -224,7 +223,6 @@ namespace MonoTests.System.Resources { ResXDataNode node = ((DictionaryEntry) en.Current).Value as ResXDataNode; rr.Close (); - File.Delete ("resx.resx"); Assert.IsNotNull (node,"#A1"); serializable o = node.GetValue ((AssemblyName []) null) as serializable; @@ -245,7 +243,6 @@ namespace MonoTests.System.Resources { ResXDataNode node = ((DictionaryEntry) en.Current).Value as ResXDataNode; rr.Close (); - File.Delete ("resx.resx"); Assert.IsNotNull (node, "#A1"); object o = node.GetValue ((AssemblyName []) null); diff --git a/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ClipboardTest.cs b/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ClipboardTest.cs index f90a1b98c1..198dcda427 100644 --- a/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ClipboardTest.cs +++ b/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ClipboardTest.cs @@ -104,6 +104,7 @@ namespace MonoTests.System.Windows.Forms } [Test] + [Category ("NotWorking")] // Doesn't work under Xvfb. public void DataRemainsOnClipboard_Xamarin4959 () { // Compile an app that puts something on the clipboard diff --git a/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/DataBindingTests.cs b/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/DataBindingTests.cs index e0261dc21b..aef76e0777 100644 --- a/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/DataBindingTests.cs +++ b/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/DataBindingTests.cs @@ -172,6 +172,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding row.Delete (); + Assert.AreEqual (-1, cm.Position); + // Console.WriteLine (event_log); Assert.AreEqual ( @@ -221,6 +223,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding row.Delete (); + Assert.AreEqual (0, cm.Position); + Console.WriteLine (event_log); Assert.AreEqual ( @@ -273,6 +277,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding row.Delete (); + Assert.AreEqual (0, cm.Position); + Console.WriteLine (event_log); #if WITH_BINDINGS @@ -323,6 +329,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding row.Delete (); + Assert.AreEqual (0, cm.Position); + Console.WriteLine (event_log); Assert.AreEqual ( @@ -379,6 +387,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding DataRow newrow = dataSet1.Tables[0].NewRow (); dataSet1.Tables[0].Rows.Add(newrow); + Assert.AreEqual (0, cm.Position); + Console.WriteLine (event_log); Assert.AreEqual ( @@ -434,6 +444,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding newrow = dataSet1.Tables[0].NewRow (); dataSet1.Tables[0].Rows.Add(newrow); + Assert.AreEqual (0, cm.Position); + Console.WriteLine (event_log); #if WITH_BINDINGS @@ -489,6 +501,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding newrow = dataSet1.Tables[0].NewRow (); dataSet1.Tables[0].Rows.InsertAt(newrow, 0); + Assert.AreEqual (2, cm.Position); + Console.WriteLine (event_log); Assert.AreEqual ( @@ -547,6 +561,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding newrow = dataSet1.Tables[0].NewRow (); dataSet1.Tables[0].Rows.InsertAt(newrow, 1); + Assert.AreEqual (2, cm.Position); + Console.WriteLine (event_log); Assert.AreEqual ( @@ -596,6 +612,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding dataSet1.Tables[0].Columns.Add(); + Assert.AreEqual (-1, cm.Position); + Console.WriteLine (event_log); #if NET_2_0 @@ -635,6 +653,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding dataSet1.Tables[0].Columns.Remove(dataSet1.Tables[0].Columns[1]); + Assert.AreEqual (-1, cm.Position); + Console.WriteLine (event_log); Assert.AreEqual ("0: MetaDataChanged\n", event_log, "2"); @@ -672,6 +692,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding dataSet1.Tables[0].Columns.Remove(dataSet1.Tables[0].Columns[0]); + Assert.AreEqual (-1, cm.Position); + Console.WriteLine (event_log); Assert.AreEqual ("0: MetaDataChanged\n", event_log, "3"); @@ -717,6 +739,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding dataSet1.Tables[0].Columns[0].ColumnName = "new name"; + Assert.AreEqual (-1, cm.Position); + Console.WriteLine (event_log); Assert.AreEqual ("0: MetaDataChanged\n", event_log, "3"); @@ -775,6 +799,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding row[column_name] = "hi"; row.EndEdit (); + Assert.AreEqual (0, cm.Position); + Console.WriteLine (event_log); Assert.AreEqual ( @@ -834,6 +860,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding row[column_name] = "hi"; cm.CancelCurrentEdit (); + Assert.AreEqual (0, cm.Position); + Console.WriteLine (event_log); Assert.AreEqual ("0: ItemChanged (index = 0)\n", event_log, "2"); @@ -875,6 +903,8 @@ namespace MonoTests.System.Windows.Forms.DataBinding DataRowView row = (DataRowView)cm.Current; row.Delete (); + Assert.AreEqual (-1, cm.Position); + Console.WriteLine (event_log); Assert.AreEqual ( diff --git a/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/FormEventTest.cs b/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/FormEventTest.cs index 9a7e9bcfb4..9712812c29 100644 --- a/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/FormEventTest.cs +++ b/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/FormEventTest.cs @@ -642,6 +642,7 @@ namespace MonoTests.System.Windows.Forms private static int oipt_t1 = 0; private static int oipt_t2 = 0; [Test] + [NUnit.Framework.Category ("NotWorking")] public void OneIdlePerThread () { Thread t = Thread.CurrentThread; oipt_t1 = t.ManagedThreadId; diff --git a/mcs/class/Managed.Windows.Forms/resources/keyboards.resx.REMOVED.git-id b/mcs/class/Managed.Windows.Forms/resources/keyboards.resx.REMOVED.git-id index ff2386e148..52c6811b04 100644 --- a/mcs/class/Managed.Windows.Forms/resources/keyboards.resx.REMOVED.git-id +++ b/mcs/class/Managed.Windows.Forms/resources/keyboards.resx.REMOVED.git-id @@ -1 +1 @@ -f6f5fadb7df800a00159edd72fc76b254c96b3a9 \ No newline at end of file +4fac9f436ca5607cef5cc90e693448cbee76000e \ No newline at end of file diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionParser.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionParser.cs index ec538abc29..b5e2e809ae 100644 --- a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionParser.cs +++ b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionParser.cs @@ -182,7 +182,7 @@ namespace Microsoft.Build.BuildEngine { e = new ConditionFactorExpression (token); } else if (token.Type == TokenType.Item || token.Type == TokenType.Property || token.Type == TokenType.Metadata) { - e = ParseReferenceExpression (token.Value); + e = ParseReferenceExpression (token.Value [0]); } else if (token.Type == TokenType.Not) { e = ParseNotExpression (); } else @@ -224,21 +224,33 @@ namespace Microsoft.Build.BuildEngine { } //@prefix: @ or $ - ConditionExpression ParseReferenceExpression (string prefix) + ConditionExpression ParseReferenceExpression (char prefix) { - StringBuilder sb = new StringBuilder (); - - string ref_type = prefix [0] == '$' ? "a property" : "an item list"; int token_pos = tokenizer.Token.Position; + string ref_type = prefix == '$' ? "a property" : "an item list"; IsAtToken (TokenType.LeftParen, String.Format ( "Expected {0} at position {1} in condition \"{2}\". Missing opening parantheses after the '{3}'.", ref_type, token_pos, conditionStr, prefix)); - tokenizer.GetNextToken (); + + if (prefix == '$') { + // + // Tjhe scan should consider quoted parenthesis but it breaks on .net as well + // we are bug compatible + // + tokenizer.ScanForClosingParens (); + } else { + tokenizer.GetNextToken (); + } + + if (tokenizer.IsEOF ()) + throw new ExpressionParseException ("Missing closing parenthesis in condition " + conditionStr); + + StringBuilder sb = new StringBuilder (); sb.AppendFormat ("{0}({1}", prefix, tokenizer.Token.Value); tokenizer.GetNextToken (); - if (prefix == "@" && tokenizer.Token.Type == TokenType.Transform) { + if (prefix == '@' && tokenizer.Token.Type == TokenType.Transform) { tokenizer.GetNextToken (); sb.AppendFormat ("->'{0}'", tokenizer.Token.Value); @@ -250,9 +262,7 @@ namespace Microsoft.Build.BuildEngine { } } - IsAtToken (TokenType.RightParen, String.Format ( - "Expected {0} at position {1} in condition \"{2}\". Missing closing parantheses'.", - ref_type, token_pos, conditionStr, prefix)); + IsAtToken (TokenType.RightParen, "Missing closing parenthesis in condition " + conditionStr); tokenizer.GetNextToken (); sb.Append (")"); diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionTokenizer.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionTokenizer.cs index 29a4aba628..d9ee74475d 100644 --- a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionTokenizer.cs +++ b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionTokenizer.cs @@ -257,6 +257,29 @@ namespace Microsoft.Build.BuildEngine { } else throw new ExpressionParseException (String.Format ("Invalid token: {0}", ch)); } + + public void ScanForClosingParens (int parensCounter = 1) + { + tokenPosition = position; + int start = position; + int ch; + while ((ch = ReadChar ()) >= 0) { + switch (ch) { + case ')': + if (--parensCounter == 0) { + --position; + token = new Token (inputString.Substring (start, position - start), TokenType.String, tokenPosition); + return; + } + break; + case '(': + ++parensCounter; + break; + } + } + + token = new Token (null, TokenType.EOF, tokenPosition); + } public int TokenPosition { get { return tokenPosition; } diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Expression.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Expression.cs index 655224f89a..ccfc0fa3a0 100644 --- a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Expression.cs +++ b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Expression.cs @@ -55,6 +55,14 @@ namespace Microsoft.Build.BuildEngine { internal class Expression { + enum TokenKind + { + OpenParens, + CloseParens, + Dot, + End + } + ExpressionCollection expressionCollection; static Regex item_regex; @@ -232,6 +240,7 @@ namespace Microsoft.Build.BuildEngine { pos += 2; int start = pos; int end = 0; + bool requires_closing_parens = true; var ch = text [pos]; if ((ch == 'r' || ch == 'R') && text.Substring (pos + 1).StartsWith ("egistry:", StringComparison.OrdinalIgnoreCase)) { @@ -273,6 +282,7 @@ namespace Microsoft.Build.BuildEngine { // Simple property reference $(Foo) // phase.Add (new PropertyReference (name)); + requires_closing_parens = false; } else { end = 0; } @@ -287,6 +297,14 @@ namespace Microsoft.Build.BuildEngine { pos = end; } + + if (requires_closing_parens) { + end = text.IndexOf (')', pos); + if (end < 0) + end = 0; + else + pos = end + 1; + } } end = text.IndexOf ("$(", pos, StringComparison.Ordinal); @@ -493,70 +511,71 @@ namespace Microsoft.Build.BuildEngine { static MemberInvocationReference ParseInvocation (string text, ref int p, Type type, IReference instance) { - var open_parens = text.IndexOf ('(', p); - string name; - int end; - List args; + TokenKind token; + MemberInvocationReference mir = null; - // - // Is it method or property - // - if (open_parens > 0) { - name = text.Substring (p, open_parens - p); + while (true) { + int prev = p; + token = ScanName (text, ref p); + var name = text.Substring (prev, p - prev).TrimEnd (); - // - // It can be instance method on static property - // - if (name.IndexOf ('.') > 0) { - var names = name.Split ('.'); - int i; - for (i = 0; i < names.Length - 1; ++i) { - instance = new MemberInvocationReference (type, names [i]) { - Instance = instance - }; - } + switch (token) { + case TokenKind.Dot: + case TokenKind.OpenParens: + break; + case TokenKind.CloseParens: + return new MemberInvocationReference (type, name) { + Instance = instance + }; - type = null; - name = names [i]; - } - ++open_parens; - args = ParseArguments (text, ref open_parens); - end = text.IndexOf (')', open_parens); - } else { - end = text.IndexOf (')', p); - if (end < 0) - throw new InvalidProjectFileException (string.Format ("Invalid static method invocation syntax '{0}'", text.Substring (p))); + case TokenKind.End: + if (mir == null || name.Length != 0) + throw new InvalidProjectFileException (string.Format ("Invalid static method invocation syntax '{0}'", text.Substring (p))); - name = text.Substring (p, end - p); - - // - // It can be instance member on static property - // - if (name.IndexOf ('.') > 0) { - var names = name.Split ('.'); - int i; - for (i = 0; i < names.Length - 1; ++i) { - instance = new MemberInvocationReference (type, names [i]) { - Instance = instance - }; - } - - type = null; - name = names [i]; + return mir; + default: + throw new NotImplementedException (); } - args = null; + instance = mir = new MemberInvocationReference (type, name) { + Instance = instance + }; + + if (type != null) { + if (!IsMethodAllowed (type, name)) + throw new InvalidProjectFileException (string.Format ("The function '{0}' on type '{1}' has not been enabled for execution", name, type.FullName)); + + type = null; + } + + if (token == TokenKind.OpenParens) { + ++p; + mir.Arguments = ParseArguments (text, ref p); + } + + if (p < text.Length && text [p] == '.') { + ++p; + continue; + } + + return mir; + } + } + + static TokenKind ScanName (string text, ref int p) + { + for (; p < text.Length; ++p) { + switch (text [p]) { + case '(': + return TokenKind.OpenParens; + case '.': + return TokenKind.Dot; + case ')': + return TokenKind.CloseParens; + } } - name = name.TrimEnd (); - if (!IsMethodAllowed (type, name)) - throw new InvalidProjectFileException (string.Format ("The function '{0}' on type '{1}' has not been enabled for execution", name, type.FullName)); - - p = end + 1; - return new MemberInvocationReference (type, name) { - Arguments = args, - Instance = instance - }; + return TokenKind.End; } ArrayList SplitMetadata (string text) diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Import.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Import.cs index 351aea0208..b4d996faa9 100644 --- a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Import.cs +++ b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Import.cs @@ -274,7 +274,11 @@ namespace Microsoft.Build.BuildEngine { continue; if (!Directory.Exists (extn_path)) { - project.ParentEngine.LogMessage (MessageImportance.Low, "Extension path '{0}' not found, ignoring.", extn_path); + if (extn_path != DotConfigExtensionsPath) + project.ParentEngine.LogMessage ( + MessageImportance.Low, + "Extension path '{0}' not found, ignoring.", + extn_path); continue; } diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/MemberInvocationReference.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/MemberInvocationReference.cs index ada57788f2..6430992fba 100644 --- a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/MemberInvocationReference.cs +++ b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/MemberInvocationReference.cs @@ -63,10 +63,16 @@ namespace Microsoft.Build.BuildEngine { var flags = BindingFlags.IgnoreCase | BindingFlags.Public; object target; + string member_name = name; if (Instance == null) { target = null; - flags |= BindingFlags.Static; + if (string.Equals (member_name, "new", StringComparison.OrdinalIgnoreCase)) { + member_name = ConstructorInfo.ConstructorName; + flags |= BindingFlags.CreateInstance | BindingFlags.Instance; + } else { + flags |= BindingFlags.Static; + } } else { var mir = Instance as MemberInvocationReference; if (mir != null) { @@ -91,14 +97,14 @@ namespace Microsoft.Build.BuildEngine } else { flags |= BindingFlags.InvokeMethod; ExpandArguments (project, options); - args = PrepareMethodArguments (flags); + args = PrepareMethodArguments (member_name, flags); if (args == null) throw new InvalidProjectFileException (string.Format ("Method '{0}({1})' arguments cannot be evaluated'", name, string.Join (", ", Arguments.ToArray ()))); } object value; try { - value = type.InvokeMember (name, flags, null, target, args, CultureInfo.InvariantCulture); + value = type.InvokeMember (member_name, flags, null, target, args, CultureInfo.InvariantCulture); } catch (MissingFieldException) { // // It can be field/constant instead of a property @@ -106,7 +112,7 @@ namespace Microsoft.Build.BuildEngine if (args == null && Instance == null) { flags &= ~BindingFlags.GetProperty; flags |= BindingFlags.GetField; - value = type.InvokeMember (name, flags, null, null, null, CultureInfo.InvariantCulture); + value = type.InvokeMember (member_name, flags, null, null, null, CultureInfo.InvariantCulture); } else { throw; } @@ -132,9 +138,9 @@ namespace Microsoft.Build.BuildEngine } } - object[] PrepareMethodArguments (BindingFlags flags) + object[] PrepareMethodArguments (string name, BindingFlags flags) { - var candidates = type.GetMember (name, MemberTypes.Method, flags); + var candidates = type.GetMember (name, MemberTypes.Method | MemberTypes.Constructor, flags); object[] args = null; ParameterInfo[] best = null; foreach (MethodBase candidate in candidates) { diff --git a/mcs/class/Microsoft.Build.Engine/Test/various/Conditions.cs b/mcs/class/Microsoft.Build.Engine/Test/various/Conditions.cs index 51c3da6cfb..c3c8dacabc 100644 --- a/mcs/class/Microsoft.Build.Engine/Test/various/Conditions.cs +++ b/mcs/class/Microsoft.Build.Engine/Test/various/Conditions.cs @@ -357,6 +357,24 @@ namespace MonoTests.Microsoft.Build.BuildEngine.Various { Assert.IsNull (proj.EvaluatedProperties ["A"], "A1"); } + [Test] + public void TestCondition_References () + { + Engine engine = new Engine (Consts.BinPath); + Project proj = engine.CreateNewProject (); + + string documentString = @" + + + valid + + + "; + + proj.LoadXml (documentString); + + Assert.AreEqual ("valid", proj.GetEvaluatedProperty ("A"), "#1"); + } [Test] public void TestHasTrailingSlash1 () diff --git a/mcs/class/Microsoft.Build.Engine/Test/various/Properties.cs b/mcs/class/Microsoft.Build.Engine/Test/various/Properties.cs index b45bc39228..795a712306 100644 --- a/mcs/class/Microsoft.Build.Engine/Test/various/Properties.cs +++ b/mcs/class/Microsoft.Build.Engine/Test/various/Properties.cs @@ -175,6 +175,22 @@ namespace MonoTests.Microsoft.Build.BuildEngine.Various { Assert.AreEqual (DateTime.Now.Year.ToString (), proj.GetEvaluatedProperty ("Prop1"), "#1"); } + [Test] + public void InstanceMembersOnStaticMethod () + { + string documentString = @" + + + $([System.String]::Concat('a', 'bb', 'c').Length.GetHashCode ()) + + + + "; + + proj.LoadXml (documentString); + Assert.AreEqual (4.GetHashCode ().ToString (), proj.GetEvaluatedProperty ("Prop1"), "#1"); + } + [Test] public void MSBuildPropertyFunctions () { @@ -190,6 +206,23 @@ namespace MonoTests.Microsoft.Build.BuildEngine.Various { proj.LoadXml (documentString); Assert.AreEqual ("6.6", proj.GetEvaluatedProperty ("Prop1"), "#1"); - } + } + + [Test] + public void Constructor () + { + string documentString = @" + + + 0.6 + 6 + $([System.String]::new('value').EndsWith ('ue')) + + + "; + + proj.LoadXml (documentString); + Assert.AreEqual ("True", proj.GetEvaluatedProperty ("Prop1"), "#1"); + } } } diff --git a/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/CommandLineBuilder.cs b/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/CommandLineBuilder.cs index c50ddf774c..1a8fac12b7 100644 --- a/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/CommandLineBuilder.cs +++ b/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/CommandLineBuilder.cs @@ -328,8 +328,13 @@ namespace Microsoft.Build.Utilities } } } - - protected void AppendTextUnquoted (string textToAppend) + +#if NET_4_0 + public +#else + protected +#endif + void AppendTextUnquoted (string textToAppend) { commandLine.Append (textToAppend); } diff --git a/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/ToolLocationHelper.cs b/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/ToolLocationHelper.cs index 7717a1f9ee..f3aa310c09 100644 --- a/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/ToolLocationHelper.cs +++ b/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/ToolLocationHelper.cs @@ -190,9 +190,9 @@ namespace Microsoft.Build.Utilities string targetFrameworkProfile) { var path = Path.Combine (xbuildFxDir, targetFrameworkIdentifier); - if (targetFrameworkVersion != null) { + if (!string.IsNullOrEmpty (targetFrameworkVersion)) { path = Path.Combine (path, targetFrameworkVersion); - if (targetFrameworkProfile != null) + if (!string.IsNullOrEmpty (targetFrameworkProfile)) path = Path.Combine (path, "Profile", targetFrameworkProfile); } if (!Directory.Exists (path)) @@ -200,7 +200,6 @@ namespace Microsoft.Build.Utilities var flist = Path.Combine (path, "RedistList", "FrameworkList.xml"); if (!File.Exists (flist)) return null; - var xml = XmlReader.Create (flist); xml.MoveToContent (); var targetFxDir = xml.GetAttribute ("TargetFrameworkDirectory"); diff --git a/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities_test.dll.sources b/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities_test.dll.sources index b1a3758e98..4e2248a2d4 100644 --- a/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities_test.dll.sources +++ b/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities_test.dll.sources @@ -2,4 +2,5 @@ Microsoft.Build.Utilities/CommandLineBuilderTest.cs Microsoft.Build.Utilities/LoggerTest.cs Microsoft.Build.Utilities/TaskItemTest.cs Microsoft.Build.Utilities/TaskLoggingHelperTest.cs +Microsoft.Build.Utilities/ToolLocationHelperTest.cs Microsoft.Build.Utilities/ToolTaskTest.cs diff --git a/mcs/class/Microsoft.Build.Utilities/Test/Microsoft.Build.Utilities/ToolLocationHelperTest.cs b/mcs/class/Microsoft.Build.Utilities/Test/Microsoft.Build.Utilities/ToolLocationHelperTest.cs new file mode 100644 index 0000000000..fbb567d282 --- /dev/null +++ b/mcs/class/Microsoft.Build.Utilities/Test/Microsoft.Build.Utilities/ToolLocationHelperTest.cs @@ -0,0 +1,21 @@ +#if NET_4_0 +using System; +using NUnit.Framework; +using Microsoft.Build.Utilities; + +namespace MonoTests.Microsoft.Build.Utilities +{ + [TestFixture] + public class ToolLocationHelperTest + { + [Test] + [Category ("NotWorking")] // this test needs extra xbuild testing settings, as the target framework path is different. + public void GetPathToStandardLibraries () + { + Assert.IsTrue (!string.IsNullOrEmpty (ToolLocationHelper.GetPathToStandardLibraries (".NETFramework", "v4.0", null)), "std path"); + Assert.IsTrue (!string.IsNullOrEmpty (ToolLocationHelper.GetPathToStandardLibraries (".NETFramework", "v4.0", string.Empty)), "empty Profile path"); + } + } +} + +#endif diff --git a/mcs/class/Microsoft.Build/Microsoft.Build.Construction/ProjectRootElement.cs b/mcs/class/Microsoft.Build/Microsoft.Build.Construction/ProjectRootElement.cs index d7d5d77249..c9bcf5cdda 100644 --- a/mcs/class/Microsoft.Build/Microsoft.Build.Construction/ProjectRootElement.cs +++ b/mcs/class/Microsoft.Build/Microsoft.Build.Construction/ProjectRootElement.cs @@ -533,6 +533,8 @@ namespace Microsoft.Build.Construction var item = CreateItemGroupElement (); AppendChild (item); return item; + case "ImportGroup": + return AddImportGroup (); case "Import": return AddImport (null); case "Target": diff --git a/mcs/class/Microsoft.Build/Microsoft.Build.Evaluation/ProjectCollection.cs b/mcs/class/Microsoft.Build/Microsoft.Build.Evaluation/ProjectCollection.cs index 4c77665733..4170fa0025 100644 --- a/mcs/class/Microsoft.Build/Microsoft.Build.Evaluation/ProjectCollection.cs +++ b/mcs/class/Microsoft.Build/Microsoft.Build.Evaluation/ProjectCollection.cs @@ -494,6 +494,11 @@ namespace Microsoft.Build.Evaluation }); yield return create ("MSBuildToolsPath", () => toolset.ToolsPath); yield return create ("MSBuildToolsVersion", () => toolset.ToolsVersion); + + // This is an implementation specific special property for this Microsoft.Build.dll to differentiate + // the build from Microsoft.Build.Engine.dll. It is significantly used in some *.targets file we share + // between old and new build engine. + yield return create ("MonoUseMicrosoftBuildDll", () => "True"); } // These are required for reserved property, represents dynamically changing property values. diff --git a/mcs/class/Microsoft.Build/Microsoft.Build.Execution/ProjectInstance.cs b/mcs/class/Microsoft.Build/Microsoft.Build.Execution/ProjectInstance.cs index cb6badde21..00d9802134 100644 --- a/mcs/class/Microsoft.Build/Microsoft.Build.Execution/ProjectInstance.cs +++ b/mcs/class/Microsoft.Build/Microsoft.Build.Execution/ProjectInstance.cs @@ -164,7 +164,7 @@ namespace Microsoft.Build.Execution // FIXME: this is kind of workaround for unavoidable issue that PLATFORM=* is actually given // on some platforms and that prevents setting default "PLATFORM=AnyCPU" property. if (!string.Equals ("PLATFORM", (string) p.Key, StringComparison.OrdinalIgnoreCase)) - this.properties [(string) p.Key] = new ProjectPropertyInstance ((string) p.Key, false, (string) p.Value); + this.properties [(string) p.Key] = new ProjectPropertyInstance ((string) p.Key, true, (string) p.Value); foreach (var p in global_properties) this.properties [p.Key] = new ProjectPropertyInstance (p.Key, false, p.Value); var tools = projects.GetToolset (tools_version) ?? projects.GetToolset (projects.DefaultToolsVersion); @@ -256,7 +256,7 @@ namespace Microsoft.Build.Execution void EvaluateItems (ProjectRootElement xml, IEnumerable elements) { - foreach (var child in elements) { + foreach (var child in elements.Reverse ()) { var ige = child as ProjectItemGroupElement; if (ige != null) { foreach (var p in ige.Items) { @@ -435,6 +435,7 @@ namespace Microsoft.Build.Execution var parameters = new BuildParameters (projects) { ForwardingLoggers = remoteLoggers, Loggers = loggers, + DefaultToolsVersion = projects.DefaultToolsVersion, }; var requestData = new BuildRequestData (this, targets ?? DefaultTargets.ToArray ()); var result = manager.Build (parameters, requestData); diff --git a/mcs/class/Microsoft.Build/Microsoft.Build.Internal/BuildEngine4.cs b/mcs/class/Microsoft.Build/Microsoft.Build.Internal/BuildEngine4.cs index 4540fa0f31..4dc8b32c94 100644 --- a/mcs/class/Microsoft.Build/Microsoft.Build.Internal/BuildEngine4.cs +++ b/mcs/class/Microsoft.Build/Microsoft.Build.Internal/BuildEngine4.cs @@ -37,6 +37,7 @@ using Microsoft.Build.Exceptions; using System.Globalization; using Microsoft.Build.Construction; using Microsoft.Build.Internal.Expressions; +using System.Xml; namespace Microsoft.Build.Internal { @@ -121,17 +122,23 @@ namespace Microsoft.Build.Internal try { - var initialPropertiesFormatted = "Initial Properties:\n" + string.Join (Environment.NewLine, project.Properties.OrderBy (p => p.Name).Select (p => string.Format ("{0} = {1}", p.Name, p.EvaluatedValue)).ToArray ()); - LogMessageEvent (new BuildMessageEventArgs (initialPropertiesFormatted, null, null, MessageImportance.Low)); + var initialGlobalPropertiesFormatted = "Initial Global Properties:\n" + string.Join (Environment.NewLine, project.Properties.OrderBy (p => p.Name).Where (p => p.IsImmutable).Select (p => string.Format ("{0} = {1}", p.Name, p.EvaluatedValue)).ToArray ()); + LogMessageEvent (new BuildMessageEventArgs (initialGlobalPropertiesFormatted, null, null, MessageImportance.Low)); + var initialProjectPropertiesFormatted = "Initial Project Properties:\n" + string.Join (Environment.NewLine, project.Properties.OrderBy (p => p.Name).Where (p => !p.IsImmutable).Select (p => string.Format ("{0} = {1}", p.Name, p.EvaluatedValue)).ToArray ()); + LogMessageEvent (new BuildMessageEventArgs (initialProjectPropertiesFormatted, null, null, MessageImportance.Low)); var initialItemsFormatted = "Initial Items:\n" + string.Join (Environment.NewLine, project.Items.OrderBy (i => i.ItemType).Select (i => string.Format ("{0} : {1}", i.ItemType, i.EvaluatedInclude)).ToArray ()); LogMessageEvent (new BuildMessageEventArgs (initialItemsFormatted, null, null, MessageImportance.Low)); // null targets -> success. empty targets -> success(!) + foreach (var targetName in (request.ProjectInstance.InitialTargets).Where (t => t != null)) + BuildTargetByName (targetName, args); if (request.TargetNames == null) - args.Result.OverallResult = BuildResultCode.Success; + args.Result.OverallResult = args.CheckCancel () ? BuildResultCode.Failure : args.Result.ResultsByTarget.Any (p => p.Value.ResultCode == TargetResultCode.Failure) ? BuildResultCode.Failure : BuildResultCode.Success; else { - foreach (var targetName in (args.TargetNames ?? request.TargetNames).Where (t => t != null)) - BuildTargetByName (targetName, args); + foreach (var targetName in (args.TargetNames ?? request.TargetNames).Where (t => t != null)) { + if (!BuildTargetByName (targetName, args)) + break; + } // FIXME: check .NET behavior, whether cancellation always results in failure. args.Result.OverallResult = args.CheckCancel () ? BuildResultCode.Failure : args.Result.ResultsByTarget.Any (p => p.Value.ResultCode == TargetResultCode.Failure) ? BuildResultCode.Failure : BuildResultCode.Success; @@ -253,6 +260,7 @@ namespace Microsoft.Build.Internal var value = args.Project.ExpandString (p.Value); project.SetProperty (p.Name, value); } + continue; } var ii = child as ProjectItemGroupTaskInstance; @@ -264,6 +272,7 @@ namespace Microsoft.Build.Internal continue; project.AddItem (item.ItemType, project.ExpandString (item.Include)); } + continue; } var task = child as ProjectTaskInstance; @@ -275,7 +284,14 @@ namespace Microsoft.Build.Internal } if (!RunBuildTask (target, task, targetResult, args)) return false; + continue; } + + var onError = child as ProjectOnErrorInstance; + if (onError != null) + continue; // evaluated under catch clause. + + throw new NotSupportedException (string.Format ("Unexpected Target element children \"{0}\"", child.GetType ())); } } catch (Exception ex) { // fallback task specified by OnError element @@ -452,7 +468,7 @@ namespace Microsoft.Build.Internal } public void SetMetadataValueLiteral (string metadataName, string metadataValue) { - metadata [metadataName] = ProjectCollection.Unescape (metadataValue); + metadata [metadataName] = WindowsCompatibilityExtensions.NormalizeFilePath (ProjectCollection.Unescape (metadataValue)); } public IDictionary CloneCustomMetadataEscaped () { @@ -490,7 +506,7 @@ namespace Microsoft.Build.Internal } public void SetMetadata (string metadataName, string metadataValue) { - metadata [metadataName] = metadataValue; + metadata [metadataName] = WindowsCompatibilityExtensions.NormalizeFilePath (metadataValue); } public string ItemSpec { get; set; } public int MetadataCount { @@ -574,13 +590,16 @@ namespace Microsoft.Build.Internal // To NOT reuse this IBuildEngine instance for different build, we create another BuildManager and BuildSubmisson and then run it. public bool BuildProjectFile (string projectFileName, string[] targetNames, IDictionary globalProperties, IDictionary targetOutputs, string toolsVersion) { + toolsVersion = string.IsNullOrEmpty (toolsVersion) ? project.ToolsVersion : toolsVersion; var globalPropertiesThatMakeSense = new Dictionary (); foreach (DictionaryEntry p in globalProperties) globalPropertiesThatMakeSense [(string) p.Key] = (string) p.Value; - var result = new BuildManager ().Build (this.submission.BuildManager.OngoingBuildParameters.Clone (), new BuildRequestData (projectFileName, globalPropertiesThatMakeSense, toolsVersion, targetNames, null)); - foreach (var p in result.ResultsByTarget) - targetOutputs [p.Key] = p.Value.Items; - return result.OverallResult == BuildResultCode.Success; + var projectToBuild = new ProjectInstance (ProjectRootElement.Create (XmlReader.Create (projectFileName)), globalPropertiesThatMakeSense, toolsVersion, Projects); + IDictionary outs; + var ret = projectToBuild.Build (targetNames ?? new string [] {"Build"}, Projects.Loggers, out outs); + foreach (var p in outs) + targetOutputs [p.Key] = p.Value.Items ?? new ITaskItem [0]; + return ret; } public bool BuildProjectFilesInParallel (string[] projectFileNames, string[] targetNames, IDictionary[] globalProperties, IDictionary[] targetOutputsPerProject, string[] toolsVersion, bool useResultsCache, bool unloadProjectsOnCompletion) diff --git a/mcs/class/Microsoft.Build/Microsoft.Build.Internal/ExpressionConstructs.cs b/mcs/class/Microsoft.Build/Microsoft.Build.Internal/ExpressionConstructs.cs index 587db74962..6cd0b1670e 100644 --- a/mcs/class/Microsoft.Build/Microsoft.Build.Internal/ExpressionConstructs.cs +++ b/mcs/class/Microsoft.Build/Microsoft.Build.Internal/ExpressionConstructs.cs @@ -212,6 +212,16 @@ namespace Microsoft.Build.Internal.Expressions get { return string.Format ("%([{0}].[{1}])", ItemType, Metadata); } } } + + partial class QuotedExpression : Expression + { + public char QuoteChar { get; set; } + public ExpressionList Contents { get; set; } + + public override string ExpressionString { + get { return QuoteChar + string.Concat (Contents.Select (e => e.ExpressionString)).Replace (QuoteChar.ToString (), "\\" + QuoteChar) + QuoteChar; } + } + } partial class StringLiteral : Expression { diff --git a/mcs/class/Microsoft.Build/Microsoft.Build.Internal/ExpressionEvaluator.cs b/mcs/class/Microsoft.Build/Microsoft.Build.Internal/ExpressionEvaluator.cs index 696447c884..7fbd1cf554 100644 --- a/mcs/class/Microsoft.Build/Microsoft.Build.Internal/ExpressionEvaluator.cs +++ b/mcs/class/Microsoft.Build/Microsoft.Build.Internal/ExpressionEvaluator.cs @@ -346,12 +346,12 @@ namespace Microsoft.Build.Internal.Expressions var args = Access.Arguments.Select (e => e.EvaluateAsObject (context)).ToArray (); var method = FindMethod (type, Access.Name.Name, args); if (method == null) - throw new InvalidProjectFileException (Location, string.Format ("access to undefined static method '{0}' of '{1}' at {2}", Access.Name.Name, Access.Target.EvaluateAsString (context), Location)); + throw new InvalidProjectFileException (Location, string.Format ("access to undefined static method '{0}' of '{1}' at {2}", Access.Name.Name, type, Location)); return method.Invoke (null, AdjustArgsForCall (method, args)); } else { var prop = type.GetProperty (Access.Name.Name); if (prop == null) - throw new InvalidProjectFileException (Location, string.Format ("access to undefined static property '{0}' of '{1}' at {2}", Access.Name.Name, Access.Target.EvaluateAsString (context), Location)); + throw new InvalidProjectFileException (Location, string.Format ("access to undefined static property '{0}' of '{1}' at {2}", Access.Name.Name, type, Location)); return prop.GetValue (null, null); } } @@ -491,6 +491,30 @@ namespace Microsoft.Build.Internal.Expressions return EvaluateAsString (context); } } + + partial class QuotedExpression : Expression + { + public override string EvaluateAsString (EvaluationContext context) + { + return QuoteChar + EvaluateAsStringWithoutQuote (context) + QuoteChar; + } + + public string EvaluateAsStringWithoutQuote (EvaluationContext context) + { + return string.Concat (Contents.Select (e => e.EvaluateAsString (context))); + } + + public override bool EvaluateAsBoolean (EvaluationContext context) + { + var ret = EvaluateAsStringWithoutQuote (context); + return EvaluateStringAsBoolean (context, ret); + } + + public override object EvaluateAsObject (EvaluationContext context) + { + return EvaluateAsStringWithoutQuote (context); + } + } partial class FunctionCallExpression : Expression { diff --git a/mcs/class/Microsoft.Build/Microsoft.Build.Internal/ExpressionParserManual.cs b/mcs/class/Microsoft.Build/Microsoft.Build.Internal/ExpressionParserManual.cs index a8c7dc4d61..73bac64445 100644 --- a/mcs/class/Microsoft.Build/Microsoft.Build.Internal/ExpressionParserManual.cs +++ b/mcs/class/Microsoft.Build/Microsoft.Build.Internal/ExpressionParserManual.cs @@ -60,14 +60,13 @@ namespace Microsoft.Build.Internal.Expressions while (start < end) { int bak = start; ret.Add (ParseSingle (ref start, end)); - SkipSpaces (ref start); if (bak == start) throw new Exception ("Parser failed to progress token position: " + source); } return ret; } - static readonly char [] token_starters = "$@%(),".ToCharArray (); + static readonly char [] token_starters = "$@%(),'\"".ToCharArray (); Expression ParseSingle (ref int start, int end) { @@ -101,7 +100,23 @@ namespace Microsoft.Build.Internal.Expressions ret = EvaluateItemExpression (start, last); start = last + 1; return ret; - + + case '\'': + case '"': + var quoteChar = source [start]; + start++; + last = FindMatchingCloseQuote (quoteChar, start, end); + if (last < 0) { + if (validation_type == ExpressionValidationType.StrictBoolean) + throw new InvalidProjectFileException (string.Format ("expression did not have matching ')' since index {0} in \"{1}\"", start, source)); + else { + start--; + goto default; // treat as raw literal to the section end + } + } + ret = new QuotedExpression () { QuoteChar = quoteChar, Contents = Parse (start, last) }; + start = last + 1; + return ret; // Below (until default) are important only for Condition evaluation case '(': if (validation_type == ExpressionValidationType.LaxString) @@ -134,7 +149,7 @@ namespace Microsoft.Build.Internal.Expressions return ret; } } - + int FindMatchingCloseParen (int start, int end) { int n = 0; @@ -148,7 +163,21 @@ namespace Microsoft.Build.Internal.Expressions } return -1; // invalid } - + + int FindMatchingCloseQuote (char quote, int start, int end) + { + int n = 0; + for (int i = start; i < end; i++) { + if (i < end + 1 && source [i] == '\\' && (source [i + 1] == quote || source [i + 1] == '\\')) + n += 2; + else if (source [i] == quote) { + if (n-- == 0) + return i; + } + } + return -1; // invalid + } + static readonly string spaces = " \t\r\n"; void SkipSpaces (ref int start) @@ -166,6 +195,7 @@ namespace Microsoft.Build.Internal.Expressions // property access without member specification int parenAt = source.IndexOf ('(', start, end - start); string name = parenAt < 0 ? source.Substring (start, end - start) : source.Substring (start, parenAt - start); + name = name.Trim (); var access = new PropertyAccess () { Name = new NameToken () { Name = name }, TargetType = PropertyTargetType.Object @@ -181,6 +211,7 @@ namespace Microsoft.Build.Internal.Expressions int mstart = dotAt + 1; int parenAt = source.IndexOf ('(', mstart, end - mstart); string name = parenAt < 0 ? source.Substring (mstart, end - mstart) : source.Substring (mstart, parenAt - mstart); + name = name.Trim (); var access = new PropertyAccess () { Name = new NameToken () { Name = name }, TargetType = PropertyTargetType.Object, @@ -196,10 +227,11 @@ namespace Microsoft.Build.Internal.Expressions string type = source.Substring (start, colonsAt - start); if (type.Length < 2 || type [0] != '[' || type [type.Length - 1] != ']') throw new InvalidProjectFileException (string.Format ("Static function call misses appropriate type name surrounded by '[' and ']' at {0} in \"{1}\"", start, source)); - type = type.Substring (1, type.Length - 2); + type = type.Substring (1, type.Length - 2).Trim (); start = colonsAt + 2; int parenAt = source.IndexOf ('(', start, end - start); string member = parenAt < 0 ? source.Substring (start, end - start) : source.Substring (start, parenAt - start); + member = member.Trim (); if (member.Length == 0) throw new InvalidProjectFileException ("Static member name is missing"); var access = new PropertyAccess () { @@ -228,6 +260,7 @@ namespace Microsoft.Build.Internal.Expressions if (source [start] != ',') throw new InvalidProjectFileException (string.Format ("invalid function call arguments specification. ',' is expected, got '{0}'", source [start])); start++; + SkipSpaces (ref start); } args.Add (ParseSingle (ref start, end)); } while (true); diff --git a/mcs/class/Microsoft.Build/Test/Microsoft.Build.Evaluation/ProjectCollectionTest.cs b/mcs/class/Microsoft.Build/Test/Microsoft.Build.Evaluation/ProjectCollectionTest.cs index 700a41663d..2430ecce09 100644 --- a/mcs/class/Microsoft.Build/Test/Microsoft.Build.Evaluation/ProjectCollectionTest.cs +++ b/mcs/class/Microsoft.Build/Test/Microsoft.Build.Evaluation/ProjectCollectionTest.cs @@ -40,6 +40,10 @@ namespace MonoTests.Microsoft.Build.Evaluation public class ProjectCollectionTest { [Test] +#if NET_4_0 + // BXC #20961 + [Category ("NotWorking")] +#endif public void GlobalProperties () { var g = ProjectCollection.GlobalProjectCollection; diff --git a/mcs/class/Microsoft.Build/Test/Microsoft.Build.Evaluation/ProjectTest.cs b/mcs/class/Microsoft.Build/Test/Microsoft.Build.Evaluation/ProjectTest.cs index ed81f8155d..f5f880a0b5 100644 --- a/mcs/class/Microsoft.Build/Test/Microsoft.Build.Evaluation/ProjectTest.cs +++ b/mcs/class/Microsoft.Build/Test/Microsoft.Build.Evaluation/ProjectTest.cs @@ -173,6 +173,10 @@ namespace MonoTests.Microsoft.Build.Evaluation } [Test] +#if NET_4_0 + // BXC #20961 + [Category ("NotWorking")] +#endif public void BuildCSharpTargetBuild () { string project_xml = @" @@ -254,6 +258,10 @@ namespace MonoTests.Microsoft.Build.Evaluation } [Test] +#if NET_4_0 + // BXC #20961 + [Category ("NotWorking")] +#endif public void CreateProjectInstance () { string project_xml = @" @@ -270,6 +278,10 @@ namespace MonoTests.Microsoft.Build.Evaluation } [Test] +#if NET_4_0 + // BXC #20961 + [Category ("NotWorking")] +#endif public void LoadCaseInsensitive () { string project_xml = @" diff --git a/mcs/class/Microsoft.Build/Test/Microsoft.Build.Execution/ProjectInstanceTest.cs b/mcs/class/Microsoft.Build/Test/Microsoft.Build.Execution/ProjectInstanceTest.cs index 44157a8444..30524ffd27 100644 --- a/mcs/class/Microsoft.Build/Test/Microsoft.Build.Execution/ProjectInstanceTest.cs +++ b/mcs/class/Microsoft.Build/Test/Microsoft.Build.Execution/ProjectInstanceTest.cs @@ -291,6 +291,56 @@ namespace MonoTests.Microsoft.Build.Execution Assert.IsNotNull (p, "#1"); Assert.AreEqual ("False", p.EvaluatedValue, "#2"); } + + [Test] + public void ConditionalExpression () + { + string project_xml = @" + + true + $(ResolveAssemblyReferencesDependsOn);_AddCorlibReference + +"; + var xml = XmlReader.Create (new StringReader (project_xml)); + var root = ProjectRootElement.Create (xml); + root.FullPath = "ProjectInstanceTest.ConditionalExpression.proj"; + var proj = new ProjectInstance (root); + var p = proj.GetProperty ("ResolveAssemblyReferencesDependsOn"); + Assert.IsNotNull (p, "#1"); + Assert.AreEqual (";_AddCorlibReference", p.EvaluatedValue, "#2"); + } + + [Test] + [Category ("NotWorking")] // until we figure out why it fails on wrench. + public void ItemsInTargets () + { + string project_xml = @" + + + <_ExplicitMSCorlibPath>$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPathToStandardLibraries ('$(TargetFrameworkIdentifier)', '$(TargetFrameworkVersion)', '$(TargetFrameworkProfile)'))\mscorlib.dll + + + <_ExplicitReference + Include='$(_ExplicitMSCorlibPath)' + Condition='Exists($(_ExplicitMSCorlibPath))'> + false + + + + +"; + var xml = XmlReader.Create (new StringReader (project_xml)); + var root = ProjectRootElement.Create (xml); + root.FullPath = "ProjectInstanceTest.ConditionalExpression.proj"; + var proj = new ProjectInstance (root, null, "4.0", ProjectCollection.GlobalProjectCollection); + proj.Build (); + // make sure the property value expansion is done successfully. + Assert.IsTrue (!string.IsNullOrEmpty (proj.GetPropertyValue ("_ExplicitMSCorlibPath")), "premise: propertyValue by ToolLocationHelper func call"); + var items = proj.GetItems ("_ExplicitReference"); + // make sure items are stored after build. + Assert.IsTrue (items.Any (), "items.Any"); + Assert.IsTrue (!string.IsNullOrEmpty (items.First ().EvaluatedInclude), "item.EvaluatedInclude"); + } } namespace SubNamespace diff --git a/mcs/class/Microsoft.Build/Test/Microsoft.Build.Internal/ExpressionParserTest.cs b/mcs/class/Microsoft.Build/Test/Microsoft.Build.Internal/ExpressionParserTest.cs index ebd662e249..16694f7622 100644 --- a/mcs/class/Microsoft.Build/Test/Microsoft.Build.Internal/ExpressionParserTest.cs +++ b/mcs/class/Microsoft.Build/Test/Microsoft.Build.Internal/ExpressionParserTest.cs @@ -335,6 +335,22 @@ namespace MonoTests.Microsoft.Build.Internal var result = p.Build (new ILogger [] { new ConsoleLogger (LoggerVerbosity.Minimal, sw.WriteLine, null, null)}); Assert.IsTrue (result, "#1: " + sw); } + + [Test] + public void FunctionCall () + { + string project_xml = @" + + + +"; + var xml = XmlReader.Create (new StringReader (project_xml)); + var root = ProjectRootElement.Create (xml); + var p = new ProjectInstance (root, null, "4.0", ProjectCollection.GlobalProjectCollection); + var sw = new StringWriter (); + var result = p.Build (new ILogger [] { new ConsoleLogger (LoggerVerbosity.Minimal, sw.WriteLine, null, null)}); + Assert.IsTrue (result, "#1: " + sw); + } } } diff --git a/mcs/class/Mono.Cairo/Mono.Cairo/Context.cs b/mcs/class/Mono.Cairo/Mono.Cairo/Context.cs index 1eff46c1ec..57cb86cd8b 100644 --- a/mcs/class/Mono.Cairo/Mono.Cairo/Context.cs +++ b/mcs/class/Mono.Cairo/Mono.Cairo/Context.cs @@ -161,10 +161,10 @@ namespace Cairo { } } - [Obsolete ("Use SetSourceRGBA method")] + [Obsolete ("Use SetSourceColor method")] public Color Color { set { - NativeMethods.cairo_set_source_rgba (handle, value.R, value.G, value.B, value.A); + SetSourceColor (value); } } @@ -280,6 +280,12 @@ namespace Cairo { } } + public bool HasCurrentPoint { + get { + return NativeMethods.cairo_has_current_point (handle); + } + } + [Obsolete ("Use GetTarget/SetTarget")] public Cairo.Surface Target { set { @@ -331,6 +337,11 @@ namespace Cairo { get { return NativeMethods.cairo_get_reference_count (handle); } } + public void SetSourceColor (Color color) + { + NativeMethods.cairo_set_source_rgba (handle, color.R, color.G, color.B, color.A); + } + public void SetSourceRGB (double r, double g, double b) { NativeMethods.cairo_set_source_rgb (handle, r, g, b); @@ -548,6 +559,11 @@ namespace Cairo { NativeMethods.cairo_reset_clip (handle); } + public bool InClip (double x, double y) + { + return NativeMethods.cairo_in_clip (handle, x, y); + } + public bool InStroke (double x, double y) { return NativeMethods.cairo_in_stroke (handle, x, y); diff --git a/mcs/class/Mono.Cairo/Mono.Cairo/NativeMethods.cs b/mcs/class/Mono.Cairo/Mono.Cairo/NativeMethods.cs index c53f0009c0..8509c6db25 100644 --- a/mcs/class/Mono.Cairo/Mono.Cairo/NativeMethods.cs +++ b/mcs/class/Mono.Cairo/Mono.Cairo/NativeMethods.cs @@ -258,6 +258,10 @@ namespace Cairo [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_glyph_path (IntPtr cr, IntPtr glyphs, int num_glyphs); + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + [return: MarshalAs (UnmanagedType.U1)] + internal static extern bool cairo_has_current_point (IntPtr cr); + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_identity_matrix (IntPtr cr); @@ -292,6 +296,10 @@ namespace Cairo [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern int cairo_image_surface_get_width (IntPtr surface); + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + [return: MarshalAs (UnmanagedType.U1)] + internal static extern bool cairo_in_clip (IntPtr cr, double x, double y); + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] [return: MarshalAs (UnmanagedType.U1)] internal static extern bool cairo_in_fill (IntPtr cr, double x, double y); diff --git a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLite3.cs b/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLite3.cs index 567d6bc1bf..d2ef1f6316 100644 --- a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLite3.cs +++ b/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLite3.cs @@ -652,11 +652,37 @@ namespace Mono.Data.Sqlite return UnsafeNativeMethods.sqlite3_aggregate_count(context); } +#if MONOTOUCH + class FunctionData { + public SQLiteCallback Func; + public SQLiteCallback FuncStep; + public SQLiteFinalCallback FuncFinal; + } +#endif + internal override void CreateFunction(string strFunction, int nArgs, bool needCollSeq, SQLiteCallback func, SQLiteCallback funcstep, SQLiteFinalCallback funcfinal) { int n; -#if !SQLITE_STANDARD +#if MONOTOUCH + var data = new FunctionData(); + data.Func = func; + data.FuncStep = funcstep; + data.FuncFinal = funcfinal; + SQLiteCallback func_callback = func == null ? null : new SQLiteCallback(scalar_callback); + SQLiteCallback funcstep_callback = funcstep == null ? null : new SQLiteCallback(step_callback); + SQLiteFinalCallback funcfinal_callback = funcfinal == null ? null : new SQLiteFinalCallback(final_callback); + + IntPtr user_data; + user_data = GCHandle.ToIntPtr(GCHandle.Alloc(data)); + n = UnsafeNativeMethods.sqlite3_create_function_v2(_sql, ToUTF8(strFunction), nArgs, 4, user_data, func_callback, funcstep_callback, funcfinal_callback, destroy_callback); + + if (n == 0) { + // sqlite3_create_function_v2 will call 'destroy_callback' if it fails, so we need to recreate the gchandle here. + user_data = GCHandle.ToIntPtr(GCHandle.Alloc(data)); + n = UnsafeNativeMethods.sqlite3_create_function_v2(_sql, ToUTF8(strFunction), nArgs, 1, user_data, func_callback, funcstep_callback, funcfinal_callback, destroy_callback); + } +#elif !SQLITE_STANDARD n = UnsafeNativeMethods.sqlite3_create_function_interop(_sql, ToUTF8(strFunction), nArgs, 4, IntPtr.Zero, func, funcstep, funcfinal, (needCollSeq == true) ? 1 : 0); if (n == 0) n = UnsafeNativeMethods.sqlite3_create_function_interop(_sql, ToUTF8(strFunction), nArgs, 1, IntPtr.Zero, func, funcstep, funcfinal, (needCollSeq == true) ? 1 : 0); #else @@ -673,6 +699,38 @@ namespace Mono.Data.Sqlite if (n > 0) throw new SqliteException(n, SQLiteLastError()); } +#if MONOTOUCH + [MonoTouch.MonoPInvokeCallback(typeof(SQLiteCallback))] + internal static void scalar_callback(IntPtr context, int nArgs, IntPtr argsptr) + { + var handle = GCHandle.FromIntPtr (UnsafeNativeMethods.sqlite3_user_data(context)); + var func = (FunctionData)handle.Target; + func.Func(context, nArgs, argsptr); + } + + [MonoTouch.MonoPInvokeCallback(typeof(SQLiteCallback))] + internal static void step_callback(IntPtr context, int nArgs, IntPtr argsptr) + { + var handle = GCHandle.FromIntPtr(UnsafeNativeMethods.sqlite3_user_data(context)); + var func = (FunctionData)handle.Target; + func.FuncStep(context, nArgs, argsptr); + } + + [MonoTouch.MonoPInvokeCallback(typeof(SQLiteFinalCallback))] + internal static void final_callback(IntPtr context) + { + var handle = GCHandle.FromIntPtr(UnsafeNativeMethods.sqlite3_user_data(context)); + var func = (FunctionData)handle.Target; + func.FuncFinal(context); + } + + [MonoTouch.MonoPInvokeCallback(typeof(SQLiteFinalCallback))] + internal static void destroy_callback(IntPtr context) + { + GCHandle.FromIntPtr(context).Free(); + } +#endif + internal override int ContextCollateCompare(CollationEncodingEnum enc, IntPtr context, string s1, string s2) { #if !SQLITE_STANDARD diff --git a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/UnsafeNativeMethods.cs b/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/UnsafeNativeMethods.cs index 7e5c153906..bde7bdeb3d 100644 --- a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/UnsafeNativeMethods.cs +++ b/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/UnsafeNativeMethods.cs @@ -141,6 +141,13 @@ namespace Mono.Data.Sqlite #endif internal static extern int sqlite3_create_function(IntPtr db, byte[] strName, int nArgs, int nType, IntPtr pvUser, SQLiteCallback func, SQLiteCallback fstep, SQLiteFinalCallback ffinal); +#if !PLATFORM_COMPACTFRAMEWORK + [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)] +#else + [DllImport(SQLITE_DLL)] +#endif + internal static extern int sqlite3_create_function_v2(IntPtr db, byte[] strName, int nArgs, int nType, IntPtr pvUser, SQLiteCallback func, SQLiteCallback fstep, SQLiteFinalCallback ffinal, SQLiteFinalCallback fdestroy); + #if !PLATFORM_COMPACTFRAMEWORK [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)] #else @@ -692,7 +699,14 @@ namespace Mono.Data.Sqlite [DllImport(SQLITE_DLL)] #endif internal static extern int sqlite3_config (SQLiteConfig config); - + +#if !PLATFORM_COMPACTFRAMEWORK + [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)] +#else + [DllImport(SQLITE_DLL)] +#endif + internal static extern IntPtr sqlite3_user_data (IntPtr context); + #if !PLATFORM_COMPACTFRAMEWORK [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)] #else diff --git a/mcs/class/Mono.Data.Sqlite/Test/SqliteFunctionTests.cs b/mcs/class/Mono.Data.Sqlite/Test/SqliteFunctionTests.cs index 55038e926f..294a591a81 100644 --- a/mcs/class/Mono.Data.Sqlite/Test/SqliteFunctionTests.cs +++ b/mcs/class/Mono.Data.Sqlite/Test/SqliteFunctionTests.cs @@ -43,5 +43,27 @@ namespace MonoTests.Mono.Data.Sqlite return string.Compare (param1, param2); } } + + [SqliteFunction(Name = "TestScalar", FuncType = FunctionType.Scalar)] + public class TestScalar : SqliteFunction + { + public override object Invoke (object[] args) + { + return null; + } + } + + [SqliteFunction(Name = "TestAggregate", FuncType = FunctionType.Aggregate)] + public class TestAggregate : SqliteFunction + { + public override void Step(object[] args, int stepNumber, ref object contextData) + { + } + + public override object Final (object contextData) + { + return null; + } + } } } diff --git a/mcs/class/Mono.Debugger.Soft/Makefile b/mcs/class/Mono.Debugger.Soft/Makefile index 57e2b054b1..1c4dd2792a 100644 --- a/mcs/class/Mono.Debugger.Soft/Makefile +++ b/mcs/class/Mono.Debugger.Soft/Makefile @@ -8,6 +8,11 @@ LIB_MCS_FLAGS = /r:$(corlib) /r:System.dll /r:Mono.Cecil.dll /r:System.Core.dll TEST_MCS_FLAGS = /r:Mono.Cecil.dll /r:System.dll /r:System.Core.dll +VALID_TEST_PROFILE := $(filter net_4_5, $(PROFILE)) + +# The test exe is not profile specific, and compiling a 2.0 will make the 4.5 tests fail +ifdef VALID_TEST_PROFILE + test-local: dtest-app.exe dtest-excfilter.exe dtest-app.exe: Test/dtest-app.cs @@ -16,6 +21,13 @@ dtest-app.exe: Test/dtest-app.cs dtest-excfilter.exe: Test/dtest-excfilter.il MONO_PATH=$(topdir)/class/lib/$(PROFILE) $(INTERNAL_ILASM) -out:$@ /exe /debug Test/dtest-excfilter.il +else + +NO_TEST=1 +check: + +endif + CLEAN_FILES = dtest-app.exe dtest-app.exe.mdb dtest-excfilter.exe dtest-excfilter.exe.mdb EXTRA_DISTFILES = \ diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs index 6d196aabba..14bf701f46 100644 --- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs +++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs @@ -157,7 +157,9 @@ namespace Mono.Debugger.Soft enum InvokeFlags { NONE = 0x0, DISABLE_BREAKPOINTS = 0x1, - SINGLE_THREADED = 0x2 + SINGLE_THREADED = 0x2, + OUT_THIS = 0x4, + OUT_ARGS = 0x8, } enum ElementType { @@ -404,8 +406,7 @@ namespace Mono.Debugger.Soft static readonly bool EnableConnectionLogging = !String.IsNullOrEmpty (Environment.GetEnvironmentVariable ("MONO_SDB_LOG")); static int ConnectionId; - readonly StreamWriter LoggingStream = EnableConnectionLogging ? - new StreamWriter (string.Format ("/tmp/sdb_conn_log_{0}", ConnectionId++), false) : null; + readonly StreamWriter LoggingStream; /* * Th version of the wire-protocol implemented by the library. The library @@ -415,7 +416,7 @@ namespace Mono.Debugger.Soft * with newer runtimes, and vice versa. */ internal const int MAJOR_VERSION = 2; - internal const int MINOR_VERSION = 34; + internal const int MINOR_VERSION = 35; enum WPSuspendPolicy { NONE = 0, @@ -1068,6 +1069,19 @@ namespace Mono.Debugger.Soft reply_cbs = new Dictionary (); reply_cb_counts = new Dictionary (); reply_packets_monitor = new Object (); + if (EnableConnectionLogging) { + var path = Environment.GetEnvironmentVariable ("MONO_SDB_LOG"); + if (path.Contains ("{0}")) { + //C:\SomeDir\sdbLog{0}.txt -> C:\SomeDir\sdbLog1.txt + LoggingStream = new StreamWriter (string.Format (path, ConnectionId++), false); + } else if (Path.HasExtension (path)) { + //C:\SomeDir\sdbLog.txt -> C:\SomeDir\sdbLog1.txt + LoggingStream = new StreamWriter (Path.GetDirectoryName (path) + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension (path) + ConnectionId++ + "." + Path.GetExtension (path), false); + } else { + //C:\SomeDir\sdbLog -> C:\SomeDir\sdbLog1 + LoggingStream = new StreamWriter (path + ConnectionId++, false); + } + } } protected abstract int TransportReceive (byte[] buf, int buf_offset, int len); @@ -1432,18 +1446,18 @@ namespace Mono.Debugger.Soft // public void StartBuffering () { buffer_packets = true; - if (Version.AtLeast (3, 34)) + if (Version.AtLeast (2, 34)) VM_StartBuffering (); } public void StopBuffering () { - if (Version.AtLeast (3, 34)) + if (Version.AtLeast (2, 34)) VM_StopBuffering (); buffer_packets = false; WritePackets (buffered_packets); if (EnableConnectionLogging) { - LoggingStream.WriteLine (String.Format ("Sent {1} packets.", buffered_packets.Count)); + LoggingStream.WriteLine (String.Format ("Sent {0} packets.", buffered_packets.Count)); LoggingStream.Flush (); } buffered_packets.Clear (); @@ -1655,24 +1669,39 @@ namespace Mono.Debugger.Soft } } - internal delegate void InvokeMethodCallback (ValueImpl v, ValueImpl exc, ErrorCode error, object state); + internal delegate void InvokeMethodCallback (ValueImpl v, ValueImpl exc, ValueImpl out_this, ValueImpl[] out_args, ErrorCode error, object state); + + void read_invoke_res (PacketReader r, out ValueImpl v, out ValueImpl exc, out ValueImpl out_this, out ValueImpl[] out_args) { + int resflags = r.ReadByte (); + v = null; + exc = null; + out_this = null; + out_args = null; + if (resflags == 0) { + exc = r.ReadValue (); + } else { + v = r.ReadValue (); + if ((resflags & 2) != 0) + out_this = r.ReadValue (); + if ((resflags & 4) != 0) { + int nargs = r.ReadInt (); + out_args = new ValueImpl [nargs]; + for (int i = 0; i < nargs; ++i) + out_args [i] = r.ReadValue (); + } + } + } internal int VM_BeginInvokeMethod (long thread, long method, ValueImpl this_arg, ValueImpl[] arguments, InvokeFlags flags, InvokeMethodCallback callback, object state) { return Send (CommandSet.VM, (int)CmdVM.INVOKE_METHOD, new PacketWriter ().WriteId (thread).WriteInt ((int)flags).WriteId (method).WriteValue (this_arg).WriteInt (arguments.Length).WriteValues (arguments), delegate (PacketReader r) { - ValueImpl v, exc; + ValueImpl v, exc, out_this = null; + ValueImpl[] out_args = null; if (r.ErrorCode != 0) { - callback (null, null, (ErrorCode)r.ErrorCode, state); + callback (null, null, null, null, (ErrorCode)r.ErrorCode, state); } else { - if (r.ReadByte () == 0) { - exc = r.ReadValue (); - v = null; - } else { - v = r.ReadValue (); - exc = null; - } - - callback (v, exc, 0, state); + read_invoke_res (r, out v, out exc, out out_this, out out_args); + callback (v, exc, out_this, out_args, 0, state); } }, 1); } @@ -1690,20 +1719,14 @@ namespace Mono.Debugger.Soft w.WriteValues (arguments [i]); } return Send (CommandSet.VM, (int)CmdVM.INVOKE_METHODS, w, delegate (PacketReader r) { - ValueImpl v, exc; + ValueImpl v, exc, out_this = null; + ValueImpl[] out_args = null; if (r.ErrorCode != 0) { - callback (null, null, (ErrorCode)r.ErrorCode, state); + callback (null, null, null, null, (ErrorCode)r.ErrorCode, state); } else { - if (r.ReadByte () == 0) { - exc = r.ReadValue (); - v = null; - } else { - v = r.ReadValue (); - exc = null; - } - - callback (v, exc, 0, state); + read_invoke_res (r, out v, out exc, out out_this, out out_args); + callback (v, exc, out_this, out_args, 0, state); } }, methods.Length); } @@ -1983,21 +2006,20 @@ namespace Mono.Debugger.Soft return SendReceive (CommandSet.THREAD, (int)CmdThread.GET_NAME, new PacketWriter ().WriteId (id)).ReadString (); } - internal FrameInfo[] Thread_GetFrameInfo (long id, int start_frame, int length) { - var res = SendReceive (CommandSet.THREAD, (int)CmdThread.GET_FRAME_INFO, new PacketWriter ().WriteId (id).WriteInt (start_frame).WriteInt (length)); - int count = res.ReadInt (); - - var frames = new FrameInfo [count]; - for (int i = 0; i < count; ++i) { - var f = new FrameInfo (); - f.id = res.ReadInt (); - f.method = res.ReadId (); - f.il_offset = res.ReadInt (); - f.flags = (StackFrameFlags)res.ReadByte (); - frames [i] = f; - } - - return frames; + internal void Thread_GetFrameInfo (long id, int start_frame, int length, Action resultCallaback) { + Send (CommandSet.THREAD, (int)CmdThread.GET_FRAME_INFO, new PacketWriter ().WriteId (id).WriteInt (start_frame).WriteInt (length), (res) => { + int count = res.ReadInt (); + var frames = new FrameInfo[count]; + for (int i = 0; i < count; ++i) { + var f = new FrameInfo (); + f.id = res.ReadInt (); + f.method = res.ReadId (); + f.il_offset = res.ReadInt (); + f.flags = (StackFrameFlags)res.ReadByte (); + frames [i] = f; + } + resultCallaback (frames); + }, 1); } internal int Thread_GetState (long id) { diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ILInterpreter.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ILInterpreter.cs index e0175f36bd..b4d6073819 100644 --- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ILInterpreter.cs +++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ILInterpreter.cs @@ -23,67 +23,347 @@ namespace Mono.Debugger.Soft // IL_0008: br IL_000d // IL_000d: ldloc.0 // IL_000e: ret + // ... or returns a simple constant: + // IL_0000: ldc.i4 1024 + // IL_0005: conv.i8 + // IL_0006: ret if (args != null && args.Length != 0) - throw new NotSupportedException (); + throw new NotSupportedException (); + if (method.IsStatic || method.DeclaringType.IsValueType || this_val == null || !(this_val is ObjectMirror)) throw new NotSupportedException (); var instructions = body.Instructions; - if (instructions.Count > 16) + if (instructions.Count < 1 || instructions.Count > 16) throw new NotSupportedException (); - Value[] stack = new Value [16]; - Value locals_0 = null; - Value res = null; - - int sp = 0; - int ins_count = 0; + var stack = new Value [16]; var ins = instructions [0]; + Value locals_0 = null; + int ins_count = 0; + int sp = 0; + while (ins != null) { if (ins_count > 16) throw new NotImplementedException (); - ins_count ++; + var next = ins.Next; + ins_count++; var op = ins.OpCode; if (op == OpCodes.Nop) { } else if (op == OpCodes.Ldarg_0) { - if (sp > 0) + if (sp != 0) throw new NotSupportedException (); + stack [sp++] = this_val; } else if (op == OpCodes.Ldfld) { if (sp != 1) throw new NotSupportedException (); - var obj = (ObjectMirror)stack [--sp]; - var field = (FieldInfoMirror)ins.Operand; + + var obj = (ObjectMirror) stack [--sp]; + var field = (FieldInfoMirror) ins.Operand; try { stack [sp++] = obj.GetValue (field); } catch (ArgumentException) { throw new NotSupportedException (); } + } else if (op == OpCodes.Ldc_I4_0) { + if (sp != 0) + throw new NotSupportedException (); + + try { + stack [sp++] = new PrimitiveValue (method.VirtualMachine, 0); + } catch (ArgumentException) { + throw new NotSupportedException (); + } + } else if (op == OpCodes.Ldc_I4_1) { + if (sp != 0) + throw new NotSupportedException (); + + try { + stack [sp++] = new PrimitiveValue (method.VirtualMachine, 1); + } catch (ArgumentException) { + throw new NotSupportedException (); + } + } else if (op == OpCodes.Ldc_I4_2) { + if (sp != 0) + throw new NotSupportedException (); + + try { + stack [sp++] = new PrimitiveValue (method.VirtualMachine, 2); + } catch (ArgumentException) { + throw new NotSupportedException (); + } + } else if (op == OpCodes.Ldc_I4_3) { + if (sp != 0) + throw new NotSupportedException (); + + try { + stack [sp++] = new PrimitiveValue (method.VirtualMachine, 3); + } catch (ArgumentException) { + throw new NotSupportedException (); + } + } else if (op == OpCodes.Ldc_I4_4) { + if (sp != 0) + throw new NotSupportedException (); + + try { + stack [sp++] = new PrimitiveValue (method.VirtualMachine, 4); + } catch (ArgumentException) { + throw new NotSupportedException (); + } + } else if (op == OpCodes.Ldc_I4_5) { + if (sp != 0) + throw new NotSupportedException (); + + try { + stack [sp++] = new PrimitiveValue (method.VirtualMachine, 5); + } catch (ArgumentException) { + throw new NotSupportedException (); + } + } else if (op == OpCodes.Ldc_I4_6) { + if (sp != 0) + throw new NotSupportedException (); + + try { + stack [sp++] = new PrimitiveValue (method.VirtualMachine, 6); + } catch (ArgumentException) { + throw new NotSupportedException (); + } + } else if (op == OpCodes.Ldc_I4_7) { + if (sp != 0) + throw new NotSupportedException (); + + try { + stack [sp++] = new PrimitiveValue (method.VirtualMachine, 7); + } catch (ArgumentException) { + throw new NotSupportedException (); + } + } else if (op == OpCodes.Ldc_I4_8) { + if (sp != 0) + throw new NotSupportedException (); + + try { + stack [sp++] = new PrimitiveValue (method.VirtualMachine, 8); + } catch (ArgumentException) { + throw new NotSupportedException (); + } + } else if (op == OpCodes.Ldc_I4_M1) { + if (sp != 0) + throw new NotSupportedException (); + + try { + stack [sp++] = new PrimitiveValue (method.VirtualMachine, -1); + } catch (ArgumentException) { + throw new NotSupportedException (); + } + } else if (op == OpCodes.Ldc_I4) { + if (sp != 0) + throw new NotSupportedException (); + + try { + stack [sp++] = new PrimitiveValue (method.VirtualMachine, ins.Operand); + } catch (ArgumentException) { + throw new NotSupportedException (); + } + } else if (op == OpCodes.Ldc_I4_S) { + if (sp != 0) + throw new NotSupportedException (); + + try { + stack [sp++] = new PrimitiveValue (method.VirtualMachine, ins.Operand); + } catch (ArgumentException) { + throw new NotSupportedException (); + } + } else if (op == OpCodes.Ldc_I8) { + if (sp != 0) + throw new NotSupportedException (); + + try { + stack [sp++] = new PrimitiveValue (method.VirtualMachine, ins.Operand); + } catch (ArgumentException) { + throw new NotSupportedException (); + } + } else if (op == OpCodes.Ldc_R4) { + if (sp != 0) + throw new NotSupportedException (); + + try { + stack [sp++] = new PrimitiveValue (method.VirtualMachine, ins.Operand); + } catch (ArgumentException) { + throw new NotSupportedException (); + } + } else if (op == OpCodes.Ldc_R8) { + if (sp != 0) + throw new NotSupportedException (); + + try { + stack [sp++] = new PrimitiveValue (method.VirtualMachine, ins.Operand); + } catch (ArgumentException) { + throw new NotSupportedException (); + } + } else if (op == OpCodes.Conv_I) { + if (sp != 1) + throw new NotSupportedException (); + + try { + var primitive = (PrimitiveValue) stack [--sp]; + stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToInt32 (primitive.Value)); + } catch { + throw new NotSupportedException (); + } + } else if (op == OpCodes.Conv_I1) { + if (sp != 1) + throw new NotSupportedException (); + + try { + var primitive = (PrimitiveValue) stack [--sp]; + stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToSByte (primitive.Value)); + } catch { + throw new NotSupportedException (); + } + } else if (op == OpCodes.Conv_U1) { + if (sp != 1) + throw new NotSupportedException (); + + try { + var primitive = (PrimitiveValue) stack [--sp]; + stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToByte (primitive.Value)); + } catch { + throw new NotSupportedException (); + } + } else if (op == OpCodes.Conv_I2) { + if (sp != 1) + throw new NotSupportedException (); + + try { + var primitive = (PrimitiveValue) stack [--sp]; + stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToInt16 (primitive.Value)); + } catch { + throw new NotSupportedException (); + } + } else if (op == OpCodes.Conv_U2) { + if (sp != 1) + throw new NotSupportedException (); + + try { + var primitive = (PrimitiveValue) stack [--sp]; + stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToUInt16 (primitive.Value)); + } catch { + throw new NotSupportedException (); + } + } else if (op == OpCodes.Conv_I4) { + if (sp != 1) + throw new NotSupportedException (); + + try { + var primitive = (PrimitiveValue) stack [--sp]; + stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToInt32 (primitive.Value)); + } catch { + throw new NotSupportedException (); + } + } else if (op == OpCodes.Conv_U4) { + if (sp != 1) + throw new NotSupportedException (); + + try { + var primitive = (PrimitiveValue) stack [--sp]; + stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToUInt32 (primitive.Value)); + } catch { + throw new NotSupportedException (); + } + } else if (op == OpCodes.Conv_I8) { + if (sp != 1) + throw new NotSupportedException (); + + try { + var primitive = (PrimitiveValue) stack [--sp]; + stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToInt64 (primitive.Value)); + } catch { + throw new NotSupportedException (); + } + } else if (op == OpCodes.Conv_U8) { + if (sp != 1) + throw new NotSupportedException (); + + try { + var primitive = (PrimitiveValue) stack [--sp]; + stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToUInt64 (primitive.Value)); + } catch { + throw new NotSupportedException (); + } + } else if (op == OpCodes.Conv_R4) { + if (sp != 1) + throw new NotSupportedException (); + + try { + var primitive = (PrimitiveValue) stack [--sp]; + stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToSingle (primitive.Value)); + } catch { + throw new NotSupportedException (); + } + } else if (op == OpCodes.Conv_R8) { + if (sp != 1) + throw new NotSupportedException (); + + try { + var primitive = (PrimitiveValue) stack [--sp]; + stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToDouble (primitive.Value)); + } catch { + throw new NotSupportedException (); + } } else if (op == OpCodes.Stloc_0) { if (sp != 1) throw new NotSupportedException (); + locals_0 = stack [--sp]; } else if (op == OpCodes.Br) { - next = (ILInstruction)ins.Operand; + next = (ILInstruction) ins.Operand; } else if (op == OpCodes.Ldloc_0) { if (sp != 0) throw new NotSupportedException (); + stack [sp++] = locals_0; } else if (op == OpCodes.Ret) { - if (sp == 0) - res = null; - else - res = stack [--sp]; - break; + if (sp > 0) { + var res = stack [--sp]; + + var primitive = res as PrimitiveValue; + if (method.ReturnType.IsPrimitive && primitive != null) { + // cast the primitive value to the return type + try { + switch (method.ReturnType.CSharpName) { + case "double": res = new PrimitiveValue (method.VirtualMachine, Convert.ToDouble (primitive.Value)); break; + case "float": res = new PrimitiveValue (method.VirtualMachine, Convert.ToSingle (primitive.Value)); break; + case "ulong": res = new PrimitiveValue (method.VirtualMachine, Convert.ToUInt64 (primitive.Value)); break; + case "long": res = new PrimitiveValue (method.VirtualMachine, Convert.ToInt64 (primitive.Value)); break; + case "uint": res = new PrimitiveValue (method.VirtualMachine, Convert.ToUInt32 (primitive.Value)); break; + case "int": res = new PrimitiveValue (method.VirtualMachine, Convert.ToInt32 (primitive.Value)); break; + case "ushort": res = new PrimitiveValue (method.VirtualMachine, Convert.ToUInt16 (primitive.Value)); break; + case "short": res = new PrimitiveValue (method.VirtualMachine, Convert.ToInt16 (primitive.Value)); break; + case "sbyte": res = new PrimitiveValue (method.VirtualMachine, Convert.ToSByte (primitive.Value)); break; + case "byte": res = new PrimitiveValue (method.VirtualMachine, Convert.ToByte (primitive.Value)); break; + case "char": res = new PrimitiveValue (method.VirtualMachine, Convert.ToChar (primitive.Value)); break; + case "bool": res = new PrimitiveValue (method.VirtualMachine, Convert.ToBoolean (primitive.Value)); break; + } + } catch { + throw new NotSupportedException (); + } + } + + return res; + } + + return null; } else { throw new NotSupportedException (); } + ins = next; } - return res; + return null; } } } diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/InvokeOptions.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/InvokeOptions.cs index bc06479508..5ca987ec69 100644 --- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/InvokeOptions.cs +++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/InvokeOptions.cs @@ -13,6 +13,15 @@ namespace Mono.Debugger.Soft /* * Only resume the target thread during the invoke */ - SingleThreaded = 2 + SingleThreaded = 2, + /* + * Return the changed receiver when invoking + * a valuetype method. + */ + ReturnOutThis = 4, + /* + * Return the values of out arguments + */ + ReturnOutArgs = 8 } } diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ObjectMirror.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ObjectMirror.cs index f3eedccaf5..d83e3a1a48 100644 --- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ObjectMirror.cs +++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ObjectMirror.cs @@ -8,6 +8,22 @@ using System.Threading.Tasks; namespace Mono.Debugger.Soft { + public class InvokeResult { + public Value Result { get; set; } + // + // The value of the receiver after the call for calls to valuetype methods or null. + // Only set when using the InvokeOptions.ReturnOutThis flag. + // Since protocol version 2.35 + // + public Value OutThis { get; set; } + // + // The value of the arguments after the call + // Only set when using the InvokeOptions.ReturnOutArgs flag. + // Since protocol version 2.35 + // + public Value[] OutArgs { get; set; } + } + public class ObjectMirror : Value { TypeMirror type; AppDomainMirror domain; @@ -149,6 +165,10 @@ namespace Mono.Debugger.Soft return EndInvokeMethodInternal (asyncResult); } + public InvokeResult EndInvokeMethodWithResult (IAsyncResult asyncResult) { + return ObjectMirror.EndInvokeMethodInternalWithResult (asyncResult); + } + #if NET_4_5 public Task InvokeMethodAsync (ThreadMirror thread, MethodMirror method, IList arguments, InvokeOptions options = InvokeOptions.None) { var tcs = new TaskCompletionSource (); @@ -164,6 +184,21 @@ namespace Mono.Debugger.Soft }, null); return tcs.Task; } + + public Task InvokeMethodAsyncWithResult (ThreadMirror thread, MethodMirror method, IList arguments, InvokeOptions options = InvokeOptions.None) { + var tcs = new TaskCompletionSource (); + BeginInvokeMethod (thread, method, arguments, options, iar => + { + try { + tcs.SetResult (EndInvokeMethodInternalWithResult (iar)); + } catch (OperationCanceledException) { + tcs.TrySetCanceled (); + } catch (Exception ex) { + tcs.TrySetException (ex); + } + }, null); + return tcs.Task; + } #endif // @@ -223,6 +258,14 @@ namespace Mono.Debugger.Soft get; set; } + public ValueImpl OutThis { + get; set; + } + + public ValueImpl[] OutArgs { + get; set; + } + public ValueImpl Exception { get; set; } @@ -260,16 +303,20 @@ namespace Mono.Debugger.Soft f |= InvokeFlags.DISABLE_BREAKPOINTS; if ((options & InvokeOptions.SingleThreaded) != 0) f |= InvokeFlags.SINGLE_THREADED; + if ((options & InvokeOptions.ReturnOutThis) != 0) + f |= InvokeFlags.OUT_THIS; + if ((options & InvokeOptions.ReturnOutArgs) != 0) + f |= InvokeFlags.OUT_ARGS; InvokeAsyncResult r = new InvokeAsyncResult { AsyncState = state, AsyncWaitHandle = new ManualResetEvent (false), VM = vm, Thread = thread, Callback = callback }; - + thread.InvalidateFrames (); r.ID = vm.conn.VM_BeginInvokeMethod (thread.Id, method.Id, this_obj != null ? vm.EncodeValue (this_obj) : vm.EncodeValue (vm.CreateValue (null)), vm.EncodeValues (arguments), f, InvokeCB, r); return r; } // This is called when the result of an invoke is received - static void InvokeCB (ValueImpl v, ValueImpl exc, ErrorCode error, object state) { + static void InvokeCB (ValueImpl v, ValueImpl exc, ValueImpl out_this, ValueImpl[] out_args, ErrorCode error, object state) { InvokeAsyncResult r = (InvokeAsyncResult)state; if (error != 0) { @@ -279,6 +326,9 @@ namespace Mono.Debugger.Soft r.Exception = exc; } + r.OutThis = out_this; + r.OutArgs = out_args; + r.IsCompleted = true; ((ManualResetEvent)r.AsyncWaitHandle).Set (); @@ -286,7 +336,7 @@ namespace Mono.Debugger.Soft r.Callback.BeginInvoke (r, null, null); } - internal static Value EndInvokeMethodInternal (IAsyncResult asyncResult) { + internal static InvokeResult EndInvokeMethodInternalWithResult (IAsyncResult asyncResult) { if (asyncResult == null) throw new ArgumentNullException ("asyncResult"); @@ -301,18 +351,30 @@ namespace Mono.Debugger.Soft } catch (CommandException ex) { if (ex.ErrorCode == ErrorCode.INVALID_ARGUMENT) throw new ArgumentException ("Incorrect number or types of arguments", "arguments"); - else - throw; + + throw; } throw new NotImplementedException (); } else { if (r.Exception != null) throw new InvocationException ((ObjectMirror)r.VM.DecodeValue (r.Exception)); - else - return r.VM.DecodeValue (r.Value); + + Value out_this = null; + if (r.OutThis != null) + out_this = r.VM.DecodeValue (r.OutThis); + Value[] out_args = null; + if (r.OutArgs != null) + out_args = r.VM.DecodeValues (r.OutArgs); + + return new InvokeResult () { Result = r.VM.DecodeValue (r.Value), OutThis = out_this, OutArgs = out_args }; } } + internal static Value EndInvokeMethodInternal (IAsyncResult asyncResult) { + InvokeResult res = EndInvokeMethodInternalWithResult (asyncResult); + return res.Result; + } + internal static void EndInvokeMultipleInternal (IAsyncResult asyncResult) { if (asyncResult == null) throw new ArgumentNullException ("asyncResult"); @@ -370,13 +432,14 @@ namespace Mono.Debugger.Soft var args = new List (); for (int i = 0; i < methods.Length; ++i) args.Add (vm.EncodeValues (arguments [i])); + thread.InvalidateFrames (); r.ID = vm.conn.VM_BeginInvokeMethods (thread.Id, mids, this_obj != null ? vm.EncodeValue (this_obj) : vm.EncodeValue (vm.CreateValue (null)), args, f, InvokeMultipleCB, r); return r; } // This is called when the result of an invoke is received - static void InvokeMultipleCB (ValueImpl v, ValueImpl exc, ErrorCode error, object state) { + static void InvokeMultipleCB (ValueImpl v, ValueImpl exc, ValueImpl out_this, ValueImpl[] out_args, ErrorCode error, object state) { var r = (InvokeAsyncResult)state; Interlocked.Decrement (ref r.NumPending); diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/PrimitiveValue.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/PrimitiveValue.cs index 696f6493f4..2ba50c84d4 100644 --- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/PrimitiveValue.cs +++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/PrimitiveValue.cs @@ -22,8 +22,11 @@ namespace Mono.Debugger.Soft public override bool Equals (object obj) { if (value == obj) return true; - if (obj != null && obj is PrimitiveValue) - return value == (obj as PrimitiveValue).Value; + + var primitive = obj as PrimitiveValue; + if (primitive != null) + return value == primitive.Value; + return base.Equals (obj); } @@ -52,5 +55,9 @@ namespace Mono.Debugger.Soft public Value EndInvokeMethod (IAsyncResult asyncResult) { return ObjectMirror.EndInvokeMethodInternal (asyncResult); } + + public InvokeResult EndInvokeMethodWithResult (IAsyncResult asyncResult) { + return ObjectMirror.EndInvokeMethodInternalWithResult (asyncResult); + } } } \ No newline at end of file diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/StructMirror.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/StructMirror.cs index b6e43eb4e2..1aa1a4ef5e 100644 --- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/StructMirror.cs +++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/StructMirror.cs @@ -1,5 +1,8 @@ using System; using System.Collections.Generic; +#if NET_4_5 +using System.Threading.Tasks; +#endif namespace Mono.Debugger.Soft { @@ -83,7 +86,53 @@ namespace Mono.Debugger.Soft } public Value EndInvokeMethod (IAsyncResult asyncResult) { - return ObjectMirror.EndInvokeMethodInternal (asyncResult); + var result = ObjectMirror.EndInvokeMethodInternalWithResult (asyncResult); + var outThis = result.OutThis as StructMirror; + if (outThis != null) { + SetFields (outThis.Fields); + } + return result.Result; } + + public InvokeResult EndInvokeMethodWithResult (IAsyncResult asyncResult) { + var result = ObjectMirror.EndInvokeMethodInternalWithResult (asyncResult); + var outThis = result.OutThis as StructMirror; + if (outThis != null) { + SetFields (outThis.Fields); + } + return result; + } + +#if NET_4_5 + public Task InvokeMethodAsync (ThreadMirror thread, MethodMirror method, IList arguments, InvokeOptions options = InvokeOptions.None) { + var tcs = new TaskCompletionSource (); + BeginInvokeMethod (thread, method, arguments, options, iar => + { + try { + tcs.SetResult (EndInvokeMethod (iar)); + } catch (OperationCanceledException) { + tcs.TrySetCanceled (); + } catch (Exception ex) { + tcs.TrySetException (ex); + } + }, null); + return tcs.Task; + } + + public Task InvokeMethodAsyncWithResult (ThreadMirror thread, MethodMirror method, IList arguments, InvokeOptions options = InvokeOptions.None) { + var tcs = new TaskCompletionSource (); + BeginInvokeMethod (thread, method, arguments, options, iar => + { + try { + tcs.SetResult (ObjectMirror.EndInvokeMethodInternalWithResult (iar)); + } catch (OperationCanceledException) { + tcs.TrySetCanceled (); + } catch (Exception ex) { + tcs.TrySetException (ex); + } + }, null); + return tcs.Task; + } +#endif } } diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ThreadMirror.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ThreadMirror.cs index 38c733ccaf..541118d66d 100644 --- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ThreadMirror.cs +++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ThreadMirror.cs @@ -7,7 +7,12 @@ namespace Mono.Debugger.Soft public class ThreadMirror : ObjectMirror { string name; + bool cacheInvalid = true; + bool fetching; + object fetchingLocker = new object (); + ManualResetEvent fetchingEvent = new ManualResetEvent (false); ThreadInfo info; + StackFrame[] frames; internal ThreadMirror (VirtualMachine vm, long id) : base (vm, id) { } @@ -15,22 +20,58 @@ namespace Mono.Debugger.Soft internal ThreadMirror (VirtualMachine vm, long id, TypeMirror type, AppDomainMirror domain) : base (vm, id, type, domain) { } - // FIXME: Cache, invalidate when the thread/runtime is resumed public StackFrame[] GetFrames () { - FrameInfo[] frame_info = vm.conn.Thread_GetFrameInfo (id, 0, -1); + FetchFrames (true); + fetchingEvent.WaitOne (); + return frames; + } - var frames = new List (); + internal void InvalidateFrames () { + cacheInvalid = true; + } - for (int i = 0; i < frame_info.Length; ++i) { - FrameInfo info = (FrameInfo)frame_info [i]; - MethodMirror method = vm.GetMethod (info.method); - var f = new StackFrame (vm, info.id, this, method, info.il_offset, info.flags); - if (!(f.IsNativeTransition && !NativeTransitions)) - frames.Add (f); + internal void FetchFrames (bool mustFetch = false) { + lock (fetchingLocker) { + if (fetching || !cacheInvalid) + return; + cacheInvalid = false; + fetching = true; + fetchingEvent.Reset (); } + vm.conn.Thread_GetFrameInfo (id, 0, -1, (frame_info) => { + var framesList = new List (); + for (int i = 0; i < frame_info.Length; ++i) { + var frameInfo = (FrameInfo)frame_info [i]; + var method = vm.GetMethod (frameInfo.method); + var f = new StackFrame (vm, frameInfo.id, this, method, frameInfo.il_offset, frameInfo.flags); + if (!(f.IsNativeTransition && !NativeTransitions)) + framesList.Add (f); + } + lock (fetchingLocker) { + vm.AddThreadToInvalidateList (this); + fetching = false; + //In case it was invalidated during waiting for response from + //runtime and mustFetch was set refetch + if (cacheInvalid && mustFetch) { + FetchFrames (mustFetch); + return; + } + frames = framesList.ToArray (); + fetchingEvent.Set (); + } + }); + } - return frames.ToArray (); - } + public static void FetchFrames(IList threads) + { + if (threads.Count == 0) + return; + threads [0].vm.conn.StartBuffering (); + foreach (var thread in threads) { + thread.FetchFrames (); + } + threads [0].vm.conn.StopBuffering (); + } public string Name { get { @@ -38,7 +79,7 @@ namespace Mono.Debugger.Soft name = vm.conn.Thread_GetName (id); return name; } - } + } public new long Id { get { @@ -111,8 +152,8 @@ namespace Mono.Debugger.Soft } catch (CommandException ex) { if (ex.ErrorCode == ErrorCode.INVALID_ARGUMENT) throw new ArgumentException ("loc doesn't refer to a location in the current method of this thread.", "loc"); - else - throw; + + throw; } } } diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/TypeMirror.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/TypeMirror.cs index 437689163e..3970f2a576 100644 --- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/TypeMirror.cs +++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/TypeMirror.cs @@ -806,6 +806,10 @@ namespace Mono.Debugger.Soft return ObjectMirror.EndInvokeMethodInternal (asyncResult); } + public InvokeResult EndInvokeMethodWithResult (IAsyncResult asyncResult) { + return ObjectMirror.EndInvokeMethodInternalWithResult (asyncResult); + } + #if NET_4_5 public Task InvokeMethodAsync (ThreadMirror thread, MethodMirror method, IList arguments, InvokeOptions options = InvokeOptions.None) { var tcs = new TaskCompletionSource (); diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachine.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachine.cs index 61ee11c183..ee5806d472 100644 --- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachine.cs +++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachine.cs @@ -121,12 +121,13 @@ namespace Mono.Debugger.Soft public void Resume () { try { + InvalidateThreadAndFrameCaches (); conn.VM_Resume (); } catch (CommandException ex) { if (ex.ErrorCode == ErrorCode.NOT_SUSPENDED) throw new VMNotSuspendedException (); - else - throw; + + throw; } } @@ -151,12 +152,44 @@ namespace Mono.Debugger.Soft conn.ForceDisconnect (); } + HashSet threadsToInvalidate = new HashSet (); + ThreadMirror[] threadCache; + object threadCacheLocker = new object (); + + void InvalidateThreadAndFrameCaches () { + lock (threadsToInvalidate) { + foreach (var thread in threadsToInvalidate) + thread.InvalidateFrames (); + threadsToInvalidate.Clear (); + } + lock (threadCacheLocker) { + threadCache = null; + } + } + + internal void InvalidateThreadCache () { + lock (threadCacheLocker) { + threadCache = null; + } + } + + internal void AddThreadToInvalidateList (ThreadMirror threadMirror) + { + lock (threadsToInvalidate) { + threadsToInvalidate.Add (threadMirror); + } + } + public IList GetThreads () { - long[] ids = vm.conn.VM_GetThreads (); - ThreadMirror[] res = new ThreadMirror [ids.Length]; - for (int i = 0; i < ids.Length; ++i) - res [i] = GetThread (ids [i]); - return res; + lock (threadCacheLocker) { + if (threadCache == null) { + long[] ids = vm.conn.VM_GetThreads (); + threadCache = new ThreadMirror [ids.Length]; + for (int i = 0; i < ids.Length; ++i) + threadCache [i] = GetThread (ids [i]); + } + return threadCache; + } } // Same as the mirrorOf methods in JDI @@ -675,9 +708,11 @@ namespace Mono.Debugger.Soft vm.notify_vm_event (EventType.VMDeath, suspend_policy, req_id, thread_id, null, ei.ExitCode); break; case EventType.ThreadStart: + vm.InvalidateThreadCache (); l.Add (new ThreadStartEvent (vm, req_id, id)); break; case EventType.ThreadDeath: + vm.InvalidateThreadCache (); l.Add (new ThreadDeathEvent (vm, req_id, id)); break; case EventType.AssemblyLoad: @@ -718,8 +753,6 @@ namespace Mono.Debugger.Soft case EventType.UserLog: l.Add (new UserLogEvent (vm, req_id, thread_id, ei.Level, ei.Category, ei.Message)); break; - default: - break; } } diff --git a/mcs/class/Mono.Debugger.Soft/Test/dtest-app.cs b/mcs/class/Mono.Debugger.Soft/Test/dtest-app.cs index a057455538..3c9b2877c2 100644 --- a/mcs/class/Mono.Debugger.Soft/Test/dtest-app.cs +++ b/mcs/class/Mono.Debugger.Soft/Test/dtest-app.cs @@ -81,6 +81,7 @@ public struct AStruct { public string s; public byte k; public IntPtr j; + public int l; [MethodImplAttribute (MethodImplOptions.NoInlining)] public int foo (int val) { @@ -106,6 +107,11 @@ public struct AStruct { public IntPtr invoke_return_intptr () { return j; } + + [MethodImplAttribute (MethodImplOptions.NoInlining)] + public void invoke_mutate () { + l = 5; + } } public class GClass { @@ -953,6 +959,11 @@ public class Tests : TestsBase, ITest2 return 42; } + public void invoke_out (out int foo, out int[] arr) { + foo = 5; + arr = new int [10]; + } + [MethodImplAttribute (MethodImplOptions.NoInlining)] public static void exceptions () { try { diff --git a/mcs/class/Mono.Debugger.Soft/Test/dtest.cs b/mcs/class/Mono.Debugger.Soft/Test/dtest.cs index 9d6e5c4127..9a671202a8 100644 --- a/mcs/class/Mono.Debugger.Soft/Test/dtest.cs +++ b/mcs/class/Mono.Debugger.Soft/Test/dtest.cs @@ -2110,6 +2110,21 @@ public class DebuggerTests Assert.AreEqual ("Exception", ex.Exception.Type.Name); } +#if NET_4_5 + // out argument + m = t.GetMethod ("invoke_out"); + var out_task = this_obj.InvokeMethodAsyncWithResult (e.Thread, m, new Value [] { vm.CreateValue (1), vm.CreateValue (null) }, InvokeOptions.ReturnOutArgs); + var out_args = out_task.Result.OutArgs; + AssertValue (5, out_args [0]); + Assert.IsTrue (out_args [1] is ArrayMirror); + Assert.AreEqual (10, (out_args [1] as ArrayMirror).Length); + + // without ReturnOutArgs flag + out_task = this_obj.InvokeMethodAsyncWithResult (e.Thread, m, new Value [] { vm.CreateValue (1), vm.CreateValue (null) }); + out_args = out_task.Result.OutArgs; + Assert.IsNull (out_args); +#endif + // newobj m = t.GetMethod (".ctor"); v = t.InvokeMethod (e.Thread, m, null); @@ -2212,6 +2227,24 @@ public class DebuggerTests m = t.GetMethod ("invoke_return_int"); v = s.InvokeMethod (e.Thread, m, null); AssertValue (42, v); + +#if NET_4_5 + // Invoke a method which changes state + s = frame.GetArgument (1) as StructMirror; + t = s.Type; + m = t.GetMethod ("invoke_mutate"); + var task = s.InvokeMethodAsyncWithResult (e.Thread, m, null, InvokeOptions.ReturnOutThis); + var out_this = task.Result.OutThis as StructMirror; + AssertValue (5, out_this ["l"]); + + // Without the ReturnOutThis flag + s = frame.GetArgument (1) as StructMirror; + t = s.Type; + m = t.GetMethod ("invoke_mutate"); + task = s.InvokeMethodAsyncWithResult (e.Thread, m, null); + out_this = task.Result.OutThis as StructMirror; + Assert.AreEqual (null, out_this); +#endif } [Test] diff --git a/mcs/class/Mono.Parallel/Documentation/en/Mono.Threading.Tasks/IMonoTaskScheduler.xml b/mcs/class/Mono.Parallel/Documentation/en/Mono.Threading.Tasks/IMonoTaskScheduler.xml deleted file mode 100644 index 7ea9123207..0000000000 --- a/mcs/class/Mono.Parallel/Documentation/en/Mono.Threading.Tasks/IMonoTaskScheduler.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - Mono.Parallel - 4.0.0.0 - - - -

The normal way to use another scheduler with ParalleFx is by creating a new type subclassing . However Mono's ParallelFx has a few specifities which aren't captured by the base API. Developpers can thus also implement this interface with their custom scheduler for better Mono integration. - The changes added by implementing this interface are totally non-breaking and the assembly will still work perfectly with .NET ParallelFx provided you implement correctly correctly. - - - - - - Method - - 4.0.0.0 - - - System.Void - - - - - - The task to wait on. - This method will be called when a thread decides to wait on a task completion. Developpers are free to simply wait on the supplied Task or provide a smarter cooperative waiting mechanism. - A simple waiting mechanism can be achieved via the following pattern: - - -public void PartiticipateUntil (Task task) -{ - ManualResetEventSlim evt = new ManualResetEventSlim (false); - task.ContinueWith (_ => evt.Set (), TaskContinuationOptions.ExecuteSynchronously); - evt.Wait (); -} - - - - - - - Method - - 4.0.0.0 - - - System.Boolean - - - - - - - - Task to wait on. - Additional preemptive conditions for stopping the waiting. - An countdown specifying the maximum amount of time the method can last before returning. - This method will be called when a thread decides to wait on a task completion or a set of condition summarized via the given . Developpers are free to simply wait on the supplied Task/event or provide a smarter cooperative waiting mechanism. - - if the method returns because of either event was set or timeout was reached, if the task completed. - To be added. - - - - diff --git a/mcs/class/Mono.Parallel/Documentation/en/Mono.Threading.Tasks/MonoTaskExtensions.xml b/mcs/class/Mono.Parallel/Documentation/en/Mono.Threading.Tasks/MonoTaskExtensions.xml deleted file mode 100644 index f11a56cd2e..0000000000 --- a/mcs/class/Mono.Parallel/Documentation/en/Mono.Threading.Tasks/MonoTaskExtensions.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - Mono.Parallel - 4.0.0.0 - - - System.Object - - - - Provide public wrappers around internal methods used in Mono implementation of type. - These extensions are targeted at developers coding custom schedulers so that they can tap into the specificities of the Mono implementation. - - - - - - Method - - 4.0.0.0 - - - System.Void - - - - - - - Task to run. - Action that will be called with the Task that is being scheduled while above Task is executed as a parameter. - Execute a body and track any other Task scheduling during it which is then passed to the supplied action for specific scheduling. - - - - If the inner Task that is scheduled has been created with TaskCreationOptions.PreferFairness, the supplied action won't be called and instead the Task will be scheduled normally on the current - - -The following example retrieve a task from a local deque, execute it and add any eventual child Task created/scheduled to its local deque using PushBottom (safe since we are on the same thread the whole time). - - - Task task; - IConcurrentDeque<Task> deque = new CyclicDeque<Task> (); - - if (deque.PopBottom (out task) == PopResult.Succeed)) - task.Execute (deque.PushBottom); - - - - - diff --git a/mcs/class/Mono.Parallel/Documentation/en/Mono.Threading.Tasks/ThreadWorker.xml b/mcs/class/Mono.Parallel/Documentation/en/Mono.Threading.Tasks/ThreadWorker.xml deleted file mode 100644 index 0063297c1f..0000000000 --- a/mcs/class/Mono.Parallel/Documentation/en/Mono.Threading.Tasks/ThreadWorker.xml +++ /dev/null @@ -1,351 +0,0 @@ - - - - - Mono.Parallel - 4.0.0.0 - - - System.Object - - - - System.IDisposable - - - - This class wraps a to provide a suitable ParallelFx worker (i.e. something that process ). - To be added. - - - - - - Constructor - - 4.0.0.0 - - - - - - - - - - - This is an array containing all other workers created. It's necessary if you want worker cooperating together for getting extra work. - The position in the previous array where this worker will be placed. - This is the global data structures that holds the Task when the system starts and is not yet bootstraped. It's also where tasks end up if they are executed with fairness enabled. - The personnal instance of a deque type used by the worker when storing the tasks its responsible of and letting other workers retrieve them. - The priority of the underlying thread. - This is a handle shared (ideally) by all workers to synchronize and deep sleep when there is no more work to do. Setting the handle will wake them up. - Build a new worker instance. - To be added. - - - - - - Property - - 4.0.0.0 - - - Mono.Threading.Tasks.ThreadWorker - - - This [ThreadStatic] field is automatically updated when WorkerMethod method run so that you can check if you are making a re-entrant call on the same thread. - To be added. - To be added. - - - - - - Method - - 4.0.0.0 - - - System.Void - - - - - - Task being scheduled - This method is called when the currently executing Task tries to schedule another Task as part of its computation. This method allows to redirect the scheduling to a specific place. - By default the supplied task is added to the ThreadWorker deque via the PushBottom operation. - - - - - - Property - - 4.0.0.0 - - - Mono.Threading.Tasks.IConcurrentDeque<System.Threading.Tasks.Task> - - - Allow access to the used by the ThreadWorker. - To be added. - To be added. - - - - - - Method - - 4.0.0.0 - - - System.Void - - - - To be added. - To be added. - - - - - - Method - - 4.0.0.0 - - - System.Boolean - - - - - - To be added. - To be added. - To be added. - To be added. - - - - - - Method - - 4.0.0.0 - - - System.Boolean - - - - - - To be added. - To be added. - To be added. - To be added. - - - - - - Property - - 4.0.0.0 - - - System.Boolean - - - Tells if the underlying thread has exited or not. - To be added. - To be added. - - - - - - Method - - 4.0.0.0 - - - System.Int32 - - - - To be added. - To be added. - To be added. - - - - - - Property - - 4.0.0.0 - - - System.Int32 - - - Return the Id of the underlying thread used by the ThreadWorker. - To be added. - To be added. - - - - - - Method - - 4.0.0.0 - - - System.Void - - - - To be added. - To be added. - - - - - - Property - - 4.0.0.0 - - - Mono.Threading.Tasks.ThreadWorker[] - - - Returns the array of existing ThreadWorker that been initially supplied. - To be added. - If you are iterating the array, make sure you skip the current instance of ThreadWorker with value of - - - - - - Property - - 4.0.0.0 - - - System.Threading.ThreadPriority - - - The priority the underlying thread is running with. - To be added. - To be added. - - - - - - Method - - 4.0.0.0 - - - System.Void - - - - To be added. - To be added. - - - - - - Method - - 4.0.0.0 - - - System.Void - - - - Stop the underlying thread of this ThreadWorker. - To be added. - - - - - - Property - - 4.0.0.0 - - - System.Threading.ManualResetEvent - - - Acces the WaitHandle normally shared by all your ThreadWorker instances to deep sleep or otherwise synchronize on. - To be added. - To be added. - - - - - - Method - - 4.0.0.0 - - - System.Boolean - - - - This is the method executed by WorkerMethod to do the actual processing of tasks. - - if the method processed a while it ran, otherwise. - By default this method applies the following algorithm: -Check if the global data structures contains task and fetch as much as possible into its own dequeExecute whatever its deque containsDo a couple of pass over the other workers to try to steal some work to do - - - - - - Method - - 4.0.0.0 - - - System.Void - - - - This is the method executed by the underlying thread. - By default this method consists of a while loop calling repeatedly and sleeping accordingly when there is no more work to do. - - - - - - Property - - 4.0.0.0 - - - System.Int32 - - - Position of the current instance in the array. - To be added. - To be added. - - - - diff --git a/mcs/class/Mono.Parallel/Documentation/en/index.xml b/mcs/class/Mono.Parallel/Documentation/en/index.xml index ab8e4e2994..6739a80561 100644 --- a/mcs/class/Mono.Parallel/Documentation/en/index.xml +++ b/mcs/class/Mono.Parallel/Documentation/en/index.xml @@ -29,36 +29,8 @@ - - - Mono.Parallel - - - - - - - - - ExtensionMethod - - System.Void - - - - - - - Task to run. - Action that will be called with the Task that is being scheduled while above Task is executed as a parameter. - Execute a body and track any other Task scheduling during it which is then passed to the supplied action for specific scheduling. - - - - - diff --git a/mcs/class/Mono.Parallel/Mono.Parallel.dll.sources b/mcs/class/Mono.Parallel/Mono.Parallel.dll.sources index 31f320c2ce..57ec8a4604 100644 --- a/mcs/class/Mono.Parallel/Mono.Parallel.dll.sources +++ b/mcs/class/Mono.Parallel/Mono.Parallel.dll.sources @@ -11,7 +11,3 @@ Mono.Threading/ReaderWriterLockSlimmer.cs ../corlib/System.Threading.Tasks/CyclicDeque.cs ../corlib/System.Threading.Tasks/IConcurrentDeque.cs ../corlib/System.Threading.Tasks/PopResult.cs -Mono.Threading.Tasks/ThreadWorker.cs -Mono.Threading.Tasks/MonoTaskExtensions.cs -Mono.Threading.Tasks/MonoTaskScheduler.cs -Mono.Threading.Tasks/FixedTaskScheduler.cs diff --git a/mcs/class/Mono.Parallel/Mono.Parallel_test.dll.sources b/mcs/class/Mono.Parallel/Mono.Parallel_test.dll.sources index 19baf2d774..1eb8276dbd 100644 --- a/mcs/class/Mono.Parallel/Mono.Parallel_test.dll.sources +++ b/mcs/class/Mono.Parallel/Mono.Parallel_test.dll.sources @@ -2,5 +2,3 @@ Mono.Collections.Concurrent/CollectionStressTestHelper.cs Mono.Collections.Concurrent/ConcurrentSkipListTests.cs Mono.Threading/ParallelTestHelper.cs Mono.Threading/SnziTests.cs -Mono.Threading.Tasks/MonoTaskExtensionsTests.cs -Mono.Threading.Tasks/MonoTaskSchedulerTests.cs diff --git a/mcs/class/Mono.Parallel/Mono.Threading.Tasks/FixedTaskScheduler.cs b/mcs/class/Mono.Parallel/Mono.Threading.Tasks/FixedTaskScheduler.cs deleted file mode 100644 index da656a5786..0000000000 --- a/mcs/class/Mono.Parallel/Mono.Threading.Tasks/FixedTaskScheduler.cs +++ /dev/null @@ -1,139 +0,0 @@ -// Scheduler.cs -// -// Copyright (c) 2008 Jérémie "Garuma" Laval -// -// 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. -// -// - -#if NET_4_0 -using System; -using System.Threading; -using System.Threading.Tasks; -using System.Collections.Concurrent; - -namespace Mono.Threading.Tasks -{ - public class FixedTaskScheduler: TaskScheduler, IMonoTaskScheduler - { - readonly IProducerConsumerCollection workQueue; - readonly ThreadWorker[] workers; - readonly ManualResetEvent pulseHandle = new ManualResetEvent (false); - - public FixedTaskScheduler () - : this (Environment.ProcessorCount, ThreadPriority.Normal) - { - - } - - public FixedTaskScheduler (int maxWorker, ThreadPriority priority) - { - workQueue = new ConcurrentQueue (); - workers = new ThreadWorker [maxWorker]; - - for (int i = 0; i < maxWorker; i++) { - workers [i] = new ThreadWorker (workers, i, workQueue, new CyclicDeque (), priority, pulseHandle); - workers [i].Pulse (); - } - } - - protected override void QueueTask (Task t) - { - // Add to the shared work pool - workQueue.TryAdd (t); - // Wake up some worker if they were asleep - PulseAll (); - } - - public void MonoParticipateUntil (Task task) - { - if (task.IsCompleted) - return; - - ManualResetEventSlim evt = new ManualResetEventSlim (false); - task.ContinueWith (_ => evt.Set (), TaskContinuationOptions.ExecuteSynchronously); - if (evt.IsSet || task.IsCompleted) - return; - - ParticipateUntilInternal (task, evt, -1); - } - - public bool MonoParticipateUntil (Task task, ManualResetEventSlim evt, int millisecondsTimeout) - { - if (task.IsCompleted) - return false; - - bool isFromPredicate = true; - task.ContinueWith (_ => { isFromPredicate = false; evt.Set (); }, TaskContinuationOptions.ExecuteSynchronously); - - ParticipateUntilInternal (task, evt, millisecondsTimeout); - - if (task.IsCompleted) - return false; - - return isFromPredicate; - } - - public void ParticipateUntilInternal (Task self, ManualResetEventSlim evt, int millisecondsTimeout) - { - ThreadWorker.ParticipativeWorkerMethod (self, evt, millisecondsTimeout, workQueue, workers, pulseHandle, (a, b) => true); - } - - static bool TaskCompletedPredicate (Task self) - { - return self.IsCompleted; - } - - public void PulseAll () - { - pulseHandle.Set (); - } - - public void Dispose () - { - foreach (ThreadWorker w in workers) - w.Dispose (); - } - - #region Scheduler dummy stubs - protected override System.Collections.Generic.IEnumerable GetScheduledTasks () - { - throw new System.NotImplementedException(); - } - - protected override bool TryDequeue (Task task) - { - throw new System.NotImplementedException(); - } - - protected override bool TryExecuteTaskInline (Task task, bool taskWasPreviouslyQueued) - { - task.Execute (null); - return true; - } - - public override int MaximumConcurrencyLevel { - get { - return base.MaximumConcurrencyLevel; - } - } - #endregion - } -} -#endif diff --git a/mcs/class/Mono.Parallel/Mono.Threading.Tasks/MonoTaskExtensions.cs b/mcs/class/Mono.Parallel/Mono.Threading.Tasks/MonoTaskExtensions.cs deleted file mode 100644 index 1b52857040..0000000000 --- a/mcs/class/Mono.Parallel/Mono.Threading.Tasks/MonoTaskExtensions.cs +++ /dev/null @@ -1,54 +0,0 @@ -// -// MonoTaskExtensions.cs -// -// Author: -// Jérémie "Garuma" Laval -// -// Copyright (c) 2011 Jérémie "Garuma" Laval -// -// 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. - -#if NET_4_0 - -using System; -using System.Threading.Tasks; -using System.Reflection; - -namespace Mono.Threading.Tasks -{ - public static class MonoTaskExtensions - { - readonly static Action> internalExecute = null; - - static MonoTaskExtensions () - { - // Initialize internal execute - var method = typeof(Task).GetMethod ("Execute", BindingFlags.Instance | BindingFlags.NonPublic); - internalExecute = (Action>)Delegate.CreateDelegate (typeof(Action>), method); - } - - // Allow external worker to call into the otherwise internal corresponding method of Task - public static void Execute (this Task task, Action childWorkAdder) - { - internalExecute (task, childWorkAdder); - } - } -} - -#endif diff --git a/mcs/class/Mono.Parallel/Mono.Threading.Tasks/MonoTaskScheduler.cs b/mcs/class/Mono.Parallel/Mono.Threading.Tasks/MonoTaskScheduler.cs deleted file mode 100644 index a21c323138..0000000000 --- a/mcs/class/Mono.Parallel/Mono.Threading.Tasks/MonoTaskScheduler.cs +++ /dev/null @@ -1,42 +0,0 @@ -// -// MonoTaskScheduler.cs -// -// Author: -// Jérémie "Garuma" Laval -// -// Copyright (c) 2011 Jérémie "Garuma" Laval -// -// 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. - -#if NET_4_0 - -using System; -using System.Threading; -using System.Threading.Tasks; - -namespace Mono.Threading.Tasks -{ - public interface IMonoTaskScheduler - { - void MonoParticipateUntil (Task task); - bool MonoParticipateUntil (Task task, ManualResetEventSlim predicateEvt, int millisecondsTimeout); - } -} - -#endif diff --git a/mcs/class/Mono.Parallel/Mono.Threading.Tasks/ThreadWorker.cs b/mcs/class/Mono.Parallel/Mono.Threading.Tasks/ThreadWorker.cs deleted file mode 100644 index 575763cc43..0000000000 --- a/mcs/class/Mono.Parallel/Mono.Threading.Tasks/ThreadWorker.cs +++ /dev/null @@ -1,421 +0,0 @@ -// ThreadWorker.cs -// -// Copyright (c) 2008 Jérémie "Garuma" Laval -// -// 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. -// -// - -#if NET_4_0 -using System; -using System.Threading; -using System.Collections.Concurrent; -using System.Threading.Tasks; -using Watch = System.Diagnostics.Stopwatch; - -namespace Mono.Threading.Tasks -{ - public class ThreadWorker : IDisposable - { - Thread workerThread; - - /* This field is used when a TheadWorker have to call Task.Wait - * which bring him back here with the static WorkerMethod although - * it's more optimized for him to continue calling its own WorkerMethod - */ - [ThreadStatic] - static ThreadWorker autoReference; - - readonly IConcurrentDeque dDeque; - readonly ThreadWorker[] others; - readonly ManualResetEvent waitHandle; - readonly IProducerConsumerCollection sharedWorkQueue; - readonly ThreadPriority threadPriority; - - // Flag to tell if workerThread is running - int started = 0; - - readonly int workerLength; - readonly int workerPosition; - const int maxRetry = 3; - - const int sleepThreshold = 100; - int deepSleepTime = 8; - readonly Action adder; - - Task currentTask; - - public ThreadWorker (ThreadWorker[] others, - int workerPosition, - IProducerConsumerCollection sharedWorkQueue, - IConcurrentDeque dDeque, - ThreadPriority priority, - ManualResetEvent handle) - { - this.others = others; - this.dDeque = dDeque; - this.sharedWorkQueue = sharedWorkQueue; - this.workerLength = others.Length; - this.workerPosition = workerPosition; - this.waitHandle = handle; - this.threadPriority = priority; - this.adder = new Action (ChildWorkAdder); - - InitializeUnderlyingThread (); - } - - protected virtual void InitializeUnderlyingThread () - { - this.workerThread = new Thread (WorkerMethodWrapper); - - this.workerThread.IsBackground = true; - this.workerThread.Priority = threadPriority; - this.workerThread.Name = "ParallelFxThreadWorker"; - } - - public virtual void Dispose () - { - Stop (); - if (workerThread.ThreadState != ThreadState.Stopped) - workerThread.Abort (); - } - - public virtual void Pulse () - { - if (started == 1) - return; - - // If the thread was stopped then set it in use and restart it - int result = Interlocked.Exchange (ref started, 1); - if (result != 0) - return; - - if (this.workerThread.ThreadState != ThreadState.Unstarted) { - InitializeUnderlyingThread (); - } - - workerThread.Start (); - } - - public virtual void Stop () - { - // Set the flag to stop so that the while in the thread will stop - // doing its infinite loop. - started = 0; - } - - // This is the actual method called in the Thread - protected virtual void WorkerMethodWrapper () - { - int sleepTime = 0; - autoReference = this; - bool wasWokenUp = false; - - // Main loop - while (started == 1) { - bool result = false; - - result = WorkerMethod (); - if (!result && wasWokenUp) - waitHandle.Reset (); - wasWokenUp = false; - - Thread.Yield (); - - if (result) { - deepSleepTime = 8; - sleepTime = 0; - continue; - } - - // If we are spinning too much, have a deeper sleep - if (++sleepTime > sleepThreshold && sharedWorkQueue.Count == 0) { - wasWokenUp = waitHandle.WaitOne ((deepSleepTime = deepSleepTime >= 0x4000 ? 0x4000 : deepSleepTime << 1)); - } - } - - started = 0; - } - - // Main method, used to do all the logic of retrieving, processing and stealing work. - protected virtual bool WorkerMethod () - { - bool result = false; - bool hasStolenFromOther; - - do { - hasStolenFromOther = false; - - Task value; - - // We fill up our work deque concurrently with other ThreadWorker - while (sharedWorkQueue.Count > 0) { - waitHandle.Set (); - - while (sharedWorkQueue.TryTake (out value)) { - dDeque.PushBottom (value); - } - - // Now we process our work - while (dDeque.PopBottom (out value) == PopResult.Succeed) { - waitHandle.Set (); - ExecuteTask (value, ref result); - } - } - - // When we have finished, steal from other worker - ThreadWorker other; - - // Repeat the operation a little so that we can let other things process. - for (int j = 0; j < maxRetry; ++j) { - int len = workerLength + workerPosition; - // Start stealing with the ThreadWorker at our right to minimize contention - for (int it = workerPosition + 1; it < len; ++it) { - int i = it % workerLength; - if ((other = others [i]) == null || other == this) - continue; - - // Maybe make this steal more than one item at a time, see TODO. - while (other.dDeque.PopTop (out value) == PopResult.Succeed) { - if (!hasStolenFromOther) - waitHandle.Set (); - - hasStolenFromOther = true; - ExecuteTask (value, ref result); - } - } - } - } while (sharedWorkQueue.Count > 0 || hasStolenFromOther); - - return result; - } - - void ExecuteTask (Task value, ref bool result) - { - if (value == null) - return; - - var saveCurrent = currentTask; - currentTask = value; - value.Execute (adder); - result = true; - currentTask = saveCurrent; - } - - // Almost same as above but with an added predicate and treating one item at a time. - // It's used by Scheduler Participate(...) method for special waiting case like - // Task.WaitAll(someTasks) or Task.WaitAny(someTasks) - // Predicate should be really fast and not blocking as it is called a good deal of time - // Also, the method skip tasks that are LongRunning to avoid blocking (Task are not LongRunning by default) - public static void ParticipativeWorkerMethod (Task self, - ManualResetEventSlim predicateEvt, - int millisecondsTimeout, - IProducerConsumerCollection sharedWorkQueue, - ThreadWorker[] others, - ManualResetEvent evt, - Func checkTaskFitness) - { - const int stage1 = 5, stage2 = 0; - int tries = 50; - WaitHandle[] handles = null; - Watch watch = Watch.StartNew (); - if (millisecondsTimeout == -1) - millisecondsTimeout = int.MaxValue; - bool aggressive = false; - bool hasAutoReference = autoReference != null; - Action adder = null; - - while (!predicateEvt.IsSet && watch.ElapsedMilliseconds < millisecondsTimeout && !self.IsCompleted) { - // We try to execute the self task as it may be the simplest way to unlock - // the situation - if (self.Status == TaskStatus.WaitingToRun) { - self.Execute (hasAutoReference ? autoReference.adder : (Action)null); - if (predicateEvt.IsSet || watch.ElapsedMilliseconds > millisecondsTimeout) - return; - } - - Task value; - - // If we are in fact a normal ThreadWorker, use our own deque - if (hasAutoReference) { - var enumerable = autoReference.dDeque.GetEnumerable (); - if (adder == null) - adder = hasAutoReference ? autoReference.adder : (Action)null; - - if (enumerable != null) { - foreach (var t in enumerable) { - if (t == null) - continue; - - if (checkTaskFitness (self, t)) - t.Execute (adder); - - if (predicateEvt.IsSet || watch.ElapsedMilliseconds > millisecondsTimeout) - return; - } - } - } - - int count = sharedWorkQueue.Count; - - // Dequeue only one item as we have restriction - while (--count >= 0 && sharedWorkQueue.TryTake (out value) && value != null) { - evt.Set (); - if (checkTaskFitness (self, value) || aggressive) - value.Execute (null); - else { - if (autoReference == null) - sharedWorkQueue.TryAdd (value); - else - autoReference.dDeque.PushBottom (value); - evt.Set (); - } - - if (predicateEvt.IsSet || watch.ElapsedMilliseconds > millisecondsTimeout) - return; - } - - // First check to see if we comply to predicate - if (predicateEvt.IsSet || watch.ElapsedMilliseconds > millisecondsTimeout) - return; - - // Try to complete other work by stealing since our desired tasks may be in other worker - ThreadWorker other; - for (int i = 0; i < others.Length; i++) { - if ((other = others [i]) == autoReference || other == null) - continue; - - if (other.dDeque.PopTop (out value) == PopResult.Succeed && value != null) { - evt.Set (); - if (checkTaskFitness (self, value) || aggressive) - value.Execute (null); - else { - if (autoReference == null) - sharedWorkQueue.TryAdd (value); - else - autoReference.dDeque.PushBottom (value); - evt.Set (); - } - } - - if (predicateEvt.IsSet || watch.ElapsedMilliseconds > millisecondsTimeout) - return; - } - - /* Waiting is split in 4 phases - * - until stage 1 we simply yield the thread to let others add data - * - between stage 1 and stage2 we use ManualResetEventSlim light waiting mechanism - * - after stage2 we fall back to the heavier WaitHandle waiting mechanism - * - if really the situation isn't evolving after a couple of sleep, we disable - * task fitness check altogether - */ - if (--tries > stage1) - Thread.Yield (); - else if (tries >= stage2) - predicateEvt.Wait (ComputeTimeout (5, millisecondsTimeout, watch)); - else { - if (tries == stage2 - 1) - handles = new [] { predicateEvt.WaitHandle, evt }; - System.Threading.WaitHandle.WaitAny (handles, ComputeTimeout (1000, millisecondsTimeout, watch)); - if (tries == stage2 - 10) - aggressive = true; - } - } - } - - public static ThreadWorker AutoReference { - get { - return autoReference; - } - set { - autoReference = value; - } - } - - protected IConcurrentDeque Deque { - get { - return dDeque; - } - } - - protected ThreadWorker[] Others { - get { - return others; - } - } - - protected ManualResetEvent WaitHandle { - get { - return waitHandle; - } - } - - protected ThreadPriority Priority { - get { - return threadPriority; - } - } - - protected int WorkerPosition { - get { - return workerPosition; - } - } - - protected virtual void ChildWorkAdder (Task t) - { - dDeque.PushBottom (t); - waitHandle.Set (); - } - - static int ComputeTimeout (int proposed, int timeout, Watch watch) - { - return timeout == int.MaxValue ? proposed : System.Math.Min (proposed, System.Math.Max (0, (int)(timeout - watch.ElapsedMilliseconds))); - } - - public bool Finished { - get { - return started == 0; - } - } - - public int Id { - get { - return workerThread.ManagedThreadId; - } - } - - public virtual bool Equals (ThreadWorker other) - { - return (other == null) ? false : object.ReferenceEquals (this.dDeque, other.dDeque); - } - - public override bool Equals (object obj) - { - ThreadWorker temp = obj as ThreadWorker; - return temp == null ? false : Equals (temp); - } - - public override int GetHashCode () - { - return workerThread.ManagedThreadId.GetHashCode (); - } - } -} -#endif diff --git a/mcs/class/Mono.Parallel/Test/Mono.Threading.Tasks/MonoTaskExtensionsTests.cs b/mcs/class/Mono.Parallel/Test/Mono.Threading.Tasks/MonoTaskExtensionsTests.cs deleted file mode 100644 index 62f939b963..0000000000 --- a/mcs/class/Mono.Parallel/Test/Mono.Threading.Tasks/MonoTaskExtensionsTests.cs +++ /dev/null @@ -1,67 +0,0 @@ -// -// MonoTaskExtensionsTests.cs -// -// Author: -// Jérémie "Garuma" Laval -// -// Copyright (c) 2011 Jérémie "Garuma" Laval -// -// 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. - -#if NET_4_0 - -using System; -using System.Threading; -using System.Threading.Tasks; - -using Mono.Threading.Tasks; - -using NUnit.Framework; - -namespace MonoTests.Mono.Threading.Tasks -{ - [TestFixtureAttribute] - public class MonoTaskExtensionsTests - { - [Test] - public void SimpleExecutionTest () - { - bool executed = false; - Task t = new Task (() => executed = true); - t.Execute (delegate {}); - - Assert.IsTrue (executed); - } - - [Test] - public void ExecutionWithChildCreationTest () - { - bool executed = false; - bool childRetrieved = false; - - Task t = new Task (() => { Task.Factory.StartNew (() => Console.WriteLine ("execution")); executed = true; }); - t.Execute ((child) => childRetrieved = child != null); - - Assert.IsTrue (executed); - Assert.IsTrue (childRetrieved); - } - } -} - -#endif diff --git a/mcs/class/Mono.Parallel/Test/Mono.Threading.Tasks/MonoTaskSchedulerTests.cs b/mcs/class/Mono.Parallel/Test/Mono.Threading.Tasks/MonoTaskSchedulerTests.cs deleted file mode 100644 index 31d3b614a1..0000000000 --- a/mcs/class/Mono.Parallel/Test/Mono.Threading.Tasks/MonoTaskSchedulerTests.cs +++ /dev/null @@ -1,108 +0,0 @@ -// -// MonoTaskSchedulerTests.cs -// -// Author: -// Jérémie "Garuma" Laval -// -// Copyright (c) 2011 Jérémie "Garuma" Laval -// -// 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. - -#if NET_4_0 - -using System; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using System.Collections.Generic; - -using Mono.Threading.Tasks; - -using NUnit.Framework; - -namespace MonoTests.Mono.Threading.Tasks -{ - [TestFixtureAttribute] - public class MonoTaskSchedulerTests - { - class DummyScheduler : TaskScheduler, IMonoTaskScheduler - { - public bool ParticipateMethod1 { - get; set; - } - - public bool ParticipateMethod2 { - get; set; - } - - protected override IEnumerable GetScheduledTasks () - { - return Enumerable.Empty (); - } - - protected override void QueueTask (Task task) - { - - } - - protected override bool TryExecuteTaskInline (Task task, bool taskWasPreviouslyQueued) - { - throw new NotSupportedException (); - } - - public void MonoParticipateUntil (Task task) - { - ParticipateMethod1 = true; - } - - public bool MonoParticipateUntil (Task task, ManualResetEventSlim predicateEvt, int millisecondsTimeout) - { - ParticipateMethod2 = true; - return true; - } - } - - [Test] - public void MethodRegisteringTest () - { - DummyScheduler sched = new DummyScheduler (); - - Task t = new Task (delegate { Thread.Sleep (100); }); - t.Start (sched); - t.Wait (); - - Assert.IsTrue (sched.ParticipateMethod1); - } - - [Test] - public void Method2RegisteringTest () - { - DummyScheduler sched = new DummyScheduler (); - - Task t = new Task (delegate { Thread.Sleep (100); }); - t.Start (sched); - t.Wait (100); - - Assert.IsTrue (sched.ParticipateMethod2); - } - - } -} - -#endif diff --git a/mcs/class/Mono.Posix/Mono.Unix.Native/Syscall.cs.REMOVED.git-id b/mcs/class/Mono.Posix/Mono.Unix.Native/Syscall.cs.REMOVED.git-id index f1a69089a3..8fd3f2fdb3 100644 --- a/mcs/class/Mono.Posix/Mono.Unix.Native/Syscall.cs.REMOVED.git-id +++ b/mcs/class/Mono.Posix/Mono.Unix.Native/Syscall.cs.REMOVED.git-id @@ -1 +1 @@ -7ba53e922bf7d1dd53db2206246a8281c522af7c \ No newline at end of file +0b8f1e6fa028cea47e904a1fbb9ce1a061dbc9c7 \ No newline at end of file diff --git a/mcs/class/Mono.Security/Mono.Security.Cryptography/DiffieHellmanManaged.cs b/mcs/class/Mono.Security/Mono.Security.Cryptography/DiffieHellmanManaged.cs index 3fae43a492..38b1dea8de 100644 --- a/mcs/class/Mono.Security/Mono.Security.Cryptography/DiffieHellmanManaged.cs +++ b/mcs/class/Mono.Security/Mono.Security.Cryptography/DiffieHellmanManaged.cs @@ -156,9 +156,9 @@ namespace Mono.Security.Cryptography { // clear keys protected override void Dispose(bool disposing) { if (!m_Disposed) { - m_P.Clear(); - m_G.Clear(); - m_X.Clear(); + if (m_P != null) m_P.Clear(); + if (m_G != null) m_G.Clear(); + if (m_X != null) m_X.Clear(); } m_Disposed = true; } diff --git a/mcs/class/System.ComponentModel.Composition.4.5/System.ComponentModel.Composition.dll.sources b/mcs/class/System.ComponentModel.Composition.4.5/System.ComponentModel.Composition.dll.sources index 5072270d8f..ac779fcd51 100644 --- a/mcs/class/System.ComponentModel.Composition.4.5/System.ComponentModel.Composition.dll.sources +++ b/mcs/class/System.ComponentModel.Composition.4.5/System.ComponentModel.Composition.dll.sources @@ -22,10 +22,8 @@ src/ComponentModel/Microsoft/Internal/GenerationServices.cs src/ComponentModel/Microsoft/Internal/Runtime/Serialization/SerializationServices.cs src/ComponentModel/Microsoft/Internal/Collections/CollectionServices.cs src/ComponentModel/Microsoft/Internal/Collections/WeakReferenceCollection.cs -src/ComponentModel/Microsoft/Internal/Collections/ReadOnlyDictionaryDebuggerProxy.cs src/ComponentModel/Microsoft/Internal/Collections/CollectionServices.CollectionOfObject.cs src/ComponentModel/Microsoft/Internal/Collections/EnumerableCardinality.cs -src/ComponentModel/Microsoft/Internal/Collections/ReadOnlyDictionary.cs src/ComponentModel/System/LazyOfTTMetadata.cs src/ComponentModel/System/ComponentModel/Composition/PartMetadataAttribute.cs src/ComponentModel/System/ComponentModel/Composition/ExceptionBuilder.cs diff --git a/mcs/class/System.ComponentModel.Composition.4.5/src/ComponentModel/Microsoft/Internal/Collections/ReadOnlyDictionary.cs b/mcs/class/System.ComponentModel.Composition.4.5/src/ComponentModel/Microsoft/Internal/Collections/ReadOnlyDictionary.cs deleted file mode 100644 index 03269317f5..0000000000 --- a/mcs/class/System.ComponentModel.Composition.4.5/src/ComponentModel/Microsoft/Internal/Collections/ReadOnlyDictionary.cs +++ /dev/null @@ -1,106 +0,0 @@ -// ----------------------------------------------------------------------- -// Copyright (c) Microsoft Corporation. All rights reserved. -// ----------------------------------------------------------------------- -using System; -using System.Collections; -using System.Collections.Generic; -using System.Diagnostics; -using Microsoft.Internal; - -// This is using the desktop namespace for ReadOnlyDictionary, the source code is in Microsoft\Internal\Collections to keep it seperate from the main MEF codebase. -namespace System.Collections.ObjectModel -{ - - [DebuggerDisplay("Count = {Count}")] - [DebuggerTypeProxy(typeof(ReadOnlyDictionaryDebuggerProxy<,>))] - internal sealed partial class ReadOnlyDictionary : IDictionary - { - private readonly IDictionary _innerDictionary; - - public ReadOnlyDictionary(IDictionary dictionary) - { - this._innerDictionary = dictionary ?? new Dictionary(0); - } - - public int Count - { - get { return this._innerDictionary.Count; } - } - - public bool IsReadOnly - { - get { return true; } - } - - public ICollection Keys - { - get { return this._innerDictionary.Keys; } - } - - public TValue this[TKey key] - { - get { return this._innerDictionary[key]; } - set { throw new NotSupportedException(Strings.NotSupportedReadOnlyDictionary); } - } - - public ICollection Values - { - get { return this._innerDictionary.Values; } - } - - public bool Contains(KeyValuePair item) - { - return this._innerDictionary.Contains(item); - } - - public bool ContainsKey(TKey key) - { - return this._innerDictionary.ContainsKey(key); - } - - public void CopyTo(KeyValuePair[] array, int arrayIndex) - { - this._innerDictionary.CopyTo(array, arrayIndex); - } - - public IEnumerator> GetEnumerator() - { - return this._innerDictionary.GetEnumerator(); - } - - public bool TryGetValue(TKey key, out TValue value) - { - return this._innerDictionary.TryGetValue(key, out value); - } - - IEnumerator IEnumerable.GetEnumerator() - { - return this._innerDictionary.GetEnumerator(); - } - - void IDictionary.Add(TKey key, TValue value) - { - throw new NotSupportedException(Strings.NotSupportedReadOnlyDictionary); - } - - void ICollection>.Add(KeyValuePair item) - { - throw new NotSupportedException(Strings.NotSupportedReadOnlyDictionary); - } - - void ICollection>.Clear() - { - throw new NotSupportedException(Strings.NotSupportedReadOnlyDictionary); - } - - bool IDictionary.Remove(TKey key) - { - throw new NotSupportedException(Strings.NotSupportedReadOnlyDictionary); - } - - bool ICollection>.Remove(KeyValuePair item) - { - throw new NotSupportedException(Strings.NotSupportedReadOnlyDictionary); - } - } -} diff --git a/mcs/class/System.ComponentModel.Composition.4.5/src/ComponentModel/Microsoft/Internal/Collections/ReadOnlyDictionaryDebuggerProxy.cs b/mcs/class/System.ComponentModel.Composition.4.5/src/ComponentModel/Microsoft/Internal/Collections/ReadOnlyDictionaryDebuggerProxy.cs deleted file mode 100644 index 9dda8f4bc5..0000000000 --- a/mcs/class/System.ComponentModel.Composition.4.5/src/ComponentModel/Microsoft/Internal/Collections/ReadOnlyDictionaryDebuggerProxy.cs +++ /dev/null @@ -1,34 +0,0 @@ -// ----------------------------------------------------------------------- -// Copyright (c) Microsoft Corporation. All rights reserved. -// ----------------------------------------------------------------------- -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using Microsoft.Internal; - -namespace System.Collections.ObjectModel -{ - - // NOTE: This type cannot be a nested proxy of ReadOnlyDictionary due to a bug - // in the Visual Studio Debugger which causes it to ignore nested generic proxies. - internal class ReadOnlyDictionaryDebuggerProxy - { - private readonly ReadOnlyDictionary _dictionary; - - public ReadOnlyDictionaryDebuggerProxy(ReadOnlyDictionary dictionary) - { - Requires.NotNull(dictionary, "dictionary"); - - _dictionary = dictionary; - } - - [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)] - public KeyValuePair[] Items - { - // NOTE: This shouldn't be cached, so that on every query of - // the current value of the underlying dictionary is respected. - get { return this._dictionary.ToArray(); } - } - } -} diff --git a/mcs/class/System.Data/Mono.Data.SqlExpressions/Tokenizer.cs b/mcs/class/System.Data/Mono.Data.SqlExpressions/Tokenizer.cs index 3208718e7d..256da0cfa1 100644 --- a/mcs/class/System.Data/Mono.Data.SqlExpressions/Tokenizer.cs +++ b/mcs/class/System.Data/Mono.Data.SqlExpressions/Tokenizer.cs @@ -136,10 +136,10 @@ namespace Mono.Data.SqlExpressions { string str = sb.ToString (); - if (str.IndexOf(".") == -1) - return Int64.Parse (str); - else - return double.Parse (str); + if (str.IndexOf ('.') < 0) + return Int64.Parse (str, CultureInfo.InvariantCulture); + + return double.Parse (str, CultureInfo.InvariantCulture); } private char ProcessEscapes(char c) @@ -327,7 +327,7 @@ namespace Mono.Data.SqlExpressions { case '#': string date = ReadString ('#'); - val = DateTime.Parse (date); + val = DateTime.Parse (date, CultureInfo.InvariantCulture); return Token.DateLiteral; case '\'': diff --git a/mcs/class/System.Data/System.Data/DataColumn.cs b/mcs/class/System.Data/System.Data/DataColumn.cs index 166be8d8f4..7e7cedae6f 100644 --- a/mcs/class/System.Data/System.Data/DataColumn.cs +++ b/mcs/class/System.Data/System.Data/DataColumn.cs @@ -474,7 +474,7 @@ namespace System.Data { public string Expression { get { return _expression; } set { - if (value == null) + if (value == null || value.Trim () == string.Empty) value = String.Empty; CompileExpression (value); diff --git a/mcs/class/System.Data/System.Data/DataRow.cs b/mcs/class/System.Data/System.Data/DataRow.cs index 6b6299f41a..f3fa2a8e77 100644 --- a/mcs/class/System.Data/System.Data/DataRow.cs +++ b/mcs/class/System.Data/System.Data/DataRow.cs @@ -134,10 +134,7 @@ namespace System.Data { public object this [string columnName] { get { return this [columnName, DataRowVersion.Default]; } set { - DataColumn column = _table.Columns [columnName]; - if (column == null) - throw new ArgumentException ("The column '" + columnName + - "' does not belong to the table : " + _table.TableName); + DataColumn column = GetColumn (columnName); this [column.Ordinal] = value; } } @@ -202,10 +199,7 @@ namespace System.Data { /// public object this [string columnName, DataRowVersion version] { get { - DataColumn column = _table.Columns [columnName]; - if (column == null) - throw new ArgumentException ("The column '" + columnName + - "' does not belong to the table : " + _table.TableName); + DataColumn column = GetColumn (columnName); return this [column.Ordinal, version]; } } @@ -1248,7 +1242,7 @@ namespace System.Data { /// public bool IsNull (string columnName) { - return IsNull (Table.Columns [columnName]); + return IsNull (GetColumn (columnName)); } /// @@ -1257,6 +1251,17 @@ namespace System.Data { /// public bool IsNull (DataColumn column, DataRowVersion version) { + if (column == null) + throw new ArgumentNullException ("column"); + + // use the expresion if there is one + if (column.Expression != String.Empty) { + // FIXME: how does this handle 'version'? + // TODO: Can we avoid the Eval each time by using the cached value? + object o = column.CompiledExpression.Eval (this); + return o == null && o == DBNull.Value; + } + return column.DataContainer.IsNull (IndexFromVersion (version)); } @@ -1692,5 +1697,15 @@ namespace System.Data { } } #endif // NET_2_0 + + DataColumn GetColumn (string columnName) + { + DataColumn column = _table.Columns [columnName]; + + if (column == null) + throw new ArgumentException ("The column '" + columnName + "' does not belong to the table " + _table.TableName); + + return column; + } } } diff --git a/mcs/class/System.Data/Test/System.Data/DataColumnTest2.cs b/mcs/class/System.Data/Test/System.Data/DataColumnTest2.cs index f0f68c3207..096c72fd1c 100644 --- a/mcs/class/System.Data/Test/System.Data/DataColumnTest2.cs +++ b/mcs/class/System.Data/Test/System.Data/DataColumnTest2.cs @@ -542,6 +542,23 @@ namespace MonoTests.System.Data Assert.AreEqual(sExpression,dc.Expression, "dce#2"); } + [Test] + public void Expression_Whitespace () + { + DataColumn dc = new DataColumn ("ColName", typeof(string)); + + string plainWhitespace = " "; + string surroundWhitespace = " 'abc' "; + + Assert.AreEqual (string.Empty, dc.Expression, "dce#1"); + + dc.Expression = plainWhitespace; + Assert.AreEqual (string.Empty, dc.Expression, "dce#2"); + + dc.Expression = surroundWhitespace; + Assert.AreEqual (surroundWhitespace, dc.Expression, "dce#3"); + } + [Test] public void Expression_Exceptions() { diff --git a/mcs/class/System.Data/Test/System.Data/DataRowTest2.cs b/mcs/class/System.Data/Test/System.Data/DataRowTest2.cs index 14333e2201..4dc0d77495 100644 --- a/mcs/class/System.Data/Test/System.Data/DataRowTest2.cs +++ b/mcs/class/System.Data/Test/System.Data/DataRowTest2.cs @@ -2125,6 +2125,59 @@ namespace MonoTests.System.Data #endregion } + [Test] + public void IsNull_BeforeGetValue () + { + DataTable table = new DataTable (); + + // add the row, with the value in the column + DataColumn staticColumn = table.Columns.Add ("static", typeof(string), null); // static + DataRow row = table.Rows.Add ("the value"); + Assert.IsFalse (row.IsNull ("static"), "static null check failed"); + Assert.AreEqual ("the value", row ["static"], "static value check failed"); + + // add the first derived column + DataColumn firstColumn = table.Columns.Add ("first", typeof(string), "static"); // first -> static + Assert.IsFalse (row.IsNull ("first"), "first level null check failed"); + Assert.AreEqual ("the value", row ["first"], "first level value check failed"); + + // add the second level of related + DataColumn secondColumn = table.Columns.Add ("second", typeof(string), "first"); // second -> first -> static + Assert.IsFalse (row.IsNull ("second"), "second level null check failed"); + Assert.AreEqual ("the value", row ["second"], "second level value check failed"); + } + + [Test] + public void IsNull_NullValueArguments () + { + DataTable table = new DataTable (); + + // add the row, with the value in the column + DataColumn staticColumn = table.Columns.Add ("static", typeof(string), null); + DataRow row = table.Rows.Add ("the value"); + + try { + row.IsNull ((string)null); + Assert.Fail ("expected an arg null exception for passing a null string"); + } catch (ArgumentNullException) { + // do nothing as null columns aren't allowed + } + + try { + row.IsNull (""); + Assert.Fail ("expected an arg exception for passing an empty string"); + } catch (ArgumentException) { + // do nothing as we can't find a col with no name + } + + try { + row.IsNull (null, DataRowVersion.Default); + Assert.Fail ("null column with version check failed"); + } catch (ArgumentNullException) { + // do nothing as null columns aren't allowed + } + } + [Test] public void Item() { // init table with columns diff --git a/mcs/class/System.Drawing/System.Drawing/Graphics.cs b/mcs/class/System.Drawing/System.Drawing/Graphics.cs index 827bdee088..6e18fe690d 100644 --- a/mcs/class/System.Drawing/System.Drawing/Graphics.cs +++ b/mcs/class/System.Drawing/System.Drawing/Graphics.cs @@ -1744,7 +1744,7 @@ namespace System.Drawing if (GDIPlus.Display == IntPtr.Zero) { GDIPlus.Display = GDIPlus.XOpenDisplay (IntPtr.Zero); if (GDIPlus.Display == IntPtr.Zero) - throw new NotSupportedException ("Could not open display (X-Server required. Check you DISPLAY environment variable)"); + throw new NotSupportedException ("Could not open display (X-Server required. Check your DISPLAY environment variable)"); } if (hwnd == IntPtr.Zero) { hwnd = GDIPlus.XRootWindow (GDIPlus.Display, GDIPlus.XDefaultScreen (GDIPlus.Display)); diff --git a/mcs/class/System.Drawing/Test/System.Drawing.Drawing2D/TestHatchBrush.cs b/mcs/class/System.Drawing/Test/System.Drawing.Drawing2D/TestHatchBrush.cs index b07e5b9415..444e1e6066 100644 --- a/mcs/class/System.Drawing/Test/System.Drawing.Drawing2D/TestHatchBrush.cs +++ b/mcs/class/System.Drawing/Test/System.Drawing.Drawing2D/TestHatchBrush.cs @@ -28,6 +28,7 @@ using System; +using System.IO; using System.Drawing; using System.Drawing.Imaging; using System.Drawing.Drawing2D; @@ -125,6 +126,7 @@ namespace MonoTests.System.Drawing.Drawing2D // save the drawing string file = "TestHatchBrush" + getOutSufix() + ".png"; bmp.Save (file, ImageFormat.Png); + File.Delete (file); } private void Constructors () diff --git a/mcs/class/System.Drawing/Test/System.Drawing.Imaging/TestImageAttributes.cs b/mcs/class/System.Drawing/Test/System.Drawing.Imaging/TestImageAttributes.cs index 784e19b0ed..dcca275389 100644 --- a/mcs/class/System.Drawing/Test/System.Drawing.Imaging/TestImageAttributes.cs +++ b/mcs/class/System.Drawing/Test/System.Drawing.Imaging/TestImageAttributes.cs @@ -27,6 +27,7 @@ // using System; +using System.IO; using System.Drawing; using System.Drawing.Imaging; using System.Security.Permissions; @@ -114,6 +115,8 @@ namespace MonoTests.System.Drawing.Imaging { private void Bug80323 (Color c) { + string fileName = String.Format ("80323-{0}.png", c.ToArgb ().ToString ("X")); + // test case from bug #80323 ColorMatrix cm = new ColorMatrix (new float[][] { new float[] {1, 0, 0, 0, 0}, //R @@ -138,12 +141,14 @@ namespace MonoTests.System.Drawing.Imaging { g.DrawImage (bmp, new Rectangle (0, 0, 100, 100), 0, 0, 100, 100, GraphicsUnit.Pixel, null); g.DrawImage (bmp, new Rectangle (100, 0, 100, 100), 0, 0, 100, 100, GraphicsUnit.Pixel, ia); } - b.Save (String.Format ("80323-{0}.png", c.ToArgb ().ToString ("X"))); + b.Save (fileName); Assert.AreEqual (Color.FromArgb (255, 255, 155, 155), b.GetPixel (50, 50), "50,50"); Assert.AreEqual (Color.FromArgb (255, 255, 205, 205), b.GetPixel (150, 50), "150,50"); } } } + + File.Delete (fileName); } [Test] diff --git a/mcs/class/System.IO.Compression/Test/System.IO.Compression/ZipTest.cs b/mcs/class/System.IO.Compression/Test/System.IO.Compression/ZipTest.cs index ea7f6d3818..8158dfd757 100644 --- a/mcs/class/System.IO.Compression/Test/System.IO.Compression/ZipTest.cs +++ b/mcs/class/System.IO.Compression/Test/System.IO.Compression/ZipTest.cs @@ -58,6 +58,8 @@ namespace MonoTests.System.IO.Compression var nullEntry = archive.GetEntry("nonexisting"); Assert.IsNull(nullEntry); } + + File.Delete ("test.zip"); } [Test] @@ -75,6 +77,8 @@ namespace MonoTests.System.IO.Compression Assert.Fail(); } + + File.Delete ("test.zip"); } [Test] @@ -90,6 +94,8 @@ namespace MonoTests.System.IO.Compression var nullEntry = archive.GetEntry("nonexisting"); Assert.IsNull(nullEntry); } + + File.Delete ("test.zip"); } [Test] @@ -104,6 +110,8 @@ namespace MonoTests.System.IO.Compression var foo = entry.Open(); } + + File.Delete ("test.zip"); } [Test] @@ -125,6 +133,8 @@ namespace MonoTests.System.IO.Compression var entry = archive.GetEntry("foo.txt"); Assert.IsNull(entry); } + + File.Delete ("delete.zip"); } [Test] @@ -146,6 +156,8 @@ namespace MonoTests.System.IO.Compression var entry = archive.GetEntry("foo.txt"); Assert.IsNull(entry); } + + File.Delete ("delete.zip"); } [Test] @@ -157,6 +169,8 @@ namespace MonoTests.System.IO.Compression var entry = archive.CreateEntry("foo.txt"); using (var stream = entry.Open()) { + using (var streamWriter = new StreamWriter(stream)) + streamWriter.Write("foo"); } } @@ -165,7 +179,14 @@ namespace MonoTests.System.IO.Compression { var entry = archive.GetEntry("foo.txt"); Assert.IsNotNull(entry); + + var streamReader = new StreamReader(entry.Open()); + var text = streamReader.ReadToEnd(); + + Assert.AreEqual("foo", text); } + + File.Delete ("create.zip"); } [Test] @@ -184,6 +205,8 @@ namespace MonoTests.System.IO.Compression Assert.AreEqual("foobar/bar.txt", entries[3].FullName); Assert.AreEqual("foobar/foo.txt", entries[4].FullName); } + + File.Delete ("test.zip"); } [Test] @@ -202,6 +225,8 @@ namespace MonoTests.System.IO.Compression Assert.AreEqual("foobar/bar.txt", entries[3].FullName); Assert.AreEqual("foobar/foo.txt", entries[4].FullName); } + + File.Delete ("test.zip"); } [Test] @@ -219,6 +244,8 @@ namespace MonoTests.System.IO.Compression Assert.Fail(); } + + File.Delete ("test.zip"); } } } diff --git a/mcs/class/System.IO.Compression/ZipArchiveEntry.cs b/mcs/class/System.IO.Compression/ZipArchiveEntry.cs index acfb8f3f2a..cd783b8eb0 100644 --- a/mcs/class/System.IO.Compression/ZipArchiveEntry.cs +++ b/mcs/class/System.IO.Compression/ZipArchiveEntry.cs @@ -112,15 +112,9 @@ namespace System.IO.Compression if (Archive.Mode == ZipArchiveMode.Create && openStream != null) throw new IOException("The archive for this entry was opened with the Create mode, and this entry has already been written to."); - var memoryStream = new MemoryStream(); - openStream = memoryStream; + openStream = entry.OpenEntryStream(); - if (Archive.Mode == ZipArchiveMode.Read || Archive.Mode == ZipArchiveMode.Update) - entry.WriteTo(memoryStream); - - memoryStream.Seek(0, SeekOrigin.Begin); - - return memoryStream; + return openStream; } } } diff --git a/mcs/class/System.Json/System.Json/JsonPrimitive.cs b/mcs/class/System.Json/System.Json/JsonPrimitive.cs index 64518785b8..5d47eb4a4e 100644 --- a/mcs/class/System.Json/System.Json/JsonPrimitive.cs +++ b/mcs/class/System.Json/System.Json/JsonPrimitive.cs @@ -163,7 +163,16 @@ namespace System.Json return (string) value; throw new NotImplementedException ("GetFormattedString from value type " + value.GetType ()); case JsonType.Number: - return ((IFormattable) value).ToString ("G", NumberFormatInfo.InvariantInfo); + string s; + if (value is float || value is double) + // Use "round-trip" format + s = ((IFormattable) value).ToString ("R", NumberFormatInfo.InvariantInfo); + else + s = ((IFormattable) value).ToString ("G", NumberFormatInfo.InvariantInfo); + if (s == "NaN" || s == "Infinity" || s == "-Infinity") + return "\"" + s + "\""; + else + return s; default: throw new InvalidOperationException (); } diff --git a/mcs/class/System.Json/System.Json/JsonValue.cs b/mcs/class/System.Json/System.Json/JsonValue.cs index 1d16b88e3f..d703edd551 100644 --- a/mcs/class/System.Json/System.Json/JsonValue.cs +++ b/mcs/class/System.Json/System.Json/JsonValue.cs @@ -1,6 +1,7 @@ using System; using System.Collections; using System.Collections.Generic; +using System.Globalization; using System.IO; using System.Linq; using System.Runtime.Serialization.Json; @@ -218,8 +219,8 @@ namespace System.Json if (src [i] == '"' || src [i] == '\\') { sb.Append (src, start, i - start); sb.Append ('\\'); - sb.Append (src [i++]); - start = i; + sb.Append (src [i]); + start = i + 1; } sb.Append (src, start, src.Length - start); return sb.ToString (); @@ -328,70 +329,70 @@ namespace System.Json { if (value == null) throw new ArgumentNullException ("value"); - return Convert.ToBoolean (((JsonPrimitive) value).Value); + return Convert.ToBoolean (((JsonPrimitive) value).Value, NumberFormatInfo.InvariantInfo); } public static implicit operator byte (JsonValue value) { if (value == null) throw new ArgumentNullException ("value"); - return Convert.ToByte (((JsonPrimitive) value).Value); + return Convert.ToByte (((JsonPrimitive) value).Value, NumberFormatInfo.InvariantInfo); } public static implicit operator char (JsonValue value) { if (value == null) throw new ArgumentNullException ("value"); - return Convert.ToChar (((JsonPrimitive) value).Value); + return Convert.ToChar (((JsonPrimitive) value).Value, NumberFormatInfo.InvariantInfo); } public static implicit operator decimal (JsonValue value) { if (value == null) throw new ArgumentNullException ("value"); - return Convert.ToDecimal (((JsonPrimitive) value).Value); + return Convert.ToDecimal (((JsonPrimitive) value).Value, NumberFormatInfo.InvariantInfo); } public static implicit operator double (JsonValue value) { if (value == null) throw new ArgumentNullException ("value"); - return Convert.ToDouble (((JsonPrimitive) value).Value); + return Convert.ToDouble (((JsonPrimitive) value).Value, NumberFormatInfo.InvariantInfo); } public static implicit operator float (JsonValue value) { if (value == null) throw new ArgumentNullException ("value"); - return Convert.ToSingle (((JsonPrimitive) value).Value); + return Convert.ToSingle (((JsonPrimitive) value).Value, NumberFormatInfo.InvariantInfo); } public static implicit operator int (JsonValue value) { if (value == null) throw new ArgumentNullException ("value"); - return Convert.ToInt32 (((JsonPrimitive) value).Value); + return Convert.ToInt32 (((JsonPrimitive) value).Value, NumberFormatInfo.InvariantInfo); } public static implicit operator long (JsonValue value) { if (value == null) throw new ArgumentNullException ("value"); - return Convert.ToInt64 (((JsonPrimitive) value).Value); + return Convert.ToInt64 (((JsonPrimitive) value).Value, NumberFormatInfo.InvariantInfo); } public static implicit operator sbyte (JsonValue value) { if (value == null) throw new ArgumentNullException ("value"); - return Convert.ToSByte (((JsonPrimitive) value).Value); + return Convert.ToSByte (((JsonPrimitive) value).Value, NumberFormatInfo.InvariantInfo); } public static implicit operator short (JsonValue value) { if (value == null) throw new ArgumentNullException ("value"); - return Convert.ToInt16 (((JsonPrimitive) value).Value); + return Convert.ToInt16 (((JsonPrimitive) value).Value, NumberFormatInfo.InvariantInfo); } public static implicit operator string (JsonValue value) @@ -405,21 +406,21 @@ namespace System.Json { if (value == null) throw new ArgumentNullException ("value"); - return Convert.ToUInt16 (((JsonPrimitive) value).Value); + return Convert.ToUInt16 (((JsonPrimitive) value).Value, NumberFormatInfo.InvariantInfo); } public static implicit operator ulong (JsonValue value) { if (value == null) throw new ArgumentNullException ("value"); - return Convert.ToUInt64(((JsonPrimitive) value).Value); + return Convert.ToUInt64(((JsonPrimitive) value).Value, NumberFormatInfo.InvariantInfo); } public static implicit operator ushort (JsonValue value) { if (value == null) throw new ArgumentNullException ("value"); - return Convert.ToUInt16 (((JsonPrimitive) value).Value); + return Convert.ToUInt16 (((JsonPrimitive) value).Value, NumberFormatInfo.InvariantInfo); } public static implicit operator DateTime (JsonValue value) diff --git a/mcs/class/System.Json/Test/System.Json/JsonValueTest.cs b/mcs/class/System.Json/Test/System.Json/JsonValueTest.cs index 2459c1fc3a..02dd106dfd 100644 --- a/mcs/class/System.Json/Test/System.Json/JsonValueTest.cs +++ b/mcs/class/System.Json/Test/System.Json/JsonValueTest.cs @@ -11,6 +11,8 @@ using System; using System.IO; using System.Text; using System.Json; +using System.Globalization; +using System.Threading; namespace MonoTests.System { @@ -24,6 +26,14 @@ namespace MonoTests.System Assert.AreEqual (1, j.Count, "itemcount"); Assert.AreEqual (JsonType.String, j ["a"].JsonType, "type"); Assert.AreEqual ("b", (string) j ["a"], "value"); + + JsonValue.Parse ("[{ \"a\": \"b\",}]"); + } + + [Test] + public void LoadWithTrailingComma2 () + { + JsonValue.Parse ("[{ \"a\": \"b\",}]"); } // Test that we correctly serialize JsonArray with null elements. @@ -35,5 +45,141 @@ namespace MonoTests.System var str = j.ToString (); Assert.AreEqual (str, "[1, 2, 3, null]"); } + + [Test] + public void QuoteEscapeBug_20869 () + { + Assert.AreEqual ((new JsonPrimitive ("\"\"")).ToString (), "\"\\\"\\\"\""); + } + + void ExpectError (string s) + { + try { + JsonValue.Parse (s); + Assert.Fail ("Expected ArgumentException for `" + s + "'"); + } catch (ArgumentException) { + } + } + + // Test whether an exception is thrown for invalid JSON + [Test] + public void CheckErrors () + { + ExpectError (@"-"); + ExpectError (@"- "); + ExpectError (@"1."); + ExpectError (@"1. "); + ExpectError (@"1e+"); + ExpectError (@"1 2"); + ExpectError (@"077"); + + ExpectError (@"[1,]"); + + //ExpectError (@"{""a"":1,}"); // Not valid JSON, allowed anyway + } + + // Parse a json string and compare to the expected value + void CheckDouble (double expected, string json) + { + double jvalue = (double) JsonValue.Parse (json); + Assert.AreEqual (expected, jvalue); + } + + // Convert a number to json and parse the string, then compare the result to the original value + void CheckDouble (double number) + { + double jvalue = (double) JsonValue.Parse (new JsonPrimitive (number).ToString ()); + Assert.AreEqual (number, jvalue); // should be exactly the same + } + + [Test] + public void CheckNumbers () + { + CheckDouble (0, "0"); + CheckDouble (0, "-0"); + CheckDouble (0, "0.00"); + CheckDouble (0, "-0.00"); + CheckDouble (1, "1"); + CheckDouble (1.1, "1.1"); + CheckDouble (-1, "-1"); + CheckDouble (-1.1, "-1.1"); + CheckDouble (1e-10, "1e-10"); + CheckDouble (1e+10, "1e+10"); + CheckDouble (1e-30, "1e-30"); + CheckDouble (1e+30, "1e+30"); + + CheckDouble (1, "\"1\""); + CheckDouble (1.1, "\"1.1\""); + CheckDouble (-1, "\"-1\""); + CheckDouble (-1.1, "\"-1.1\""); + + CheckDouble (double.NaN, "\"NaN\""); + CheckDouble (double.PositiveInfinity, "\"Infinity\""); + CheckDouble (double.NegativeInfinity, "\"-Infinity\""); + + ExpectError ("NaN"); + ExpectError ("Infinity"); + ExpectError ("-Infinity"); + + Assert.AreEqual ("1.1", new JsonPrimitive (1.1).ToString ()); + Assert.AreEqual ("-1.1", new JsonPrimitive (-1.1).ToString ()); + Assert.AreEqual ("1E-20", new JsonPrimitive (1e-20).ToString ()); + Assert.AreEqual ("1E+20", new JsonPrimitive (1e+20).ToString ()); + Assert.AreEqual ("1E-30", new JsonPrimitive (1e-30).ToString ()); + Assert.AreEqual ("1E+30", new JsonPrimitive (1e+30).ToString ()); + Assert.AreEqual ("\"NaN\"", new JsonPrimitive (double.NaN).ToString ()); + Assert.AreEqual ("\"Infinity\"", new JsonPrimitive (double.PositiveInfinity).ToString ()); + Assert.AreEqual ("\"-Infinity\"", new JsonPrimitive (double.NegativeInfinity).ToString ()); + + Assert.AreEqual ("1E-30", JsonValue.Parse ("1e-30").ToString ()); + Assert.AreEqual ("1E+30", JsonValue.Parse ("1e+30").ToString ()); + + CheckDouble (1); + CheckDouble (1.1); + CheckDouble (1.25); + CheckDouble (-1); + CheckDouble (-1.1); + CheckDouble (-1.25); + CheckDouble (1e-20); + CheckDouble (1e+20); + CheckDouble (1e-30); + CheckDouble (1e+30); + CheckDouble (3.1415926535897932384626433); + CheckDouble (3.1415926535897932384626433e-20); + CheckDouble (3.1415926535897932384626433e+20); + CheckDouble (double.NaN); + CheckDouble (double.PositiveInfinity); + CheckDouble (double.NegativeInfinity); + CheckDouble (double.MinValue); + CheckDouble (double.MaxValue); + + // A number which needs 17 digits (see http://stackoverflow.com/questions/6118231/why-do-i-need-17-significant-digits-and-not-16-to-represent-a-double) + CheckDouble (18014398509481982.0); + + // Values around the smallest positive decimal value + CheckDouble (1.123456789e-29); + CheckDouble (1.123456789e-28); + + CheckDouble (1.1E-29, "0.000000000000000000000000000011"); + // This is being parsed as a decimal and rounded to 1e-28, even though it can be more accurately be represented by a double + //CheckDouble (1.1E-28, "0.00000000000000000000000000011"); + } + + // Retry the test with different locales + [Test] + public void CheckNumbersCulture () + { + CultureInfo old = Thread.CurrentThread.CurrentCulture; + try { + Thread.CurrentThread.CurrentCulture = new CultureInfo ("en"); + CheckNumbers (); + Thread.CurrentThread.CurrentCulture = new CultureInfo ("fr"); + CheckNumbers (); + Thread.CurrentThread.CurrentCulture = new CultureInfo ("de"); + CheckNumbers (); + } finally { + Thread.CurrentThread.CurrentCulture = old; + } + } } } diff --git a/mcs/class/System.Net.Http/System.Net.Http.Headers/ContentDispositionHeaderValue.cs b/mcs/class/System.Net.Http/System.Net.Http.Headers/ContentDispositionHeaderValue.cs index 9dd41b3d33..0e28b72838 100644 --- a/mcs/class/System.Net.Http/System.Net.Http.Headers/ContentDispositionHeaderValue.cs +++ b/mcs/class/System.Net.Http/System.Net.Http.Headers/ContentDispositionHeaderValue.cs @@ -211,6 +211,10 @@ namespace System.Net.Http.Headers static string EncodeBase64Value (string value) { + bool quoted = value.Length > 1 && value [0] == '"' && value [value.Length - 1] == '"'; + if (quoted) + value = value.Substring (1, value.Length - 2); + for (int i = 0; i < value.Length; ++i) { var ch = value[i]; if (ch > 127) { @@ -220,7 +224,7 @@ namespace System.Net.Http.Headers } } - if (!Lexer.IsValidToken (value)) + if (quoted || !Lexer.IsValidToken (value)) return "\"" + value + "\""; return value; diff --git a/mcs/class/System.Net.Http/System.Net.Http/DelegatingHandler.cs b/mcs/class/System.Net.Http/System.Net.Http/DelegatingHandler.cs index 2458975d68..fe940df896 100644 --- a/mcs/class/System.Net.Http/System.Net.Http/DelegatingHandler.cs +++ b/mcs/class/System.Net.Http/System.Net.Http/DelegatingHandler.cs @@ -34,6 +34,7 @@ namespace System.Net.Http public abstract class DelegatingHandler : HttpMessageHandler { bool disposed; + HttpMessageHandler handler; protected DelegatingHandler () { @@ -47,13 +48,24 @@ namespace System.Net.Http InnerHandler = innerHandler; } - public HttpMessageHandler InnerHandler { get; set; } + public HttpMessageHandler InnerHandler { + get { + return handler; + } + set { + if (value == null) + throw new ArgumentNullException ("InnerHandler"); + + handler = value; + } + } protected override void Dispose (bool disposing) { if (disposing && !disposed) { disposed = true; - InnerHandler.Dispose (); + if (InnerHandler != null) + InnerHandler.Dispose (); } base.Dispose (disposing); diff --git a/mcs/class/System.Net.Http/System.Net.Http_test.dll.sources b/mcs/class/System.Net.Http/System.Net.Http_test.dll.sources index e5ce8f7505..29d4d75f5e 100644 --- a/mcs/class/System.Net.Http/System.Net.Http_test.dll.sources +++ b/mcs/class/System.Net.Http/System.Net.Http_test.dll.sources @@ -1,3 +1,4 @@ +System.Net.Http/DelegatingHandlerTest.cs System.Net.Http/ByteArrayContentTest.cs System.Net.Http/FormUrlEncodedContentTest.cs System.Net.Http/HttpClientHandlerTest.cs diff --git a/mcs/class/System.Net.Http/Test/System.Net.Http.Headers/ContentDispositionHeaderValueTest.cs b/mcs/class/System.Net.Http/Test/System.Net.Http.Headers/ContentDispositionHeaderValueTest.cs index 87bd1a95fe..800ab30251 100644 --- a/mcs/class/System.Net.Http/Test/System.Net.Http.Headers/ContentDispositionHeaderValueTest.cs +++ b/mcs/class/System.Net.Http/Test/System.Net.Http.Headers/ContentDispositionHeaderValueTest.cs @@ -215,6 +215,14 @@ namespace MonoTests.System.Net.Http.Headers value.FileName = "(@)"; Assert.AreEqual ("\"(@)\"", value.FileName, "#21"); Assert.AreEqual (new NameValueHeaderValue ("filename", "\"(@)\""), value.Parameters.First (), "#22"); + + value.FileName = "\"č\""; + Assert.AreEqual ("č", value.FileName, "#31"); + Assert.AreEqual (new NameValueHeaderValue ("filename", "\"=?utf-8?B?xI0=?=\""), value.Parameters.First (), "#32"); + + value.FileName = "\"quoted\""; + Assert.AreEqual ("\"quoted\"", value.FileName, "#41"); + Assert.AreEqual (new NameValueHeaderValue ("filename", "\"quoted\""), value.Parameters.First (), "#42"); } [Test] diff --git a/mcs/class/System.Net.Http/Test/System.Net.Http/DelegatingHandlerTest.cs b/mcs/class/System.Net.Http/Test/System.Net.Http/DelegatingHandlerTest.cs new file mode 100644 index 0000000000..d6812e7f1d --- /dev/null +++ b/mcs/class/System.Net.Http/Test/System.Net.Http/DelegatingHandlerTest.cs @@ -0,0 +1,63 @@ +// +// DelegatingHandlerTest.cs +// +// Authors: +// Marek Safar +// +// Copyright (C) 2014 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 NUnit.Framework; +using System.Net.Http; +using System.IO; +using System.Threading.Tasks; + +namespace MonoTests.System.Net.Http +{ + [TestFixture] + public class DelegatingHandlerTest + { + class DefaultHandler : DelegatingHandler + { + } + + + [Test] + public void DisposeTest () + { + var handler = new DefaultHandler (); + handler.Dispose (); + } + + [Test] + public void InnerHandler_Invalid () + { + var handler = new DefaultHandler (); + try { + handler.InnerHandler = null; + Assert.Fail ("#1"); + } catch (ArgumentNullException) { + } + } + } +} diff --git a/mcs/class/System.Numerics/System.Numerics/BigInteger.cs b/mcs/class/System.Numerics/System.Numerics/BigInteger.cs index b067997cb7..329f91eed1 100644 --- a/mcs/class/System.Numerics/System.Numerics/BigInteger.cs +++ b/mcs/class/System.Numerics/System.Numerics/BigInteger.cs @@ -315,12 +315,14 @@ namespace System.Numerics { word = (uint)sub; borrow = (uint)(sub >> 32) & 0x1u; - data [data.Length - 1] = ~word & store_mask; + if ((~word & store_mask) == 0) + data = Resize (data, data.Length - 1); + else + data [data.Length - 1] = ~word & store_mask; } if (borrow != 0) //FIXME I believe this can't happen, can someone write a test for it? throw new Exception ("non zero final carry"); } - } public bool IsEven { diff --git a/mcs/class/System.Numerics/Test/System.Numerics/BigIntegerTest.cs b/mcs/class/System.Numerics/Test/System.Numerics/BigIntegerTest.cs index 4aa0ffbd02..817d13e40c 100644 --- a/mcs/class/System.Numerics/Test/System.Numerics/BigIntegerTest.cs +++ b/mcs/class/System.Numerics/Test/System.Numerics/BigIntegerTest.cs @@ -550,13 +550,18 @@ namespace MonoTests.System.Numerics { long[] values = new long [] { 0, long.MinValue, long.MaxValue, -1, 1L + int.MaxValue, -1L + int.MinValue, 0x1234, 0xFFFFFFFFL, 0x1FFFFFFFFL, -0xFFFFFFFFL, -0x1FFFFFFFFL, - 0x100000000L, -0x100000000L, 0x100000001L, -0x100000001L }; + 0x100000000L, -0x100000000L, 0x100000001L, -0x100000001L, 4294967295L, -4294967295L, 4294967296L, -4294967296L }; foreach (var val in values) { - var a = new BigInteger (val); - var b = new BigInteger (a.ToByteArray ()); + try { + var a = new BigInteger (val); + var b = new BigInteger (a.ToByteArray ()); - Assert.AreEqual (val, (long)a, "#a_" + val); - Assert.AreEqual (val, (long)b, "#b_" + val); + Assert.AreEqual (val, (long)a, "#a_" + val); + Assert.AreEqual (val, (long)b, "#b_" + val); + Assert.AreEqual (a, b, "#a == #b (" + val + ")"); + } catch (Exception e) { + Assert.Fail ("could not roundtrip {0}", val); + } } } diff --git a/mcs/class/System.Runtime.Caching/Test/System.Runtime.Caching/MemoryCacheTest.cs b/mcs/class/System.Runtime.Caching/Test/System.Runtime.Caching/MemoryCacheTest.cs index 2c9cafb0f6..39b66d9ca1 100644 --- a/mcs/class/System.Runtime.Caching/Test/System.Runtime.Caching/MemoryCacheTest.cs +++ b/mcs/class/System.Runtime.Caching/Test/System.Runtime.Caching/MemoryCacheTest.cs @@ -1254,7 +1254,7 @@ namespace MonoTests.System.Runtime.Caching // add some short duration entries for (int i = 0; i < HEAP_RESIZE_SHORT_ENTRIES; i++) { - var expireAt = DateTimeOffset.Now.AddSeconds (1); + var expireAt = DateTimeOffset.Now.AddSeconds (3); mc.Add ("short-" + i, i.ToString (), expireAt); } @@ -1262,20 +1262,20 @@ namespace MonoTests.System.Runtime.Caching // add some long duration entries for (int i = 0; i < HEAP_RESIZE_LONG_ENTRIES; i++) { - var expireAt = DateTimeOffset.Now.AddSeconds (10); + var expireAt = DateTimeOffset.Now.AddSeconds (12); mc.Add ("long-" + i, i.ToString (), expireAt); } Assert.AreEqual (HEAP_RESIZE_LONG_ENTRIES + HEAP_RESIZE_SHORT_ENTRIES, mc.GetCount(), "#CS3"); // wait for the cache thread to expire the short duration items, this will also shrink the size of the cache - global::System.Threading.Thread.Sleep (3 * 1000); + global::System.Threading.Thread.Sleep (5 * 1000); Assert.AreEqual (HEAP_RESIZE_LONG_ENTRIES, mc.GetCount (), "#CS4"); // add some new items into the cache, this will grow the cache again for (int i = 0; i < HEAP_RESIZE_LONG_ENTRIES; i++) { - mc.Add("final-" + i, i.ToString (), DateTimeOffset.Now.AddSeconds (2)); + mc.Add("final-" + i, i.ToString (), DateTimeOffset.Now.AddSeconds (4)); } Assert.AreEqual (HEAP_RESIZE_LONG_ENTRIES + HEAP_RESIZE_LONG_ENTRIES, mc.GetCount (), "#CS5"); diff --git a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JavaScriptReader.cs b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JavaScriptReader.cs index 891be5db3e..2d11b1727a 100644 --- a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JavaScriptReader.cs +++ b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JavaScriptReader.cs @@ -26,7 +26,7 @@ namespace System.Runtime.Serialization.Json { object v = ReadCore (); SkipSpaces (); - if (r.Read () >= 0) + if (ReadChar () >= 0) throw JsonError (String.Format ("extra characters in JSON input")); return v; } @@ -68,8 +68,10 @@ namespace System.Runtime.Serialization.Json } while (true) { SkipSpaces (); - if (PeekChar () == '}') + if (PeekChar () == '}') { + ReadChar (); break; + } string name = ReadStringLiteral (); SkipSpaces (); Expect (':'); @@ -160,98 +162,89 @@ namespace System.Runtime.Serialization.Json // It could return either int, long or decimal, depending on the parsed value. object ReadNumericLiteral () { + var sb = new StringBuilder (); + bool negative = false; if (PeekChar () == '-') { negative = true; - ReadChar (); - if (PeekChar () < 0) - throw JsonError ("Invalid JSON numeric literal; extra negation"); + sb.Append ((char) ReadChar ()); } int c; - decimal val = 0; int x = 0; bool zeroStart = PeekChar () == '0'; for (; ; x++) { c = PeekChar (); if (c < '0' || '9' < c) break; - val = val * 10 + (c - '0'); - ReadChar (); - if (zeroStart && x == 1 && c == '0') - throw JsonError ("leading multiple zeros are not allowed"); + sb.Append ((char) ReadChar ()); + if (zeroStart && x == 1) + throw JsonError ("leading zeros are not allowed"); } + if (x == 0) // Reached e.g. for "- " + throw JsonError ("Invalid JSON numeric literal; no digit found"); // fraction - bool hasFrac = false; - decimal frac = 0; int fdigits = 0; if (PeekChar () == '.') { hasFrac = true; - ReadChar (); + sb.Append ((char) ReadChar ()); if (PeekChar () < 0) throw JsonError ("Invalid JSON numeric literal; extra dot"); - decimal d = 10; while (true) { c = PeekChar (); if (c < '0' || '9' < c) break; - ReadChar (); - frac += (c - '0') / d; - d *= 10; + sb.Append ((char) ReadChar ()); fdigits++; } if (fdigits == 0) throw JsonError ("Invalid JSON numeric literal; extra dot"); } - frac = Decimal.Round (frac, fdigits); c = PeekChar (); if (c != 'e' && c != 'E') { if (!hasFrac) { - if (negative && int.MinValue <= -val || - !negative && val <= int.MaxValue) - return (int) (negative ? -val : val); - if (negative && long.MinValue <= -val || - !negative && val <= long.MaxValue) - return (long) (negative ? -val : val); + int valueInt; + if (int.TryParse (sb.ToString (), NumberStyles.Float, CultureInfo.InvariantCulture, out valueInt)) + return valueInt; + + long valueLong; + if (long.TryParse (sb.ToString (), NumberStyles.Float, CultureInfo.InvariantCulture, out valueLong)) + return valueLong; + + ulong valueUlong; + if (ulong.TryParse (sb.ToString (), NumberStyles.Float, CultureInfo.InvariantCulture, out valueUlong)) + return valueUlong; } - var v = val + frac; - return negative ? -v : v; - } - - // exponent - - ReadChar (); - - int exp = 0; - if (PeekChar () < 0) - throw new ArgumentException ("Invalid JSON numeric literal; incomplete exponent"); + decimal valueDecimal; + if (decimal.TryParse (sb.ToString (), NumberStyles.Float, CultureInfo.InvariantCulture, out valueDecimal) && valueDecimal != 0) + return valueDecimal; + } else { + // exponent + sb.Append ((char) ReadChar ()); + if (PeekChar () < 0) + throw new ArgumentException ("Invalid JSON numeric literal; incomplete exponent"); - bool negexp = false; - c = PeekChar (); - if (c == '-') { - ReadChar (); - negexp = true; - } - else if (c == '+') - ReadChar (); - - if (PeekChar () < 0) - throw JsonError ("Invalid JSON numeric literal; incomplete exponent"); - while (true) { c = PeekChar (); - if (c < '0' || '9' < c) - break; - exp = exp * 10 + (c - '0'); - ReadChar (); + if (c == '-') { + sb.Append ((char) ReadChar ()); + } + else if (c == '+') + sb.Append ((char) ReadChar ()); + + if (PeekChar () < 0) + throw JsonError ("Invalid JSON numeric literal; incomplete exponent"); + while (true) { + c = PeekChar (); + if (c < '0' || '9' < c) + break; + sb.Append ((char) ReadChar ()); + } } - // it is messy to handle exponent, so I just use Decimal.Parse() with assured JSON format. - if (negexp) - return new Decimal ((double) (val + frac) / Math.Pow (10, exp)); - int [] bits = Decimal.GetBits (val + frac); - return new Decimal (bits [0], bits [1], bits [2], negative, (byte) exp); + + return double.Parse (sb.ToString (), NumberStyles.Float, CultureInfo.InvariantCulture); } StringBuilder vb = new StringBuilder (); diff --git a/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Web/WebServiceHostTest.cs b/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Web/WebServiceHostTest.cs index cf1038dac2..99376fbcd6 100644 --- a/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Web/WebServiceHostTest.cs +++ b/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Web/WebServiceHostTest.cs @@ -45,7 +45,7 @@ namespace MonoTests.System.ServiceModel.Web [Category("NotWorking")] public void ServiceDebugBehaviorTest () { - var host = new WebServiceHost (typeof (MyService), new Uri ("http://localhost:8080/")); + var host = new WebServiceHost (typeof (MyService), new Uri ("http://localhost:30158/")); ServiceEndpoint webHttp = host.AddServiceEndpoint ("MonoTests.System.ServiceModel.Web.WebServiceHostTest+MyService", new WebHttpBinding (), "WebHttpBinding"); Assert.AreEqual (true, host.Description.Behaviors.Find ().HttpHelpPageEnabled, "HttpHelpPageEnabled #1"); @@ -63,7 +63,7 @@ namespace MonoTests.System.ServiceModel.Web [Category ("NotWorking")] public void WebHttpBehaviorTest1 () { - var host = new WebServiceHost (typeof (MyService), new Uri ("http://localhost:8080/")); + var host = new WebServiceHost (typeof (MyService), new Uri ("http://localhost:30158/")); ServiceEndpoint webHttp = host.AddServiceEndpoint ("MonoTests.System.ServiceModel.Web.WebServiceHostTest+MyService", new WebHttpBinding (), "WebHttpBinding"); ServiceEndpoint basicHttp = host.AddServiceEndpoint ("MonoTests.System.ServiceModel.Web.WebServiceHostTest+MyService", new BasicHttpBinding (), "BasicHttpBinding"); @@ -83,7 +83,7 @@ namespace MonoTests.System.ServiceModel.Web [Category("NotWorking")] public void WebHttpBehaviorTest2 () { - var host = new WebServiceHost (typeof (MyService), new Uri ("http://localhost:8080/")); + var host = new WebServiceHost (typeof (MyService), new Uri ("http://localhost:30158/")); ServiceEndpoint webHttp = host.AddServiceEndpoint ("MonoTests.System.ServiceModel.Web.WebServiceHostTest+MyService", new WebHttpBinding (), "WebHttpBinding"); MyWebHttpBehavior behavior = new MyWebHttpBehavior (); behavior.ApplyDispatchBehaviorBegin += delegate { @@ -103,7 +103,7 @@ namespace MonoTests.System.ServiceModel.Web [Test] public void ServiceBaseUriTest () { - var host = new WebServiceHost (typeof (MyService), new Uri ("http://localhost:8080/")); + var host = new WebServiceHost (typeof (MyService), new Uri ("http://localhost:30158/")); Assert.AreEqual (0, host.Description.Endpoints.Count, "no endpoints yet"); host.Open (); Assert.AreEqual (1, host.Description.Endpoints.Count, "default endpoint after open"); @@ -136,4 +136,4 @@ namespace MonoTests.System.ServiceModel.Web } } -#endif \ No newline at end of file +#endif diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Channels/HttpChannelFactory.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Channels/HttpChannelFactory.cs index 50ae808fcb..d145ed18e4 100644 --- a/mcs/class/System.ServiceModel/System.ServiceModel.Channels/HttpChannelFactory.cs +++ b/mcs/class/System.ServiceModel/System.ServiceModel.Channels/HttpChannelFactory.cs @@ -52,11 +52,7 @@ namespace System.ServiceModel.Channels MessageEncoder = CreateEncoder (mbe); continue; } -#if NET_2_1 - var cbe = be as HttpCookieContainerBindingElement; - if (cbe != null) - cookie_manager = cbe.GetProperty (ctx); -#elif NET_4_0 +#if NET_2_1 || NET_4_0 var tbe = be as HttpTransportBindingElement; if (tbe != null) cookie_manager = tbe.GetProperty (ctx); diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/MetadataExchangeBindingsTest.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/MetadataExchangeBindingsTest.cs index 8f0be289fd..35cd408af1 100644 --- a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/MetadataExchangeBindingsTest.cs +++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/MetadataExchangeBindingsTest.cs @@ -69,7 +69,7 @@ namespace MonoTests.System.ServiceModel.Description Assert.AreEqual (MessageVersion.Soap12WSAddressing10, b.GetProperty (new BindingParameterCollection ()), "#6"); var host = new ServiceHost (typeof (MetadataExchange)); - host.AddServiceEndpoint (typeof (IMetadataExchange), MetadataExchangeBindings.CreateMexHttpBinding (), CreateUri ("http://localhost:8080")); + host.AddServiceEndpoint (typeof (IMetadataExchange), MetadataExchangeBindings.CreateMexHttpBinding (), CreateUri ("http://localhost:30158")); host.Open (); try { // it still does not rewrite MessageVersion.None. It's rather likely ServiceMetadataExtension which does overwriting. @@ -96,7 +96,7 @@ namespace MonoTests.System.ServiceModel.Description Assert.AreEqual(Uri.UriSchemeHttps, b.Scheme, "#8"); var host = new ServiceHost(typeof(MetadataExchange)); - host.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexHttpsBinding(), CreateUri("https://localhost:8080")); + host.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexHttpsBinding(), CreateUri("https://localhost:30158")); host.Open(); try { diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/ServiceMetadataBehaviorTest.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/ServiceMetadataBehaviorTest.cs index 38bece2f99..a4a22cb18d 100644 --- a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/ServiceMetadataBehaviorTest.cs +++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/ServiceMetadataBehaviorTest.cs @@ -56,7 +56,7 @@ namespace MonoTests.System.ServiceModel.Description [Test] public void InitializeRuntime1 () { - using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:8080"))) { + using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:30158"))) { host.AddServiceEndpoint (typeof (IMyContract), new BasicHttpBinding (), "e1"); host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true }); @@ -93,10 +93,10 @@ namespace MonoTests.System.ServiceModel.Description [Test] public void InitializeRuntime2 () { - using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:8080"))) { + using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:30158"))) { host.AddServiceEndpoint (typeof (IMyContract), new BasicHttpBinding (), ""); - host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:8080/mex_and_help") }); - host.Description.Behaviors.Find ().HttpHelpPageUrl = new Uri ("http://localhost:8080/mex_and_help"); + host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:30158/mex_and_help") }); + host.Description.Behaviors.Find ().HttpHelpPageUrl = new Uri ("http://localhost:30158/mex_and_help"); Assert.AreEqual (0, host.ChannelDispatchers.Count, "ChannelDispatchers.Count #1"); @@ -125,10 +125,10 @@ namespace MonoTests.System.ServiceModel.Description [Test] public void InitializeRuntime3 () { - using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:8080"))) { + using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:30158"))) { host.AddServiceEndpoint (typeof (IMyContract), new BasicHttpBinding (), ""); - host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:8080/mex") }); - host.Description.Behaviors.Find ().HttpHelpPageUrl = new Uri ("http://localhost:8080/help"); + host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:30158/mex") }); + host.Description.Behaviors.Find ().HttpHelpPageUrl = new Uri ("http://localhost:30158/help"); Assert.AreEqual (0, host.ChannelDispatchers.Count, "ChannelDispatchers.Count #1"); @@ -176,9 +176,9 @@ namespace MonoTests.System.ServiceModel.Description [Test] public void InitializeRuntime4 () { - using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:8080"))) { + using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:30158"))) { host.AddServiceEndpoint (typeof (IMyContract), new BasicHttpBinding (), ""); - host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:8080/mex") }); + host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:30158/mex") }); host.Description.Behaviors.Remove (); Assert.AreEqual (0, host.ChannelDispatchers.Count, "ChannelDispatchers.Count #1"); @@ -204,7 +204,7 @@ namespace MonoTests.System.ServiceModel.Description Assert.AreEqual (0, ed.FilterPriority, "FilterPriority"); EndpointAddress ea = ed.EndpointAddress; - Assert.AreEqual (new Uri ("http://localhost:8080/mex"), ea.Uri, "Uri"); + Assert.AreEqual (new Uri ("http://localhost:30158/mex"), ea.Uri, "Uri"); DispatchRuntime dr = ed.DispatchRuntime; Assert.AreEqual (1, dr.Operations.Count, "Operations.Count"); @@ -221,9 +221,9 @@ namespace MonoTests.System.ServiceModel.Description [Test] public void ServiceMetadataExtension1 () { - using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:8080"))) { + using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:30158"))) { host.AddServiceEndpoint (typeof (IMyContract), new BasicHttpBinding (), ""); - host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:8080/mex") }); + host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:30158/mex") }); host.Description.Behaviors.Remove (); host.Open (); @@ -237,9 +237,9 @@ namespace MonoTests.System.ServiceModel.Description [Test] public void ServiceMetadataExtension2 () { - using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:8080"))) { + using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:30158"))) { host.AddServiceEndpoint (typeof (IMyContract), new BasicHttpBinding (), ""); - host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:8080/mex") }); + host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:30158/mex") }); host.Description.Behaviors.Remove (); ServiceMetadataExtension extension = new ServiceMetadataExtension (); diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Dispatcher/DispatchRuntimeTest.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Dispatcher/DispatchRuntimeTest.cs index adff5706c8..3607b4f2a0 100644 --- a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Dispatcher/DispatchRuntimeTest.cs +++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Dispatcher/DispatchRuntimeTest.cs @@ -53,7 +53,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher // free to change if MS implementation does not make // sense. DispatchRuntime r = new EndpointDispatcher ( - new EndpointAddress ("http://localhost:8080"), "IFoo", "urn:foo").DispatchRuntime; + new EndpointAddress ("http://localhost:30158"), "IFoo", "urn:foo").DispatchRuntime; Assert.AreEqual (AuditLogLocation.Default, r.SecurityAuditLogLocation, "#1"); @@ -153,7 +153,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher void TestInstanceBehavior (MessageInspectBehavior b, string expected, Result actual, int invocations) { - ServiceHost h = new ServiceHost (typeof (AllActions), new Uri ("http://localhost:8080")); + ServiceHost h = new ServiceHost (typeof (AllActions), new Uri ("http://localhost:30158")); try { h.AddServiceEndpoint (typeof (IAllActions).FullName, new BasicHttpBinding (), "AllActions"); h.Description.Behaviors.Add (b); @@ -167,7 +167,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher Assert.AreEqual (typeof (AllActions), ed.DispatchRuntime.Type, "Type property: " + ed.ContractName); } } - AllActionsProxy p = new AllActionsProxy (new BasicHttpBinding () { SendTimeout = TimeSpan.FromSeconds (5), ReceiveTimeout = TimeSpan.FromSeconds (5) }, new EndpointAddress ("http://localhost:8080/AllActions")); + AllActionsProxy p = new AllActionsProxy (new BasicHttpBinding () { SendTimeout = TimeSpan.FromSeconds (5), ReceiveTimeout = TimeSpan.FromSeconds (5) }, new EndpointAddress ("http://localhost:30158/AllActions")); for (int i = 0; i < invocations; ++i) p.Get (10); diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.PeerResolvers/CustomPeerResolverServiceTest.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel.PeerResolvers/CustomPeerResolverServiceTest.cs index a6bc6c5e6f..593ded1b01 100644 --- a/mcs/class/System.ServiceModel/Test/System.ServiceModel.PeerResolvers/CustomPeerResolverServiceTest.cs +++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel.PeerResolvers/CustomPeerResolverServiceTest.cs @@ -30,6 +30,7 @@ namespace MonoTests.System.ServiceModel.PeerResolvers } [Test] + [Category ("NotWorking")] public void CloseTest () { cprs.Open (); @@ -79,6 +80,7 @@ namespace MonoTests.System.ServiceModel.PeerResolvers [Test] [ExpectedException (typeof (InvalidOperationException))] + [Category ("NotWorking")] public void OpenTest4 () { cprs.Open (); diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel/ChannelFactory_1Test.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel/ChannelFactory_1Test.cs index 427127e946..70efef2761 100644 --- a/mcs/class/System.ServiceModel/Test/System.ServiceModel/ChannelFactory_1Test.cs +++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel/ChannelFactory_1Test.cs @@ -483,12 +483,12 @@ namespace MonoTests.System.ServiceModel var host = new ServiceHost (typeof (OneWayService)); host.AddServiceEndpoint (typeof (IOneWayService), new BasicHttpBinding (), - new Uri ("http://localhost:8080")); + new Uri ("http://localhost:30158")); host.Open (); try { var cf = new ChannelFactory ( new BasicHttpBinding (), - new EndpointAddress ("http://localhost:8080")); + new EndpointAddress ("http://localhost:30158")); var ch = cf.CreateChannel (); ch.GiveMessage ("test"); diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel/ServiceHostBaseTest.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel/ServiceHostBaseTest.cs index a5684e24b5..d73d516cbb 100644 --- a/mcs/class/System.ServiceModel/Test/System.ServiceModel/ServiceHostBaseTest.cs +++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel/ServiceHostBaseTest.cs @@ -159,7 +159,7 @@ namespace MonoTests.System.ServiceModel [Test] public void ChannelDispatchers_NoDebug () { - ServiceHost h = new ServiceHost (typeof (AllActions), new Uri ("http://localhost:8080")); + ServiceHost h = new ServiceHost (typeof (AllActions), new Uri ("http://localhost:30158")); h.AddServiceEndpoint (typeof (AllActions).FullName, new BasicHttpBinding (), "address"); ServiceDebugBehavior b = h.Description.Behaviors.Find (); @@ -173,7 +173,7 @@ namespace MonoTests.System.ServiceModel Assert.IsTrue (channelDispatcher.Endpoints.Count == 1, "#2"); EndpointAddressMessageFilter filter = channelDispatcher.Endpoints [0].AddressFilter as EndpointAddressMessageFilter; Assert.IsNotNull (filter, "#3"); - Assert.IsTrue (filter.Address.Equals (new EndpointAddress ("http://localhost:8080/address")), "#4"); + Assert.IsTrue (filter.Address.Equals (new EndpointAddress ("http://localhost:30158/address")), "#4"); Assert.IsFalse (filter.IncludeHostNameInComparison, "#5"); Assert.IsTrue (channelDispatcher.Endpoints [0].ContractFilter is MatchAllMessageFilter, "#6"); } finally { @@ -183,11 +183,11 @@ namespace MonoTests.System.ServiceModel [Test] public void ChannelDispatchers_WithDebug () { - ServiceHost h = new ServiceHost (typeof (AllActions), new Uri ("http://localhost:8080")); + ServiceHost h = new ServiceHost (typeof (AllActions), new Uri ("http://localhost:30158")); h.AddServiceEndpoint (typeof (AllActions).FullName, new BasicHttpBinding (), "address"); ServiceMetadataBehavior b = new ServiceMetadataBehavior (); b.HttpGetEnabled = true; - b.HttpGetUrl = new Uri( "http://localhost:8080" ); + b.HttpGetUrl = new Uri( "http://localhost:30158" ); h.Description.Behaviors.Add (b); h.Open (); @@ -197,7 +197,7 @@ namespace MonoTests.System.ServiceModel Assert.IsTrue (channelDispatcher.Endpoints.Count == 1, "#3"); EndpointAddressMessageFilter filter = channelDispatcher.Endpoints [0].AddressFilter as EndpointAddressMessageFilter; Assert.IsNotNull (filter, "#4"); - Assert.IsTrue (filter.Address.Equals (new EndpointAddress ("http://localhost:8080")), "#5"); + Assert.IsTrue (filter.Address.Equals (new EndpointAddress ("http://localhost:30158")), "#5"); Assert.IsFalse (filter.IncludeHostNameInComparison, "#6"); Assert.IsTrue (channelDispatcher.Endpoints [0].ContractFilter is MatchAllMessageFilter, "#7"); h.Close (); @@ -207,7 +207,7 @@ namespace MonoTests.System.ServiceModel public void SpecificActionTest () { //EndpointDispatcher d = new EndpointDispatcher( - ServiceHost h = new ServiceHost (typeof (SpecificAction), new Uri ("http://localhost:8080")); + ServiceHost h = new ServiceHost (typeof (SpecificAction), new Uri ("http://localhost:30158")); h.AddServiceEndpoint (typeof (Action1Interface), new BasicHttpBinding (), "address"); h.Open (); @@ -222,7 +222,7 @@ namespace MonoTests.System.ServiceModel [Test] public void InitializeRuntimeBehaviors1 () { HostState st = new HostState (); - ServiceHost h = new ServiceHost (typeof (SpecificAction2), new Uri ("http://localhost:8080")); + ServiceHost h = new ServiceHost (typeof (SpecificAction2), new Uri ("http://localhost:30158")); h.AddServiceEndpoint (typeof (SpecificAction2), new BasicHttpBinding (), "temp"); h.Description.Behaviors.Add (new MyServiceBehavior (st, h)); @@ -241,7 +241,7 @@ namespace MonoTests.System.ServiceModel [Test] public void InitializeRuntimeBehaviors2 () { HostState st = new HostState (); - ServiceHost h = new ServiceHost (typeof (SpecificAction), new Uri ("http://localhost:8080")); + ServiceHost h = new ServiceHost (typeof (SpecificAction), new Uri ("http://localhost:30158")); h.AddServiceEndpoint (typeof (Action1Interface), new BasicHttpBinding (), "temp"); h.AddServiceEndpoint (typeof (Action2Interface), new BasicHttpBinding (), "temp2"); @@ -368,7 +368,7 @@ namespace MonoTests.System.ServiceModel public void AddServiceEndpoint_Directly () { var host = new ServiceHost (typeof (DummyService)); - var address = new EndpointAddress ("http://localhost:8080"); + var address = new EndpointAddress ("http://localhost:30158"); var binding = new BasicHttpBinding (); var contract = ContractDescription.GetContract (typeof (IDummyService)); host.AddServiceEndpoint (new ServiceEndpoint (contract, binding, address)); @@ -389,7 +389,7 @@ namespace MonoTests.System.ServiceModel public void AddServiceEndpoint_Directly_NullBinding () { var host = new ServiceHost (typeof (DummyService)); - var address = new EndpointAddress ("http://localhost:8080"); + var address = new EndpointAddress ("http://localhost:30158"); var contract = ContractDescription.GetContract (typeof (IDummyService)); host.AddServiceEndpoint (new ServiceEndpoint (contract, null, address)); } @@ -407,7 +407,7 @@ namespace MonoTests.System.ServiceModel public void AddServiceEndpoint_Directly_ContractMismatch () { var host = new ServiceHost (typeof (DummyService)); - var address = new EndpointAddress ("http://localhost:8080"); + var address = new EndpointAddress ("http://localhost:30158"); var binding = new BasicHttpBinding (); var contract = ContractDescription.GetContract (typeof (INotImplementedService)); host.AddServiceEndpoint (new ServiceEndpoint (contract, binding, address)); diff --git a/mcs/class/System.Web.Extensions/System.Web.Script.Serialization/JavaScriptSerializer.cs b/mcs/class/System.Web.Extensions/System.Web.Script.Serialization/JavaScriptSerializer.cs index f8f65c52e8..70e6fc9beb 100644 --- a/mcs/class/System.Web.Extensions/System.Web.Script.Serialization/JavaScriptSerializer.cs +++ b/mcs/class/System.Web.Extensions/System.Web.Script.Serialization/JavaScriptSerializer.cs @@ -180,16 +180,20 @@ namespace System.Web.Script.Serialization return c.ConvertFrom (obj); } - /* - * Take care of the special case whereas in JSON an empty string ("") really means - * an empty value - * (see: https://bugzilla.novell.com/show_bug.cgi?id=328836) - */ - if ((targetType.IsGenericType) && (targetType.GetGenericTypeDefinition() == typeof(Nullable<>))) - { - string s = obj as String; - if (String.IsNullOrEmpty(s)) + if ((targetType.IsGenericType) && (targetType.GetGenericTypeDefinition () == typeof (Nullable<>))) { + if (obj is String) { + /* + * Take care of the special case whereas in JSON an empty string ("") really means + * an empty value + * (see: https://bugzilla.novell.com/show_bug.cgi?id=328836) + */ + if(String.IsNullOrEmpty ((String)obj)) return null; + } else if (c.CanConvertFrom (typeof (string))) { + TypeConverter objConverter = TypeDescriptor.GetConverter (obj); + string s = objConverter.ConvertToInvariantString (obj); + return c.ConvertFromInvariantString (s); + } } return Convert.ChangeType (obj, targetType); diff --git a/mcs/class/System.Web.Extensions/Test/System.Web.Script.Serialization/JavaScriptSerializerTest.cs b/mcs/class/System.Web.Extensions/Test/System.Web.Script.Serialization/JavaScriptSerializerTest.cs index 5883104a95..995590eeb2 100644 --- a/mcs/class/System.Web.Extensions/Test/System.Web.Script.Serialization/JavaScriptSerializerTest.cs +++ b/mcs/class/System.Web.Extensions/Test/System.Web.Script.Serialization/JavaScriptSerializerTest.cs @@ -1365,5 +1365,28 @@ namespace MonoTests.System.Web.Script.Serialization var ret2vad = (IDictionary) ret2va [0]; Assert.AreEqual ("subval", ret2vad ["subkey"], "#2.4"); } + + class ClassWithNullableEnum + { + public MyEnum? Value { get; set; } + } + + [Test] + public void DeserializeNullableEnum () + { + var jsonValues = new Dictionary { + { "{\"Value\":0}", MyEnum.AAA}, + { "{\"Value\":\"0\"}", MyEnum.AAA}, + { "{\"Value\":null}", null} + }; + + var ser = new JavaScriptSerializer (); + + foreach (var kv in jsonValues) + { + var obj = ser.Deserialize (kv.Key); + Assert.AreEqual (kv.Value, obj.Value); + } + } } } diff --git a/mcs/class/System.Web/System.Web/HttpResponse.cs b/mcs/class/System.Web/System.Web/HttpResponse.cs index ad18b88a3c..2491c9035d 100644 --- a/mcs/class/System.Web/System.Web/HttpResponse.cs +++ b/mcs/class/System.Web/System.Web/HttpResponse.cs @@ -446,7 +446,7 @@ namespace System.Web } [MonoTODO ("Not implemented")] - public void AddCacheDependency (CacheDependency[] dependencies) + public void AddCacheDependency (params CacheDependency[] dependencies) { throw new NotImplementedException (); } diff --git a/mcs/class/System.Web/System.Web/MimeTypes.cs b/mcs/class/System.Web/System.Web/MimeTypes.cs index 82ce306f60..8b7bfcadf7 100644 --- a/mcs/class/System.Web/System.Web/MimeTypes.cs +++ b/mcs/class/System.Web/System.Web/MimeTypes.cs @@ -195,6 +195,7 @@ namespace System.Web mimeTypes.Add ("htx", "text/html"); mimeTypes.Add ("ice", "x-conference/x-cooltalk"); mimeTypes.Add ("ico", "image/x-icon"); + mimeTypes.Add ("ics", "text/calendar"); mimeTypes.Add ("idc", "text/plain"); mimeTypes.Add ("ief", "image/ief"); mimeTypes.Add ("iefs", "image/ief"); @@ -271,11 +272,11 @@ namespace System.Web mimeTypes.Add ("mme", "application/base64"); mimeTypes.Add ("mny", "application/x-msmoney"); mimeTypes.Add ("mod", "audio/mod"); - mimeTypes.Add ("moov", "video/quicktime"); - mimeTypes.Add ("movie", "video/x-sgi-movie"); mimeTypes.Add ("mov", "video/quicktime"); + mimeTypes.Add ("movie", "video/x-sgi-movie"); + mimeTypes.Add ("moov", "video/quicktime"); mimeTypes.Add ("mp2", "video/mpeg"); - mimeTypes.Add ("mp3", "audio/mpeg3"); + mimeTypes.Add ("mp3", "audio/mpeg"); mimeTypes.Add ("mp4", "video/mp4"); //mimeTypes.Add ("mp4a", "audio/mp4"); // A common but unofficial alternative to m4a mimeTypes.Add ("mpa", "audio/mpeg"); diff --git a/mcs/class/System.Web/Test/System.Web.Caching/OutputCacheTest.cs b/mcs/class/System.Web/Test/System.Web.Caching/OutputCacheTest.cs index d2bd8ce643..1440358de4 100644 --- a/mcs/class/System.Web/Test/System.Web.Caching/OutputCacheTest.cs +++ b/mcs/class/System.Web/Test/System.Web.Caching/OutputCacheTest.cs @@ -135,8 +135,8 @@ namespace MonoTests.System.Web.Caching static readonly byte[] badSubstitutionResponseElement = { 0x0, 0x1, 0x0, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xC, 0x2, 0x0, 0x0, 0x0, 0x4D, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x2E, 0x57, 0x65, 0x62, 0x2C, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x3D, 0x34, 0x2E, 0x30, 0x2E, 0x30, 0x2E, 0x30, 0x2C, 0x20, 0x43, 0x75, 0x6C, 0x74, 0x75, 0x72, 0x65, 0x3D, 0x6E, 0x65, 0x75, 0x74, 0x72, 0x61, 0x6C, 0x2C, 0x20, 0x50, 0x75, 0x62, 0x6C, 0x69, 0x63, 0x4B, 0x65, 0x79, 0x54, 0x6F, 0x6B, 0x65, 0x6E, 0x3D, 0x62, 0x30, 0x33, 0x66, 0x35, 0x66, 0x37, 0x66, 0x31, 0x31, 0x64, 0x35, 0x30, 0x61, 0x33, 0x61, 0x5, 0x1, 0x0, 0x0, 0x0, 0x2E, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x2E, 0x57, 0x65, 0x62, 0x2E, 0x43, 0x61, 0x63, 0x68, 0x69, 0x6E, 0x67, 0x2E, 0x53, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6F, 0x6E, 0x52, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x73, 0x65, 0x45, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2, 0x0, 0x0, 0x0, 0xF, 0x5F, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x4E, 0x61, 0x6D, 0x65, 0xB, 0x5F, 0x6D, 0x65, 0x74, 0x68, 0x6F, 0x64, 0x4E, 0x61, 0x6D, 0x65, 0x1, 0x1, 0x2, 0x0, 0x0, 0x0, 0x6, 0x3, 0x0, 0x0, 0x0, 0x41, 0x4D, 0x6F, 0x6E, 0x6F, 0x54, 0x65, 0x73, 0x74, 0x73, 0x2E, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x2E, 0x57, 0x65, 0x62, 0x2E, 0x43, 0x61, 0x63, 0x68, 0x69, 0x6E, 0x67, 0x2E, 0x4F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x65, 0x73, 0x74, 0x2C, 0x20, 0x44, 0x6F, 0x74, 0x4E, 0x65, 0x74, 0x34, 0x5F, 0x4E, 0x55, 0x6E, 0x69, 0x74, 0x5F, 0x54, 0x65, 0x73, 0x74, 0x73, 0x6, 0x4, 0x0, 0x0, 0x0, 0x1C, 0x44, 0x75, 0x6D, 0x6D, 0x79, 0x42, 0x61, 0x64, 0x53, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6F, 0x6E, 0x43, 0x61, 0x6C, 0x6C, 0x62, 0x61, 0x63, 0x6B, 0xB, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 }; #else #if NET_4_5 - static readonly byte[] substitutionResponseElement = {0x0,0x1,0x0,0x0,0x0,0xFF,0xFF,0xFF,0xFF,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xC,0x2,0x0,0x0,0x0,0xA,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5,0x1,0x0,0x0,0x0,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x45,0x6C,0x65,0x6D,0x65,0x6E,0x74,0x3,0x0,0x0,0x0,0x8,0x74,0x79,0x70,0x65,0x4E,0x61,0x6D,0x65,0xA,0x6D,0x65,0x74,0x68,0x6F,0x64,0x4E,0x61,0x6D,0x65,0x19,0x3C,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x3E,0x6B,0x5F,0x5F,0x42,0x61,0x63,0x6B,0x69,0x6E,0x67,0x46,0x69,0x65,0x6C,0x64,0x1,0x1,0x4,0x2B,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x48,0x74,0x74,0x70,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x2,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x6,0x3,0x0,0x0,0x0,0x88,0x1,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x2C,0x20,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x35,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x31,0x2E,0x33,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x33,0x31,0x62,0x66,0x33,0x38,0x35,0x36,0x61,0x64,0x33,0x36,0x34,0x65,0x33,0x35,0x6,0x4,0x0,0x0,0x0,0x19,0x44,0x75,0x6D,0x6D,0x79,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x9,0x5,0x0,0x0,0x0,0x4,0x5,0x0,0x0,0x0,0x22,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x1,0x0,0x0,0x0,0x8,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x3,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x9,0x6,0x0,0x0,0x0,0x4,0x6,0x0,0x0,0x0,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x7,0x0,0x0,0x0,0x4,0x74,0x79,0x70,0x65,0x8,0x61,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0x6,0x74,0x61,0x72,0x67,0x65,0x74,0x12,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x79,0x70,0x65,0x41,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0xE,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x79,0x70,0x65,0x4E,0x61,0x6D,0x65,0xA,0x6D,0x65,0x74,0x68,0x6F,0x64,0x4E,0x61,0x6D,0x65,0xD,0x64,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x1,0x1,0x2,0x1,0x1,0x1,0x3,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x6,0x7,0x0,0x0,0x0,0x2B,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x48,0x74,0x74,0x70,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x6,0x8,0x0,0x0,0x0,0x4D,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x34,0x2E,0x30,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x62,0x30,0x33,0x66,0x35,0x66,0x37,0x66,0x31,0x31,0x64,0x35,0x30,0x61,0x33,0x61,0xA,0x6,0x9,0x0,0x0,0x0,0x5A,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x35,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x31,0x2E,0x33,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x33,0x31,0x62,0x66,0x33,0x38,0x35,0x36,0x61,0x64,0x33,0x36,0x34,0x65,0x33,0x35,0x6,0xA,0x0,0x0,0x0,0x2C,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x9,0x4,0x0,0x0,0x0,0xA,0xB,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; - static readonly byte[] badSubstitutionResponseElement = {0x0,0x1,0x0,0x0,0x0,0xFF,0xFF,0xFF,0xFF,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xC,0x2,0x0,0x0,0x0,0xA,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5,0x1,0x0,0x0,0x0,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x45,0x6C,0x65,0x6D,0x65,0x6E,0x74,0x3,0x0,0x0,0x0,0x8,0x74,0x79,0x70,0x65,0x4E,0x61,0x6D,0x65,0xA,0x6D,0x65,0x74,0x68,0x6F,0x64,0x4E,0x61,0x6D,0x65,0x19,0x3C,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x3E,0x6B,0x5F,0x5F,0x42,0x61,0x63,0x6B,0x69,0x6E,0x67,0x46,0x69,0x65,0x6C,0x64,0x1,0x1,0x4,0x2B,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x48,0x74,0x74,0x70,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x2,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x6,0x3,0x0,0x0,0x0,0x88,0x1,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x2C,0x20,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x35,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x31,0x2E,0x33,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x33,0x31,0x62,0x66,0x33,0x38,0x35,0x36,0x61,0x64,0x33,0x36,0x34,0x65,0x33,0x35,0x6,0x4,0x0,0x0,0x0,0x1C,0x44,0x75,0x6D,0x6D,0x79,0x42,0x61,0x64,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x9,0x5,0x0,0x0,0x0,0xC,0x6,0x0,0x0,0x0,0x17,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x35,0x4,0x5,0x0,0x0,0x0,0x22,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2,0x0,0x0,0x0,0x8,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x7,0x74,0x61,0x72,0x67,0x65,0x74,0x30,0x3,0x4,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x2C,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x6,0x0,0x0,0x0,0x9,0x7,0x0,0x0,0x0,0x9,0x8,0x0,0x0,0x0,0x4,0x7,0x0,0x0,0x0,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x7,0x0,0x0,0x0,0x4,0x74,0x79,0x70,0x65,0x8,0x61,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0x6,0x74,0x61,0x72,0x67,0x65,0x74,0x12,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x79,0x70,0x65,0x41,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0xE,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x79,0x70,0x65,0x4E,0x61,0x6D,0x65,0xA,0x6D,0x65,0x74,0x68,0x6F,0x64,0x4E,0x61,0x6D,0x65,0xD,0x64,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x1,0x1,0x2,0x1,0x1,0x1,0x3,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x6,0x9,0x0,0x0,0x0,0x2B,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x48,0x74,0x74,0x70,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x6,0xA,0x0,0x0,0x0,0x4D,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x34,0x2E,0x30,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x62,0x30,0x33,0x66,0x35,0x66,0x37,0x66,0x31,0x31,0x64,0x35,0x30,0x61,0x33,0x61,0x6,0xB,0x0,0x0,0x0,0x7,0x74,0x61,0x72,0x67,0x65,0x74,0x30,0x6,0xC,0x0,0x0,0x0,0x5A,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x35,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x31,0x2E,0x33,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x33,0x31,0x62,0x66,0x33,0x38,0x35,0x36,0x61,0x64,0x33,0x36,0x34,0x65,0x33,0x35,0x6,0xD,0x0,0x0,0x0,0x2C,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x9,0x4,0x0,0x0,0x0,0xA,0x5,0x8,0x0,0x0,0x0,0x2C,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xB,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; + static readonly byte[] substitutionResponseElement = {0x0,0x1,0x0,0x0,0x0,0xFF,0xFF,0xFF,0xFF,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xC,0x2,0x0,0x0,0x0,0xA,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5,0x1,0x0,0x0,0x0,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x45,0x6C,0x65,0x6D,0x65,0x6E,0x74,0x3,0x0,0x0,0x0,0x8,0x74,0x79,0x70,0x65,0x4E,0x61,0x6D,0x65,0xA,0x6D,0x65,0x74,0x68,0x6F,0x64,0x4E,0x61,0x6D,0x65,0x19,0x3C,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x3E,0x6B,0x5F,0x5F,0x42,0x61,0x63,0x6B,0x69,0x6E,0x67,0x46,0x69,0x65,0x6C,0x64,0x1,0x1,0x4,0x2B,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x48,0x74,0x74,0x70,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x2,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x6,0x3,0x0,0x0,0x0,0x88,0x1,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x2C,0x20,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x35,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x31,0x2E,0x33,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x33,0x31,0x62,0x66,0x33,0x38,0x35,0x36,0x61,0x64,0x33,0x36,0x34,0x65,0x33,0x35,0x6,0x4,0x0,0x0,0x0,0x19,0x44,0x75,0x6D,0x6D,0x79,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x9,0x5,0x0,0x0,0x0,0x4,0x5,0x0,0x0,0x0,0x22,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2,0x0,0x0,0x0,0x8,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x7,0x6D,0x65,0x74,0x68,0x6F,0x64,0x30,0x3,0x3,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x1C,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x52,0x65,0x66,0x6C,0x65,0x63,0x74,0x69,0x6F,0x6E,0x2E,0x4D,0x6F,0x6E,0x6F,0x4D,0x65,0x74,0x68,0x6F,0x64,0x9,0x6,0x0,0x0,0x0,0x9,0x7,0x0,0x0,0x0,0x4,0x6,0x0,0x0,0x0,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x7,0x0,0x0,0x0,0x4,0x74,0x79,0x70,0x65,0x8,0x61,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0x6,0x74,0x61,0x72,0x67,0x65,0x74,0x12,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x79,0x70,0x65,0x41,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0xE,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x79,0x70,0x65,0x4E,0x61,0x6D,0x65,0xA,0x6D,0x65,0x74,0x68,0x6F,0x64,0x4E,0x61,0x6D,0x65,0xD,0x64,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x1,0x1,0x2,0x1,0x1,0x1,0x3,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x6,0x8,0x0,0x0,0x0,0x2B,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x48,0x74,0x74,0x70,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x6,0x9,0x0,0x0,0x0,0x4D,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x34,0x2E,0x30,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x62,0x30,0x33,0x66,0x35,0x66,0x37,0x66,0x31,0x31,0x64,0x35,0x30,0x61,0x33,0x61,0xA,0x6,0xA,0x0,0x0,0x0,0x5A,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x35,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x31,0x2E,0x33,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x33,0x31,0x62,0x66,0x33,0x38,0x35,0x36,0x61,0x64,0x33,0x36,0x34,0x65,0x33,0x35,0x6,0xB,0x0,0x0,0x0,0x2C,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x9,0x4,0x0,0x0,0x0,0xA,0x4,0x7,0x0,0x0,0x0,0x2F,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x52,0x65,0x66,0x6C,0x65,0x63,0x74,0x69,0x6F,0x6E,0x2E,0x4D,0x65,0x6D,0x62,0x65,0x72,0x49,0x6E,0x66,0x6F,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x6,0x0,0x0,0x0,0xC,0x41,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0x4E,0x61,0x6D,0x65,0x9,0x43,0x6C,0x61,0x73,0x73,0x4E,0x61,0x6D,0x65,0x4,0x4E,0x61,0x6D,0x65,0x9,0x53,0x69,0x67,0x6E,0x61,0x74,0x75,0x72,0x65,0xA,0x4D,0x65,0x6D,0x62,0x65,0x72,0x54,0x79,0x70,0x65,0x10,0x47,0x65,0x6E,0x65,0x72,0x69,0x63,0x41,0x72,0x67,0x75,0x6D,0x65,0x6E,0x74,0x73,0x1,0x1,0x1,0x1,0x0,0x3,0x8,0xD,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x54,0x79,0x70,0x65,0x5B,0x5D,0x9,0xA,0x0,0x0,0x0,0x9,0xB,0x0,0x0,0x0,0x9,0x4,0x0,0x0,0x0,0x6,0xC,0x0,0x0,0x0,0x3F,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x53,0x74,0x72,0x69,0x6E,0x67,0x20,0x44,0x75,0x6D,0x6D,0x79,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x28,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x48,0x74,0x74,0x70,0x43,0x6F,0x6E,0x74,0x65,0x78,0x74,0x29,0x8,0x0,0x0,0x0,0xA,0xB,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; + static readonly byte[] badSubstitutionResponseElement = {0x0,0x1,0x0,0x0,0x0,0xFF,0xFF,0xFF,0xFF,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xC,0x2,0x0,0x0,0x0,0xA,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5,0x1,0x0,0x0,0x0,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x45,0x6C,0x65,0x6D,0x65,0x6E,0x74,0x3,0x0,0x0,0x0,0x8,0x74,0x79,0x70,0x65,0x4E,0x61,0x6D,0x65,0xA,0x6D,0x65,0x74,0x68,0x6F,0x64,0x4E,0x61,0x6D,0x65,0x19,0x3C,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x3E,0x6B,0x5F,0x5F,0x42,0x61,0x63,0x6B,0x69,0x6E,0x67,0x46,0x69,0x65,0x6C,0x64,0x1,0x1,0x4,0x2B,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x48,0x74,0x74,0x70,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x2,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x6,0x3,0x0,0x0,0x0,0x88,0x1,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x2C,0x20,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x35,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x31,0x2E,0x33,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x33,0x31,0x62,0x66,0x33,0x38,0x35,0x36,0x61,0x64,0x33,0x36,0x34,0x65,0x33,0x35,0x6,0x4,0x0,0x0,0x0,0x1C,0x44,0x75,0x6D,0x6D,0x79,0x42,0x61,0x64,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x9,0x5,0x0,0x0,0x0,0xC,0x6,0x0,0x0,0x0,0x17,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x35,0x4,0x5,0x0,0x0,0x0,0x22,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x3,0x0,0x0,0x0,0x8,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x7,0x74,0x61,0x72,0x67,0x65,0x74,0x30,0x7,0x6D,0x65,0x74,0x68,0x6F,0x64,0x30,0x3,0x4,0x3,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x2C,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x6,0x0,0x0,0x0,0x1C,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x52,0x65,0x66,0x6C,0x65,0x63,0x74,0x69,0x6F,0x6E,0x2E,0x4D,0x6F,0x6E,0x6F,0x4D,0x65,0x74,0x68,0x6F,0x64,0x9,0x7,0x0,0x0,0x0,0x9,0x8,0x0,0x0,0x0,0x9,0x9,0x0,0x0,0x0,0x4,0x7,0x0,0x0,0x0,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x7,0x0,0x0,0x0,0x4,0x74,0x79,0x70,0x65,0x8,0x61,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0x6,0x74,0x61,0x72,0x67,0x65,0x74,0x12,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x79,0x70,0x65,0x41,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0xE,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x79,0x70,0x65,0x4E,0x61,0x6D,0x65,0xA,0x6D,0x65,0x74,0x68,0x6F,0x64,0x4E,0x61,0x6D,0x65,0xD,0x64,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x1,0x1,0x2,0x1,0x1,0x1,0x3,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x6,0xA,0x0,0x0,0x0,0x2B,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x48,0x74,0x74,0x70,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x6,0xB,0x0,0x0,0x0,0x4D,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x34,0x2E,0x30,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x62,0x30,0x33,0x66,0x35,0x66,0x37,0x66,0x31,0x31,0x64,0x35,0x30,0x61,0x33,0x61,0x6,0xC,0x0,0x0,0x0,0x7,0x74,0x61,0x72,0x67,0x65,0x74,0x30,0x6,0xD,0x0,0x0,0x0,0x5A,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x35,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x31,0x2E,0x33,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x33,0x31,0x62,0x66,0x33,0x38,0x35,0x36,0x61,0x64,0x33,0x36,0x34,0x65,0x33,0x35,0x6,0xE,0x0,0x0,0x0,0x2C,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x9,0x4,0x0,0x0,0x0,0xA,0x5,0x8,0x0,0x0,0x0,0x2C,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x9,0x0,0x0,0x0,0x2F,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x52,0x65,0x66,0x6C,0x65,0x63,0x74,0x69,0x6F,0x6E,0x2E,0x4D,0x65,0x6D,0x62,0x65,0x72,0x49,0x6E,0x66,0x6F,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x6,0x0,0x0,0x0,0xC,0x41,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0x4E,0x61,0x6D,0x65,0x9,0x43,0x6C,0x61,0x73,0x73,0x4E,0x61,0x6D,0x65,0x4,0x4E,0x61,0x6D,0x65,0x9,0x53,0x69,0x67,0x6E,0x61,0x74,0x75,0x72,0x65,0xA,0x4D,0x65,0x6D,0x62,0x65,0x72,0x54,0x79,0x70,0x65,0x10,0x47,0x65,0x6E,0x65,0x72,0x69,0x63,0x41,0x72,0x67,0x75,0x6D,0x65,0x6E,0x74,0x73,0x1,0x1,0x1,0x1,0x0,0x3,0x8,0xD,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x54,0x79,0x70,0x65,0x5B,0x5D,0x9,0xD,0x0,0x0,0x0,0x9,0xE,0x0,0x0,0x0,0x9,0x4,0x0,0x0,0x0,0x6,0xF,0x0,0x0,0x0,0x42,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x53,0x74,0x72,0x69,0x6E,0x67,0x20,0x44,0x75,0x6D,0x6D,0x79,0x42,0x61,0x64,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x28,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x48,0x74,0x74,0x70,0x43,0x6F,0x6E,0x74,0x65,0x78,0x74,0x29,0x8,0x0,0x0,0x0,0xA,0xB,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; #else static readonly byte[] substitutionResponseElement = {0x0,0x1,0x0,0x0,0x0,0xFF,0xFF,0xFF,0xFF,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xC,0x2,0x0,0x0,0x0,0xA,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5,0x1,0x0,0x0,0x0,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x45,0x6C,0x65,0x6D,0x65,0x6E,0x74,0x3,0x0,0x0,0x0,0x8,0x74,0x79,0x70,0x65,0x4E,0x61,0x6D,0x65,0xA,0x6D,0x65,0x74,0x68,0x6F,0x64,0x4E,0x61,0x6D,0x65,0x19,0x3C,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x3E,0x6B,0x5F,0x5F,0x42,0x61,0x63,0x6B,0x69,0x6E,0x67,0x46,0x69,0x65,0x6C,0x64,0x1,0x1,0x4,0x2B,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x48,0x74,0x74,0x70,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x2,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x6,0x3,0x0,0x0,0x0,0x88,0x1,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x2C,0x20,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x30,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x31,0x2E,0x33,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x33,0x31,0x62,0x66,0x33,0x38,0x35,0x36,0x61,0x64,0x33,0x36,0x34,0x65,0x33,0x35,0x6,0x4,0x0,0x0,0x0,0x19,0x44,0x75,0x6D,0x6D,0x79,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x9,0x5,0x0,0x0,0x0,0x4,0x5,0x0,0x0,0x0,0x22,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x1,0x0,0x0,0x0,0x8,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x3,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x9,0x6,0x0,0x0,0x0,0x4,0x6,0x0,0x0,0x0,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x7,0x0,0x0,0x0,0x4,0x74,0x79,0x70,0x65,0x8,0x61,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0x6,0x74,0x61,0x72,0x67,0x65,0x74,0x12,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x79,0x70,0x65,0x41,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0xE,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x79,0x70,0x65,0x4E,0x61,0x6D,0x65,0xA,0x6D,0x65,0x74,0x68,0x6F,0x64,0x4E,0x61,0x6D,0x65,0xD,0x64,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x1,0x1,0x2,0x1,0x1,0x1,0x3,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x6,0x7,0x0,0x0,0x0,0x2B,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x48,0x74,0x74,0x70,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x6,0x8,0x0,0x0,0x0,0x4D,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x34,0x2E,0x30,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x62,0x30,0x33,0x66,0x35,0x66,0x37,0x66,0x31,0x31,0x64,0x35,0x30,0x61,0x33,0x61,0xA,0x6,0x9,0x0,0x0,0x0,0x5A,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x30,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x31,0x2E,0x33,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x33,0x31,0x62,0x66,0x33,0x38,0x35,0x36,0x61,0x64,0x33,0x36,0x34,0x65,0x33,0x35,0x6,0xA,0x0,0x0,0x0,0x2C,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x9,0x4,0x0,0x0,0x0,0xA,0xB,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; static readonly byte[] badSubstitutionResponseElement = {0x0,0x1,0x0,0x0,0x0,0xFF,0xFF,0xFF,0xFF,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xC,0x2,0x0,0x0,0x0,0xA,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5,0x1,0x0,0x0,0x0,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x45,0x6C,0x65,0x6D,0x65,0x6E,0x74,0x3,0x0,0x0,0x0,0x8,0x74,0x79,0x70,0x65,0x4E,0x61,0x6D,0x65,0xA,0x6D,0x65,0x74,0x68,0x6F,0x64,0x4E,0x61,0x6D,0x65,0x19,0x3C,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x3E,0x6B,0x5F,0x5F,0x42,0x61,0x63,0x6B,0x69,0x6E,0x67,0x46,0x69,0x65,0x6C,0x64,0x1,0x1,0x4,0x2B,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x48,0x74,0x74,0x70,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x2,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x6,0x3,0x0,0x0,0x0,0x88,0x1,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x2C,0x20,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x30,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x31,0x2E,0x33,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x33,0x31,0x62,0x66,0x33,0x38,0x35,0x36,0x61,0x64,0x33,0x36,0x34,0x65,0x33,0x35,0x6,0x4,0x0,0x0,0x0,0x1C,0x44,0x75,0x6D,0x6D,0x79,0x42,0x61,0x64,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x9,0x5,0x0,0x0,0x0,0xC,0x6,0x0,0x0,0x0,0x17,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x30,0x4,0x5,0x0,0x0,0x0,0x22,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2,0x0,0x0,0x0,0x8,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x7,0x74,0x61,0x72,0x67,0x65,0x74,0x30,0x3,0x4,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x2C,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x6,0x0,0x0,0x0,0x9,0x7,0x0,0x0,0x0,0x9,0x8,0x0,0x0,0x0,0x4,0x7,0x0,0x0,0x0,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x7,0x0,0x0,0x0,0x4,0x74,0x79,0x70,0x65,0x8,0x61,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0x6,0x74,0x61,0x72,0x67,0x65,0x74,0x12,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x79,0x70,0x65,0x41,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0xE,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x79,0x70,0x65,0x4E,0x61,0x6D,0x65,0xA,0x6D,0x65,0x74,0x68,0x6F,0x64,0x4E,0x61,0x6D,0x65,0xD,0x64,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x1,0x1,0x2,0x1,0x1,0x1,0x3,0x30,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x53,0x65,0x72,0x69,0x61,0x6C,0x69,0x7A,0x61,0x74,0x69,0x6F,0x6E,0x48,0x6F,0x6C,0x64,0x65,0x72,0x2B,0x44,0x65,0x6C,0x65,0x67,0x61,0x74,0x65,0x45,0x6E,0x74,0x72,0x79,0x6,0x9,0x0,0x0,0x0,0x2B,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x48,0x74,0x74,0x70,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x53,0x75,0x62,0x73,0x74,0x69,0x74,0x75,0x74,0x69,0x6F,0x6E,0x43,0x61,0x6C,0x6C,0x62,0x61,0x63,0x6B,0x6,0xA,0x0,0x0,0x0,0x4D,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x34,0x2E,0x30,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x62,0x30,0x33,0x66,0x35,0x66,0x37,0x66,0x31,0x31,0x64,0x35,0x30,0x61,0x33,0x61,0x6,0xB,0x0,0x0,0x0,0x7,0x74,0x61,0x72,0x67,0x65,0x74,0x30,0x6,0xC,0x0,0x0,0x0,0x5A,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x5F,0x74,0x65,0x73,0x74,0x5F,0x6E,0x65,0x74,0x5F,0x34,0x5F,0x30,0x2C,0x20,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x31,0x2E,0x33,0x2E,0x30,0x2E,0x30,0x2C,0x20,0x43,0x75,0x6C,0x74,0x75,0x72,0x65,0x3D,0x6E,0x65,0x75,0x74,0x72,0x61,0x6C,0x2C,0x20,0x50,0x75,0x62,0x6C,0x69,0x63,0x4B,0x65,0x79,0x54,0x6F,0x6B,0x65,0x6E,0x3D,0x33,0x31,0x62,0x66,0x33,0x38,0x35,0x36,0x61,0x64,0x33,0x36,0x34,0x65,0x33,0x35,0x6,0xD,0x0,0x0,0x0,0x2C,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x9,0x4,0x0,0x0,0x0,0xA,0x5,0x8,0x0,0x0,0x0,0x2C,0x4D,0x6F,0x6E,0x6F,0x54,0x65,0x73,0x74,0x73,0x2E,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x57,0x65,0x62,0x2E,0x43,0x61,0x63,0x68,0x69,0x6E,0x67,0x2E,0x4F,0x75,0x74,0x70,0x75,0x74,0x43,0x61,0x63,0x68,0x65,0x54,0x65,0x73,0x74,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xB,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; @@ -208,7 +208,7 @@ namespace MonoTests.System.Web.Caching AssertExtensions.AreEqual (bytes, substitutionResponseElement, "#B3"); bytes = SerializeElement (sreBad); - AssertExtensions.AreEqual (bytes, badSubstitutionResponseElement, "#B3"); + AssertExtensions.AreEqual (bytes, badSubstitutionResponseElement, "#B4"); } [Test] diff --git a/mcs/class/System.Web/Test/System.Web.UI.Adapters/PageAdapterTest.cs b/mcs/class/System.Web/Test/System.Web.UI.Adapters/PageAdapterTest.cs index db2ea35666..1990089323 100644 --- a/mcs/class/System.Web/Test/System.Web.UI.Adapters/PageAdapterTest.cs +++ b/mcs/class/System.Web/Test/System.Web.UI.Adapters/PageAdapterTest.cs @@ -165,7 +165,6 @@ namespace MonoTests.System.Web.UI.Adapters pd.SaveStateComplete = RenderPostBackEvent_OnSaveStateComplete; t.Invoker = new PageInvoker (pd); string html = t.Run (); - File.WriteAllText("response.html", html); } public static void RenderPostBackEvent_OnSaveStateComplete (Page p) diff --git a/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/MyHost.cs b/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/MyHost.cs index 0b1254fa5e..03ced5c391 100644 --- a/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/MyHost.cs +++ b/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/MyHost.cs @@ -18,11 +18,6 @@ namespace MonoTests.SystemWeb.Framework { internal class MyHost : MarshalByRefObject { - AutoResetEvent _done; - AutoResetEvent _doNext; - WebTest _currentTest; - Exception _e; - #region MyData class MyData { @@ -30,40 +25,12 @@ namespace MonoTests.SystemWeb.Framework public Exception exception; } #endregion - - public MyHost () - { - _done = new AutoResetEvent (false); - _doNext = new AutoResetEvent (false); - ThreadPool.QueueUserWorkItem (new WaitCallback (param => { - try { - AsyncRun (param); - } catch {} - }), null); - } public AppDomain AppDomain { get { return AppDomain.CurrentDomain; } } public WebTest Run (WebTest t) { - _currentTest = t; - _doNext.Set (); - _done.WaitOne (); - if (_e != null) { - Exception e = _e; - _e = null; - throw e; - } - return t; - } - - void AsyncRun (object param) - { - for (;;) { - _doNext.WaitOne (); - try { - WebTest t = _currentTest; HttpWorkerRequest wr = t.Request.CreateWorkerRequest (); MyData data = GetMyData (wr); data.currentTest = t; @@ -74,12 +41,8 @@ namespace MonoTests.SystemWeb.Framework if (data.exception != null) RethrowException (data.exception); - } catch (Exception e) { - _e = e; - } - - _done.Set (); - } + + return t; } private static void RethrowException (Exception inner) diff --git a/mcs/class/System.XML/Makefile b/mcs/class/System.XML/Makefile index 2160578776..c52a56468f 100644 --- a/mcs/class/System.XML/Makefile +++ b/mcs/class/System.XML/Makefile @@ -65,8 +65,8 @@ EXTRA_DISTFILES = \ $(xmlfiles_files:%=Test/XmlFiles/%) \ $(nist_dom_files:%=Test/System.Xml/nist_dom/%) -System.Xml.XPath/Parser.cs: System.Xml.XPath/Parser.jay $(topdir)/jay/skeleton.cs - (cd System.Xml.XPath; $(topdir)/../jay/jay -ct < $(topdir)/../jay/skeleton.cs Parser.jay >> Parser.cs) +System.Xml.XPath/$(PROFILE)_Parser.cs: System.Xml.XPath/Parser.jay $(topdir)/jay/skeleton.cs + (cd System.Xml.XPath; $(topdir)/../jay/jay -ct < $(topdir)/../jay/skeleton.cs Parser.jay >> $(PROFILE)_Parser.cs) Mono.Xml.Xsl/$(PROFILE)_PatternParser.jay: System.Xml.XPath/Parser.jay $(topdir)/jay/skeleton.cs sed "s/\%start Expr/\%start Pattern/" $< >$@ @@ -80,12 +80,12 @@ Mono.Xml.Xsl/$(PROFILE)_PatternTokenizer.cs: System.Xml.XPath/Tokenizer.cs cat $< >>$@ ifneq (moonlight_raw, $(PROFILE)) -BUILT_SOURCES = System.Xml.XPath/Parser.cs \ +BUILT_SOURCES = System.Xml.XPath/$(PROFILE)_Parser.cs \ Mono.Xml.Xsl/$(PROFILE)_PatternParser.cs \ Mono.Xml.Xsl/$(PROFILE)_PatternTokenizer.cs CLEAN_FILES = Test/XmlFiles/xsl/result.xml \ - System.Xml.XPath/Parser.cs \ + System.Xml.XPath/$(PROFILE)_Parser.cs \ Mono.Xml.Xsl/$(PROFILE)_PatternParser.cs \ Mono.Xml.Xsl/$(PROFILE)_PatternTokenizer.cs endif diff --git a/mcs/class/System.Xaml/Makefile b/mcs/class/System.Xaml/Makefile index 04ad2dda79..17d1613291 100644 --- a/mcs/class/System.Xaml/Makefile +++ b/mcs/class/System.Xaml/Makefile @@ -18,7 +18,7 @@ TEST_EXTRA_DISTFILES = \ Test/XmlFiles/*.xml \ Test/XmlFiles/*.xaml -VALID_PROFILE := $(filter 4, $(FRAMEWORK_VERSION_MAJOR)) +VALID_PROFILE := $(filter 4 monodroid monotouch, $(FRAMEWORK_VERSION_MAJOR)) ifndef VALID_PROFILE LIBRARY_NAME = dummy-System.Xaml.dll NO_INSTALL = yes diff --git a/mcs/class/System.Xaml/System.Windows.Markup/AmbientAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/AmbientAttribute.cs index ff55aefc7c..003f0c789e 100755 --- a/mcs/class/System.Xaml/System.Windows.Markup/AmbientAttribute.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/AmbientAttribute.cs @@ -31,9 +31,7 @@ using System.Xaml.Schema; namespace System.Windows.Markup { [AttributeUsage (AttributeTargets.Class | AttributeTargets.Method | AttributeTargets.Property, Inherited = true)] -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)] -#endif public sealed class AmbientAttribute : Attribute { } diff --git a/mcs/class/System.Xaml/System.Windows.Markup/ArrayExtension.cs b/mcs/class/System.Xaml/System.Windows.Markup/ArrayExtension.cs index 7a99b79601..e3da18695d 100755 --- a/mcs/class/System.Xaml/System.Windows.Markup/ArrayExtension.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/ArrayExtension.cs @@ -32,9 +32,7 @@ namespace System.Windows.Markup { [MarkupExtensionReturnType (typeof (Array))] [ContentProperty ("Items")] -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyPresentationFramework_3_5)] -#endif public class ArrayExtension : MarkupExtension { public ArrayExtension () @@ -62,9 +60,7 @@ namespace System.Windows.Markup public Type Type { get; set; } IList items; -#if !NET_2_1 [DesignerSerializationVisibility (DesignerSerializationVisibility.Content)] -#endif public IList Items { get { return items; } } diff --git a/mcs/class/System.Xaml/System.Windows.Markup/ConstructorArgumentAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/ConstructorArgumentAttribute.cs index 69a8b3f0ba..7708fe7c07 100755 --- a/mcs/class/System.Xaml/System.Windows.Markup/ConstructorArgumentAttribute.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/ConstructorArgumentAttribute.cs @@ -25,9 +25,7 @@ using System; namespace System.Windows.Markup { [AttributeUsage (AttributeTargets.Property, AllowMultiple = false, Inherited = false)] -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)] -#endif public sealed class ConstructorArgumentAttribute : Attribute { public ConstructorArgumentAttribute (string argumentName) diff --git a/mcs/class/System.Xaml/System.Windows.Markup/ContentPropertyAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/ContentPropertyAttribute.cs index f772a2bd82..5b3c078b70 100755 --- a/mcs/class/System.Xaml/System.Windows.Markup/ContentPropertyAttribute.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/ContentPropertyAttribute.cs @@ -29,9 +29,7 @@ namespace System.Windows.Markup // member regardless of this attribute. [AttributeUsage (AttributeTargets.Class, AllowMultiple = false, Inherited = true)] -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)] -#endif public sealed class ContentPropertyAttribute : Attribute { public ContentPropertyAttribute () diff --git a/mcs/class/System.Xaml/System.Windows.Markup/ContentWrapperAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/ContentWrapperAttribute.cs index 12e10c5e15..d64a2a9645 100755 --- a/mcs/class/System.Xaml/System.Windows.Markup/ContentWrapperAttribute.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/ContentWrapperAttribute.cs @@ -25,9 +25,7 @@ using System; namespace System.Windows.Markup { [AttributeUsage (AttributeTargets.Class, AllowMultiple = true, Inherited = true)] -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)] -#endif public sealed class ContentWrapperAttribute : Attribute { public ContentWrapperAttribute (Type contentWrapper) @@ -36,7 +34,8 @@ namespace System.Windows.Markup } public Type ContentWrapper { get; private set; } -#if !NET_2_1 + +#if !__MOBILE__ public override Object TypeId { get { return this; } } diff --git a/mcs/class/System.Xaml/System.Windows.Markup/DateTimeValueSerializer.cs b/mcs/class/System.Xaml/System.Windows.Markup/DateTimeValueSerializer.cs index 5556e7f43c..720a3517dc 100755 --- a/mcs/class/System.Xaml/System.Windows.Markup/DateTimeValueSerializer.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/DateTimeValueSerializer.cs @@ -28,9 +28,7 @@ using System.Globalization; namespace System.Windows.Markup { -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)] -#endif public class DateTimeValueSerializer : ValueSerializer { const DateTimeStyles styles = DateTimeStyles.RoundtripKind | DateTimeStyles.NoCurrentDateDefault | DateTimeStyles.AllowLeadingWhite | DateTimeStyles.AllowTrailingWhite; diff --git a/mcs/class/System.Xaml/System.Windows.Markup/DependsOnAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/DependsOnAttribute.cs index f49ce4fb5b..361df14ed6 100755 --- a/mcs/class/System.Xaml/System.Windows.Markup/DependsOnAttribute.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/DependsOnAttribute.cs @@ -25,9 +25,7 @@ using System; namespace System.Windows.Markup { [AttributeUsage (AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true)] -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)] -#endif public sealed class DependsOnAttribute : Attribute { public DependsOnAttribute (string name) @@ -37,7 +35,7 @@ namespace System.Windows.Markup public string Name { get; private set; } -#if !NET_2_1 +#if !__MOBILE__ // really? I doubt it should be overriden. public override Object TypeId { get { return this; } diff --git a/mcs/class/System.Xaml/System.Windows.Markup/DictionaryKeyPropertyAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/DictionaryKeyPropertyAttribute.cs index df7f4482bd..1664fe23a8 100755 --- a/mcs/class/System.Xaml/System.Windows.Markup/DictionaryKeyPropertyAttribute.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/DictionaryKeyPropertyAttribute.cs @@ -25,9 +25,7 @@ using System; namespace System.Windows.Markup { [AttributeUsageAttribute(AttributeTargets.Class, AllowMultiple = false, Inherited = true)] -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)] -#endif public sealed class DictionaryKeyPropertyAttribute : Attribute { public DictionaryKeyPropertyAttribute (string name) diff --git a/mcs/class/System.Xaml/System.Windows.Markup/IComponentConnector.cs b/mcs/class/System.Xaml/System.Windows.Markup/IComponentConnector.cs index 8b143b9279..5e6081628f 100755 --- a/mcs/class/System.Xaml/System.Windows.Markup/IComponentConnector.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/IComponentConnector.cs @@ -28,9 +28,7 @@ using System.Xaml.Schema; namespace System.Windows.Markup { -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)] -#endif public interface IComponentConnector { void Connect (int connectionId, object target); diff --git a/mcs/class/System.Xaml/System.Windows.Markup/INameScope.cs b/mcs/class/System.Xaml/System.Windows.Markup/INameScope.cs index 5c142ec0af..3035a7cbc1 100644 --- a/mcs/class/System.Xaml/System.Windows.Markup/INameScope.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/INameScope.cs @@ -25,9 +25,7 @@ using System.Collections.Generic; namespace System.Windows.Markup { -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)] -#endif public interface INameScope { object FindName (string name); diff --git a/mcs/class/System.Xaml/System.Windows.Markup/IProvideValueTarget.cs b/mcs/class/System.Xaml/System.Windows.Markup/IProvideValueTarget.cs index 65c124bfc3..6a44ce005d 100755 --- a/mcs/class/System.Xaml/System.Windows.Markup/IProvideValueTarget.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/IProvideValueTarget.cs @@ -28,9 +28,7 @@ using System.Xaml.Schema; namespace System.Windows.Markup { -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyPresentationFramework_3_5)] -#endif public interface IProvideValueTarget { object TargetObject { get; } diff --git a/mcs/class/System.Xaml/System.Windows.Markup/IUriContext.cs b/mcs/class/System.Xaml/System.Windows.Markup/IUriContext.cs index 7ace4b70cd..252ab6964c 100755 --- a/mcs/class/System.Xaml/System.Windows.Markup/IUriContext.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/IUriContext.cs @@ -28,9 +28,7 @@ using System.Xaml.Schema; namespace System.Windows.Markup { -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyPresentationCore_3_5)] -#endif public interface IUriContext { Uri BaseUri { get; set; } diff --git a/mcs/class/System.Xaml/System.Windows.Markup/IValueSerializerContext.cs b/mcs/class/System.Xaml/System.Windows.Markup/IValueSerializerContext.cs index 011c32e983..bfc1e0a372 100644 --- a/mcs/class/System.Xaml/System.Windows.Markup/IValueSerializerContext.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/IValueSerializerContext.cs @@ -29,9 +29,7 @@ using System.Xaml; namespace System.Windows.Markup { -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)] -#endif public interface IValueSerializerContext : ITypeDescriptorContext, IServiceProvider { ValueSerializer GetValueSerializerFor (PropertyDescriptor descriptor); diff --git a/mcs/class/System.Xaml/System.Windows.Markup/IXamlTypeResolver.cs b/mcs/class/System.Xaml/System.Windows.Markup/IXamlTypeResolver.cs index c78be09747..563387c842 100755 --- a/mcs/class/System.Xaml/System.Windows.Markup/IXamlTypeResolver.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/IXamlTypeResolver.cs @@ -28,9 +28,7 @@ using System.Xaml.Schema; namespace System.Windows.Markup { -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)] -#endif public interface IXamlTypeResolver { Type Resolve (string qualifiedTypeName); diff --git a/mcs/class/System.Xaml/System.Windows.Markup/MarkupExtension.cs b/mcs/class/System.Xaml/System.Windows.Markup/MarkupExtension.cs index 9277a3ca7a..f79cefd6e0 100644 --- a/mcs/class/System.Xaml/System.Windows.Markup/MarkupExtension.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/MarkupExtension.cs @@ -29,9 +29,7 @@ using System.Xaml.Schema; namespace System.Windows.Markup { -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)] -#endif public abstract class MarkupExtension { public abstract object ProvideValue (IServiceProvider serviceProvider); diff --git a/mcs/class/System.Xaml/System.Windows.Markup/NameScopePropertyAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/NameScopePropertyAttribute.cs index 3ecd55b200..8e33e017cf 100755 --- a/mcs/class/System.Xaml/System.Windows.Markup/NameScopePropertyAttribute.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/NameScopePropertyAttribute.cs @@ -25,9 +25,7 @@ using System; namespace System.Windows.Markup { [AttributeUsage (AttributeTargets.Class, AllowMultiple = false, Inherited = true)] -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)] -#endif public sealed class NameScopePropertyAttribute : Attribute { public NameScopePropertyAttribute (string name) diff --git a/mcs/class/System.Xaml/System.Windows.Markup/NullExtension.cs b/mcs/class/System.Xaml/System.Windows.Markup/NullExtension.cs index 9aef4b4d78..19cd2cbf59 100755 --- a/mcs/class/System.Xaml/System.Windows.Markup/NullExtension.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/NullExtension.cs @@ -29,9 +29,7 @@ using System.Xaml.Schema; namespace System.Windows.Markup { [MarkupExtensionReturnType (typeof (Object))] -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyPresentationFramework_3_5)] -#endif public class NullExtension : MarkupExtension { public override Object ProvideValue (IServiceProvider serviceProvider) diff --git a/mcs/class/System.Xaml/System.Windows.Markup/RootNamespaceAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/RootNamespaceAttribute.cs index 392968b432..040f1945a7 100755 --- a/mcs/class/System.Xaml/System.Windows.Markup/RootNamespaceAttribute.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/RootNamespaceAttribute.cs @@ -25,9 +25,7 @@ using System; namespace System.Windows.Markup { [AttributeUsage (AttributeTargets.Assembly)] -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)] -#endif public sealed class RootNamespaceAttribute : Attribute { public RootNamespaceAttribute (string nameSpace) diff --git a/mcs/class/System.Xaml/System.Windows.Markup/RuntimeNamePropertyAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/RuntimeNamePropertyAttribute.cs index ccd2cbc95b..44c3706b50 100755 --- a/mcs/class/System.Xaml/System.Windows.Markup/RuntimeNamePropertyAttribute.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/RuntimeNamePropertyAttribute.cs @@ -25,9 +25,7 @@ using System; namespace System.Windows.Markup { [AttributeUsage (AttributeTargets.Class)] -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)] -#endif public sealed class RuntimeNamePropertyAttribute : Attribute { public RuntimeNamePropertyAttribute (string name) diff --git a/mcs/class/System.Xaml/System.Windows.Markup/StaticExtension.cs b/mcs/class/System.Xaml/System.Windows.Markup/StaticExtension.cs index 465ba56521..24df4f5a16 100755 --- a/mcs/class/System.Xaml/System.Windows.Markup/StaticExtension.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/StaticExtension.cs @@ -30,9 +30,7 @@ namespace System.Windows.Markup { [MarkupExtensionReturnType (typeof (object))] [TypeConverter (typeof (StaticExtensionConverter))] -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyPresentationFramework_3_5)] -#endif public class StaticExtension : MarkupExtension { public StaticExtension () diff --git a/mcs/class/System.Xaml/System.Windows.Markup/TrimSurroundingWhitespaceAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/TrimSurroundingWhitespaceAttribute.cs index bf4309d6e3..371e3e06f8 100755 --- a/mcs/class/System.Xaml/System.Windows.Markup/TrimSurroundingWhitespaceAttribute.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/TrimSurroundingWhitespaceAttribute.cs @@ -31,9 +31,7 @@ using System.Xaml.Schema; namespace System.Windows.Markup { [AttributeUsage (AttributeTargets.Class, AllowMultiple = false, Inherited = true)] -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)] -#endif public sealed class TrimSurroundingWhitespaceAttribute : Attribute { } diff --git a/mcs/class/System.Xaml/System.Windows.Markup/TypeExtension.cs b/mcs/class/System.Xaml/System.Windows.Markup/TypeExtension.cs index 00af705581..42da7a1378 100755 --- a/mcs/class/System.Xaml/System.Windows.Markup/TypeExtension.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/TypeExtension.cs @@ -30,9 +30,7 @@ namespace System.Windows.Markup { [MarkupExtensionReturnType (typeof (Type))] [TypeConverter (typeof (TypeExtensionConverter))] -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyPresentationFramework_3_5)] -#endif public class TypeExtension : MarkupExtension { public TypeExtension () @@ -56,9 +54,7 @@ namespace System.Windows.Markup [ConstructorArgument ("type")] [DefaultValue (null)] public Type Type { get; set; } -#if !NET_2_1 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] -#endif public string TypeName { get; set; } public override object ProvideValue (IServiceProvider serviceProvider) diff --git a/mcs/class/System.Xaml/System.Windows.Markup/UidPropertyAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/UidPropertyAttribute.cs index bd66ca2614..1898e16a20 100755 --- a/mcs/class/System.Xaml/System.Windows.Markup/UidPropertyAttribute.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/UidPropertyAttribute.cs @@ -31,9 +31,7 @@ using System.Xaml.Schema; namespace System.Windows.Markup { [AttributeUsage (AttributeTargets.Class, AllowMultiple = false)] -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)] -#endif public sealed class UidPropertyAttribute : Attribute { public UidPropertyAttribute (string name) diff --git a/mcs/class/System.Xaml/System.Windows.Markup/ValueSerializer.cs b/mcs/class/System.Xaml/System.Windows.Markup/ValueSerializer.cs index bee7ad6590..45adefabec 100644 --- a/mcs/class/System.Xaml/System.Windows.Markup/ValueSerializer.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/ValueSerializer.cs @@ -32,24 +32,19 @@ using System.Xaml.Schema; namespace System.Windows.Markup { -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)] -#endif public abstract class ValueSerializer { -#if !NET_2_1 public static ValueSerializer GetSerializerFor (PropertyDescriptor descriptor) { return GetSerializerFor (descriptor, null); } -#endif public static ValueSerializer GetSerializerFor (Type type) { return GetSerializerFor (type, null); } -#if !NET_2_1 // untested public static ValueSerializer GetSerializerFor (PropertyDescriptor descriptor, IValueSerializerContext context) { @@ -63,7 +58,6 @@ namespace System.Windows.Markup return new TypeConverterValueSerializer (tc); return null; } -#endif public static ValueSerializer GetSerializerFor (Type type, IValueSerializerContext context) { diff --git a/mcs/class/System.Xaml/System.Windows.Markup/ValueSerializerAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/ValueSerializerAttribute.cs index fdb4e951e2..37dec5262a 100755 --- a/mcs/class/System.Xaml/System.Windows.Markup/ValueSerializerAttribute.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/ValueSerializerAttribute.cs @@ -31,9 +31,7 @@ using System.Xaml.Schema; namespace System.Windows.Markup { [AttributeUsage (AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Interface, AllowMultiple = false, Inherited = true)] -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)] -#endif public sealed class ValueSerializerAttribute : Attribute { public ValueSerializerAttribute (string valueSerializerTypeName) diff --git a/mcs/class/System.Xaml/System.Windows.Markup/WhitespaceSignificantCollectionAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/WhitespaceSignificantCollectionAttribute.cs index 893d79c1aa..36cdf56aa2 100755 --- a/mcs/class/System.Xaml/System.Windows.Markup/WhitespaceSignificantCollectionAttribute.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/WhitespaceSignificantCollectionAttribute.cs @@ -31,9 +31,7 @@ using System.Xaml.Schema; namespace System.Windows.Markup { [AttributeUsage (AttributeTargets.Class, AllowMultiple = false, Inherited = true)] -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)] -#endif public sealed class WhitespaceSignificantCollectionAttribute : Attribute { } diff --git a/mcs/class/System.Xaml/System.Windows.Markup/XmlLangPropertyAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/XmlLangPropertyAttribute.cs index 18978a8464..4789120383 100755 --- a/mcs/class/System.Xaml/System.Windows.Markup/XmlLangPropertyAttribute.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/XmlLangPropertyAttribute.cs @@ -31,9 +31,7 @@ using System.Xaml.Schema; namespace System.Windows.Markup { [AttributeUsage (AttributeTargets.Class, AllowMultiple = false)] -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)] -#endif public sealed class XmlLangPropertyAttribute : Attribute { public XmlLangPropertyAttribute (string name) diff --git a/mcs/class/System.Xaml/System.Windows.Markup/XmlnsCompatibleWithAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/XmlnsCompatibleWithAttribute.cs index e77ae35972..0e16db2f15 100755 --- a/mcs/class/System.Xaml/System.Windows.Markup/XmlnsCompatibleWithAttribute.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/XmlnsCompatibleWithAttribute.cs @@ -31,9 +31,7 @@ using System.Xaml.Schema; namespace System.Windows.Markup { [AttributeUsage (AttributeTargets.Assembly, AllowMultiple = true)] -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)] -#endif public sealed class XmlnsCompatibleWithAttribute : Attribute { public XmlnsCompatibleWithAttribute (string oldNamespace, string newNamespace) diff --git a/mcs/class/System.Xaml/System.Windows.Markup/XmlnsDefinitionAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/XmlnsDefinitionAttribute.cs index 078623fb08..81be2dae73 100755 --- a/mcs/class/System.Xaml/System.Windows.Markup/XmlnsDefinitionAttribute.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/XmlnsDefinitionAttribute.cs @@ -31,9 +31,7 @@ using System.Xaml.Schema; namespace System.Windows.Markup { [AttributeUsage (AttributeTargets.Assembly, AllowMultiple = true)] -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)] -#endif public sealed class XmlnsDefinitionAttribute : Attribute { public XmlnsDefinitionAttribute (string xmlNamespace, string clrNamespace) diff --git a/mcs/class/System.Xaml/System.Windows.Markup/XmlnsPrefixAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/XmlnsPrefixAttribute.cs index 4bdf0d97af..c907c8eb42 100755 --- a/mcs/class/System.Xaml/System.Windows.Markup/XmlnsPrefixAttribute.cs +++ b/mcs/class/System.Xaml/System.Windows.Markup/XmlnsPrefixAttribute.cs @@ -31,9 +31,7 @@ using System.Xaml.Schema; namespace System.Windows.Markup { [AttributeUsage (AttributeTargets.Assembly, AllowMultiple = true)] -#if !NET_2_1 [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)] -#endif public sealed class XmlnsPrefixAttribute : Attribute { public XmlnsPrefixAttribute (string xmlNamespace, string prefix) diff --git a/mcs/class/System.Xaml/System.Xaml/XamlDuplicateMemberException.cs b/mcs/class/System.Xaml/System.Xaml/XamlDuplicateMemberException.cs index e65e23faf1..10e1858726 100644 --- a/mcs/class/System.Xaml/System.Xaml/XamlDuplicateMemberException.cs +++ b/mcs/class/System.Xaml/System.Xaml/XamlDuplicateMemberException.cs @@ -27,9 +27,7 @@ using System.Runtime.Serialization; namespace System.Xaml { -#if !NET_2_1 [Serializable] -#endif public class XamlDuplicateMemberException : XamlException { public XamlDuplicateMemberException () @@ -54,25 +52,21 @@ namespace System.Xaml { } -#if !NET_2_1 protected XamlDuplicateMemberException (SerializationInfo info, StreamingContext context) : base (info, context) { DuplicateMember = (XamlMember) info.GetValue ("member", typeof (XamlMember)); ParentType = (XamlType) info.GetValue ("type", typeof (XamlType)); } -#endif public XamlMember DuplicateMember { get; set; } public XamlType ParentType { get; set; } -#if !NET_2_1 public override void GetObjectData (SerializationInfo info, StreamingContext context) { base.GetObjectData (info, context); info.AddValue ("member", DuplicateMember); info.AddValue ("type", ParentType); } -#endif } } diff --git a/mcs/class/System.Xaml/System.Xaml/XamlException.cs b/mcs/class/System.Xaml/System.Xaml/XamlException.cs index ecccbb4ced..669b2245ec 100644 --- a/mcs/class/System.Xaml/System.Xaml/XamlException.cs +++ b/mcs/class/System.Xaml/System.Xaml/XamlException.cs @@ -27,9 +27,7 @@ using System.Runtime.Serialization; namespace System.Xaml { -#if !NET_2_1 [Serializable] -#endif public class XamlException : Exception { public XamlException () @@ -63,14 +61,12 @@ namespace System.Xaml LinePosition = linePosition; } -#if !NET_2_1 protected XamlException (SerializationInfo info, StreamingContext context) : base (info, context) { LineNumber = info.GetInt32 ("lineNumber"); LinePosition = info.GetInt32 ("linePosition"); } -#endif public int LineNumber { get; protected internal set; } public int LinePosition { get; protected internal set; } @@ -78,12 +74,10 @@ namespace System.Xaml get { return FormatLine (base.Message, LineNumber, LinePosition); } } -#if !NET_2_1 public override void GetObjectData (SerializationInfo info, StreamingContext context) { info.AddValue ("lineNumber", LineNumber); info.AddValue ("linePosition", LinePosition); } -#endif } } diff --git a/mcs/class/System.Xaml/System.Xaml/XamlInternalException.cs b/mcs/class/System.Xaml/System.Xaml/XamlInternalException.cs index a24cffe420..d98aa4c4df 100644 --- a/mcs/class/System.Xaml/System.Xaml/XamlInternalException.cs +++ b/mcs/class/System.Xaml/System.Xaml/XamlInternalException.cs @@ -27,9 +27,7 @@ using System.Runtime.Serialization; namespace System.Xaml { -#if !NET_2_1 [Serializable] -#endif public class XamlInternalException : XamlException { public XamlInternalException () @@ -47,11 +45,9 @@ namespace System.Xaml { } -#if !NET_2_1 protected XamlInternalException (SerializationInfo info, StreamingContext context) : base (info, context) { } -#endif } } diff --git a/mcs/class/System.Xaml/System.Xaml/XamlMember.cs b/mcs/class/System.Xaml/System.Xaml/XamlMember.cs index 7b85eb322d..ad03cbf628 100644 --- a/mcs/class/System.Xaml/System.Xaml/XamlMember.cs +++ b/mcs/class/System.Xaml/System.Xaml/XamlMember.cs @@ -166,7 +166,6 @@ namespace System.Xaml get { return directive_ns ?? (DeclaringType == null ? null : DeclaringType.PreferredXamlNamespace); } } -#if !NET_2_1 public DesignerSerializationVisibility SerializationVisibility { get { var c= GetCustomAttributeProvider (); @@ -174,7 +173,6 @@ namespace System.Xaml return a != null ? a.Visibility : DesignerSerializationVisibility.Visible; } } -#endif public bool IsAttachable { get { return is_attachable; } diff --git a/mcs/class/System.Xaml/System.Xaml/XamlObjectReaderException.cs b/mcs/class/System.Xaml/System.Xaml/XamlObjectReaderException.cs index 89c64fe1ad..0bad880d68 100644 --- a/mcs/class/System.Xaml/System.Xaml/XamlObjectReaderException.cs +++ b/mcs/class/System.Xaml/System.Xaml/XamlObjectReaderException.cs @@ -27,9 +27,7 @@ using System.Runtime.Serialization; namespace System.Xaml { -#if !NET_2_1 [Serializable] -#endif public class XamlObjectReaderException : XamlException { public XamlObjectReaderException () @@ -47,11 +45,9 @@ namespace System.Xaml { } -#if !NET_2_1 protected XamlObjectReaderException (SerializationInfo info, StreamingContext context) : base (info, context) { } -#endif } } diff --git a/mcs/class/System.Xaml/System.Xaml/XamlObjectWriterException.cs b/mcs/class/System.Xaml/System.Xaml/XamlObjectWriterException.cs index b5ce0b3b80..17708cc034 100644 --- a/mcs/class/System.Xaml/System.Xaml/XamlObjectWriterException.cs +++ b/mcs/class/System.Xaml/System.Xaml/XamlObjectWriterException.cs @@ -27,9 +27,7 @@ using System.Runtime.Serialization; namespace System.Xaml { -#if !NET_2_1 [Serializable] -#endif public class XamlObjectWriterException : XamlException { public XamlObjectWriterException () @@ -47,11 +45,9 @@ namespace System.Xaml { } -#if !NET_2_1 protected XamlObjectWriterException (SerializationInfo info, StreamingContext context) : base (info, context) { } -#endif } } diff --git a/mcs/class/System.Xaml/System.Xaml/XamlObjectWriterSettings.cs b/mcs/class/System.Xaml/System.Xaml/XamlObjectWriterSettings.cs index 4ecbe75e6f..a46dded4ed 100644 --- a/mcs/class/System.Xaml/System.Xaml/XamlObjectWriterSettings.cs +++ b/mcs/class/System.Xaml/System.Xaml/XamlObjectWriterSettings.cs @@ -25,7 +25,7 @@ using System.Collections.Generic; using System.ComponentModel; using System.Reflection; using System.Windows.Markup; -#if !NET_2_1 +#if !__MOBILE__ using System.Xaml.Permissions; #endif using System.Xaml.Schema; @@ -42,7 +42,7 @@ namespace System.Xaml : base (settings) { var s = settings; -#if !NET_2_1 +#if !__MOBILE__ AccessLevel = s.AccessLevel; #endif AfterBeginInitHandler = s.AfterBeginInitHandler; @@ -65,7 +65,7 @@ namespace System.Xaml public EventHandler BeforePropertiesHandler { get; set; } public EventHandler XamlSetValueHandler { get; set; } -#if !NET_2_1 +#if !__MOBILE__ [MonoTODO ("Ignored")] public XamlAccessLevel AccessLevel { get; set; } #endif diff --git a/mcs/class/System.Xaml/System.Xaml/XamlParseException.cs b/mcs/class/System.Xaml/System.Xaml/XamlParseException.cs index 1ae1667b53..4bb8340a48 100644 --- a/mcs/class/System.Xaml/System.Xaml/XamlParseException.cs +++ b/mcs/class/System.Xaml/System.Xaml/XamlParseException.cs @@ -27,9 +27,7 @@ using System.Runtime.Serialization; namespace System.Xaml { -#if !NET_2_1 [Serializable] -#endif public class XamlParseException : XamlException { public XamlParseException () @@ -47,11 +45,9 @@ namespace System.Xaml { } -#if !NET_2_1 protected XamlParseException (SerializationInfo info, StreamingContext context) : base (info, context) { } -#endif } } diff --git a/mcs/class/System.Xaml/System.Xaml/XamlSchemaContext.cs b/mcs/class/System.Xaml/System.Xaml/XamlSchemaContext.cs index de31e46de2..64cf91ea71 100644 --- a/mcs/class/System.Xaml/System.Xaml/XamlSchemaContext.cs +++ b/mcs/class/System.Xaml/System.Xaml/XamlSchemaContext.cs @@ -57,10 +57,8 @@ namespace System.Xaml { if (referenceAssemblies != null) reference_assemblies = new List (referenceAssemblies); -#if !NET_2_1 else AppDomain.CurrentDomain.AssemblyLoad += OnAssemblyLoaded; -#endif if (settings == null) return; @@ -69,13 +67,11 @@ namespace System.Xaml SupportMarkupExtensionsWithDuplicateArity = settings.SupportMarkupExtensionsWithDuplicateArity; } -#if !NET_2_1 ~XamlSchemaContext () { if (reference_assemblies == null) AppDomain.CurrentDomain.AssemblyLoad -= OnAssemblyLoaded; } -#endif IList reference_assemblies; @@ -255,7 +251,6 @@ namespace System.Xaml return compat_nss.TryGetValue (xamlNamespace, out compatibleNamespace); } -#if !NET_2_1 void OnAssemblyLoaded (object o, AssemblyLoadEventArgs e) { if (reference_assemblies != null) @@ -270,8 +265,7 @@ namespace System.Xaml if (all_xaml_types != null) FillAllXamlTypes (e.LoadedAssembly); } -#endif - + // cache updater methods void FillXamlNamespaces (Assembly ass) { diff --git a/mcs/class/System.Xaml/System.Xaml/XamlSchemaException.cs b/mcs/class/System.Xaml/System.Xaml/XamlSchemaException.cs index 9681927b39..78de4f8e48 100644 --- a/mcs/class/System.Xaml/System.Xaml/XamlSchemaException.cs +++ b/mcs/class/System.Xaml/System.Xaml/XamlSchemaException.cs @@ -27,9 +27,7 @@ using System.Runtime.Serialization; namespace System.Xaml { -#if !NET_2_1 [Serializable] -#endif public class XamlSchemaException : XamlException { public XamlSchemaException () @@ -47,11 +45,9 @@ namespace System.Xaml { } -#if !NET_2_1 protected XamlSchemaException (SerializationInfo info, StreamingContext context) : base (info, context) { } -#endif } } diff --git a/mcs/class/System.Xaml/System.Xaml/XamlServices.cs b/mcs/class/System.Xaml/System.Xaml/XamlServices.cs index cf686d8506..c8026d195a 100755 --- a/mcs/class/System.Xaml/System.Xaml/XamlServices.cs +++ b/mcs/class/System.Xaml/System.Xaml/XamlServices.cs @@ -71,13 +71,11 @@ namespace System.Xaml return sw.ToString (); } -#if !NET_2_1 public static void Save (string fileName, object instance) { using (var xw = XmlWriter.Create (fileName, new XmlWriterSettings () { OmitXmlDeclaration = true, Indent = true })) Save (xw, instance); } -#endif public static void Save (Stream stream, object instance) { diff --git a/mcs/class/System.Xaml/System.Xaml/XamlXmlWriterException.cs b/mcs/class/System.Xaml/System.Xaml/XamlXmlWriterException.cs index d784b9df2d..ffa402cc7d 100644 --- a/mcs/class/System.Xaml/System.Xaml/XamlXmlWriterException.cs +++ b/mcs/class/System.Xaml/System.Xaml/XamlXmlWriterException.cs @@ -27,9 +27,7 @@ using System.Runtime.Serialization; namespace System.Xaml { -#if !NET_2_1 [Serializable] -#endif public class XamlXmlWriterException : XamlException { public XamlXmlWriterException () @@ -47,11 +45,9 @@ namespace System.Xaml { } -#if !NET_2_1 protected XamlXmlWriterException (SerializationInfo info, StreamingContext context) : base (info, context) { } -#endif } } diff --git a/mcs/class/System/System.Net.Mail/SmtpClient.cs b/mcs/class/System/System.Net.Mail/SmtpClient.cs index 829deeceda..4188a96c32 100644 --- a/mcs/class/System/System.Net.Mail/SmtpClient.cs +++ b/mcs/class/System/System.Net.Mail/SmtpClient.cs @@ -550,8 +550,12 @@ namespace System.Net.Mail { MailAddress from = message.From; if (from == null) from = defaultFrom; - - SendHeader (HeaderName.Date, DateTime.Now.ToString ("ddd, dd MMM yyyy HH':'mm':'ss zzz", DateTimeFormatInfo.InvariantInfo)); + + string dt = DateTime.Now.ToString("ddd, dd MMM yyyy HH':'mm':'ss zzz", DateTimeFormatInfo.InvariantInfo); + // remove ':' from time zone offset (e.g. from "+01:00") + dt = dt.Remove(dt.Length - 3, 1); + SendHeader(HeaderName.Date, dt); + SendHeader (HeaderName.From, EncodeAddress(from)); SendHeader (HeaderName.To, EncodeAddresses(message.To)); if (message.CC.Count > 0) @@ -762,7 +766,7 @@ namespace System.Net.Mail { static void SendMailAsyncCompletedHandler (TaskCompletionSource source, AsyncCompletedEventArgs e, SendCompletedEventHandler handler, SmtpClient client) { - if (handler != e.UserState) + if ((object) handler != e.UserState) return; client.SendCompleted -= handler; diff --git a/mcs/class/System/System.Net.NetworkInformation/MacOsNetworkInterfaceMarshal.cs b/mcs/class/System/System.Net.NetworkInformation/MacOsNetworkInterfaceMarshal.cs index 940a993f7c..840fc53103 100644 --- a/mcs/class/System/System.Net.NetworkInformation/MacOsNetworkInterfaceMarshal.cs +++ b/mcs/class/System/System.Net.NetworkInformation/MacOsNetworkInterfaceMarshal.cs @@ -79,4 +79,23 @@ namespace System.Net.NetworkInformation { LOOPBACK = 0x18, FDDI = 0xf } + + internal enum MacOsInterfaceFlags { + IFF_UP = 0x1, /* interface is up */ + IFF_BROADCAST = 0x2, /* broadcast address valid */ + IFF_DEBUG = 0x4, /* turn on debugging */ + IFF_LOOPBACK = 0x8, /* is a loopback net */ + IFF_POINTOPOINT = 0x10, /* interface is point-to-point link */ + IFF_NOTRAILERS = 0x20, /* avoid use of trailers */ + IFF_RUNNING = 0x40, /* resources allocated */ + IFF_NOARP = 0x80, /* no address resolution protocol */ + IFF_PROMISC = 0x100, /* receive all packets */ + IFF_ALLMULTI = 0x200, /* receive all multicast packets */ + IFF_OACTIVE = 0x400, /* transmission in progress */ + IFF_SIMPLEX = 0x800, /* can't hear own transmissions */ + IFF_LINK0 = 0x1000, /* per link layer defined bit */ + IFF_LINK1 = 0x2000, /* per link layer defined bit */ + IFF_LINK2 = 0x4000, /* per link layer defined bit */ + IFF_MULTICAST = 0x8000 /* supports multicast */ + } } diff --git a/mcs/class/System/System.Net.NetworkInformation/NetworkInterface.cs b/mcs/class/System/System.Net.NetworkInformation/NetworkInterface.cs index 4ad2720909..18b3b47164 100644 --- a/mcs/class/System/System.Net.NetworkInformation/NetworkInterface.cs +++ b/mcs/class/System/System.Net.NetworkInformation/NetworkInterface.cs @@ -446,6 +446,8 @@ namespace System.Net.NetworkInformation { const int AF_INET = 2; const int AF_INET6 = 30; const int AF_LINK = 18; + + private uint _ifa_flags; public static NetworkInterface [] ImplGetAllNetworkInterfaces () { @@ -465,6 +467,7 @@ namespace System.Net.NetworkInformation { NetworkInterfaceType type = NetworkInterfaceType.Unknown; if (addr.ifa_addr != IntPtr.Zero) { + // optain IPAddress MacOsStructs.sockaddr sockaddr = (MacOsStructs.sockaddr) Marshal.PtrToStructure (addr.ifa_addr, typeof (MacOsStructs.sockaddr)); if (sockaddr.sa_family == AF_INET6) { @@ -478,7 +481,10 @@ namespace System.Net.NetworkInformation { sockaddrdl.Read (addr.ifa_addr); macAddress = new byte [(int) sockaddrdl.sdl_alen]; + // copy mac address from sdl_data field starting at last index pos of interface name into array macaddress, starting + // at index 0 Array.Copy (sockaddrdl.sdl_data, sockaddrdl.sdl_nlen, macAddress, 0, Math.Min (macAddress.Length, sockaddrdl.sdl_data.Length - sockaddrdl.sdl_nlen)); + index = sockaddrdl.sdl_index; int hwtype = (int) sockaddrdl.sdl_type; @@ -515,14 +521,17 @@ namespace System.Net.NetworkInformation { MacOsNetworkInterface iface = null; + // create interface if not already present if (!interfaces.TryGetValue (name, out iface)) { - iface = new MacOsNetworkInterface (name); + iface = new MacOsNetworkInterface (name, addr.ifa_flags); interfaces.Add (name, iface); } + // if a new address has been found, add it if (!address.Equals (IPAddress.None)) iface.AddAddress (address); + // set link layer info, if iface has macaddress or is loopback device if (macAddress != null || type == NetworkInterfaceType.Loopback) iface.SetLinkLayerInfo (index, macAddress, type); @@ -541,9 +550,10 @@ namespace System.Net.NetworkInformation { return result; } - MacOsNetworkInterface (string name) + MacOsNetworkInterface (string name, uint ifa_flags) : base (name) { + _ifa_flags = ifa_flags; } public override IPInterfaceProperties GetIPProperties () @@ -562,13 +572,16 @@ namespace System.Net.NetworkInformation { public override OperationalStatus OperationalStatus { get { + if(((MacOsInterfaceFlags)_ifa_flags & MacOsInterfaceFlags.IFF_UP) == MacOsInterfaceFlags.IFF_UP){ + return OperationalStatus.Up; + } return OperationalStatus.Unknown; } } public override bool SupportsMulticast { get { - return false; + return ((MacOsInterfaceFlags)_ifa_flags & MacOsInterfaceFlags.IFF_MULTICAST) == MacOsInterfaceFlags.IFF_MULTICAST; } } } diff --git a/mcs/class/System/System.Net.Sockets/SocketAsyncEventArgs.cs b/mcs/class/System/System.Net.Sockets/SocketAsyncEventArgs.cs index 609583a73f..a7eeb67d88 100644 --- a/mcs/class/System/System.Net.Sockets/SocketAsyncEventArgs.cs +++ b/mcs/class/System/System.Net.Sockets/SocketAsyncEventArgs.cs @@ -231,7 +231,7 @@ namespace System.Net.Sockets else if (op == SocketAsyncOperation.Disconnect) args.DisconnectCallback (ares); else if (op == SocketAsyncOperation.Connect) - args.ConnectCallback (); + args.ConnectCallback (ares); /* else if (op == Socket.SocketOperation.ReceiveMessageFrom) else if (op == Socket.SocketOperation.SendPackets) @@ -254,10 +254,12 @@ namespace System.Net.Sockets } } - void ConnectCallback () + void ConnectCallback (IAsyncResult ares) { try { - SocketError = (SocketError) Worker.result.error; + curSocket.EndConnect (ares); + } catch (SocketException se) { + SocketError = se.SocketErrorCode; } finally { OnCompleted (this); } diff --git a/mcs/class/System/System.Net.Sockets/Socket_2_1.cs b/mcs/class/System/System.Net.Sockets/Socket_2_1.cs index 11a7eda8a4..7616b88c78 100644 --- a/mcs/class/System/System.Net.Sockets/Socket_2_1.cs +++ b/mcs/class/System/System.Net.Sockets/Socket_2_1.cs @@ -1253,7 +1253,7 @@ namespace System.Net.Sockets { throw new SocketException (error); } - if (socket_type == SocketType.Dgram && (ep.Address.Equals (IPAddress.Any) || ep.Address.Equals (IPAddress.IPv6Any))) + if (socket_type == SocketType.Dgram && ep != null && (ep.Address.Equals (IPAddress.Any) || ep.Address.Equals (IPAddress.IPv6Any))) connected = false; else connected = true; diff --git a/mcs/class/System/System.Net.WebSockets/ClientWebSocket.cs b/mcs/class/System/System.Net.WebSockets/ClientWebSocket.cs index 3778c74053..bfa085885e 100644 --- a/mcs/class/System/System.Net.WebSockets/ClientWebSocket.cs +++ b/mcs/class/System/System.Net.WebSockets/ClientWebSocket.cs @@ -196,7 +196,30 @@ namespace System.Net.WebSockets underlyingSocket.Send (sendBuffer, 0, buffer.Count + headerLength, SocketFlags.None); }); } + + const int messageTypeText = 1; + const int messageTypeBinary = 2; + const int messageTypeClose = 8; + static WebSocketMessageType WireToMessageType (byte msgType) + { + + if (msgType == messageTypeText) + return WebSocketMessageType.Text; + if (msgType == messageTypeBinary) + return WebSocketMessageType.Binary; + return WebSocketMessageType.Close; + } + + static byte MessageTypeToWire (WebSocketMessageType type) + { + if (type == WebSocketMessageType.Text) + return messageTypeText; + if (type == WebSocketMessageType.Binary) + return messageTypeBinary; + return messageTypeClose; + } + public override Task ReceiveAsync (ArraySegment buffer, CancellationToken cancellationToken) { EnsureWebSocketConnected (); @@ -208,7 +231,7 @@ namespace System.Net.WebSockets var isLast = (headerBuffer[0] >> 7) > 0; var isMasked = (headerBuffer[1] >> 7) > 0; int mask = 0; - var type = (WebSocketMessageType)(headerBuffer[0] & 0xF); + var type = WireToMessageType ((byte)(headerBuffer[0] & 0xF)); long length = headerBuffer[1] & 0x7F; int offset = 0; if (length == 126) { @@ -279,7 +302,7 @@ namespace System.Net.WebSockets int WriteHeader (WebSocketMessageType type, ArraySegment buffer, bool endOfMessage) { - var opCode = (byte)type; + var opCode = MessageTypeToWire (type); var length = buffer.Count; headerBuffer[0] = (byte)(opCode | (endOfMessage ? 0 : 0x80)); diff --git a/mcs/class/System/System.Net.WebSockets/WebSocketMessageType.cs b/mcs/class/System/System.Net.WebSockets/WebSocketMessageType.cs index 50cbc003c0..f6cb2fc2a8 100644 --- a/mcs/class/System/System.Net.WebSockets/WebSocketMessageType.cs +++ b/mcs/class/System/System.Net.WebSockets/WebSocketMessageType.cs @@ -35,9 +35,9 @@ namespace System.Net.WebSockets { public enum WebSocketMessageType { - Text = 1, - Binary = 2, - Close = 8 + Text = 0, + Binary = 1, + Close = 2 } } diff --git a/mcs/class/System/System.Net/ChunkStream.cs b/mcs/class/System/System.Net/ChunkStream.cs index 1337fce4fc..addcc28907 100644 --- a/mcs/class/System/System.Net/ChunkStream.cs +++ b/mcs/class/System/System.Net/ChunkStream.cs @@ -39,6 +39,7 @@ namespace System.Net { enum State { None, + PartialSize, Body, BodyFinished, Trailer @@ -139,9 +140,9 @@ namespace System.Net void InternalWrite (byte [] buffer, ref int offset, int size) { - if (state == State.None) { + if (state == State.None || state == State.PartialSize) { state = GetChunkSize (buffer, ref offset, size); - if (state == State.None) + if (state == State.PartialSize) return; saved.Length = 0; @@ -262,7 +263,7 @@ namespace System.Net ThrowProtocolViolation ("Cannot parse chunk size."); } - return State.None; + return State.PartialSize; } chunkRead = 0; diff --git a/mcs/class/System/System.Net/DigestClient.cs b/mcs/class/System/System.Net/DigestClient.cs index be618771eb..f570a73965 100644 --- a/mcs/class/System/System.Net/DigestClient.cs +++ b/mcs/class/System/System.Net/DigestClient.cs @@ -181,7 +181,7 @@ namespace System.Net } value = header.Substring (beginQ, pos - beginQ); - pos += 2; + pos += useQuote ? 2 : 1; return true; } } diff --git a/mcs/class/System/System.Net/WebClient.cs b/mcs/class/System/System.Net/WebClient.cs index 7ee338a0a2..97f9759dcc 100644 --- a/mcs/class/System/System.Net/WebClient.cs +++ b/mcs/class/System/System.Net/WebClient.cs @@ -1405,10 +1405,12 @@ namespace System.Net string data2 = UploadString ((Uri) args [0], (string) args [1], (string) args [2]); OnUploadStringCompleted ( new UploadStringCompletedEventArgs (data2, null, false, args [3])); - } catch (ThreadInterruptedException){ - OnUploadStringCompleted ( - new UploadStringCompletedEventArgs (null, null, true, args [3])); } catch (Exception e){ + if (e is ThreadInterruptedException || e.InnerException is ThreadInterruptedException) { + OnUploadStringCompleted ( + new UploadStringCompletedEventArgs (null, null, true, args [3])); + return; + } OnUploadStringCompleted ( new UploadStringCompletedEventArgs (null, e, false, args [3])); }}); diff --git a/mcs/class/System/System.Net/WebConnection.cs b/mcs/class/System/System.Net/WebConnection.cs index 54af1f4499..0f35c49b3e 100644 --- a/mcs/class/System/System.Net/WebConnection.cs +++ b/mcs/class/System/System.Net/WebConnection.cs @@ -356,8 +356,6 @@ namespace System.Net byte [] buffer = new byte [1024]; MemoryStream ms = new MemoryStream (); - bool gotStatus = false; - WebHeaderCollection headers = null; while (true) { int n = stream.Read (buffer, 0, 1024); @@ -369,7 +367,8 @@ namespace System.Net ms.Write (buffer, 0, n); int start = 0; string str = null; - headers = new WebHeaderCollection (); + bool gotStatus = false; + WebHeaderCollection headers = new WebHeaderCollection (); while (ReadLine (ms.GetBuffer (), ref start, (int) ms.Length, ref str)) { if (str == null) { int contentLen = 0; @@ -399,13 +398,22 @@ namespace System.Net continue; } - int spaceidx = str.IndexOf (' '); - if (spaceidx == -1) { + string[] parts = str.Split (' '); + if (parts.Length < 2) { HandleError (WebExceptionStatus.ServerProtocolViolation, null, "ReadHeaders2"); return null; } - status = (int) UInt32.Parse (str.Substring (spaceidx + 1, 3)); + if (String.Compare (parts [0], "HTTP/1.1", true) == 0) + Data.ProxyVersion = HttpVersion.Version11; + else if (String.Compare (parts [0], "HTTP/1.0", true) == 0) + Data.ProxyVersion = HttpVersion.Version10; + else { + HandleError (WebExceptionStatus.ServerProtocolViolation, null, "ReadHeaders2"); + return null; + } + + status = (int)UInt32.Parse (parts [1]); gotStatus = true; } } @@ -841,6 +849,8 @@ namespace System.Net string header = (sPoint.UsesProxy) ? "Proxy-Connection" : "Connection"; string cncHeader = (Data.Headers != null) ? Data.Headers [header] : null; bool keepAlive = (Data.Version == HttpVersion.Version11 && this.keepAlive); + if (Data.ProxyVersion != null && Data.ProxyVersion != HttpVersion.Version11) + keepAlive = false; if (cncHeader != null) { cncHeader = cncHeader.ToLower (); keepAlive = (this.keepAlive && cncHeader.IndexOf ("keep-alive", StringComparison.Ordinal) != -1); diff --git a/mcs/class/System/System.Net/WebConnectionData.cs b/mcs/class/System/System.Net/WebConnectionData.cs index 216b57f16c..77d19540be 100644 --- a/mcs/class/System/System.Net/WebConnectionData.cs +++ b/mcs/class/System/System.Net/WebConnectionData.cs @@ -39,6 +39,7 @@ namespace System.Net public string StatusDescription; public WebHeaderCollection Headers; public Version Version; + public Version ProxyVersion; public Stream stream; public string[] Challenge; ReadState _readState; diff --git a/mcs/class/System/System.Security.Cryptography.X509Certificates/X509Certificate2.cs b/mcs/class/System/System.Security.Cryptography.X509Certificates/X509Certificate2.cs index 701b4c534d..229999df71 100644 --- a/mcs/class/System/System.Security.Cryptography.X509Certificates/X509Certificate2.cs +++ b/mcs/class/System/System.Security.Cryptography.X509Certificates/X509Certificate2.cs @@ -428,7 +428,19 @@ namespace System.Security.Cryptography.X509Certificates { private MX.X509Certificate ImportPkcs12 (byte[] rawData, string password) { - MX.PKCS12 pfx = (password == null) ? new MX.PKCS12 (rawData) : new MX.PKCS12 (rawData, password); + MX.PKCS12 pfx = null; + if (string.IsNullOrEmpty (password)) { + try { + // Support both unencrypted PKCS#12.. + pfx = new MX.PKCS12 (rawData, (string)null); + } catch { + // ..and PKCS#12 encrypted with an empty password + pfx = new MX.PKCS12 (rawData, string.Empty); + } + } else { + pfx = new MX.PKCS12 (rawData, password); + } + if (pfx.Certificates.Count == 0) { // no certificate was found return null; diff --git a/mcs/class/System/System_test.dll.sources b/mcs/class/System/System_test.dll.sources index 33f8326b2d..fc7b978364 100644 --- a/mcs/class/System/System_test.dll.sources +++ b/mcs/class/System/System_test.dll.sources @@ -246,6 +246,7 @@ System.Net.Sockets/TcpClientTest.cs System.Net.Sockets/TcpListenerTest.cs System.Net.Sockets/SocketTest.cs System.Net.Sockets/SocketAsyncEventArgsTest.cs +System.Net.Sockets/SocketConnectAsyncTest.cs System.Net.Sockets/UdpClientTest.cs System.Net.Sockets/SocketAsyncTest.cs System.Net.Mail/LinkedResourceTest.cs diff --git a/mcs/class/System/Test/System.ComponentModel/BindingListTest.cs b/mcs/class/System/Test/System.ComponentModel/BindingListTest.cs index 92a6253db9..43faa5cc10 100644 --- a/mcs/class/System/Test/System.ComponentModel/BindingListTest.cs +++ b/mcs/class/System/Test/System.ComponentModel/BindingListTest.cs @@ -639,6 +639,62 @@ namespace MonoTests.System.ComponentModel Assert.AreEqual (1, count, "1"); } + + private class Person : INotifyPropertyChanged + { + private string _lastName; + private string _firstName; + + public string FirstName { + get { return _firstName; } + set { + _firstName = value; + OnPropertyChanged ("FirstName"); // string matches property name + } + } + + public string LastName { + get { return _lastName; } + set { + _lastName = value; + OnPropertyChanged ("Apepe"); // string doesn't match property name + } + } + + public event PropertyChangedEventHandler PropertyChanged; + + protected virtual void OnPropertyChanged (string propertyName = null) + { + PropertyChangedEventHandler handler = PropertyChanged; + if (handler != null) + handler (this, new PropertyChangedEventArgs (propertyName)); + } + } + + [Test] // https://bugzilla.xamarin.com/show_bug.cgi?id=20672 + public void Bug20672 () + { + string changedPropertyName = string.Empty; + bool isEventRaised = false; + bool? hasPropertyDescriptor = false; + + var persons = new BindingList(); + persons.Add (new Person() { FirstName = "Stefaan", LastName = "de Vogelaere" }); + persons.Add (new Person() { FirstName = "Christophe", LastName = "De Langhe" }); + persons.ListChanged += (object sender, ListChangedEventArgs e) => { + isEventRaised = true; + hasPropertyDescriptor = e.PropertyDescriptor != null; + }; + + //if the OnPropertyChanged string matches a valid property name, PropertyDescriptor should be generated + persons[0].FirstName = "Stefan"; + Assert.IsTrue (isEventRaised); + Assert.IsTrue ((bool) hasPropertyDescriptor, "#1"); + + //if the OnPropertyChanged string doesn't match a valid property name, no PropertyDescriptor should be generated + persons[0].LastName = "de le Vulu"; + Assert.IsFalse ((bool) hasPropertyDescriptor, "#2"); + } } } diff --git a/mcs/class/System/Test/System.Net.Sockets/SocketConnectAsyncTest.cs b/mcs/class/System/Test/System.Net.Sockets/SocketConnectAsyncTest.cs new file mode 100644 index 0000000000..99c4804801 --- /dev/null +++ b/mcs/class/System/Test/System.Net.Sockets/SocketConnectAsyncTest.cs @@ -0,0 +1,133 @@ +using System; +using System.Collections; +using System.Threading; +using System.Net; +using System.Net.Sockets; +using NUnit.Framework; + +namespace MonoTests.System.Net.Sockets +{ + [TestFixture] + public class SocketConnectAsyncTest + { + Socket serverSocket; + Socket clientSocket; + SocketAsyncEventArgs clientSocketAsyncArgs; + ManualResetEvent readyEvent; + ManualResetEvent mainEvent; + Exception error; + + [TestFixtureSetUp] + public void SetUp () + { + readyEvent = new ManualResetEvent (false); + mainEvent = new ManualResetEvent (false); + } + + [TestFixtureTearDown] + public void TearDown () + { + readyEvent.Close (); + mainEvent.Close (); + } + + void StartServer() + { + readyEvent.Reset(); + mainEvent.Reset(); + ThreadPool.QueueUserWorkItem (_ => DoWork ()); + readyEvent.WaitOne (); + } + + void StopServer() + { + if (serverSocket != null) + serverSocket.Close (); + } + + void DoWork () + { + serverSocket = new Socket ( + AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + serverSocket.Bind (new IPEndPoint (IPAddress.Loopback, 0)); + serverSocket.Listen (1); + + var async = new SocketAsyncEventArgs (); + async.Completed += (s,e) => OnAccepted (e); + + readyEvent.Set (); + + if (!serverSocket.AcceptAsync (async)) + OnAccepted (async); + } + + void OnAccepted (SocketAsyncEventArgs e) + { + var acceptSocket = e.AcceptSocket; + mainEvent.Set (); + } + + [Test] + [Category("Test")] + public void Connect () + { + StartServer(); + + EndPoint serverEndpoint = serverSocket.LocalEndPoint; + + var m = new ManualResetEvent (false); + var e = new SocketAsyncEventArgs (); + + clientSocket = new Socket ( + AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + clientSocketAsyncArgs = new SocketAsyncEventArgs(); + clientSocketAsyncArgs.RemoteEndPoint = serverEndpoint; + clientSocketAsyncArgs.Completed += (s,o) => { + if (o.SocketError != SocketError.Success) + error = new SocketException ((int)o.SocketError); + m.Set (); + }; + bool res = clientSocket.ConnectAsync(clientSocketAsyncArgs); + if (res) { + if (!m.WaitOne (1500)) + throw new TimeoutException (); + } + + if (!mainEvent.WaitOne (1500)) + throw new TimeoutException (); + if (error != null) + throw error; + + m.Reset (); + mainEvent.Reset (); + + StopServer(); + + // Try again to non-listening endpoint, expect error + + error = null; + clientSocket = new Socket ( + AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + clientSocketAsyncArgs = new SocketAsyncEventArgs (); + clientSocketAsyncArgs.RemoteEndPoint = serverEndpoint; + clientSocketAsyncArgs.Completed += (s,o) => { + if (o.SocketError != SocketError.Success) + error = new SocketException ((int)o.SocketError); + m.Set (); + }; + res = clientSocket.ConnectAsync (clientSocketAsyncArgs); + if (res) { + if (!m.WaitOne (1500)) + throw new TimeoutException (); + } + + Assert.IsTrue (error != null, "Connect - no error"); + SocketException socketException = (SocketException)error; + Assert.IsTrue(socketException.ErrorCode == (int)SocketError.ConnectionRefused); + + m.Reset (); + mainEvent.Reset (); + } + + } +} \ No newline at end of file diff --git a/mcs/class/System/Test/System.Net.Sockets/SocketTest.cs.REMOVED.git-id b/mcs/class/System/Test/System.Net.Sockets/SocketTest.cs.REMOVED.git-id index 549d3c7834..5a53138b46 100644 --- a/mcs/class/System/Test/System.Net.Sockets/SocketTest.cs.REMOVED.git-id +++ b/mcs/class/System/Test/System.Net.Sockets/SocketTest.cs.REMOVED.git-id @@ -1 +1 @@ -0ae72b4c29ac57ce57fafde17a909f16b88df913 \ No newline at end of file +b6ddbf164a5e04ef05fc2d35b59923c2f82abef6 \ No newline at end of file diff --git a/mcs/class/System/Test/System.Net.Sockets/UdpClientTest.cs b/mcs/class/System/Test/System.Net.Sockets/UdpClientTest.cs index c919391922..488518c38b 100644 --- a/mcs/class/System/Test/System.Net.Sockets/UdpClientTest.cs +++ b/mcs/class/System/Test/System.Net.Sockets/UdpClientTest.cs @@ -74,6 +74,13 @@ namespace MonoTests.System.Net.Sockets { //Assert.AreEqual (32, client.Ttl, "#A:Ttl"); #endif +#if NET_2_0 + if (!Socket.OSSupportsIPv6) +#else + if (!Socket.SupportsIPv6) +#endif + Assert.Ignore ("IPv6 not enabled."); + client = new MyUdpClient (AddressFamily.InterNetworkV6); s = client.Client; Assert.IsNotNull (s, "#B:Client"); @@ -297,6 +304,13 @@ namespace MonoTests.System.Net.Sockets { Assert.AreEqual (AddressFamily.InterNetwork, localEP.AddressFamily, "#A:Client:LocalEndPoint/AddressFamily"); } +#if NET_2_0 + if (!Socket.OSSupportsIPv6) +#else + if (!Socket.SupportsIPv6) +#endif + Assert.Ignore ("IPv6 not enabled."); + using (MyUdpClient client = new MyUdpClient (IPEndPoint.MaxPort, AddressFamily.InterNetworkV6)) { s = client.Client; @@ -656,6 +670,13 @@ namespace MonoTests.System.Net.Sockets { [Test] // JoinMulticastGroup (Int32, IPAddress) public void JoinMulticastGroup2_Socket_Closed () { +#if NET_2_0 + if (!Socket.OSSupportsIPv6) +#else + if (!Socket.SupportsIPv6) +#endif + Assert.Ignore ("IPv6 not enabled."); + IPAddress mcast_addr = null; UdpClient client = new UdpClient (new IPEndPoint (IPAddress.IPv6Any, 1234)); diff --git a/mcs/class/System/Test/System.Net/DnsTest.cs b/mcs/class/System/Test/System.Net/DnsTest.cs index 4479764065..f240f8eae4 100644 --- a/mcs/class/System/Test/System.Net/DnsTest.cs +++ b/mcs/class/System/Test/System.Net/DnsTest.cs @@ -28,8 +28,8 @@ namespace MonoTests.System.Net [TestFixture] public class DnsTest { - private String site1Name = "mono-project.com", - site1Dot = "96.126.105.110", + private String site1Name = "xamarin.com", + site1Dot = "50.19.126.231", site2Name = "info.diku.dk", site2Dot = "130.225.96.4", noneExistingSite = "unlikely.xamarin.com"; @@ -44,7 +44,7 @@ namespace MonoTests.System.Net IAsyncResult async = Dns.BeginGetHostByName (site1Name, null, null); IPHostEntry entry = Dns.EndGetHostByName (async); SubTestValidIPHostEntry (entry); - Assert.IsTrue (entry.HostName == "www.mono-project.com" || entry.HostName == "mono-project.com"); + Assert.IsTrue (entry.HostName == "www.xamarin.com" || entry.HostName == "xamarin.com"); } void GetHostByNameCallback (IAsyncResult ar) @@ -191,7 +191,7 @@ namespace MonoTests.System.Net [Test] public void GetHostByName () { - SubTestGetHostByName ("www.mono-project.com", site1Dot); + SubTestGetHostByName ("www.xamarin.com", site1Dot); SubTestGetHostByName (site2Name, site2Dot); try { var entry = Dns.GetHostByName (noneExistingSite); diff --git a/mcs/class/System/Test/System.Net/HttpListener2Test.cs b/mcs/class/System/Test/System.Net/HttpListener2Test.cs index abff4e15a9..f499921e47 100644 --- a/mcs/class/System/Test/System.Net/HttpListener2Test.cs +++ b/mcs/class/System/Test/System.Net/HttpListener2Test.cs @@ -144,7 +144,7 @@ namespace MonoTests.System.Net { Send (ns, "GET / HTTP/1.1\r\n\r\n"); // No host string response = Receive (ns, 512); ns.Close (); - Assert.IsTrue (response.StartsWith ("HTTP/1.1 400")); + StringAssert.StartsWith ("HTTP/1.1 400", response); } [Test] @@ -155,7 +155,7 @@ namespace MonoTests.System.Net { Send (ns, "GET / HTTP/1.1\r\nHost: 127.0.0.1\r\n\r\n"); // no prefix string response = Receive (ns, 512); ns.Close (); - Assert.IsTrue (response.StartsWith ("HTTP/1.1 400")); + StringAssert.StartsWith ("HTTP/1.1 400", response); } [Test] @@ -192,7 +192,7 @@ namespace MonoTests.System.Net { string response = Receive (ns, 512); ns.Close (); listener.Close (); - Assert.AreEqual (true, response.StartsWith ("HTTP/1.1 400"), String.Format ("Failed on {0}", (int) b)); + StringAssert.StartsWith ("HTTP/1.1 400", response, String.Format ("Failed on {0}", (int) b)); } } @@ -204,7 +204,7 @@ namespace MonoTests.System.Net { Send (ns, "POST /test4/ HTTP/1.1\r\nHost: 127.0.0.1\r\n\r\n"); // length required string response = Receive (ns, 512); ns.Close (); - Assert.IsTrue (response.StartsWith ("HTTP/1.1 411")); + StringAssert.StartsWith ("HTTP/1.1 411", response); } [Test] @@ -215,7 +215,7 @@ namespace MonoTests.System.Net { Send (ns, "POST / HTTP/1.1\r\nHost: 127.0.0.1\r\nTransfer-Encoding: pepe\r\n\r\n"); // not implemented string response = Receive (ns, 512); ns.Close (); - Assert.IsTrue (response.StartsWith ("HTTP/1.1 501")); + StringAssert.StartsWith ("HTTP/1.1 501", response); } [Test] @@ -227,7 +227,7 @@ namespace MonoTests.System.Net { Send (ns, "POST /test6/ HTTP/1.1\r\nHost: 127.0.0.1\r\nTransfer-Encoding: identity\r\n\r\n"); string response = Receive (ns, 512); ns.Close (); - Assert.IsTrue (response.StartsWith ("HTTP/1.1 501")); + StringAssert.StartsWith ("HTTP/1.1 501", response); } [Test] @@ -241,8 +241,8 @@ namespace MonoTests.System.Net { ctx.Response.Close (); string response = Receive (ns, 1024); ns.Close (); - Assert.IsTrue (response.StartsWith ("HTTP/1.1 200")); - Assert.IsTrue (-1 != response.IndexOf ("Transfer-Encoding: chunked")); + StringAssert.StartsWith ("HTTP/1.1 200", response); + StringAssert.Contains ("Transfer-Encoding: chunked", response); } [Test] @@ -257,7 +257,7 @@ namespace MonoTests.System.Net { ctx.Response.Close (); string response = Receive (ns, 512); ns.Close (); - Assert.IsTrue (response.StartsWith ("HTTP/1.1 200")); + StringAssert.StartsWith ("HTTP/1.1 200", response); Assert.IsTrue (-1 == response.IndexOf ("Transfer-Encoding: chunked")); } @@ -272,7 +272,7 @@ namespace MonoTests.System.Net { string response = ReceiveWithTimeout (ns, 512, 1000, out timeout); ns.Close (); Assert.IsFalse (timeout); - Assert.IsTrue (response.StartsWith ("HTTP/1.1 411")); + StringAssert.StartsWith ("HTTP/1.1 411", response); } [Test] @@ -287,7 +287,7 @@ namespace MonoTests.System.Net { string response = ReceiveWithTimeout (ns, 512, 1000, out timeout); ns.Close (); Assert.IsFalse (timeout); - Assert.IsTrue (response.StartsWith ("HTTP/1.1 411")); + StringAssert.StartsWith ("HTTP/1.1 411", response); } [Test] @@ -300,7 +300,7 @@ namespace MonoTests.System.Net { ns.GetSocket ().Shutdown (SocketShutdown.Send); string input = Receive (ns, 512); ns.Close (); - Assert.IsTrue (input.StartsWith ("HTTP/1.1 400")); + StringAssert.StartsWith ("HTTP/1.1 400", input); } [Test] @@ -313,7 +313,7 @@ namespace MonoTests.System.Net { ns.GetSocket ().Shutdown (SocketShutdown.Send); string input = Receive (ns, 512); ns.Close (); - Assert.IsTrue (input.StartsWith ("HTTP/1.1 400")); + StringAssert.StartsWith ("HTTP/1.1 400", input); } [Test] @@ -326,7 +326,7 @@ namespace MonoTests.System.Net { ns.GetSocket ().Shutdown (SocketShutdown.Send); string input = Receive (ns, 512); ns.Close (); - Assert.IsTrue (input.StartsWith ("HTTP/1.1 400")); + StringAssert.StartsWith ("HTTP/1.1 400", input); } HttpListenerRequest test14_request; @@ -418,8 +418,8 @@ namespace MonoTests.System.Net { ctx.Response.Close (); string response = Receive (ns, 1024); ns.Close (); - Assert.IsTrue (response.StartsWith ("HTTP/1.1 200")); - Assert.IsTrue (-1 != response.IndexOf ("Transfer-Encoding: chunked")); + StringAssert.StartsWith ("HTTP/1.1 200", response); + StringAssert.Contains ("Transfer-Encoding: chunked", response); } [Test] @@ -723,11 +723,11 @@ namespace MonoTests.System.Net { public void ClosePort () { var h = new HttpListener (); - h.Prefixes.Add ("http://127.0.0.1:8080/"); + h.Prefixes.Add ("http://127.0.0.1:30158/"); h.Start (); h.BeginGetContext (null, null); h.Stop (); - TcpListener t = new TcpListener (IPAddress.Parse ("127.0.0.1"), 8080); + TcpListener t = new TcpListener (IPAddress.Parse ("127.0.0.1"), 30158); t.Start (); t.Stop (); } diff --git a/mcs/class/System/Test/System.Net/HttpWebRequestTest.cs.REMOVED.git-id b/mcs/class/System/Test/System.Net/HttpWebRequestTest.cs.REMOVED.git-id index 2da2b3932d..7b9d738c8a 100644 --- a/mcs/class/System/Test/System.Net/HttpWebRequestTest.cs.REMOVED.git-id +++ b/mcs/class/System/Test/System.Net/HttpWebRequestTest.cs.REMOVED.git-id @@ -1 +1 @@ -f0826d1c9902938fe975f2a12554f06926ef5876 \ No newline at end of file +ccf2484dfdddf2db7e554b5b4176c004fc9f9a94 \ No newline at end of file diff --git a/mcs/class/System/Test/System.Net/WebClientTest.cs b/mcs/class/System/Test/System.Net/WebClientTest.cs index 3505926f41..48722d4551 100644 --- a/mcs/class/System/Test/System.Net/WebClientTest.cs +++ b/mcs/class/System/Test/System.Net/WebClientTest.cs @@ -2156,5 +2156,97 @@ namespace MonoTests.System.Net // and return the same instance as WebRequest.DefaultWebProxy Assert.AreSame (wc.Proxy, WebRequest.DefaultWebProxy); } + +#if NET_4_5 + [Test] + public void UploadStringAsyncCancelEvent () + { + UploadAsyncCancelEventTest ((webClient, uri, cancelEvent) => + { + + webClient.UploadStringCompleted += (sender, args) => + { + if (args.Cancelled) + cancelEvent.Set (); + }; + + webClient.UploadStringAsync (uri, "PUT", "text"); + }); + } + + [Test] + public void UploadDataAsyncCancelEvent () + { + UploadAsyncCancelEventTest ((webClient, uri, cancelEvent) => + { + webClient.UploadDataCompleted += (sender, args) => + { + if (args.Cancelled) + cancelEvent.Set (); + }; + + webClient.UploadDataAsync (uri, "PUT", new byte[] { }); + }); + } + + [Test] + public void UploadValuesAsyncCancelEvent () + { + UploadAsyncCancelEventTest ((webClient, uri, cancelEvent) => + { + webClient.UploadValuesCompleted += (sender, args) => + { + if (args.Cancelled) + cancelEvent.Set (); + }; + + webClient.UploadValuesAsync (uri, "PUT", new NameValueCollection ()); + }); + } + + [Test] + public void UploadFileAsyncCancelEvent () + { + UploadAsyncCancelEventTest ((webClient, uri, cancelEvent) => + { + string tempFile = Path.Combine (_tempFolder, "upload.tmp"); + File.Create (tempFile).Close (); + + webClient.UploadFileCompleted += (sender, args) => + { + if (args.Cancelled) + cancelEvent.Set (); + }; + + webClient.UploadFileAsync (uri, "PUT", tempFile); + }); + } +#endif + +#if NET_4_0 + public void UploadAsyncCancelEventTest (Action uploadAction) + { + var ep = new IPEndPoint (IPAddress.Loopback, 8000); + string url = "http://" + IPAddress.Loopback + ":8000/test/"; + + using (var responder = new SocketResponder (ep, EchoRequestHandler)) + { + responder.Start (); + + var webClient = new WebClient (); + + var cancellationTokenSource = new CancellationTokenSource (); + cancellationTokenSource.Token.Register (webClient.CancelAsync); + + var cancelEvent = new ManualResetEvent (false); + + uploadAction.Invoke (webClient, new Uri (url), cancelEvent); + + cancellationTokenSource.Cancel (); + + Assert.IsTrue (cancelEvent.WaitOne (1000)); + } + } +#endif } } diff --git a/mcs/class/System/Test/System.Security.Cryptography.X509Certificates/X509Certificate2Test.cs.REMOVED.git-id b/mcs/class/System/Test/System.Security.Cryptography.X509Certificates/X509Certificate2Test.cs.REMOVED.git-id index b594e40af3..dffde551e6 100644 --- a/mcs/class/System/Test/System.Security.Cryptography.X509Certificates/X509Certificate2Test.cs.REMOVED.git-id +++ b/mcs/class/System/Test/System.Security.Cryptography.X509Certificates/X509Certificate2Test.cs.REMOVED.git-id @@ -1 +1 @@ -19a7c19f82126a787143c28fdb89daf1b66116bb \ No newline at end of file +9fceaca05cac364bf580c8b503efd8b7f5465e22 \ No newline at end of file diff --git a/mcs/class/WindowsBase/System.IO.Packaging/PackagePart.cs b/mcs/class/WindowsBase/System.IO.Packaging/PackagePart.cs index 8e02384f58..d6586ab4d5 100644 --- a/mcs/class/WindowsBase/System.IO.Packaging/PackagePart.cs +++ b/mcs/class/WindowsBase/System.IO.Packaging/PackagePart.cs @@ -165,7 +165,7 @@ namespace System.IO.Packaging { if (node.Attributes["TargetMode"] != null) mode = (TargetMode) Enum.Parse (typeof(TargetMode), node.Attributes ["TargetMode"].Value); - CreateRelationship (new Uri (node.Attributes["Target"].Value.ToString(), UriKind.Relative), + CreateRelationship (new Uri (node.Attributes["Target"].Value.ToString(), UriKind.RelativeOrAbsolute), mode, node.Attributes["Type"].Value.ToString (), node.Attributes["Id"].Value.ToString (), diff --git a/mcs/class/WindowsBase/System.IO.Packaging/PackagePropertiesPart.cs b/mcs/class/WindowsBase/System.IO.Packaging/PackagePropertiesPart.cs index a0f2aa6766..b9184aac05 100644 --- a/mcs/class/WindowsBase/System.IO.Packaging/PackagePropertiesPart.cs +++ b/mcs/class/WindowsBase/System.IO.Packaging/PackagePropertiesPart.cs @@ -257,7 +257,14 @@ namespace System.IO.Packaging if (ContentType != null) coreProperties.AppendChild (doc.CreateNode (XmlNodeType.Element, "contentType", NSPackageProperties)).InnerXml = ContentType; if (Created.HasValue) - coreProperties.AppendChild (doc.CreateNode (XmlNodeType.Element, "dcterms", "created", NSDcTerms)).InnerXml = Created.Value.ToString (); + { + XmlAttribute att = doc.CreateAttribute ("xsi", "type", NSXsi); + att.Value = "dcterms:W3CDTF"; + + XmlNode created = coreProperties.AppendChild (doc.CreateNode (XmlNodeType.Element, "dcterms", "created", NSDcTerms)); + created.Attributes.Append (att); + created.InnerXml = Created.Value.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss") + "Z"; + } if (Creator != null) coreProperties.AppendChild (doc.CreateNode (XmlNodeType.Element, "dc", "creator", NSDc)).InnerXml = Creator; if (Description != null) @@ -271,7 +278,11 @@ namespace System.IO.Packaging if (LastModifiedBy != null) coreProperties.AppendChild (doc.CreateNode (XmlNodeType.Element, "lastModifiedBy", NSPackageProperties)).InnerXml = LastModifiedBy; if (LastPrinted.HasValue) - coreProperties.AppendChild (doc.CreateNode (XmlNodeType.Element, "lastPrinted", NSPackageProperties)).InnerXml = LastPrinted.Value.ToString (); + { + XmlNode lastPrinted = coreProperties.AppendChild (doc.CreateNode (XmlNodeType.Element, "lastPrinted", NSPackageProperties)); + + lastPrinted.InnerXml = LastPrinted.Value.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss") + "Z"; + } if (Revision != null) coreProperties.AppendChild (doc.CreateNode (XmlNodeType.Element, "revision", NSPackageProperties)).InnerXml = Revision; if (Subject != null) @@ -288,7 +299,7 @@ namespace System.IO.Packaging XmlNode modified = coreProperties.AppendChild (doc.CreateNode (XmlNodeType.Element, "dcterms", "modified", NSDcTerms)); modified.Attributes.Append (att); - modified.InnerXml = Modified.Value.ToString (); + modified.InnerXml = Modified.Value.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss") + "Z"; } doc.WriteContentTo (writer); diff --git a/mcs/class/corlib/Makefile b/mcs/class/corlib/Makefile index e716ed1a06..f3126697a0 100644 --- a/mcs/class/corlib/Makefile +++ b/mcs/class/corlib/Makefile @@ -134,7 +134,7 @@ $(vtsdir)/$(PROFILE)_TestLib/%/Address.dll: $(vtsdir)/VersionTolerantSerializati @mkdir -p $(dir $@) $(CSCOMPILE) -target:library -r:$(corlib) -warn:0 -out:$@ $^ -$(vtsdir)/$(PROFILE)_TestLib/BinarySerializationOverVersions.exe: $(vtsdir)/BinarySerializationOverVersions.cs $(vtsdir)/$(PROFILE)_TestLib/1.0/Address.dll +$(vtsdir)/$(PROFILE)_TestLib/BinarySerializationOverVersions.exe: $(vtsdir)/BinarySerializationOverVersions.cs $(vtsdir)/$(PROFILE)_TestLib/1.0/Address.dll $(test_nunit_dep) $(CSCOMPILE) $(test_nunit_ref) -warn:0 -r:$(corlib) \ -r:$(vtsdir)/$(PROFILE)_TestLib/1.0/Address.dll \ $(vtsdir)/BinarySerializationOverVersions.cs -out:$@ diff --git a/mcs/class/corlib/System.Collections.Concurrent/ConcurrentDictionary.cs b/mcs/class/corlib/System.Collections.Concurrent/ConcurrentDictionary.cs index e5a26ce28d..8098cdbc58 100644 --- a/mcs/class/corlib/System.Collections.Concurrent/ConcurrentDictionary.cs +++ b/mcs/class/corlib/System.Collections.Concurrent/ConcurrentDictionary.cs @@ -262,7 +262,11 @@ namespace System.Collections.Concurrent bool ICollection>.Contains (KeyValuePair pair) { - return ContainsKey (pair.Key); + TValue value; + if (!TryGetValue (pair.Key, out value)) + return false; + + return EqualityComparer.Default.Equals (value, pair.Value); } public KeyValuePair[] ToArray () diff --git a/mcs/class/corlib/System.Collections.Concurrent/ConcurrentQueue.cs b/mcs/class/corlib/System.Collections.Concurrent/ConcurrentQueue.cs index d19cc4cec7..ea8984394b 100644 --- a/mcs/class/corlib/System.Collections.Concurrent/ConcurrentQueue.cs +++ b/mcs/class/corlib/System.Collections.Concurrent/ConcurrentQueue.cs @@ -97,12 +97,13 @@ namespace System.Collections.Concurrent public bool TryDequeue (out T result) { result = default (T); + Node oldNext = null; bool advanced = false; while (!advanced) { Node oldHead = head; Node oldTail = tail; - Node oldNext = oldHead.Next; + oldNext = oldHead.Next; if (oldHead == head) { // Empty case ? @@ -122,6 +123,8 @@ namespace System.Collections.Concurrent } } + oldNext.Value = default (T); + Interlocked.Decrement (ref count); return true; @@ -129,14 +132,24 @@ namespace System.Collections.Concurrent public bool TryPeek (out T result) { - Node first = head.Next; + result = default (T); + bool update = true; + + while (update) + { + Node oldHead = head; + Node oldNext = oldHead.Next; - if (first == null) { - result = default (T); - return false; + if (oldNext == null) { + result = default (T); + return false; + } + + result = oldNext.Value; + + //check if head has been updated + update = head != oldHead; } - - result = first.Value; return true; } diff --git a/mcs/class/corlib/System.Collections.Generic/Dictionary.cs b/mcs/class/corlib/System.Collections.Generic/Dictionary.cs index 74ee14d9a5..9fcc747562 100644 --- a/mcs/class/corlib/System.Collections.Generic/Dictionary.cs +++ b/mcs/class/corlib/System.Collections.Generic/Dictionary.cs @@ -79,7 +79,7 @@ namespace System.Collections.Generic { // to be ORed with HASH_FLAG before comparing it with the save hashcode. // "touchedSlots" and "emptySlot" manage the free space in the heap - const int INITIAL_SIZE = 10; + const int INITIAL_SIZE = 4; const float DEFAULT_LOAD_FACTOR = (90f / 100); const int NO_SLOT = -1; const int HASH_FLAG = -2147483648; @@ -233,22 +233,25 @@ namespace System.Collections.Generic { } public Dictionary (int capacity) + : this (capacity, null) { - Init (capacity, null); } public Dictionary (IDictionary dictionary, IEqualityComparer comparer) { if (dictionary == null) throw new ArgumentNullException ("dictionary"); - int capacity = dictionary.Count; - Init (capacity, comparer); + + Init (dictionary.Count, comparer); foreach (KeyValuePair entry in dictionary) this.Add (entry.Key, entry.Value); } public Dictionary (int capacity, IEqualityComparer comparer) { + if (capacity < 0) + throw new ArgumentOutOfRangeException ("capacity"); + Init (capacity, comparer); } @@ -257,22 +260,16 @@ namespace System.Collections.Generic { serialization_info = info; } - private void Init (int capacity, IEqualityComparer hcp) + void Init (int capacity, IEqualityComparer hcp) { - if (capacity < 0) - throw new ArgumentOutOfRangeException ("capacity"); - this.hcp = (hcp != null) ? hcp : EqualityComparer.Default; - if (capacity == 0) - capacity = INITIAL_SIZE; + this.hcp = hcp ?? EqualityComparer.Default; - /* Modify capacity so 'capacity' elements can be added without resizing */ - capacity = (int)(capacity / DEFAULT_LOAD_FACTOR) + 1; - + capacity = Math.Max (1, (int)(capacity / DEFAULT_LOAD_FACTOR)); InitArrays (capacity); - generation = 0; } - private void InitArrays (int size) { + void InitArrays (int size) + { table = new int [size]; linkSlots = new Link [size]; @@ -456,6 +453,9 @@ namespace System.Collections.Generic { public void Clear () { + if (count == 0) + return; + count = 0; // clear the hash table Array.Clear (table, 0, table.Length); diff --git a/mcs/class/corlib/System.IO/FileInfo.cs b/mcs/class/corlib/System.IO/FileInfo.cs index 0911f8152c..cad54a4d55 100644 --- a/mcs/class/corlib/System.IO/FileInfo.cs +++ b/mcs/class/corlib/System.IO/FileInfo.cs @@ -37,7 +37,7 @@ using System.Runtime.InteropServices; using System.Runtime.Serialization; using System.Security; -#if !NET_2_1 +#if !MOBILE using System.Security.AccessControl; #endif @@ -93,7 +93,6 @@ namespace System.IO { } } -#if !NET_2_1 public bool IsReadOnly { get { if (!Exists) @@ -138,7 +137,6 @@ namespace System.IO { // handling this exception to work properly. throw new NotSupportedException (Locale.GetText ("File encryption isn't supported on any file system.")); } -#endif public long Length { get { @@ -265,15 +263,10 @@ namespace System.IO { public override string ToString () { -#if NET_2_1 - // for Moonlight we *never* return paths, since ToString is not [SecurityCritical] we simply return the Name - return Name; -#else return OriginalPath; -#endif } -#if !NET_2_1 +#if !MOBILE public FileSecurity GetAccessControl () { return File.GetAccessControl (FullPath); diff --git a/mcs/class/corlib/System.Reflection.Emit/TypeBuilder.cs b/mcs/class/corlib/System.Reflection.Emit/TypeBuilder.cs index 578a7ab057..64b5bf4bde 100644 --- a/mcs/class/corlib/System.Reflection.Emit/TypeBuilder.cs +++ b/mcs/class/corlib/System.Reflection.Emit/TypeBuilder.cs @@ -44,19 +44,17 @@ using System.Security; using System.Security.Permissions; using System.Diagnostics.SymbolStore; +#if !NET_4_5 +using TypeInfo = System.Type; +#endif + namespace System.Reflection.Emit { [ComVisible (true)] [ComDefaultInterface (typeof (_TypeBuilder))] [ClassInterface (ClassInterfaceType.None)] [StructLayout (LayoutKind.Sequential)] - public sealed class TypeBuilder : -#if NET_4_5 - TypeInfo -#else - Type -#endif - , _TypeBuilder + public sealed class TypeBuilder : TypeInfo, _TypeBuilder { #pragma warning disable 169 #region Sync with reflection.h @@ -82,7 +80,7 @@ namespace System.Reflection.Emit private IntPtr generic_container; private GenericTypeParameterBuilder[] generic_params; private RefEmitPermissionSet[] permissions; - private Type created; + private TypeInfo created; #endregion #pragma warning restore 169 @@ -727,7 +725,7 @@ namespace System.Reflection.Emit } [MethodImplAttribute(MethodImplOptions.InternalCall)] - private extern Type create_runtime_class (TypeBuilder tb); + private extern TypeInfo create_runtime_class (TypeBuilder tb); private bool is_nested_in (Type t) { @@ -753,8 +751,16 @@ namespace System.Reflection.Emit return false; } + + public Type CreateType () + { + return CreateTypeInfo (); + } - public Type CreateType() +#if NET_4_5 + public +#endif + TypeInfo CreateTypeInfo () { /* handle nesting_type */ if (createTypeCalled) diff --git a/mcs/class/corlib/System.Security.Claims/ClaimTypes.cs b/mcs/class/corlib/System.Security.Claims/ClaimTypes.cs index ca849bd6ad..e1fa6e36ec 100644 --- a/mcs/class/corlib/System.Security.Claims/ClaimTypes.cs +++ b/mcs/class/corlib/System.Security.Claims/ClaimTypes.cs @@ -32,30 +32,58 @@ namespace System.Security.Claims { public static class ClaimTypes { + public const string Actor = "http://schemas.xmlsoap.org/ws/2009/09/identity/claims/actor"; + public const string Anonymous = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/anonymous"; public const string Authentication = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/authentication"; + public const string AuthenticationInstant = "http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationinstant"; + + public const string AuthenticationMethod = "http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod"; + public const string AuthorizationDecision = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/authorizationdecision"; + public const string ClaimsType2005Namespace = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims"; + + public const string ClaimsType2009Namespace = "http://schemas.xmlsoap.org/ws/2009/09/identity/claims"; + + public const string ClaimsTypeNamespace = "http://schemas.microsoft.com/ws/2008/06/identity/claims"; + + public const string CookiePath = "http://schemas.microsoft.com/ws/2008/06/identity/claims/cookiepath"; + public const string Country = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/country"; public const string DateOfBirth = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/dateofbirth"; + public const string DenyOnlyPrimaryGroup = "http://schemas.microsoft.com/ws/2008/06/identity/claims/denyonlyprimarygroup"; + + public const string DenyOnlyPrimarySid = "http://schemas.microsoft.com/ws/2008/06/identity/claims/denyonlyprimarysid"; + public const string DenyOnlySid = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/denyonlysid"; public const string Dns = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/dns"; - public const string Email = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"; + public const string Dsa = "http://schemas.microsoft.com/ws/2008/06/identity/claims/dsa"; + + public const string Email = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/email"; + + public const string Expiration = "http://schemas.microsoft.com/ws/2008/06/identity/claims/expiration"; + + public const string Expired = "http://schemas.microsoft.com/ws/2008/06/identity/claims/expired"; public const string Gender = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/gender"; public const string GivenName = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname"; + public const string GroupSid = "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid"; + public const string Hash = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/hash"; public const string HomePhone = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/homephone"; + public const string IsPersistent = "http://schemas.microsoft.com/ws/2008/06/identity/claims/ispersistent"; + public const string Locality = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/locality"; public const string MobilePhone = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/mobilephone"; @@ -70,8 +98,16 @@ namespace System.Security.Claims public const string PPID = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/privatepersonalidentifier"; + public const string PrimaryGroupSid = "http://schemas.microsoft.com/ws/2008/06/identity/claims/primarygroupsid"; + + public const string PrimarySid = "http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid"; + + public const string Role = "http://schemas.microsoft.com/ws/2008/06/identity/claims/role"; + public const string Rsa = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/rsa"; + public const string SerialNumber = "http://schemas.microsoft.com/ws/2008/06/identity/claims/serialnumber"; + public const string Sid = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/sid"; public const string Spn = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/spn"; @@ -90,9 +126,15 @@ namespace System.Security.Claims public const string Uri = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/uri"; + public const string UserData = "http://schemas.microsoft.com/ws/2008/06/identity/claims/userdata"; + + public const string Version = "http://schemas.microsoft.com/ws/2008/06/identity/claims/version"; + public const string Webpage = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/webpage"; + public const string WindowsAccountName = "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"; + public const string X500DistinguishedName = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/x500distinguishedname"; } } -#endif \ No newline at end of file +#endif diff --git a/mcs/class/corlib/System.Security.Claims/ClaimsIdentity.cs b/mcs/class/corlib/System.Security.Claims/ClaimsIdentity.cs index 852e4f4008..24066a1da8 100644 --- a/mcs/class/corlib/System.Security.Claims/ClaimsIdentity.cs +++ b/mcs/class/corlib/System.Security.Claims/ClaimsIdentity.cs @@ -49,6 +49,10 @@ namespace System.Security.Claims { : this (claims: null, authenticationType: null, nameType: null, roleType: null) { } + public ClaimsIdentity(IEnumerable claims) + : this (claims: claims, authenticationType: null, nameType: null, roleType: null) + { } + public ClaimsIdentity (string authenticationType) : this (claims: null, authenticationType: authenticationType, nameType: null, roleType: null) { } @@ -97,13 +101,16 @@ namespace System.Security.Claims { foreach (var c in ci.Claims) this.claims.Add (c); - foreach (var c in claims) - this.claims.Add (c); Label = ci.Label; NameClaimType = ci.NameClaimType; RoleClaimType = ci.RoleClaimType; auth_type = ci.AuthenticationType; } + + if (claims != null) { + foreach (var c in claims) + this.claims.Add (c); + } } [MonoTODO] @@ -264,4 +271,4 @@ namespace System.Security.Claims { } } } -#endif \ No newline at end of file +#endif diff --git a/mcs/class/corlib/System.Security.Claims/ClaimsPrincipal.cs b/mcs/class/corlib/System.Security.Claims/ClaimsPrincipal.cs index d3827b8d1a..cf1fe29e9d 100644 --- a/mcs/class/corlib/System.Security.Claims/ClaimsPrincipal.cs +++ b/mcs/class/corlib/System.Security.Claims/ClaimsPrincipal.cs @@ -59,14 +59,16 @@ namespace System.Security.Claims { if (identities == null) throw new ArgumentNullException ("identities"); - identities = new List (identities); + this.identities = new List (identities); } public ClaimsPrincipal (IIdentity identity) { if (identity == null) throw new ArgumentNullException ("identity"); - // TODO + + identities = new List (); + identities.Add (new ClaimsIdentity (identity)); } public ClaimsPrincipal (IPrincipal principal) @@ -187,4 +189,4 @@ namespace System.Security.Claims { } } -#endif \ No newline at end of file +#endif diff --git a/mcs/class/corlib/System.Security.Cryptography/CryptographicException.cs b/mcs/class/corlib/System.Security.Cryptography/CryptographicException.cs index 3fe5c6aaae..0e5339969a 100644 --- a/mcs/class/corlib/System.Security.Cryptography/CryptographicException.cs +++ b/mcs/class/corlib/System.Security.Cryptography/CryptographicException.cs @@ -38,7 +38,7 @@ namespace System.Security.Cryptography { [ComVisible (true)] public class CryptographicException : SystemException, _Exception { public CryptographicException () - : base (Locale.GetText ("Error occured during a cryptographic operation.")) + : base (Locale.GetText ("Error occurred during a cryptographic operation.")) { // default to CORSEC_E_CRYPTO // defined as EMAKEHR(0x1430) in CorError.h diff --git a/mcs/class/corlib/System.Security.Cryptography/CryptographicUnexpectedOperationExcpetion.cs b/mcs/class/corlib/System.Security.Cryptography/CryptographicUnexpectedOperationExcpetion.cs index 7720e8e851..3f5d52e92a 100644 --- a/mcs/class/corlib/System.Security.Cryptography/CryptographicUnexpectedOperationExcpetion.cs +++ b/mcs/class/corlib/System.Security.Cryptography/CryptographicUnexpectedOperationExcpetion.cs @@ -38,7 +38,7 @@ namespace System.Security.Cryptography { public class CryptographicUnexpectedOperationException : CryptographicException { public CryptographicUnexpectedOperationException () - : base (Locale.GetText ("Unexpected error occured during a cryptographic operation.")) + : base (Locale.GetText ("Unexpected error occurred during a cryptographic operation.")) { // Default to CORSEC_E_CRYPTO_UNEX_OPER (CorError.h) HResult = unchecked ((int)0x80131431); diff --git a/mcs/class/corlib/System.Text/DecoderReplacementFallbackBuffer.cs b/mcs/class/corlib/System.Text/DecoderReplacementFallbackBuffer.cs index 38eff7631f..3ecf21bc4f 100644 --- a/mcs/class/corlib/System.Text/DecoderReplacementFallbackBuffer.cs +++ b/mcs/class/corlib/System.Text/DecoderReplacementFallbackBuffer.cs @@ -60,7 +60,7 @@ namespace System.Text if (bytesUnknown == null) throw new ArgumentNullException ("bytesUnknown"); if (fallback_assigned && Remaining != 0) - throw new ArgumentException ("Reentrant Fallback method invocation occured. It might be because either this FallbackBuffer is incorrectly shared by multiple threads, invoked inside Encoding recursively, or Reset invocation is forgotten."); + throw new ArgumentException ("Reentrant Fallback method invocation occurred. It might be because either this FallbackBuffer is incorrectly shared by multiple threads, invoked inside Encoding recursively, or Reset invocation is forgotten."); if (index < 0 || bytesUnknown.Length < index) throw new ArgumentOutOfRangeException ("index"); fallback_assigned = true; diff --git a/mcs/class/corlib/System.Text/EncoderReplacementFallbackBuffer.cs b/mcs/class/corlib/System.Text/EncoderReplacementFallbackBuffer.cs index 7bf94251ac..736537e68d 100644 --- a/mcs/class/corlib/System.Text/EncoderReplacementFallbackBuffer.cs +++ b/mcs/class/corlib/System.Text/EncoderReplacementFallbackBuffer.cs @@ -69,7 +69,7 @@ namespace System.Text private bool Fallback (int index) { if (fallback_assigned && Remaining != 0) - throw new ArgumentException ("Reentrant Fallback method invocation occured. It might be because either this FallbackBuffer is incorrectly shared by multiple threads, invoked inside Encoding recursively, or Reset invocation is forgotten."); + throw new ArgumentException ("Reentrant Fallback method invocation occurred. It might be because either this FallbackBuffer is incorrectly shared by multiple threads, invoked inside Encoding recursively, or Reset invocation is forgotten."); if (index < 0) throw new ArgumentOutOfRangeException ("index"); fallback_assigned = true; diff --git a/mcs/class/corlib/System.Threading/CancellationTokenRegistration.cs b/mcs/class/corlib/System.Threading/CancellationTokenRegistration.cs index 1c352ff7d3..54fe237c79 100644 --- a/mcs/class/corlib/System.Threading/CancellationTokenRegistration.cs +++ b/mcs/class/corlib/System.Threading/CancellationTokenRegistration.cs @@ -26,14 +26,13 @@ #if NET_4_0 using System; -using System.Threading; namespace System.Threading { public struct CancellationTokenRegistration: IDisposable, IEquatable { - int id; - CancellationTokenSource source; + readonly int id; + readonly CancellationTokenSource source; internal CancellationTokenRegistration (int id, CancellationTokenSource source) { @@ -52,7 +51,7 @@ namespace System.Threading #region IEquatable implementation public bool Equals (CancellationTokenRegistration other) { - return this.id == other.id && this.source == other.source; + return id == other.id && source == other.source; } public static bool operator== (CancellationTokenRegistration left, CancellationTokenRegistration right) @@ -73,7 +72,7 @@ namespace System.Threading public override bool Equals (object obj) { - return (obj is CancellationTokenRegistration) ? Equals ((CancellationTokenRegistration)obj) : false; + return (obj is CancellationTokenRegistration) && Equals ((CancellationTokenRegistration)obj); } } } diff --git a/mcs/class/corlib/System/AggregateException.cs b/mcs/class/corlib/System/AggregateException.cs index 067cd64d6f..769ba549db 100644 --- a/mcs/class/corlib/System/AggregateException.cs +++ b/mcs/class/corlib/System/AggregateException.cs @@ -40,7 +40,7 @@ namespace System public class AggregateException : Exception { List innerExceptions = new List (); - const string defaultMessage = "One or more errors occured"; + const string defaultMessage = "One or more errors occurred"; public AggregateException () : base (defaultMessage) { @@ -63,7 +63,7 @@ namespace System } public AggregateException (params Exception[] innerExceptions) - : this (string.Empty, innerExceptions) + : this (defaultMessage, innerExceptions) { } diff --git a/mcs/class/corlib/System/AndroidPlatform.cs b/mcs/class/corlib/System/AndroidPlatform.cs index 5a2483dcc3..75e3d6a855 100644 --- a/mcs/class/corlib/System/AndroidPlatform.cs +++ b/mcs/class/corlib/System/AndroidPlatform.cs @@ -27,6 +27,7 @@ // #if MONODROID +using System.Reflection; using System.Threading; namespace System { @@ -35,20 +36,26 @@ namespace System { static readonly Func getDefaultSyncContext; static readonly Func getDefaultTimeZone; + static readonly Func getCurrentSystemTimeZone; static AndroidPlatform () { + Type androidRuntime = Type.GetType ("Android.Runtime.AndroidEnvironment, Mono.Android", true); + getDefaultSyncContext = (Func) Delegate.CreateDelegate (typeof(Func), - Type.GetType ("Android.Runtime.AndroidEnvironment, Mono.Android", true) - .GetMethod ("GetDefaultSyncContext", + androidRuntime.GetMethod ("GetDefaultSyncContext", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic)); getDefaultTimeZone = (Func) Delegate.CreateDelegate (typeof(Func), - Type.GetType ("Android.Runtime.AndroidEnvironment, Mono.Android", true) - .GetMethod ("GetDefaultTimeZone", + androidRuntime.GetMethod ("GetDefaultTimeZone", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic)); + + MethodInfo mi = androidRuntime.GetMethod ("GetCurrentSystemTimeZone", + System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic); + if (mi != null) + getCurrentSystemTimeZone = (Func) Delegate.CreateDelegate (typeof(Func), mi); } internal static SynchronizationContext GetDefaultSyncContext () @@ -60,6 +67,13 @@ namespace System { { return getDefaultTimeZone (); } + + internal static TimeZone GetCurrentSystemTimeZone () + { + if (getCurrentSystemTimeZone == null) + return null; + return getCurrentSystemTimeZone (); + } } } #endif diff --git a/mcs/class/corlib/System/Array.cs b/mcs/class/corlib/System/Array.cs index b3272b16a9..519b8d1a09 100644 --- a/mcs/class/corlib/System/Array.cs +++ b/mcs/class/corlib/System/Array.cs @@ -1480,9 +1480,9 @@ namespace System return false; } - private static void qsort (Array keys, Array items, int low0, int high0, IComparer comparer) + unsafe static void qsort (Array keys, Array items, int low0, int high0, IComparer comparer) { - QSortStack[] stack = new QSortStack[32]; + QSortStack* stack = stackalloc QSortStack [32]; const int QSORT_THRESHOLD = 7; int high, low, mid, i, k; object key, hi, lo; @@ -1934,9 +1934,9 @@ namespace System return false; } - private static void qsort (T[] keys, U[] items, int low0, int high0) where T : IComparable + unsafe static void qsort (T[] keys, U[] items, int low0, int high0) where T : IComparable { - QSortStack[] stack = new QSortStack[32]; + QSortStack* stack = stackalloc QSortStack [32]; const int QSORT_THRESHOLD = 7; int high, low, mid, i, k; int sp = 1; @@ -2043,9 +2043,9 @@ namespace System } // Specialized version for items==null - private static void qsort (T[] keys, int low0, int high0) where T : IComparable + unsafe static void qsort (T[] keys, int low0, int high0) where T : IComparable { - QSortStack[] stack = new QSortStack[32]; + QSortStack* stack = stackalloc QSortStack [32]; const int QSORT_THRESHOLD = 7; int high, low, mid, i, k; int sp = 1; @@ -2232,9 +2232,9 @@ namespace System return false; } - private static void qsort (K [] keys, V [] items, int low0, int high0, IComparer comparer) + unsafe static void qsort (K [] keys, V [] items, int low0, int high0, IComparer comparer) { - QSortStack[] stack = new QSortStack[32]; + QSortStack* stack = stackalloc QSortStack [32]; const int QSORT_THRESHOLD = 7; int high, low, mid, i, k; IComparable gcmp; @@ -2378,9 +2378,9 @@ namespace System } // Specialized version for items==null - private static void qsort (K [] keys, int low0, int high0, IComparer comparer) + unsafe static void qsort (K [] keys, int low0, int high0, IComparer comparer) { - QSortStack[] stack = new QSortStack[32]; + QSortStack* stack = stackalloc QSortStack [32]; const int QSORT_THRESHOLD = 7; int high, low, mid, i, k; IComparable gcmp; @@ -2535,9 +2535,9 @@ namespace System return false; } - private static void qsort (T [] array, int low0, int high0, Comparison compare) + unsafe static void qsort (T [] array, int low0, int high0, Comparison compare) { - QSortStack[] stack = new QSortStack[32]; + QSortStack* stack = stackalloc QSortStack [32]; const int QSORT_THRESHOLD = 7; int high, low, mid, i, k; int sp = 1; diff --git a/mcs/class/corlib/System/DateTime.cs b/mcs/class/corlib/System/DateTime.cs index c3da055efc..30bc6f8edf 100644 --- a/mcs/class/corlib/System/DateTime.cs +++ b/mcs/class/corlib/System/DateTime.cs @@ -214,6 +214,10 @@ namespace System "yyyy/MMMM", }; + private static readonly string[] ExoticAndNonStandardFormats = new string[] { + "ddMMMyyyy" + }; + private enum Which { Day, @@ -927,6 +931,9 @@ namespace System if (ParseExact (s, dfi.GetAllDateTimePatternsInternal (), dfi, styles, out result, false, ref longYear, setExceptionOnError, ref exception)) return true; + if (ParseExact (s, ExoticAndNonStandardFormats, dfi, styles, out result, false, ref longYear, setExceptionOnError, ref exception)) + return true; + if (!setExceptionOnError) return false; diff --git a/mcs/class/corlib/System/Delegate.cs b/mcs/class/corlib/System/Delegate.cs index 507153c421..8b9ade4dd4 100644 --- a/mcs/class/corlib/System/Delegate.cs +++ b/mcs/class/corlib/System/Delegate.cs @@ -5,12 +5,11 @@ // Miguel de Icaza (miguel@ximian.com) // Daniel Stodden (stodden@in.tum.de) // Dietmar Maurer (dietmar@ximian.com) +// Marek Safar (marek.safar@gmail.com) // // (C) Ximian, Inc. http://www.ximian.com -// - -// // Copyright (C) 2004 Novell, Inc (http://www.novell.com) +// Copyright 2014 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 @@ -41,9 +40,11 @@ using System.Runtime.InteropServices; namespace System { /* Contains the rarely used fields of Delegate */ - class DelegateData { + sealed class DelegateData + { public Type target_type; public string method_name; + public bool curried_first_arg; } [ClassInterface (ClassInterfaceType.AutoDual)] @@ -230,6 +231,8 @@ namespace System return null; bool argsMatch; + DelegateData delegate_data = new DelegateData (); + if (target != null) { if (!method.IsStatic) { argsMatch = arg_type_match_this (target.GetType (), method.DeclaringType, true); @@ -238,7 +241,9 @@ namespace System } else { argsMatch = arg_type_match (target.GetType (), args [0].ParameterType); for (int i = 1; i < args.Length; i++) - argsMatch &= arg_type_match (delargs [i - 1].ParameterType, args [i].ParameterType); + argsMatch &= arg_type_match (delargs [i - 1].ParameterType, args [i].ParameterType); + + delegate_data.curried_first_arg = true; } } else { if (!method.IsStatic) { @@ -259,6 +264,8 @@ namespace System argsMatch = !(args [0].ParameterType.IsValueType || args [0].ParameterType.IsByRef) && allowClosed; for (int i = 0; i < delargs.Length; i++) argsMatch &= arg_type_match (delargs [i].ParameterType, args [i + 1].ParameterType); + + delegate_data.curried_first_arg = true; } else { argsMatch = true; for (int i = 0; i < args.Length; i++) @@ -276,6 +283,8 @@ namespace System Delegate d = CreateDelegate_internal (type, target, method, throwOnBindFailure); if (d != null) d.original_method_info = method; + if (delegate_data != null) + d.data = delegate_data; return d; } @@ -398,6 +407,21 @@ namespace System return DynamicInvokeImpl (args); } + void InitializeDelegateData () + { + DelegateData delegate_data = new DelegateData (); + if (method_info.IsStatic) { + if (m_target != null) { + delegate_data.curried_first_arg = true; + } else { + MethodInfo invoke = GetType ().GetMethod ("Invoke"); + if (invoke.GetParametersCount () + 1 == method_info.GetParametersCount ()) + delegate_data.curried_first_arg = true; + } + } + this.data = delegate_data; + } + protected virtual object DynamicInvokeImpl (object[] args) { if (Method == null) { @@ -408,20 +432,34 @@ namespace System method_info = m_target.GetType ().GetMethod (data.method_name, mtypes); } - if (Method.IsStatic && (args != null ? args.Length : 0) == Method.GetParametersCount () - 1) { + var target = m_target; + if (this.data == null) + InitializeDelegateData (); + + if (Method.IsStatic) { + // // The delegate is bound to m_target - if (args != null) { - object[] newArgs = new object [args.Length + 1]; - args.CopyTo (newArgs, 1); - newArgs [0] = m_target; - args = newArgs; - } else { - args = new object [] { m_target }; + // + if (data.curried_first_arg) { + if (args == null) { + args = new [] { target }; + } else { + Array.Resize (ref args, args.Length + 1); + Array.Copy (args, 0, args, 1, args.Length - 1); + args [0] = target; + } + + target = null; + } + } else { + if (m_target == null && args != null && args.Length > 0) { + target = args [0]; + Array.Copy (args, 1, args, 0, args.Length - 1); + Array.Resize (ref args, args.Length - 1); } - return Method.Invoke (null, args); } - return Method.Invoke (m_target, args); + return Method.Invoke (target, args); } public virtual object Clone () @@ -440,8 +478,13 @@ namespace System /* Uncommon case */ if (d.data != null && data != null) return (d.data.target_type == data.target_type && d.data.method_name == data.method_name); - else + else { + if (d.data != null) + return d.data.target_type == null; + if (data != null) + return data.target_type == null; return false; + } } return true; } diff --git a/mcs/class/corlib/System/DelegateSerializationHolder.cs b/mcs/class/corlib/System/DelegateSerializationHolder.cs index c36dbc7de7..74d704422d 100644 --- a/mcs/class/corlib/System/DelegateSerializationHolder.cs +++ b/mcs/class/corlib/System/DelegateSerializationHolder.cs @@ -46,7 +46,7 @@ namespace System { string type; string assembly; - public object target; + object target; string targetTypeAssembly; string targetTypeName; string methodName; @@ -64,15 +64,18 @@ namespace System methodName = del.Method.Name; } - public Delegate DeserializeDelegate (SerializationInfo info) + public Delegate DeserializeDelegate (SerializationInfo info, int index) { object realTarget = null; if (target != null) realTarget = info.GetValue (target.ToString(), typeof(object)); + var key = "method" + index; + var method = info.HasKey (key) ? (MethodInfo)info.GetValue (key, typeof (MethodInfo)) : null; + Assembly dasm = Assembly.Load (assembly); Type dt = dasm.GetType (type); - Delegate del; + if (realTarget != null) { #if !DISABLE_REMOTING if (RemotingServices.IsTransparentProxy (realTarget)) { @@ -86,15 +89,16 @@ namespace System throw new RemotingException ("Unexpected proxy type."); } #endif - del = Delegate.CreateDelegate (dt, realTarget, methodName); - } - else { - Assembly tasm = Assembly.Load (targetTypeAssembly); - Type tt = tasm.GetType (targetTypeName); - del = Delegate.CreateDelegate (dt, tt, methodName); + return method == null ? + Delegate.CreateDelegate (dt, realTarget, methodName) : + Delegate.CreateDelegate (dt, realTarget, method); } - return del; + if (method != null) + return Delegate.CreateDelegate (dt, realTarget, method); + + Type tt2 = Assembly.Load (targetTypeAssembly).GetType (targetTypeName); + return Delegate.CreateDelegate (dt, tt2, methodName); } } @@ -112,14 +116,14 @@ namespace System // Deserializes and combines the delegates if (count == 1) - _delegate = entryChain.DeserializeDelegate (info); + _delegate = entryChain.DeserializeDelegate (info, 0); else { Delegate[] delegates = new Delegate[count]; entry = entryChain; for (int n=0; n value) - return 1; - else - return -1; + return + m_value == value ? 0 : + m_value > value ? 1 : + -1; } public bool Equals (int obj) diff --git a/mcs/class/corlib/System/TimeZone.cs b/mcs/class/corlib/System/TimeZone.cs index 43c7181f8b..cea224133e 100644 --- a/mcs/class/corlib/System/TimeZone.cs +++ b/mcs/class/corlib/System/TimeZone.cs @@ -73,7 +73,11 @@ namespace System lock (tz_lock) { if (tz == null || Math.Abs (now - timezone_check) > TimeSpan.TicksPerMinute) { - tz = new CurrentSystemTimeZone (now); +#if MONODROID + tz = AndroidPlatform.GetCurrentSystemTimeZone (); + if (tz == null) +#endif + tz = new CurrentSystemTimeZone (now); timezone_check = now; currentTimeZone = tz; diff --git a/mcs/class/corlib/Test/System.Collections.Concurrent/ConcurrentDictionaryTests.cs b/mcs/class/corlib/Test/System.Collections.Concurrent/ConcurrentDictionaryTests.cs index 698a25588f..e38c904590 100644 --- a/mcs/class/corlib/Test/System.Collections.Concurrent/ConcurrentDictionaryTests.cs +++ b/mcs/class/corlib/Test/System.Collections.Concurrent/ConcurrentDictionaryTests.cs @@ -353,6 +353,19 @@ namespace MonoTests.System.Collections.Concurrent } catch (ArgumentNullException ex) { } } + + [Test] + public void ContainsKeyPairTest () + { + var validKeyPair = new KeyValuePair ("key", "validValue"); + var wrongKeyPair = new KeyValuePair ("key", "wrongValue"); + + IDictionary dict = new ConcurrentDictionary (); + dict.Add (validKeyPair); + + Assert.IsTrue (dict.Contains (validKeyPair)); + Assert.IsFalse (dict.Contains (wrongKeyPair)); + } } } #endif diff --git a/mcs/class/corlib/Test/System.Collections.Concurrent/ConcurrentQueueTests.cs b/mcs/class/corlib/Test/System.Collections.Concurrent/ConcurrentQueueTests.cs index b0006440af..91436a05b2 100644 --- a/mcs/class/corlib/Test/System.Collections.Concurrent/ConcurrentQueueTests.cs +++ b/mcs/class/corlib/Test/System.Collections.Concurrent/ConcurrentQueueTests.cs @@ -30,6 +30,7 @@ using System.Collections.Generic; using System.Collections.Concurrent; using NUnit.Framework; +using MonoTests.System.Threading.Tasks; namespace MonoTests.System.Collections.Concurrent { @@ -115,6 +116,34 @@ namespace MonoTests.System.Collections.Concurrent CollectionStressTestHelper.RemoveStressTest (new ConcurrentQueue (), CheckOrderingType.InOrder); } + [Test] + public void StressTryPeekTestCase () + { + ParallelTestHelper.Repeat (delegate { + var queue = new ConcurrentQueue (); + queue.Enqueue (new object()); + + const int threads = 10; + int threadCounter = 0; + bool success = true; + + ParallelTestHelper.ParallelStressTest (queue, (q) => { + int threadId = Interlocked.Increment (ref threadCounter); + object temp; + if (threadId < threads) + { + while (queue.TryPeek (out temp)) + if (temp == null) + success = false; + } else { + queue.TryDequeue (out temp); + } + }, threads); + + Assert.IsTrue (success, "TryPeek returned unexpected null value."); + }, 10); + } + [Test] public void CountTestCase() { @@ -215,6 +244,30 @@ namespace MonoTests.System.Collections.Concurrent { queue.CopyTo (new int[3], 0); } + + static WeakReference CreateWeakReference (object obj) + { + return new WeakReference (obj); + } + + [Test] + // This depends on precise stack scanning + [Category ("NotWorking")] + public void TryDequeueReferenceTest () + { + var obj = new Object (); + var weakReference = CreateWeakReference(obj); + var queue = new ConcurrentQueue (); + + queue.Enqueue (obj); + queue.TryDequeue (out obj); + obj = null; + + GC.Collect (); + GC.WaitForPendingFinalizers (); + + Assert.IsFalse (weakReference.IsAlive); + } } } #endif diff --git a/mcs/class/corlib/Test/System.Reflection/MethodInfoTest.cs b/mcs/class/corlib/Test/System.Reflection/MethodInfoTest.cs index ab281cb817..eabe77e48e 100644 --- a/mcs/class/corlib/Test/System.Reflection/MethodInfoTest.cs +++ b/mcs/class/corlib/Test/System.Reflection/MethodInfoTest.cs @@ -783,6 +783,51 @@ namespace MonoTests.System.Reflection var m = GetType ().GetMethod ("Bug12856"); Assert.AreEqual ("System.Nullable`1[System.Int32] Bug12856()", m.ToString (), "#1"); } + +#if !MONOTOUCH + class GenericClass + { + public void Method () + { + T lv = default(T); + Console.WriteLine(lv); + } + + public void Method2 (T a0, K a1) + { + T var0 = a0; + K var1 = a1; + Console.WriteLine (var0); + Console.WriteLine (var1); + } + } + + [Test] + public void TestLocalVariableTypes () + { + var typeofT = typeof (GenericClass<>).GetGenericArguments () [0]; + var typeofK = typeof (GenericClass<>).GetMethod ("Method2").GetGenericArguments () [0]; + + var type = typeof (GenericClass<>).GetMethod("Method").GetMethodBody().LocalVariables[0].LocalType; + Assert.AreEqual (typeofT, type); + Assert.AreEqual (typeof (GenericClass<>), type.DeclaringType); + + type = typeof (GenericClass<>).GetMethod("Method2").GetMethodBody().LocalVariables[0].LocalType; + Assert.AreEqual (typeofT, type); + Assert.AreEqual (typeof (GenericClass<>), type.DeclaringType); + + type = typeof (GenericClass<>).GetMethod("Method2").GetMethodBody().LocalVariables[1].LocalType; + Assert.AreEqual (typeofK, type); + Assert.AreEqual (typeof (GenericClass<>), type.DeclaringType); + + type = typeof (GenericClass).GetMethod("Method2").GetMethodBody().LocalVariables[0].LocalType; + Assert.AreEqual (typeof (int), type); + + type = typeof (GenericClass).GetMethod("Method2").GetMethodBody().LocalVariables[1].LocalType; + Assert.AreEqual (typeofK, type); + Assert.AreEqual (typeof (GenericClass<>), type.DeclaringType); + } +#endif } #if NET_2_0 diff --git a/mcs/class/corlib/Test/System.Runtime.CompilerServices/ConditionalWeakTableTest.cs b/mcs/class/corlib/Test/System.Runtime.CompilerServices/ConditionalWeakTableTest.cs index 1b3fc89889..92d19fe367 100644 --- a/mcs/class/corlib/Test/System.Runtime.CompilerServices/ConditionalWeakTableTest.cs +++ b/mcs/class/corlib/Test/System.Runtime.CompilerServices/ConditionalWeakTableTest.cs @@ -196,9 +196,13 @@ namespace MonoTests.System.Runtime.CompilerServices { if (GC.MaxGeneration == 0) /*Boehm doesn't handle ephemerons */ Assert.Ignore ("Not working on Boehm."); var cwt = new ConditionalWeakTable (); - List keepAlive; - List keys; - FillStuff (cwt, out keepAlive, out keys); + List keepAlive = null; + List keys = null; + Thread t = new Thread (delegate () { + FillStuff (cwt, out keepAlive, out keys); + }); + t.Start (); + t.Join (); GC.Collect (); diff --git a/mcs/class/corlib/Test/System.Runtime.CompilerServices/TaskAwaiterTest.cs b/mcs/class/corlib/Test/System.Runtime.CompilerServices/TaskAwaiterTest.cs index a403d5287e..5237e377e3 100644 --- a/mcs/class/corlib/Test/System.Runtime.CompilerServices/TaskAwaiterTest.cs +++ b/mcs/class/corlib/Test/System.Runtime.CompilerServices/TaskAwaiterTest.cs @@ -44,14 +44,15 @@ namespace MonoTests.System.Runtime.CompilerServices class Scheduler : TaskScheduler { string name; + int ic, qc; public Scheduler (string name) { this.name = name; } - public int InlineCalls { get; set; } - public int QueueCalls { get; set; } + public int InlineCalls { get { return ic; } } + public int QueueCalls { get { return qc; } } protected override IEnumerable GetScheduledTasks () { @@ -60,7 +61,7 @@ namespace MonoTests.System.Runtime.CompilerServices protected override void QueueTask (Task task) { - ++QueueCalls; + Interlocked.Increment (ref qc); ThreadPool.QueueUserWorkItem (o => { TryExecuteTask (task); }); @@ -68,7 +69,7 @@ namespace MonoTests.System.Runtime.CompilerServices protected override bool TryExecuteTaskInline (Task task, bool taskWasPreviouslyQueued) { - ++InlineCalls; + Interlocked.Increment (ref ic); return false; } } @@ -102,6 +103,7 @@ namespace MonoTests.System.Runtime.CompilerServices string progress; SynchronizationContext sc; + ManualResetEvent mre; [SetUp] public void Setup () @@ -176,7 +178,7 @@ namespace MonoTests.System.Runtime.CompilerServices Assert.IsTrue (t.Wait (3000), "#0"); Assert.AreEqual (0, t.Result, "#1"); Assert.AreEqual (0, b.InlineCalls, "#2b"); - Assert.AreEqual (2, a.QueueCalls, "#3a"); + Assert.IsTrue (a.QueueCalls == 1 || a.QueueCalls == 2, "#3a"); Assert.AreEqual (1, b.QueueCalls, "#3b"); } @@ -270,12 +272,15 @@ namespace MonoTests.System.Runtime.CompilerServices [Test] public void CompletionOnDifferentCustomSynchronizationContext () { + mre = new ManualResetEvent (false); progress = ""; var syncContext = new SingleThreadSynchronizationContext (); SynchronizationContext.SetSynchronizationContext (syncContext); syncContext.Post (delegate { - Go2 (syncContext); + Task t = new Task (delegate() { }); + Go2 (syncContext, t); + t.Start (); }, null); // Custom message loop @@ -286,21 +291,30 @@ namespace MonoTests.System.Runtime.CompilerServices Thread.Sleep (0); } - Assert.AreEqual ("132", progress); + Assert.AreEqual ("13xa2", progress); } - async void Go2 (SynchronizationContext ctx) + async void Go2 (SynchronizationContext ctx, Task t) { - await Wait2 (ctx); + await Wait2 (ctx, t); - progress += "2"; + progress += "a"; + + if (mre.WaitOne (5000)) + progress += "2"; + else + progress += "b"; } - async Task Wait2 (SynchronizationContext ctx) + async Task Wait2 (SynchronizationContext ctx, Task t) { - await Task.Delay (10); // Force block suspend/return + await t; // Force block suspend/return - ctx.Post (l => progress += "3", null); + ctx.Post (l => { + progress += "3"; + mre.Set (); + progress += "x"; + }, null); progress += "1"; diff --git a/mcs/class/corlib/Test/System.Runtime.Serialization/SerializationTest.cs b/mcs/class/corlib/Test/System.Runtime.Serialization/SerializationTest.cs index da8bb8ee43..90b2d3f73f 100644 --- a/mcs/class/corlib/Test/System.Runtime.Serialization/SerializationTest.cs +++ b/mcs/class/corlib/Test/System.Runtime.Serialization/SerializationTest.cs @@ -18,6 +18,7 @@ using System.Runtime.Remoting.Proxies; using System.Runtime.Remoting.Messaging; using System.Collections; using NUnit.Framework; +using System.Text; namespace MonoTests.System.Runtime.Serialization { @@ -41,6 +42,41 @@ namespace MonoTests.System.Runtime.Serialization RemotingServices.Disconnect (mt); } +#if !MONOTOUCH + [Test] + public void DelegateSerializationTest () + { + var a = new DelegateSerialization (); + a.E += HandleE1; + + var d2 = Delegate.CreateDelegate (typeof(Func), "val", typeof(SerializationTest).GetMethod ("HandleE2")); + a.E += (Func) d2; + + using (var ms = new MemoryStream ()) { + var fmt = new BinaryFormatter (); + fmt.Serialize (ms, a); + ms.Flush (); + + ms.Seek (0, SeekOrigin.Begin); + var a2 = (DelegateSerialization) fmt.Deserialize (ms); + a2.Test (); + } + } +#endif + + static int HandleE1 (StringBuilder arg) + { + arg.Append ("E1"); + return 1; + } + + public static int HandleE2 (object o, StringBuilder arg) + { + arg.Append ("E2|"); + arg.Append (o); + return 2; + } + void WriteData () { StreamingContext context = new StreamingContext (StreamingContextStates.Other); @@ -814,5 +850,17 @@ namespace MonoTests.System.Runtime.Serialization public int x; } + [Serializable] + class DelegateSerialization + { + public event Func E; + + public void Test () + { + var sb = new StringBuilder (); + Assert.AreEqual (2, E (sb), "#1"); + Assert.AreEqual ("E1E2|val", sb.ToString (), "#2"); + } + } } diff --git a/mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs b/mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs index 9aa0d46510..df382b1700 100644 --- a/mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs +++ b/mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs @@ -276,7 +276,7 @@ namespace MonoTests.System.Threading.Tasks tasks[i] = Task.Factory.StartNew (delegate { Thread.Sleep (0); }); } - Assert.IsTrue (Task.WaitAll (tasks, 2000)); + Assert.IsTrue (Task.WaitAll (tasks, 5000)); } } @@ -904,7 +904,11 @@ namespace MonoTests.System.Threading.Tasks args.SetObserved (); }; var inner = new ApplicationException (); - Task.Factory.StartNew (() => { throw inner; }); + Thread t = new Thread (delegate () { + Task.Factory.StartNew (() => { Console.WriteLine ("HIT!"); throw inner; }); + }); + t.Start (); + t.Join (); Thread.Sleep (1000); GC.Collect (); Thread.Sleep (1000); @@ -1928,7 +1932,7 @@ namespace MonoTests.System.Threading.Tasks } [Test] - [Category("MobileNotWorking")] + [Category("NotWorking")] public void TaskContinuationChainLeak() { // Start cranking out tasks, starting each new task upon completion of and from inside the prior task. diff --git a/mcs/class/corlib/Test/System.Threading/CancellationTokenSourceTest.cs b/mcs/class/corlib/Test/System.Threading/CancellationTokenSourceTest.cs index d8c1299efe..5bf805aae0 100644 --- a/mcs/class/corlib/Test/System.Threading/CancellationTokenSourceTest.cs +++ b/mcs/class/corlib/Test/System.Threading/CancellationTokenSourceTest.cs @@ -90,9 +90,9 @@ namespace MonoTests.System.Threading int called = 0; var cts = new CancellationTokenSource (); cts.Token.Register (() => called++); - cts.CancelAfter (20); + cts.CancelAfter (50); cts.Dispose (); - Thread.Sleep (50); + Thread.Sleep (100); Assert.AreEqual (0, called, "#1"); } diff --git a/mcs/class/corlib/Test/System/DateTimeTest.cs b/mcs/class/corlib/Test/System/DateTimeTest.cs index 0e7b294f3b..343e723be8 100644 --- a/mcs/class/corlib/Test/System/DateTimeTest.cs +++ b/mcs/class/corlib/Test/System/DateTimeTest.cs @@ -1216,6 +1216,15 @@ namespace MonoTests.System DateTime.Parse ("Sat,,, 01,,, Oct,,, ,,,1994 03:00:00", CultureInfo.InvariantCulture); } + [Test] + public void TryParse_Bug11630 () + { + DateTime parsed; + + Assert.IsTrue (DateTime.TryParse ("10Feb2013", out parsed)); + Assert.AreEqual (new DateTime (2013, 2, 10), parsed); + } + [Test] [ExpectedException (typeof (FormatException))] public void Parse_CommaAfterHours () diff --git a/mcs/class/corlib/Test/System/DelegateTest.cs b/mcs/class/corlib/Test/System/DelegateTest.cs index ddfc099b73..e45efdbd1a 100644 --- a/mcs/class/corlib/Test/System/DelegateTest.cs +++ b/mcs/class/corlib/Test/System/DelegateTest.cs @@ -1116,20 +1116,68 @@ namespace MonoTests.System typeof (Action), this.GetType ().GetMethod ("Banga")); } -#if !MONOTOUCH + [Test] // #664205 - public void DynamicInvokeNullTarget () + public void DynamicInvokeClosedStatic () { - var method = new DynamicMethod ("test", typeof (int), new [] { typeof (object) }, true); - var il = method.GetILGenerator (); - il.Emit (OpCodes.Ldc_I4, 42); - il.Emit (OpCodes.Ret); + var d1 = Delegate.CreateDelegate (typeof(Func), null, typeof(DelegateTest).GetMethod ("DynamicInvokeClosedStaticDelegate_CB")); + Assert.AreEqual (1, d1.DynamicInvoke (), "#1"); - var @delegate = method.CreateDelegate (typeof (Func), null); - - Assert.AreEqual (42, (int) @delegate.DynamicInvoke ()); + var d2 = Delegate.CreateDelegate (typeof(Func), "arg", typeof(DelegateTest).GetMethod ("DynamicInvokeClosedStaticDelegate_CB")); + Assert.AreEqual (2, d2.DynamicInvoke (), "#2"); } -#endif + + public static int DynamicInvokeClosedStaticDelegate_CB (string instance) + { + switch (instance) { + case null: + return 1; + case "arg": + return 2; + default: + Assert.Fail (); + return -1; + } + } + + [Test] + public void DynamicInvokeOpenInstanceDelegate () + { + var d1 = Delegate.CreateDelegate (typeof (Func), typeof(DelegateTest).GetMethod ("DynamicInvokeOpenInstanceDelegate_CB")); + Assert.AreEqual (5, d1.DynamicInvoke (new DelegateTest ()), "#1"); + + var d3 = (Func) d1; + Assert.AreEqual (5, d3 (null), "#2"); + } + + public int DynamicInvokeOpenInstanceDelegate_CB () + { + return 5; + } + + [Test] + public void DynamicInvoke_InvalidArguments () + { + Delegate d = new Func (TestMethod); + + try { + d.DynamicInvoke (null); + Assert.Fail ("#1"); + } catch (TargetParameterCountException) { + } + + try { + d.DynamicInvoke (new object [0]); + Assert.Fail ("#2"); + } catch (TargetParameterCountException) { + } + } + + public static int TestMethod (int i) + { + throw new NotSupportedException (); + } + #endif public static void CreateDelegateOfStaticMethodBoundToNull_Helper (object[] args) {} @@ -1329,17 +1377,56 @@ namespace MonoTests.System } catch (ArgumentException) {} } - private static Func Int32D = (x, y) => (x & y) == y; - [Test] public void EnumBaseTypeConversion () { + Func dm = Int32D2; var d = - Delegate.CreateDelegate(typeof (Func), Int32D.Method) as + Delegate.CreateDelegate(typeof (Func), dm.Method) as Func; Assert.IsTrue (d (0, 0)); } +#if !MONOTOUCH + public static void DynInvokeWithClosedFirstArg (object a, object b) + { + } + + [Test] + public void DynamicInvokeClosedOverNullDelegate () { + var dm = new DynamicMethod ("test", typeof (Delegate), null); + var il = dm.GetILGenerator (); + il.Emit (OpCodes.Ldnull); + il.Emit (OpCodes.Ldftn, GetType ().GetMethod ("DynInvokeWithClosedFirstArg")); + il.Emit (OpCodes.Newobj, typeof (Action).GetConstructors ()[0]); + il.Emit (OpCodes.Ret); + + var f = (Func ) dm.CreateDelegate (typeof (Func )); + Action ac = (Action)f(); + ac.DynamicInvoke (new object[] { "oi" }); + ac.DynamicInvoke (new object[] { null }); + } + + [Test] + public void DynamicInvokeFirstArgBoundDelegate () { + var dm = new DynamicMethod ("test", typeof (Delegate), null); + var il = dm.GetILGenerator (); + il.Emit (OpCodes.Ldstr, "test"); + il.Emit (OpCodes.Ldftn, GetType ().GetMethod ("DynInvokeWithClosedFirstArg")); + il.Emit (OpCodes.Newobj, typeof (Action).GetConstructors ()[0]); + il.Emit (OpCodes.Ret); + + var f = (Func ) dm.CreateDelegate (typeof (Func )); + Action ac = (Action)f(); + ac.DynamicInvoke (new object[] { "oi" }); + ac.DynamicInvoke (new object[] { null }); + } +#endif + + static bool Int32D2 (int x, int y) + { + return (x & y) == y; + } + public class B { public virtual string retarg3 (string s) { diff --git a/mcs/class/corlib/Test/System/EnumTest.cs b/mcs/class/corlib/Test/System/EnumTest.cs index 4425baaaf8..8b6823ac10 100644 --- a/mcs/class/corlib/Test/System/EnumTest.cs +++ b/mcs/class/corlib/Test/System/EnumTest.cs @@ -740,6 +740,10 @@ namespace MonoTests.System success = Enum.TryParse ("is", true, out result); Assert.AreEqual (true, success, "#D1"); Assert.AreEqual (TestingEnum.Is, result, "#D2"); + + success = Enum.TryParse (" Is ", out result); + Assert.AreEqual (true, success, "#E1"); + Assert.AreEqual (TestingEnum.Is, result, "#E2"); } #endif diff --git a/mcs/class/corlib/Test/System/LazyTest.cs b/mcs/class/corlib/Test/System/LazyTest.cs index 01885f9767..6fb77f4d0f 100644 --- a/mcs/class/corlib/Test/System/LazyTest.cs +++ b/mcs/class/corlib/Test/System/LazyTest.cs @@ -273,6 +273,7 @@ namespace MonoTests.System public void ConcurrentInitialization () { var init = new AutoResetEvent (false); + var e1_set = new AutoResetEvent (false); var lazy = new Lazy (() => { init.Set (); @@ -286,6 +287,7 @@ namespace MonoTests.System string value = lazy.Value; } catch (Exception ex) { e1 = ex; + e1_set.Set (); } }); thread.Start (); @@ -306,8 +308,9 @@ namespace MonoTests.System e3 = ex; } - Assert.AreSame (e1, e2, "#2"); - Assert.AreSame (e1, e3, "#3"); + Assert.IsTrue (e1_set.WaitOne (3000), "#2"); + Assert.AreSame (e1, e2, "#3"); + Assert.AreSame (e1, e3, "#4"); } } diff --git a/mcs/class/lib/monolite/Mono.Security.dll.REMOVED.git-id b/mcs/class/lib/monolite/Mono.Security.dll.REMOVED.git-id index 8a6293c5d4..535c071380 100644 --- a/mcs/class/lib/monolite/Mono.Security.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite/Mono.Security.dll.REMOVED.git-id @@ -1 +1 @@ -8eed6bdd1b2805b45460e792b626285b6ec4b9d5 \ No newline at end of file +41943c9369ed2e6b3b8923f873809387771266aa \ No newline at end of file diff --git a/mcs/class/lib/monolite/System.Core.dll.REMOVED.git-id b/mcs/class/lib/monolite/System.Core.dll.REMOVED.git-id index 9e91d9c319..761bf99133 100644 --- a/mcs/class/lib/monolite/System.Core.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite/System.Core.dll.REMOVED.git-id @@ -1 +1 @@ -ab92aa6dcaf4439c7249816aad28f5ee9576e11b \ No newline at end of file +adf667def2f0b640fc4718711d6cf34c8729241e \ No newline at end of file diff --git a/mcs/class/lib/monolite/System.Xml.dll.REMOVED.git-id b/mcs/class/lib/monolite/System.Xml.dll.REMOVED.git-id index 5c4077a185..cf68065450 100644 --- a/mcs/class/lib/monolite/System.Xml.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite/System.Xml.dll.REMOVED.git-id @@ -1 +1 @@ -337a207279e2b3e0414eb67d568cd9e91742d974 \ No newline at end of file +d867edccd427d5f49230c9771eb1a4f37d822ba1 \ No newline at end of file diff --git a/mcs/class/lib/monolite/System.dll.REMOVED.git-id b/mcs/class/lib/monolite/System.dll.REMOVED.git-id index bf8e9e6aaa..7740e8a2a3 100644 --- a/mcs/class/lib/monolite/System.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite/System.dll.REMOVED.git-id @@ -1 +1 @@ -4f673da83772f32cdaaf6d40db09388d1948c1f5 \ No newline at end of file +d9ba8c904922983a358610beeb1fc62534cdffb4 \ No newline at end of file diff --git a/mcs/class/lib/monolite/basic.exe.REMOVED.git-id b/mcs/class/lib/monolite/basic.exe.REMOVED.git-id index 183f77da72..ccd0a6aa67 100644 --- a/mcs/class/lib/monolite/basic.exe.REMOVED.git-id +++ b/mcs/class/lib/monolite/basic.exe.REMOVED.git-id @@ -1 +1 @@ -1c8e1a4569fe1db6351cadf500b7a6f155dfc49d \ No newline at end of file +8d683c947f1fe982a7b1c40cb6e140e72fa90e7c \ No newline at end of file diff --git a/mcs/class/lib/monolite/mscorlib.dll.REMOVED.git-id b/mcs/class/lib/monolite/mscorlib.dll.REMOVED.git-id index 61618c5849..662894ab9f 100644 --- a/mcs/class/lib/monolite/mscorlib.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite/mscorlib.dll.REMOVED.git-id @@ -1 +1 @@ -82e20612b4cc2e98dee260c9176d43df17208f5f \ No newline at end of file +3a01bcb874a5b4779a95cf945e2f7fab1c5a897e \ No newline at end of file diff --git a/mcs/class/monodoc/Monodoc/generators/html/Ecma2Html.cs b/mcs/class/monodoc/Monodoc/generators/html/Ecma2Html.cs index c15c613778..04353c4546 100644 --- a/mcs/class/monodoc/Monodoc/generators/html/Ecma2Html.cs +++ b/mcs/class/monodoc/Monodoc/generators/html/Ecma2Html.cs @@ -63,14 +63,21 @@ namespace Monodoc.Generators.Html public string Htmlize (XmlReader ecma_xml, XsltArgumentList args) { - EnsureTransform (); - - var output = new StringBuilder (); - ecma_transform.Transform (ecma_xml, - args, - XmlWriter.Create (output, ecma_transform.OutputSettings), - CreateDocumentResolver ()); - return output.ToString (); + try{ + EnsureTransform (); + + var output = new StringBuilder (); + ecma_transform.Transform (ecma_xml, + args, + XmlWriter.Create (output, ecma_transform.OutputSettings), + CreateDocumentResolver ()); + return output.ToString (); + } + catch(Exception x) + { + var msg = x.ToString (); + return msg; + } } protected virtual XmlResolver CreateDocumentResolver () @@ -81,21 +88,14 @@ namespace Monodoc.Generators.Html public string Export (Stream stream, Dictionary extraArgs) { - return Htmlize (XmlReader.Create (WrapStream (new StreamReader (stream), extraArgs)), extraArgs); + return Htmlize (XmlReader.Create (new StreamReader(stream)), extraArgs); } public string Export (string input, Dictionary extraArgs) { - return Htmlize (XmlReader.Create (WrapStream (new StringReader (input), extraArgs)), extraArgs); + return Htmlize (XmlReader.Create (new StringReader(input)), extraArgs); } - TextReader WrapStream (TextReader initialReader, Dictionary renderArgs) - { - string show; - if (renderArgs.TryGetValue ("show", out show) && show == "namespace") - return new AvoidCDataTextReader (initialReader); - return initialReader; - } static void EnsureTransform () { @@ -329,81 +329,5 @@ namespace Monodoc.Generators.Html } } } - - public class AvoidCDataTextReader : TextReader - { - static readonly char[] CDataPattern = new[] { - '<', '!', '[', 'C', 'D', 'A', 'T', 'A', '[' - }; - static readonly char[] CDataClosingPattern = new[] { - ']', ']', '>' - }; - TextReader wrappedReader; - char[] backingArray = new char[9]; // " 0; - } else if (currentIndex == eofIndex) { - return false; - } - if (!inCData && PatternDetect (CDataPattern)) { - inCData = true; - ReadLength (CDataPattern.Length); - return EnsureBuffer (); - } - if (inCData && PatternDetect (CDataClosingPattern)) { - inCData = false; - ReadLength (CDataClosingPattern.Length); - return EnsureBuffer (); - } - - return true; - } - - bool PatternDetect (char[] pattern) - { - return backingArray[currentIndex] == pattern[0] && Enumerable.Range (1, pattern.Length - 1).All (i => backingArray[(currentIndex + i) % backingArray.Length] == pattern[i]); - } - } + } diff --git a/mcs/class/monodoc/Monodoc/providers/xhtml-provider.cs b/mcs/class/monodoc/Monodoc/providers/xhtml-provider.cs index 23bf89778c..7a866432d6 100644 --- a/mcs/class/monodoc/Monodoc/providers/xhtml-provider.cs +++ b/mcs/class/monodoc/Monodoc/providers/xhtml-provider.cs @@ -49,7 +49,7 @@ namespace Monodoc.Providers ObjectEntryToParams (inner, out caption, out element); // Don't add if the backing file doesn't exist if (!File.Exists (element)) { - Console.Error.WriteLine ("File `{0}' referenced in TOC but it doesn't exist.", element); + Console.Error.WriteLine ("Warning: File `{0}' referenced in TOC but it doesn't exist. It will be ignored.", element); continue; } using (var file = File.OpenRead (element)) diff --git a/mcs/class/monodoc/Test/Monodoc.Generators/AvoidCDataTextReaderTests.cs b/mcs/class/monodoc/Test/Monodoc.Generators/AvoidCDataTextReaderTests.cs deleted file mode 100644 index 5ab8e84b80..0000000000 --- a/mcs/class/monodoc/Test/Monodoc.Generators/AvoidCDataTextReaderTests.cs +++ /dev/null @@ -1,86 +0,0 @@ -using System; -using System.IO; -using System.Linq; -using System.Xml; -using System.Collections.Generic; - -using NUnit.Framework; - -using Monodoc; -using Monodoc.Generators; -using Monodoc.Generators.Html; - -namespace MonoTests.Monodoc.Generators -{ - [TestFixture] - public class AvoidCDataTextReaderTest - { - void AssertSameInputOutput (string expected, string input) - { - var processed = new AvoidCDataTextReader (new StringReader (input)).ReadToEnd (); - Assert.AreEqual (expected, processed); - } - - [Test] - public void NoCDataXmlTest () - { - var input = @"Addressbook APIs. - Provides access to the system Address Book. - "; - - AssertSameInputOutput (input, input); - } - - [Test] - public void WithCDataXmlTest () - { - var input = @"Addressbook APIs. - "; - - AssertSameInputOutput (input.Replace ("", string.Empty), input); - } - - [Test] - public void PartialCDataXmlTest () - { - var input = @"Addressbook APIs. - "; - - AssertSameInputOutput (input, input); - } - - [Test] - public void FinishWithPartialCDataXmlTest () - { - var input = @"Addressbook APIs. - Provides access to the system Address Book. - Addressbook APIs. - Provides access to the system Address Book. - [] ArrayMember +} diff --git a/mcs/errors/CS1607-3-lib.cs b/mcs/errors/CS8009-lib.cs similarity index 100% rename from mcs/errors/CS1607-3-lib.cs rename to mcs/errors/CS8009-lib.cs diff --git a/mcs/errors/Makefile b/mcs/errors/Makefile index dc76a1cd6f..f994abac1e 100644 --- a/mcs/errors/Makefile +++ b/mcs/errors/Makefile @@ -21,7 +21,7 @@ DISTFILES = \ $(wildcard dlls/second/*.cs) TEST_SUPPORT_FILES = \ - CS0012-lib.dll CS0012-2-lib.dll CS0012-3-lib.dll CS0012-4-lib.dll CS0012-5-lib.dll CS0012-6-lib.dll CS0012-9-lib.dll CS0012-10-lib.dll CS0012-11-lib.dll CS0012-12-lib.dll CS0012-13-lib.dll CS0012-14-lib.dll CS0012-15-lib.dll CS0012-16-lib.dll CS0012-17-lib.dll CS0012-18-lib.dll CS0012-21-lib.dll CS0012-22-lib.dll CS0019-71-lib.dll CS0029-26-lib.dll \ + CS0012-lib.dll CS0012-2-lib.dll CS0012-3-lib.dll CS0012-4-lib.dll CS0012-5-lib.dll CS0012-6-lib.dll CS0012-9-lib.dll CS0012-10-lib.dll CS0012-11-lib.dll CS0012-12-lib.dll CS0012-13-lib.dll CS0012-14-lib.dll CS0012-15-lib.dll CS0012-16-lib.dll CS0012-17-lib.dll CS0012-18-lib.dll CS0012-21-lib.dll CS0012-22-lib.dll CS0012-23-lib.dll CS0019-71-lib.dll CS0029-26-lib.dll \ CS0103-2-lib.dll CS0118-2-lib.dll CS0122-8-lib.dll CS0122-10-lib.dll CS0122-14-lib.dll CS0122-15-lib.dll CS0122-19-lib.dll CS0122-35-lib.dll CS0122-36-lib.dll CS0143-lib.dll CS0144-3-lib.dll CS0165-19-lib.dll \ CS0205-3-lib.dll CS0246-29-lib.dll CS0229-3-lib.dll CS0229-4-lib.dll CS0266-25-lib.dll \ CS0315-2-lib.dll \ @@ -32,9 +32,10 @@ TEST_SUPPORT_FILES = \ CS0730-lib.dll CS0731-1-lib.dll CS0731-2-lib.dll \ CS1070-lib.dll \ CS1540-15-lib.dll CS1540-17-lib.dll CS1542-lib.dll CS1577-lib.dll \ - CS1607-3-lib.dll CS1683-lib.dll CS1684-lib.dll CS1685-2-lib.dll \ + CS1683-lib.dll CS1684-lib.dll CS1685-2-lib.dll \ dlls/first/CS1701-lib.dll dlls/second/CS1701-lib.dll CS1701-lib.dll dlls/first/CS1702-lib.dll dlls/second/CS1702-lib.dll CS1702-lib.dll dlls/first/CS1705-lib.dll dlls/second/CS1705-lib.dll CS1705-lib.dll \ CS2015-lib.dll CS3005-16-lib.dll CS3013-module.dll CSExternAlias-lib.dll \ + CS8009-lib.dll \ CSFriendAssembly-lib.dll \ dlls/first/CS1703-lib.dll dlls/first/CS1704-lib.dll \ dlls/second/CS1703-lib.dll dlls/second/CS1704-lib.dll diff --git a/mcs/errors/cs0012-23.cs b/mcs/errors/cs0012-23.cs new file mode 100644 index 0000000000..a8b454ac67 --- /dev/null +++ b/mcs/errors/cs0012-23.cs @@ -0,0 +1,11 @@ +// CS0012: The type `Struct`1' is defined in an assembly that is not referenced. Consider adding a reference to assembly `CS0012-lib-missing, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' +// Line: 9 +// Compiler options: -r:CS0012-23-lib.dll + +public class C +{ + public static void Main () + { + var val = B.ArrayMember; + } +} \ No newline at end of file diff --git a/mcs/errors/cs0070-2.cs b/mcs/errors/cs0070-2.cs new file mode 100644 index 0000000000..95f9cdb61d --- /dev/null +++ b/mcs/errors/cs0070-2.cs @@ -0,0 +1,24 @@ +// CS0070: The event `A.evt' can only appear on the left hand side of += or -= when used outside of the type `A' +// Line: 22 + +using System; + +public static class EventExtensions +{ + public static void Raise (this EventHandler h) + { + } +} + +public class A +{ + public event EventHandler evt; +} + +public class B : A +{ + public void Run() + { + Action a = () => evt.Raise (); + } +} \ No newline at end of file diff --git a/mcs/errors/cs0100-8.cs b/mcs/errors/cs0100-8.cs new file mode 100644 index 0000000000..8248511448 --- /dev/null +++ b/mcs/errors/cs0100-8.cs @@ -0,0 +1,7 @@ +// CS100: The parameter name `obj' is a duplicate +// Line: 6 + +abstract class C +{ + public abstract int this [object obj, object obj] => 1; +} \ No newline at end of file diff --git a/mcs/errors/cs0102-99.cs b/mcs/errors/cs0102-99.cs deleted file mode 100644 index b07a24633a..0000000000 --- a/mcs/errors/cs0102-99.cs +++ /dev/null @@ -1,11 +0,0 @@ -// CS0102: The type `Part' already contains a definition for `arg' -// Line: 6 - -partial class Part -{ - int arg; -} - -partial class Part(int arg) -{ -} \ No newline at end of file diff --git a/mcs/errors/cs9006.cs b/mcs/errors/cs0103-13.cs similarity index 52% rename from mcs/errors/cs9006.cs rename to mcs/errors/cs0103-13.cs index 4420f2fe33..891a1559d3 100644 --- a/mcs/errors/cs9006.cs +++ b/mcs/errors/cs0103-13.cs @@ -1,4 +1,4 @@ -// CS9006: An object reference is required to access primary constructor parameter `value' +// CS0103: The name `value' does not exist in the current context // Line: 8 class X (double value) diff --git a/mcs/errors/cs0103-14.cs b/mcs/errors/cs0103-14.cs new file mode 100644 index 0000000000..80f1e629f6 --- /dev/null +++ b/mcs/errors/cs0103-14.cs @@ -0,0 +1,10 @@ +// C0103: The name `s' does not exist in the current context +// Line: 7 + +class Test(string s) +{ + public Test () + : this (s) + { + } +} \ No newline at end of file diff --git a/mcs/errors/cs0121-25.cs b/mcs/errors/cs0121-25.cs new file mode 100644 index 0000000000..4461673c74 --- /dev/null +++ b/mcs/errors/cs0121-25.cs @@ -0,0 +1,33 @@ +// CS0121: The call is ambiguous between the following methods or properties: `A.B.X.Test(int)' and `A.C.X.Test(int)' +// Line: 31 + +using A.B.X; +using A.C.X; + +namespace A.B +{ + static class X + { + public static void Test (int o) + { + } + } +} + +namespace A.C +{ + static class X + { + public static int Test (int o) + { + } + } +} + +class M +{ + public static void Main () + { + Test (0); + } +} \ No newline at end of file diff --git a/mcs/errors/cs0133-6.cs b/mcs/errors/cs0133-6.cs new file mode 100644 index 0000000000..a523169cdb --- /dev/null +++ b/mcs/errors/cs0133-6.cs @@ -0,0 +1,10 @@ +// CS0133: The expression being assigned to `o' must be constant +// Line: 8 + +class X +{ + void Foo () + { + const object o = "" ?? null; + } +} \ No newline at end of file diff --git a/mcs/errors/cs0133-7.cs b/mcs/errors/cs0133-7.cs new file mode 100644 index 0000000000..10d82d9fe5 --- /dev/null +++ b/mcs/errors/cs0133-7.cs @@ -0,0 +1,10 @@ +// CS0133: The expression being assigned to `o' must be constant +// Line: 8 + +class X +{ + void Foo () + { + const object o = null ?? ""; + } +} \ No newline at end of file diff --git a/mcs/errors/cs0136-18.cs b/mcs/errors/cs0136-18.cs new file mode 100644 index 0000000000..20630a4bcf --- /dev/null +++ b/mcs/errors/cs0136-18.cs @@ -0,0 +1,13 @@ +// CS0136: A local variable named `arg' cannot be declared in this scope because it would give a different meaning to `arg', which is already used in a `parent or current' scope to denote something else +// Line: 11 + +using System; + +class A (Func barg) +{ +} + +class B (int arg) + : A ((arg) => 1) +{ +} \ No newline at end of file diff --git a/mcs/errors/cs0136-19.cs b/mcs/errors/cs0136-19.cs new file mode 100644 index 0000000000..ae9e0f606e --- /dev/null +++ b/mcs/errors/cs0136-19.cs @@ -0,0 +1,13 @@ +// CS0136: A local variable named `arg' cannot be declared in this scope because it would give a different meaning to `arg', which is already used in a `parent or current' scope to denote something else +// Line: 11 + +using System; + +partial class PC +{ + Func f = (arg) => 1; +} + +partial class PC (int arg) +{ +} \ No newline at end of file diff --git a/mcs/errors/cs0138.cs b/mcs/errors/cs0138.cs index ea0010ea51..8264e8dbf2 100644 --- a/mcs/errors/cs0138.cs +++ b/mcs/errors/cs0138.cs @@ -1,5 +1,6 @@ // CS0138: `System.Console' is a type not a namespace. A using namespace directive can only be applied to namespaces // Line: 5 +// Compiler options: -langversion:5 using System; using System.Console; diff --git a/mcs/errors/cs0151-3.cs b/mcs/errors/cs0151-3.cs new file mode 100644 index 0000000000..7644373545 --- /dev/null +++ b/mcs/errors/cs0151-3.cs @@ -0,0 +1,19 @@ +// CS0151: A switch expression of type `X?' cannot be converted to an integral type, bool, char, string, enum or nullable type +// Line: 15 + +struct X +{ + public static implicit operator int (X x) + { + return 1; + } + + static void Main () + { + X? x = null; + switch (x) { + default: + break; + } + } +} diff --git a/mcs/errors/cs0151-4.cs b/mcs/errors/cs0151-4.cs new file mode 100644 index 0000000000..0e45b1a904 --- /dev/null +++ b/mcs/errors/cs0151-4.cs @@ -0,0 +1,30 @@ +// CS0151: A switch expression of type `S1?' cannot be converted to an integral type, bool, char, string, enum or nullable type +// Line: 24 + +using System; + +struct S1 +{ + public static implicit operator int? (S1? s) + { + throw new ApplicationException (); + } + + public static implicit operator int (S1? s) + { + throw new ApplicationException (); + } +} + +class C +{ + public static int Main () + { + S1? s1 = new S1 (); + switch (s1) + { + default: + return 1; + } + } +} \ No newline at end of file diff --git a/mcs/errors/cs0151-5.cs b/mcs/errors/cs0151-5.cs new file mode 100644 index 0000000000..3995a28675 --- /dev/null +++ b/mcs/errors/cs0151-5.cs @@ -0,0 +1,19 @@ +// CS0151: A switch expression of type `X?' cannot be converted to an integral type, bool, char, string, enum or nullable type +// Line: 19 + +struct X +{ + public static implicit operator int? (X x) + { + return 1; + } + + static void Main () + { + X? x = null; + switch (x) { + default: + break; + } + } +} diff --git a/mcs/errors/cs0182-10.cs b/mcs/errors/cs0181-2.cs similarity index 68% rename from mcs/errors/cs0182-10.cs rename to mcs/errors/cs0181-2.cs index 1ce2d2f48d..6334606fae 100644 --- a/mcs/errors/cs0182-10.cs +++ b/mcs/errors/cs0181-2.cs @@ -1,4 +1,4 @@ -// CS0182: An attribute argument must be a constant expression, typeof expression or array creation expression +// CS0181: Attribute constructor parameter has type `int[][]', which is not a valid attribute parameter type // Line: 13 using System; diff --git a/mcs/errors/cs0182-12.cs b/mcs/errors/cs0181-3.cs similarity index 56% rename from mcs/errors/cs0182-12.cs rename to mcs/errors/cs0181-3.cs index 2827f63c7b..6e2f5b6ff0 100644 --- a/mcs/errors/cs0182-12.cs +++ b/mcs/errors/cs0181-3.cs @@ -1,4 +1,4 @@ -// CS0182: An attribute argument must be a constant expression, typeof expression or array creation expression +// CS0181: Attribute constructor parameter has type `System.Enum', which is not a valid attribute parameter type // Line: 18 using System; diff --git a/mcs/errors/cs0182-13.cs b/mcs/errors/cs0181-4.cs similarity index 57% rename from mcs/errors/cs0182-13.cs rename to mcs/errors/cs0181-4.cs index 8c764b28d0..80ed5629a9 100644 --- a/mcs/errors/cs0182-13.cs +++ b/mcs/errors/cs0181-4.cs @@ -1,4 +1,4 @@ -// CS0182: An attribute argument must be a constant expression, typeof expression or array creation expression +// CS0181: Attribute constructor parameter has type `System.Attribute', which is not a valid attribute parameter type // Line: 6 using System; diff --git a/mcs/errors/cs0182-2.cs b/mcs/errors/cs0181.cs similarity index 60% rename from mcs/errors/cs0182-2.cs rename to mcs/errors/cs0181.cs index b988a04a1e..f04342c4a8 100644 --- a/mcs/errors/cs0182-2.cs +++ b/mcs/errors/cs0181.cs @@ -1,4 +1,4 @@ -// CS0182: An attribute argument must be a constant expression, typeof expression or array creation expression +// CS0181: Attribute constructor parameter has type `int[,]', which is not a valid attribute parameter type // Line: 13 using System; diff --git a/mcs/errors/cs0253-3.cs b/mcs/errors/cs0253-3.cs new file mode 100644 index 0000000000..0cf7968f7c --- /dev/null +++ b/mcs/errors/cs0253-3.cs @@ -0,0 +1,15 @@ +// CS0253: Possible unintended reference comparison. Consider casting the right side expression to type `System.Action' to get value comparison +// Line: 13 +// Compiler options: -warnaserror + +using System; + +class MainClass +{ + public static void Main () + { + Action a = null; + object b = null; + var x = a == b; + } +} \ No newline at end of file diff --git a/mcs/errors/cs0457-4.cs b/mcs/errors/cs0457-4.cs new file mode 100644 index 0000000000..787db3ab47 --- /dev/null +++ b/mcs/errors/cs0457-4.cs @@ -0,0 +1,27 @@ +// CS0457: Ambiguous user defined operators `D.implicit operator D(System.Action)' and `D.explicit operator D(Foo)' when converting from `method group' to `D' +// Line: 25 + +using System; + +public delegate void Foo (); + +class D +{ + public static implicit operator D (Action d) + { + return new D (); + } + + public static explicit operator D (Foo d) + { + return new D (); + } +} + +class Program +{ + static void Main() + { + D d = (D) Main; + } +} diff --git a/mcs/errors/cs0573-2.cs b/mcs/errors/cs0573-2.cs deleted file mode 100644 index 50836def0e..0000000000 --- a/mcs/errors/cs0573-2.cs +++ /dev/null @@ -1,6 +0,0 @@ -// CS0573: `A.a': Structs cannot have instance field initializers -// Line: 5 - -partial struct A { - int a = 1; -} diff --git a/mcs/errors/cs0573.cs b/mcs/errors/cs0573.cs deleted file mode 100644 index deec3ea655..0000000000 --- a/mcs/errors/cs0573.cs +++ /dev/null @@ -1,13 +0,0 @@ -// CS0573: `A.a': Structs cannot have instance field initializers -// Line: 5 -struct A { - int a = 1; -} - -class D { - static void Main () - { - A [] a = new A [10]; - - } -} diff --git a/mcs/errors/cs0579-9.cs b/mcs/errors/cs0579-9.cs new file mode 100644 index 0000000000..43461affc4 --- /dev/null +++ b/mcs/errors/cs0579-9.cs @@ -0,0 +1,22 @@ +// CS0579: The attribute `TestAttributesCollecting.A' cannot be applied multiple times +// Line: 19 + +using System; + +namespace TestAttributesCollecting +{ + class A : Attribute + { + public A (int a) + { + } + } + + partial class G1<[A (1)]T> + { + } + + partial class G1<[A (2)]T> + { + } +} diff --git a/mcs/errors/cs0591-2.cs b/mcs/errors/cs0591-2.cs new file mode 100644 index 0000000000..31df0431f6 --- /dev/null +++ b/mcs/errors/cs0591-2.cs @@ -0,0 +1,9 @@ +// CS0591: Invalid value for argument to `System.Runtime.InteropServices.GuidAttribute' attribute +// Line: 6 + +using System.Runtime.InteropServices; + +[Guid ("aaa")] +class X { +static void Main () {} +} diff --git a/mcs/errors/cs0647-12.cs b/mcs/errors/cs0591-3.cs similarity index 55% rename from mcs/errors/cs0647-12.cs rename to mcs/errors/cs0591-3.cs index f1d8370235..8254a5b819 100644 --- a/mcs/errors/cs0647-12.cs +++ b/mcs/errors/cs0591-3.cs @@ -1,4 +1,4 @@ -// CS0647: Error during emitting `System.Runtime.InteropServices.DllImportAttribute' attribute. The reason is `DllName cannot be empty or null' +// CS0591: Invalid value for argument to `System.Runtime.InteropServices.DllImportAttribute' attribute // Line: 8 using System.Runtime.InteropServices; diff --git a/mcs/errors/cs0647-13.cs b/mcs/errors/cs0591-4.cs similarity index 55% rename from mcs/errors/cs0647-13.cs rename to mcs/errors/cs0591-4.cs index 96751a139a..adf1ff5aef 100644 --- a/mcs/errors/cs0647-13.cs +++ b/mcs/errors/cs0591-4.cs @@ -1,4 +1,4 @@ -// CS0647: Error during emitting `System.Runtime.InteropServices.DllImportAttribute' attribute. The reason is `DllName cannot be empty or null' +// CS0591: Invalid value for argument to `System.Runtime.InteropServices.DllImportAttribute' attribute // Line: 8 using System.Runtime.InteropServices; diff --git a/mcs/errors/cs0591-5.cs b/mcs/errors/cs0591-5.cs new file mode 100644 index 0000000000..964dca945c --- /dev/null +++ b/mcs/errors/cs0591-5.cs @@ -0,0 +1,12 @@ +// CS0591: Invalid value for argument to `System.Runtime.CompilerServices.MethodImplAttribute' attribute +// Line: 8 + +using System.Runtime.CompilerServices; + +class Test +{ + [MethodImplAttribute(445)] + public void test () + { + } +} \ No newline at end of file diff --git a/mcs/errors/cs0591-6.cs b/mcs/errors/cs0591-6.cs new file mode 100644 index 0000000000..b9a4b2eac6 --- /dev/null +++ b/mcs/errors/cs0591-6.cs @@ -0,0 +1,12 @@ +// CS0591: Invalid value for argument to `System.Runtime.CompilerServices.MethodImplAttribute' attribute +// Line: 8 + +using System.Runtime.CompilerServices; + +class Program +{ + [MethodImpl((MethodImplOptions)255)] + void Foo() + { + } +} \ No newline at end of file diff --git a/mcs/errors/cs0591.cs b/mcs/errors/cs0591.cs index 8d5dc46a00..6ffbe846b0 100644 --- a/mcs/errors/cs0591.cs +++ b/mcs/errors/cs0591.cs @@ -1,4 +1,4 @@ -// CS0591: Invalid value for argument to `System.AttributeUsage' attribute +// CS0591: Invalid value for argument to `System.AttributeUsageAttribute' attribute // Line: 4 [System.AttributeUsage(0)] diff --git a/mcs/errors/cs0647-15.cs b/mcs/errors/cs0647-15.cs deleted file mode 100644 index 104d2dbd0a..0000000000 --- a/mcs/errors/cs0647-15.cs +++ /dev/null @@ -1,12 +0,0 @@ -// CS0647: Error during emitting `System.Runtime.CompilerServices.MethodImplAttribute' attribute. The reason is `Incorrect argument value' -// Line: 8 - -using System.Runtime.CompilerServices; - -class Test -{ - [MethodImplAttribute(445)] - public void test () - { - } -} \ No newline at end of file diff --git a/mcs/errors/cs0647-18.cs b/mcs/errors/cs0647-18.cs deleted file mode 100644 index ce57d73d60..0000000000 --- a/mcs/errors/cs0647-18.cs +++ /dev/null @@ -1,6 +0,0 @@ -// CS0647: Error during emitting `System.Reflection.AssemblyVersionAttribute' attribute. The reason is `Specified version `2.0.*.*' is not valid' -// Line: 6 - -using System.Reflection; - -[assembly: AssemblyVersion("2.0.*.*")] diff --git a/mcs/errors/cs0647-19.cs b/mcs/errors/cs0647-19.cs deleted file mode 100644 index 25b040038e..0000000000 --- a/mcs/errors/cs0647-19.cs +++ /dev/null @@ -1,6 +0,0 @@ -// CS0647: Error during emitting `System.Reflection.AssemblyVersionAttribute' attribute. The reason is `Specified version `2.*' is not valid' -// Line: 6 - -using System.Reflection; - -[assembly: AssemblyVersion("2.*")] diff --git a/mcs/errors/cs0647-20.cs b/mcs/errors/cs0647-20.cs deleted file mode 100644 index 2b03f1cbc1..0000000000 --- a/mcs/errors/cs0647-20.cs +++ /dev/null @@ -1,12 +0,0 @@ -// CS0647: Error during emitting `System.Runtime.CompilerServices.MethodImplAttribute' attribute. The reason is `Incorrect argument value' -// Line: 8 - -using System.Runtime.CompilerServices; - -class Program -{ - [MethodImpl((MethodImplOptions)255)] - void Foo() - { - } -} \ No newline at end of file diff --git a/mcs/errors/cs0647.cs b/mcs/errors/cs0647.cs deleted file mode 100644 index 154bfff54d..0000000000 --- a/mcs/errors/cs0647.cs +++ /dev/null @@ -1,9 +0,0 @@ -// CS0647: Error during emitting `System.Runtime.InteropServices.GuidAttribute' attribute. The reason is `Invalid Guid format: aaa' -// Line: 6 - -using System.Runtime.InteropServices; - -[Guid ("aaa")] -class X { -static void Main () {} -} diff --git a/mcs/errors/cs0657-23.cs b/mcs/errors/cs0657-23.cs new file mode 100644 index 0000000000..2e6f6a6138 --- /dev/null +++ b/mcs/errors/cs0657-23.cs @@ -0,0 +1,14 @@ +// CS0657: `field' is not a valid attribute location for this declaration. Valid attribute locations for this declaration are `param'. All attributes in this section will be ignored +// Line: 9 +// Compiler options: -warnaserror + +using System; + +public class FieldAttribute : System.Attribute +{ +} + +class X ([field:FieldAttribute] int foo) +{ + int v = foo; +} diff --git a/mcs/errors/cs0837-2.cs b/mcs/errors/cs0837-2.cs index 94c1f8510b..eea4c130ea 100644 --- a/mcs/errors/cs0837-2.cs +++ b/mcs/errors/cs0837-2.cs @@ -1,6 +1,5 @@ -// CS0837: The `as' operator cannot be applied to a lambda expression or anonymous method -// Line: 15 - +// CS0837: The `as' operator cannot be applied to a lambda expression, anonymous method, or method group +// Line: 14 class X { diff --git a/mcs/errors/cs0837-3.cs b/mcs/errors/cs0837-3.cs new file mode 100644 index 0000000000..de7ffd2c0a --- /dev/null +++ b/mcs/errors/cs0837-3.cs @@ -0,0 +1,12 @@ +// CS0837: The `is' operator cannot be applied to a lambda expression, anonymous method, or method group +// Line: 10 + +using System; + +class Test +{ + static void Main () + { + var res = Main is object; + } +} \ No newline at end of file diff --git a/mcs/errors/cs1953.cs b/mcs/errors/cs0837-4.cs similarity index 60% rename from mcs/errors/cs1953.cs rename to mcs/errors/cs0837-4.cs index ba5dbad043..bc11afa0c9 100644 --- a/mcs/errors/cs1953.cs +++ b/mcs/errors/cs0837-4.cs @@ -1,4 +1,4 @@ -// CS1953: An expression tree cannot contain an expression with method group +// CS0837: The `is' operator cannot be applied to a lambda expression, anonymous method, or method group // Line: 11 using System; diff --git a/mcs/errors/cs0837.cs b/mcs/errors/cs0837.cs index 7c56fd1add..c2ca9b8732 100644 --- a/mcs/errors/cs0837.cs +++ b/mcs/errors/cs0837.cs @@ -1,4 +1,4 @@ -// CS0837: The `is' operator cannot be applied to a lambda expression or anonymous method +// CS0837: The `is' operator cannot be applied to a lambda expression, anonymous method, or method group // Line: 8 class X diff --git a/mcs/errors/cs0840.cs b/mcs/errors/cs0840.cs deleted file mode 100644 index bc4ee41605..0000000000 --- a/mcs/errors/cs0840.cs +++ /dev/null @@ -1,8 +0,0 @@ -// CS0840: `Test.Property.get' must have a body because it is not marked abstract or extern. The property can be automatically implemented when you define both accessors -// Line: 7 - - -public abstract class Test -{ - public string Property { get; } -} diff --git a/mcs/errors/cs1501-17.cs b/mcs/errors/cs1501-17.cs new file mode 100644 index 0000000000..ac575643f4 --- /dev/null +++ b/mcs/errors/cs1501-17.cs @@ -0,0 +1,14 @@ +// CS1501: No overload for method `Foo' takes `0' arguments +// Line: 12 + +class C +{ + static void Foo (string foo, params object [] moreFoo) + { + } + + static void Main () + { + Foo (); + } +} \ No newline at end of file diff --git a/mcs/errors/cs1525-42.cs b/mcs/errors/cs1525-42.cs index 87f9e86f9a..dc8b7ce4da 100644 --- a/mcs/errors/cs1525-42.cs +++ b/mcs/errors/cs1525-42.cs @@ -1,4 +1,4 @@ -// CS1525: Unexpected symbol `}', expecting `(' or `{' +// CS1525: Unexpected symbol `}', expecting `(', `{', or `=>' // Line: 6 class MyClass diff --git a/mcs/errors/cs1607-2.cs b/mcs/errors/cs1607-2.cs deleted file mode 100644 index 2d0c3de135..0000000000 --- a/mcs/errors/cs1607-2.cs +++ /dev/null @@ -1,7 +0,0 @@ -// CS1607: The version number `1.*' specified for `AssemblyFileVersion' is invalid -// Line: 7 -// Compiler options: -warnaserror - -using System.Reflection; - -[assembly: AssemblyFileVersion ("1.*")] diff --git a/mcs/errors/cs1607-3.cs b/mcs/errors/cs1607-3.cs deleted file mode 100644 index 9268dfd04c..0000000000 --- a/mcs/errors/cs1607-3.cs +++ /dev/null @@ -1,13 +0,0 @@ -// CS1607: Referenced assembly `CS1607-3-lib' has different culture setting of `en-US' -// Line: 0 -// Compiler options: -r:CS1607-3-lib.dll -warnaserror - -using System; - -class Program -{ - static void Main () - { - Console.WriteLine (typeof (Lang)); - } -} diff --git a/mcs/errors/cs1617.cs b/mcs/errors/cs1617.cs index 6feb97925c..88f9c12dec 100644 --- a/mcs/errors/cs1617.cs +++ b/mcs/errors/cs1617.cs @@ -1,3 +1,3 @@ -// CS1617: Invalid -langversion option `ISO'. It must be `ISO-1', `ISO-2', `3', `4', `5', `Default' or `Future' +// CS1617: Invalid -langversion option `ISO'. It must be `ISO-1', `ISO-2', Default or value in range 1 to 6 // Line: 0 // Compiler options: -langversion:ISO diff --git a/mcs/errors/cs1644-19.cs b/mcs/errors/cs1644-19.cs index ce867d1e71..fe4e494dd3 100644 --- a/mcs/errors/cs1644-19.cs +++ b/mcs/errors/cs1644-19.cs @@ -1,4 +1,4 @@ -// CS1644: Feature `automatically implemented properties' cannot be used because it is not part of the C# 2.0 language specification +// CS1644: Feature `auto-implemented properties' cannot be used because it is not part of the C# 2.0 language specification // Line: 7 // Compiler options: -langversion:ISO-2 diff --git a/mcs/errors/cs1644-35.cs b/mcs/errors/cs1644-35.cs new file mode 100644 index 0000000000..c97b37d9db --- /dev/null +++ b/mcs/errors/cs1644-35.cs @@ -0,0 +1,17 @@ +// CS1644: Feature `exception filter' cannot be used because it is not part of the C# 5.0 language specification +// Line: 14 +// Compiler options: -langversion:5 + +using System; + +class X +{ + public static void Main () + { + int x = 4; + try { + throw null; + } catch (Exception) if (x > 0) { + } + } +} diff --git a/mcs/errors/cs1644-36.cs b/mcs/errors/cs1644-36.cs new file mode 100644 index 0000000000..df2d30be8f --- /dev/null +++ b/mcs/errors/cs1644-36.cs @@ -0,0 +1,8 @@ +// CS1644: Feature `auto-implemented property initializer' cannot be used because it is not part of the C# 5.0 language specification +// Line: 7 +// Compiler options: -langversion:5 + +class C +{ + public static int P { get; } = 4; +} \ No newline at end of file diff --git a/mcs/errors/cs1644-37.cs b/mcs/errors/cs1644-37.cs new file mode 100644 index 0000000000..37c997ff63 --- /dev/null +++ b/mcs/errors/cs1644-37.cs @@ -0,0 +1,7 @@ +// CS1644: Feature `primary constructor' cannot be used because it is not part of the C# 5.0 language specification +// Line: 7 +// Compiler options: -langversion:5 + +class C (int arg) +{ +} \ No newline at end of file diff --git a/mcs/errors/cs1644-38.cs b/mcs/errors/cs1644-38.cs new file mode 100644 index 0000000000..0adbe60e74 --- /dev/null +++ b/mcs/errors/cs1644-38.cs @@ -0,0 +1,8 @@ +// CS1644: Feature `expression bodied members' cannot be used because it is not part of the C# 5.0 language specification +// Line: 7 +// Compiler options: -langversion:5 + +class C +{ + int Prop => 3; +} \ No newline at end of file diff --git a/mcs/errors/cs1644-39.cs b/mcs/errors/cs1644-39.cs new file mode 100644 index 0000000000..877c248e87 --- /dev/null +++ b/mcs/errors/cs1644-39.cs @@ -0,0 +1,8 @@ +// CS1644: Feature `expression bodied members' cannot be used because it is not part of the C# 5.0 language specification +// Line: 7 +// Compiler options: -langversion:5 + +class C +{ + int M () => 0; +} \ No newline at end of file diff --git a/mcs/errors/cs1644-40.cs b/mcs/errors/cs1644-40.cs new file mode 100644 index 0000000000..43ea9b022d --- /dev/null +++ b/mcs/errors/cs1644-40.cs @@ -0,0 +1,8 @@ +// CS1644: Feature `expression bodied members' cannot be used because it is not part of the C# 5.0 language specification +// Line: 7 +// Compiler options: -langversion:5 + +class C +{ + int this [long arg] => -9; +} \ No newline at end of file diff --git a/mcs/errors/cs1650-3.cs b/mcs/errors/cs1650-3.cs new file mode 100644 index 0000000000..e0cfa0c6ef --- /dev/null +++ b/mcs/errors/cs1650-3.cs @@ -0,0 +1,19 @@ +// CS1650: Fields of static readonly field `C.t' cannot be assigned to (except in a static constructor or a variable initializer) +// Line: 17 + +using System; + +interface I +{ + int X { get; set; } +} + +class C where T : struct, I +{ + static readonly T t; + + public static void Foo () + { + t.X = 42; + } +} diff --git a/mcs/errors/cs1700.cs b/mcs/errors/cs1700.cs index 4b2021994c..975a2f2c7a 100644 --- a/mcs/errors/cs1700.cs +++ b/mcs/errors/cs1700.cs @@ -1,4 +1,4 @@ -// CS1700: Assembly reference `MyAssemblyName, Version=' is invalid and cannot be resolved +// CS1700: Friend assembly reference `MyAssemblyName, Version=' is invalid and cannot be resolved // Line: 8 // Compiler options: -warnaserror -warn:3 diff --git a/mcs/errors/cs1984.cs b/mcs/errors/cs1984.cs deleted file mode 100644 index cf998413a1..0000000000 --- a/mcs/errors/cs1984.cs +++ /dev/null @@ -1,21 +0,0 @@ -// CS1984: The `await' operator cannot be used in the body of a finally clause -// Line: 13 - -using System; -using System.Threading.Tasks; - -class C -{ - public async Task Test () - { - try { - } finally { - await Call (); - } - } - - static Task Call () - { - return null; - } -} diff --git a/mcs/errors/cs1985-2.cs b/mcs/errors/cs1985-2.cs deleted file mode 100644 index 788d0e79ec..0000000000 --- a/mcs/errors/cs1985-2.cs +++ /dev/null @@ -1,27 +0,0 @@ -// CS1985: The `await' operator cannot be used in a catch clause -// Line: 18 - -using System; -using System.Threading.Tasks; - -class X -{ - public static void Main () - { - } - - static async Task Test () - { - int x = 4; - try { - throw null; - } catch (NullReferenceException) if (await Foo ()) { - return; - } - } - - static Task Foo () - { - throw new NotImplementedException (); - } -} \ No newline at end of file diff --git a/mcs/errors/cs1985.cs b/mcs/errors/cs1985.cs deleted file mode 100644 index 62d3642f82..0000000000 --- a/mcs/errors/cs1985.cs +++ /dev/null @@ -1,21 +0,0 @@ -// CS1985: The `await' operator cannot be used in a catch clause -// Line: 13 - -using System; -using System.Threading.Tasks; - -class C -{ - public async Task Test () - { - try { - } catch { - await Call (); - } - } - - static Task Call () - { - return null; - } -} diff --git a/mcs/errors/cs1997-2.cs b/mcs/errors/cs1997-2.cs deleted file mode 100644 index 9f8c533f51..0000000000 --- a/mcs/errors/cs1997-2.cs +++ /dev/null @@ -1,17 +0,0 @@ -// CS1997: `System.Func': A return keyword must not be followed by an expression when async delegate returns `Task'. Consider using `Task' return type -// Line: 12 - -using System; -using System.Threading.Tasks; - -class Test -{ - public static void Main() - { - Func t = async delegate { - return null; - }; - - return; - } -} diff --git a/mcs/errors/cs4017.cs b/mcs/errors/cs4017.cs index e0e7caa4fb..f6ac27d07e 100644 --- a/mcs/errors/cs4017.cs +++ b/mcs/errors/cs4017.cs @@ -1,4 +1,4 @@ -// CS4017: The CallerMemberName attribute cannot be applied because there is no standard conversion from `int' to `byte' +// CS4017: The CallerLineNumberAttribute attribute cannot be applied because there is no standard conversion from `int' to `byte' // Line: 8 using System.Runtime.CompilerServices; diff --git a/mcs/errors/cs4024.cs b/mcs/errors/cs4024.cs new file mode 100644 index 0000000000..d3360ed7cd --- /dev/null +++ b/mcs/errors/cs4024.cs @@ -0,0 +1,17 @@ +// CS4024: The CallerLineNumberAttribute applied to parameter `x' will have no effect because it applies to a member that is used in context that do not allow optional arguments +// Line: 14 +// Compiler options: -warnaserror + +using System.Runtime.CompilerServices; + +partial class D +{ + partial void Foo (int x = 2); +} + +partial class D +{ + partial void Foo ([CallerLineNumber] int x) + { + } +} \ No newline at end of file diff --git a/mcs/errors/cs4025.cs b/mcs/errors/cs4025.cs new file mode 100644 index 0000000000..6e9f203043 --- /dev/null +++ b/mcs/errors/cs4025.cs @@ -0,0 +1,17 @@ +// CS4025: The CallerFilePath applied to parameter `x' will have no effect because it applies to a member that is used in context that do not allow optional arguments +// Line: 14 +// Compiler options: -warnaserror + +using System.Runtime.CompilerServices; + +partial class D +{ + partial void Foo (string x = "x"); +} + +partial class D +{ + partial void Foo ([CallerFilePath] string x) + { + } +} \ No newline at end of file diff --git a/mcs/errors/cs4026.cs b/mcs/errors/cs4026.cs new file mode 100644 index 0000000000..94977002f3 --- /dev/null +++ b/mcs/errors/cs4026.cs @@ -0,0 +1,17 @@ +// CS4026: The CallerMemberName applied to parameter `x' will have no effect because it applies to a member that is used in context that do not allow optional arguments +// Line: 14 +// Compiler options: -warnaserror + +using System.Runtime.CompilerServices; + +partial class D +{ + partial void Foo (string x = "x"); +} + +partial class D +{ + partial void Foo ([CallerMemberName] string x) + { + } +} \ No newline at end of file diff --git a/mcs/errors/cs4029.cs b/mcs/errors/cs4029.cs new file mode 100644 index 0000000000..14fce4f458 --- /dev/null +++ b/mcs/errors/cs4029.cs @@ -0,0 +1,19 @@ +// CS4029: Cannot return an expression of type `void' +// Line: 15 + +using System; +using System.Threading.Tasks; + +class C +{ + static void Foo (Func> f) + { + } + + static void Main () + { + Foo (async () => { + return await Task.Factory.StartNew (() => { }); + }); + } +} \ No newline at end of file diff --git a/mcs/errors/cs7007.cs b/mcs/errors/cs7007.cs new file mode 100644 index 0000000000..a343757db8 --- /dev/null +++ b/mcs/errors/cs7007.cs @@ -0,0 +1,9 @@ +// CS7007: `X' is not a static class. A using namespace directive can only be applied to static classes or namespace +// Line: 5 +// Compiler options: -langversion:6 + +using X; + +class X +{ +} \ No newline at end of file diff --git a/mcs/errors/cs7023-2.cs b/mcs/errors/cs7023-2.cs new file mode 100644 index 0000000000..ee14e24f96 --- /dev/null +++ b/mcs/errors/cs7023-2.cs @@ -0,0 +1,10 @@ +// CS7023: The second operand of `is' or `as' operator cannot be static type `X' +// Line: 8 + +static class X +{ + public static void Main () + { + var v = null is X; + } +} \ No newline at end of file diff --git a/mcs/errors/cs7023.cs b/mcs/errors/cs7023.cs new file mode 100644 index 0000000000..dae17caa41 --- /dev/null +++ b/mcs/errors/cs7023.cs @@ -0,0 +1,10 @@ +// CS7023: The second operand of `is' or `as' operator cannot be static type `X' +// Line: 8 + +static class X +{ + public static void Main () + { + var v = null as X; + } +} \ No newline at end of file diff --git a/mcs/errors/cs7025.cs b/mcs/errors/cs7025.cs new file mode 100644 index 0000000000..59eca472d2 --- /dev/null +++ b/mcs/errors/cs7025.cs @@ -0,0 +1,13 @@ +// CS7025: Inconsistent accessibility: event type `System.Action' is less accessible than event `C.E' +// Line: 8 + +using System; + +public class C +{ + public event Action E; +} + +interface I +{ +} \ No newline at end of file diff --git a/mcs/errors/cs7030.cs b/mcs/errors/cs7030.cs new file mode 100644 index 0000000000..01abf11288 --- /dev/null +++ b/mcs/errors/cs7030.cs @@ -0,0 +1,6 @@ +// CS7030: Friend assembly reference cannot have `null' value +// Line: 6 + +using System.Runtime.CompilerServices; + +[assembly: InternalsVisibleTo (null)] diff --git a/mcs/errors/cs7034-2.cs b/mcs/errors/cs7034-2.cs new file mode 100644 index 0000000000..b769869436 --- /dev/null +++ b/mcs/errors/cs7034-2.cs @@ -0,0 +1,6 @@ +// CS7034: The specified version string `2.0.*.*' does not conform to the required format - major[.minor[.build[.revision]]] +// Line: 6 + +using System.Reflection; + +[assembly: AssemblyVersion("2.0.*.*")] diff --git a/mcs/errors/cs7034-3.cs b/mcs/errors/cs7034-3.cs new file mode 100644 index 0000000000..a406b0f7d6 --- /dev/null +++ b/mcs/errors/cs7034-3.cs @@ -0,0 +1,6 @@ +// CS7034: The specified version string `2.*' does not conform to the required format - major[.minor[.build[.revision]]] +// Line: 6 + +using System.Reflection; + +[assembly: AssemblyVersion("2.*")] diff --git a/mcs/errors/cs0647-17.cs b/mcs/errors/cs7034.cs similarity index 52% rename from mcs/errors/cs0647-17.cs rename to mcs/errors/cs7034.cs index 88117de831..071535be25 100644 --- a/mcs/errors/cs0647-17.cs +++ b/mcs/errors/cs7034.cs @@ -1,4 +1,4 @@ -// Cs0647: Error during emitting `System.Reflection.AssemblyVersionAttribute' attribute. The reason is `Specified version `0.0.0.80420' is not valid' +// CS7034: The specified version string `0.0.0.80420' does not conform to the required format - major[.minor[.build[.revision]]] // Line: 7 using System; diff --git a/mcs/errors/cs7035.cs b/mcs/errors/cs7035.cs new file mode 100644 index 0000000000..0d27cb00be --- /dev/null +++ b/mcs/errors/cs7035.cs @@ -0,0 +1,7 @@ +// CS7035: The specified version string `1.*' does not conform to the recommended format major.minor.build.revision +// Line: 7 +// Compiler options: -warnaserror + +using System.Reflection; + +[assembly: AssemblyFileVersion ("1.*")] diff --git a/mcs/errors/cs7042-2.cs b/mcs/errors/cs7042-2.cs new file mode 100644 index 0000000000..a70c129019 --- /dev/null +++ b/mcs/errors/cs7042-2.cs @@ -0,0 +1,10 @@ +// CS7042: The DllImport attribute cannot be applied to a method that is generic or contained in a generic type +// Line: 9 + +using System.Runtime.InteropServices; + +public class C +{ + [DllImport ("my.dll")] + static extern void Foo (); +} \ No newline at end of file diff --git a/mcs/errors/cs7042.cs b/mcs/errors/cs7042.cs new file mode 100644 index 0000000000..efebf84dc6 --- /dev/null +++ b/mcs/errors/cs7042.cs @@ -0,0 +1,10 @@ +// CS7042: The DllImport attribute cannot be applied to a method that is generic or contained in a generic type +// Line: 9 + +using System.Runtime.InteropServices; + +public class C +{ + [DllImport ("my.dll")] + static extern void Foo (); +} \ No newline at end of file diff --git a/mcs/errors/cs0647-9.cs b/mcs/errors/cs7049.cs similarity index 56% rename from mcs/errors/cs0647-9.cs rename to mcs/errors/cs7049.cs index a7a1b38729..91114e8afc 100644 --- a/mcs/errors/cs0647-9.cs +++ b/mcs/errors/cs7049.cs @@ -1,5 +1,5 @@ -// CS0647: Error during emitting `System.Security.Permissions.PrincipalPermissionAttribute' attribute. The reason is `SecurityAction is out of range' -// Line : 10 +// CS7049: Security attribute `System.Security.Permissions.PrincipalPermissionAttribute' has an invalid SecurityAction value `100' +// Line: 10 using System; using System.Security; diff --git a/mcs/errors/cs0647-2.cs b/mcs/errors/cs7050.cs similarity index 50% rename from mcs/errors/cs0647-2.cs rename to mcs/errors/cs7050.cs index 5e05cfb18a..6909f18500 100644 --- a/mcs/errors/cs0647-2.cs +++ b/mcs/errors/cs7050.cs @@ -1,5 +1,5 @@ -// CS0647: Error during emitting `System.Security.Permissions.SecurityPermissionAttribute' attribute. The reason is `SecurityAction `Demand' is not valid for this declaration' -// Line : 10 +// CS7050: SecurityAction value `System.Security.Permissions.SecurityAction' is invalid for security attributes applied to an assembly +// Line: 10 using System; using System.Security; diff --git a/mcs/errors/cs0647-3.cs b/mcs/errors/cs7051.cs similarity index 57% rename from mcs/errors/cs0647-3.cs rename to mcs/errors/cs7051.cs index 272855dcfc..2d18f11b4a 100644 --- a/mcs/errors/cs0647-3.cs +++ b/mcs/errors/cs7051.cs @@ -1,5 +1,5 @@ -// CS0647: Error during emitting `System.Security.Permissions.SecurityPermissionAttribute' attribute. The reason is `SecurityAction `RequestMinimum' is not valid for this declaration' -// Line : 10 +// CS7051: SecurityAction value `System.Security.Permissions.SecurityAction' is invalid for security attributes applied to a type or a method +// Line: 10 using System; using System.Security; diff --git a/mcs/errors/cs0647-11.cs b/mcs/errors/cs7055-2.cs similarity index 59% rename from mcs/errors/cs0647-11.cs rename to mcs/errors/cs7055-2.cs index aa5c0e3f95..f2c15a8d22 100644 --- a/mcs/errors/cs0647-11.cs +++ b/mcs/errors/cs7055-2.cs @@ -1,4 +1,4 @@ -// CS0647: Error during emitting `System.Runtime.InteropServices.MarshalAsAttribute' attribute. The reason is `Specified unmanaged type is only valid on fields' +// CS7055: Unmanaged type `ByValArray' is only valid for fields // Line: 10 using System; diff --git a/mcs/errors/cs0647-10.cs b/mcs/errors/cs7055.cs similarity index 59% rename from mcs/errors/cs0647-10.cs rename to mcs/errors/cs7055.cs index aa5c0e3f95..f2c15a8d22 100644 --- a/mcs/errors/cs0647-10.cs +++ b/mcs/errors/cs7055.cs @@ -1,4 +1,4 @@ -// CS0647: Error during emitting `System.Runtime.InteropServices.MarshalAsAttribute' attribute. The reason is `Specified unmanaged type is only valid on fields' +// CS7055: Unmanaged type `ByValArray' is only valid for fields // Line: 10 using System; diff --git a/mcs/errors/cs0647-16.cs b/mcs/errors/cs7059.cs similarity index 57% rename from mcs/errors/cs0647-16.cs rename to mcs/errors/cs7059.cs index 41c3e0572c..f19fd02f36 100644 --- a/mcs/errors/cs0647-16.cs +++ b/mcs/errors/cs7059.cs @@ -1,4 +1,4 @@ -// CS0647: Error during emitting `System.Reflection.AssemblyCultureAttribute' attribute. The reason is `The executables cannot be satelite assemblies, remove the attribute or keep it empty' +// CS7059: Executables cannot be satellite assemblies. Remove the attribute or keep it empty // Line: 7 using System; diff --git a/mcs/errors/cs0647-5.cs b/mcs/errors/cs7070-2.cs similarity index 76% rename from mcs/errors/cs0647-5.cs rename to mcs/errors/cs7070-2.cs index 20917f3925..e618405b3c 100644 --- a/mcs/errors/cs0647-5.cs +++ b/mcs/errors/cs7070-2.cs @@ -1,5 +1,5 @@ -// CS0647: Error during emitting `DebugPermissionAttribute' attribute. The reason is `it is attached to invalid parent' -// Line : 11 +// CS7070: Security attribute `DebugPermissionAttribute' is not valid on this declaration type. Security attributes are only valid on assembly, type and method declarations +// Line: 11 using System; using System.Security; diff --git a/mcs/errors/cs0647-7.cs b/mcs/errors/cs7070-3.cs similarity index 76% rename from mcs/errors/cs0647-7.cs rename to mcs/errors/cs7070-3.cs index 314fafed73..907993dd31 100644 --- a/mcs/errors/cs0647-7.cs +++ b/mcs/errors/cs7070-3.cs @@ -1,5 +1,5 @@ -// CS0647: Error during emitting `DebugPermissionAttribute' attribute. The reason is `it is attached to invalid parent' -// Line : 11 +// CS7070: Security attribute `DebugPermissionAttribute' is not valid on this declaration type. Security attributes are only valid on assembly, type and method declarations +// Line: 11 using System; using System.Security; diff --git a/mcs/errors/cs0647-6.cs b/mcs/errors/cs7070-4.cs similarity index 75% rename from mcs/errors/cs0647-6.cs rename to mcs/errors/cs7070-4.cs index 9e7c37e96b..a2c43a5d29 100644 --- a/mcs/errors/cs0647-6.cs +++ b/mcs/errors/cs7070-4.cs @@ -1,5 +1,5 @@ -// CS0647: Error during emitting `DebugPermissionAttribute' attribute. The reason is `it is attached to invalid parent' -// Line : 11 +// CS7070: Security attribute `DebugPermissionAttribute' is not valid on this declaration type. Security attributes are only valid on assembly, type and method declarations +// Line: 11 using System; using System.Security; diff --git a/mcs/errors/cs0647-4.cs b/mcs/errors/cs7070.cs similarity index 73% rename from mcs/errors/cs0647-4.cs rename to mcs/errors/cs7070.cs index d799ceee36..599a1808ff 100644 --- a/mcs/errors/cs0647-4.cs +++ b/mcs/errors/cs7070.cs @@ -1,5 +1,5 @@ -// CS0647: Error during emitting `DebugPermissionAttribute' attribute. The reason is `it is attached to invalid parent' -// Line : 10 +// CS7070: Security attribute `DebugPermissionAttribute' is not valid on this declaration type. Security attributes are only valid on assembly, type and method declarations +// Line: 10 using System; using System.Security; diff --git a/mcs/errors/cs7080.cs b/mcs/errors/cs7080.cs new file mode 100644 index 0000000000..4da50751b9 --- /dev/null +++ b/mcs/errors/cs7080.cs @@ -0,0 +1,12 @@ +// CS7080: The CallerMemberNameAttribute applied to parameter `o' will have no effect. It is overridden by the CallerFilePathAttribute +// Line: 9 +// Compiler options: -warnaserror + +using System.Runtime.CompilerServices; + +class D +{ + void Foo ([CallerMemberName, CallerFilePath] object o = null) + { + } +} \ No newline at end of file diff --git a/mcs/errors/cs7081.cs b/mcs/errors/cs7081.cs new file mode 100644 index 0000000000..20597c1465 --- /dev/null +++ b/mcs/errors/cs7081.cs @@ -0,0 +1,12 @@ +// CS7081: The CallerMemberNameAttribute applied to parameter `o' will have no effect. It is overridden by the CallerLineNumberAttribute +// Line: 9 +// Compiler options: -warnaserror + +using System.Runtime.CompilerServices; + +class D +{ + void Foo ([CallerMemberName, CallerLineNumber] object o = null) + { + } +} \ No newline at end of file diff --git a/mcs/errors/cs7082.cs b/mcs/errors/cs7082.cs new file mode 100644 index 0000000000..1b02bd5c8d --- /dev/null +++ b/mcs/errors/cs7082.cs @@ -0,0 +1,12 @@ +// CS7082: The CallerFilePathAttribute applied to parameter `o' will have no effect. It is overridden by the CallerLineNumberAttribute +// Line: 9 +// Compiler options: -warnaserror + +using System.Runtime.CompilerServices; + +class D +{ + void Foo ([CallerFilePath, CallerLineNumber] object o = null) + { + } +} \ No newline at end of file diff --git a/mcs/errors/cs7083-2.cs b/mcs/errors/cs7083-2.cs new file mode 100644 index 0000000000..14d378fee8 --- /dev/null +++ b/mcs/errors/cs7083-2.cs @@ -0,0 +1,10 @@ +// CS7083: Expression must be implicitly convertible to Boolean or its type `C' must define operator `false' +// Line: 8 + +class C +{ + dynamic M (dynamic d) + { + return this && d; + } +} \ No newline at end of file diff --git a/mcs/errors/cs7083.cs b/mcs/errors/cs7083.cs new file mode 100644 index 0000000000..5f359c3df6 --- /dev/null +++ b/mcs/errors/cs7083.cs @@ -0,0 +1,10 @@ +// CS7083: Expression must be implicitly convertible to Boolean or its type `C' must define operator `true' +// Line: 8 + +class C +{ + dynamic M (dynamic d) + { + return this || d; + } +} \ No newline at end of file diff --git a/mcs/errors/cs7094.cs b/mcs/errors/cs7094.cs new file mode 100644 index 0000000000..93cd6372f8 --- /dev/null +++ b/mcs/errors/cs7094.cs @@ -0,0 +1,15 @@ +// CS7094: The `await' operator cannot be used in the filter expression of a catch clause +// Line: 12 + +using System.Threading.Tasks; + +class Test +{ + async static Task M1 () + { + try { + } + catch if (await Task.Factory.StartNew (() => false)) { + } + } +} \ No newline at end of file diff --git a/mcs/errors/cs8009.cs b/mcs/errors/cs8009.cs new file mode 100644 index 0000000000..851e06653e --- /dev/null +++ b/mcs/errors/cs8009.cs @@ -0,0 +1,13 @@ +// CS8009: Referenced assembly `CS8009-lib' has different culture setting of `en-US' +// Line: 0 +// Compiler options: -r:CS8009-lib.dll -warnaserror + +using System; + +class Program +{ + static void Main () + { + Console.WriteLine (typeof (Lang)); + } +} diff --git a/mcs/errors/cs0127-4.cs b/mcs/errors/cs8030-2.cs similarity index 56% rename from mcs/errors/cs0127-4.cs rename to mcs/errors/cs8030-2.cs index 64e3f96ae0..231f2113a5 100644 --- a/mcs/errors/cs0127-4.cs +++ b/mcs/errors/cs8030-2.cs @@ -1,4 +1,4 @@ -// CS0127: `D': A return keyword must not be followed by any expression when delegate returns void +// CS8030: Anonymous function or lambda expression converted to a void returning delegate cannot return a value // Line: 9 delegate void D (int x); diff --git a/mcs/errors/cs0127-2.cs b/mcs/errors/cs8030-3.cs similarity index 56% rename from mcs/errors/cs0127-2.cs rename to mcs/errors/cs8030-3.cs index 1b36551e10..1ff2894089 100644 --- a/mcs/errors/cs0127-2.cs +++ b/mcs/errors/cs8030-3.cs @@ -1,4 +1,4 @@ -// CS0127: `C.GetValue()': A return keyword must not be followed by any expression when method returns void +// CS8030: Anonymous function or lambda expression converted to a void returning delegate cannot return a value // Line: 11 using System; diff --git a/mcs/errors/cs0127-3.cs b/mcs/errors/cs8030.cs similarity index 53% rename from mcs/errors/cs0127-3.cs rename to mcs/errors/cs8030.cs index 5e39cb9da7..4f2751c6ea 100644 --- a/mcs/errors/cs0127-3.cs +++ b/mcs/errors/cs8030.cs @@ -1,4 +1,4 @@ -// CS0127: `System.Action': A return keyword must not be followed by any expression when delegate returns void +// CS8030: Anonymous function or lambda expression converted to a void returning delegate cannot return a value // Line: 10 using System; diff --git a/mcs/errors/cs8031.cs b/mcs/errors/cs8031.cs new file mode 100644 index 0000000000..dbb83bc118 --- /dev/null +++ b/mcs/errors/cs8031.cs @@ -0,0 +1,17 @@ +// CS8031: Async lambda expression or anonymous method converted to a `Task' cannot return a value. Consider returning `Task' +// Line: 12 + +using System; +using System.Threading.Tasks; + +class Test +{ + public static void Main() + { + Func t = async delegate { + return null; + }; + + return; + } +} diff --git a/mcs/errors/cs9001.cs b/mcs/errors/cs8036.cs similarity index 100% rename from mcs/errors/cs9001.cs rename to mcs/errors/cs8036.cs diff --git a/mcs/errors/cs9002.cs b/mcs/errors/cs8037.cs similarity index 100% rename from mcs/errors/cs9002.cs rename to mcs/errors/cs8037.cs diff --git a/mcs/errors/cs9003.cs b/mcs/errors/cs8038.cs similarity index 52% rename from mcs/errors/cs9003.cs rename to mcs/errors/cs8038.cs index 00780bc101..76dc74646d 100644 --- a/mcs/errors/cs9003.cs +++ b/mcs/errors/cs8038.cs @@ -1,4 +1,4 @@ -// CS9003: Primary constructor of type `Test' has parameter of same name as type parameter `T' +// CS8038: Primary constructor of type `Test' has parameter of same name as type parameter `T' // Line: 4 class Test(T T) diff --git a/mcs/errors/cs9004.cs b/mcs/errors/cs8039.cs similarity index 51% rename from mcs/errors/cs9004.cs rename to mcs/errors/cs8039.cs index d367928536..7793ffdd72 100644 --- a/mcs/errors/cs9004.cs +++ b/mcs/errors/cs8039.cs @@ -1,4 +1,4 @@ -// CS9004: Primary constructor of type `Test' has parameter of same name as containing type +// CS8039: Primary constructor of type `Test' has parameter of same name as containing type // Line: 4 class Test(object Test) diff --git a/mcs/errors/cs8041.cs b/mcs/errors/cs8041.cs new file mode 100644 index 0000000000..fa403dd25c --- /dev/null +++ b/mcs/errors/cs8041.cs @@ -0,0 +1,13 @@ +// CS8041: Primary constructor already has a body +// Line: 10 + +class C (int arg) +{ + { + arg = 1; + } + + { + arg = 2; + } +} diff --git a/mcs/errors/cs8043.cs b/mcs/errors/cs8043.cs new file mode 100644 index 0000000000..b7f9da825f --- /dev/null +++ b/mcs/errors/cs8043.cs @@ -0,0 +1,10 @@ +// CS8043: `S.S(long)': Structs with primary constructor cannot specify default constructor initializer +// Line: 6 + +struct S (int x) +{ + public S (long x) + : this () + { + } +} diff --git a/mcs/errors/cs8049.cs b/mcs/errors/cs8049.cs new file mode 100644 index 0000000000..0689057684 --- /dev/null +++ b/mcs/errors/cs8049.cs @@ -0,0 +1,11 @@ +// CS8049: Implemented interfaces cannot have arguments +// Line: 6 + +using System; + +class ID () : IDisposable () +{ + public void Dispose () + { + } +} diff --git a/mcs/errors/cs8050.cs b/mcs/errors/cs8050.cs new file mode 100644 index 0000000000..2f4b88bfc2 --- /dev/null +++ b/mcs/errors/cs8050.cs @@ -0,0 +1,7 @@ +// CS8050: `C.P': Only auto-implemented properties can have initializers +// Line: 6 + +abstract class C +{ + public abstract int P { get; } = 4; +} \ No newline at end of file diff --git a/mcs/errors/cs8051.cs b/mcs/errors/cs8051.cs new file mode 100644 index 0000000000..7935efbe60 --- /dev/null +++ b/mcs/errors/cs8051.cs @@ -0,0 +1,7 @@ +// CS8051: Auto-implemented property `Test.Property' must have set accessor or initializer +// Line: 6 + +public abstract class Test +{ + public string Property { get; } +} diff --git a/mcs/errors/cs8052.cs b/mcs/errors/cs8052.cs new file mode 100644 index 0000000000..bccf0157fa --- /dev/null +++ b/mcs/errors/cs8052.cs @@ -0,0 +1,7 @@ +// CS8052: Auto-implemented property `V.P' must have get accessor +// Line: 6 + +class V +{ + public object P { set; } = 1; +} \ No newline at end of file diff --git a/mcs/errors/cs8053.cs b/mcs/errors/cs8053.cs new file mode 100644 index 0000000000..319835ff09 --- /dev/null +++ b/mcs/errors/cs8053.cs @@ -0,0 +1,7 @@ +// CS8053: `I.P': Properties inside interfaces cannot have initializers +// Line: 6 + +interface I +{ + int P { get; } = 4; +} \ No newline at end of file diff --git a/mcs/errors/cs8054-2.cs b/mcs/errors/cs8054-2.cs new file mode 100644 index 0000000000..e633f17606 --- /dev/null +++ b/mcs/errors/cs8054-2.cs @@ -0,0 +1,6 @@ +// CS0573: `A.a': Structs without explicit constructors cannot contain members with initializers +// Line: 5 + +partial struct A { + int a = 1; +} diff --git a/mcs/errors/cs8054-3.cs b/mcs/errors/cs8054-3.cs new file mode 100644 index 0000000000..b06047fb6e --- /dev/null +++ b/mcs/errors/cs8054-3.cs @@ -0,0 +1,6 @@ +// CS0573: `A.a': Structs without explicit constructors cannot contain members with initializers +// Line: 5 + +struct A { + int a = 1; +} diff --git a/mcs/errors/cs8054.cs b/mcs/errors/cs8054.cs new file mode 100644 index 0000000000..4b8fc2ed44 --- /dev/null +++ b/mcs/errors/cs8054.cs @@ -0,0 +1,7 @@ +// CS8054: `S.P': Structs without explicit constructors cannot contain members with initializers +// Line: 6 + +struct S +{ + public decimal P { get; } = -3; +} \ No newline at end of file diff --git a/mcs/errors/cs9005.cs b/mcs/errors/cs9005.cs deleted file mode 100644 index 85e4c01726..0000000000 --- a/mcs/errors/cs9005.cs +++ /dev/null @@ -1,10 +0,0 @@ -// CS9005: Constructor initializer cannot access primary constructor parameters -// Line: 7 - -class Test(string s) -{ - public Test () - : this (s) - { - } -} \ No newline at end of file diff --git a/mcs/errors/cs9007.cs b/mcs/errors/cs9007.cs deleted file mode 100644 index 05e9e3dfb1..0000000000 --- a/mcs/errors/cs9007.cs +++ /dev/null @@ -1,12 +0,0 @@ -// CS9007: Primary constructor parameter `value' is not available in this context when using ref or out modifier -// Line: 12 - -class X (ref double value) -{ - public double Prop { - get { - return value; - } - } -} - diff --git a/mcs/jay/main.c b/mcs/jay/main.c index b47867d3e3..fcac218b1d 100644 --- a/mcs/jay/main.c +++ b/mcs/jay/main.c @@ -256,11 +256,17 @@ unsigned n; return (p); } +#ifdef __GNUC__ +#define GNUC_UNUSED __attribute__((__unused__)) +#else +#define GNUC_UNUSED +#endif create_file_names() { int i, len; char *tmpdir; + int mkstemp_res GNUC_UNUSED; #if defined(_WIN32) && !defined(__CYGWIN32__) && !defined(__CYGWIN__) tmpdir = "."; @@ -303,9 +309,9 @@ create_file_names() prolog_file_name[len + 5] = 'p'; local_file_name[len + 5] = 'l'; - mkstemp(action_file_name); - mkstemp(prolog_file_name); - mkstemp(local_file_name); + mkstemp_res = mkstemp(action_file_name); + mkstemp_res = mkstemp(prolog_file_name); + mkstemp_res = mkstemp(local_file_name); len = strlen(file_prefix); diff --git a/mcs/mcs/anonymous.cs b/mcs/mcs/anonymous.cs index 9431e499d0..9d9558f7ec 100644 --- a/mcs/mcs/anonymous.cs +++ b/mcs/mcs/anonymous.cs @@ -1321,16 +1321,28 @@ namespace Mono.CSharp { return Parameters; } - protected override Expression DoResolve (ResolveContext ec) + protected override Expression DoResolve (ResolveContext rc) { - if (ec.HasSet (ResolveContext.Options.ConstantScope)) { - ec.Report.Error (1706, loc, "Anonymous methods and lambda expressions cannot be used in the current context"); + if (rc.HasSet (ResolveContext.Options.ConstantScope)) { + rc.Report.Error (1706, loc, "Anonymous methods and lambda expressions cannot be used in the current context"); return null; } // - // Set class type, set type + // Update top-level block generated duting parsing with actual top-level block // + if (rc.HasAny (ResolveContext.Options.FieldInitializerScope | ResolveContext.Options.BaseInitializer) && rc.CurrentMemberDefinition.Parent.PartialContainer.PrimaryConstructorParameters != null) { + var tb = rc.ConstructorBlock.ParametersBlock.TopBlock; + if (Block.TopBlock != tb) { + Block b = Block; + while (b.Parent != Block.TopBlock && b != Block.TopBlock) + b = b.Parent; + + b.Parent = tb; + tb.IncludeBlock (Block, Block.TopBlock); + b.ParametersBlock.TopBlock = tb; + } + } eclass = ExprClass.Value; @@ -1341,7 +1353,7 @@ namespace Mono.CSharp { // type = InternalType.AnonymousMethod; - if (!DoResolveParameters (ec)) + if (!DoResolveParameters (rc)) return null; return this; @@ -1357,9 +1369,12 @@ namespace Mono.CSharp { // nothing, as we only exist to not do anything. } - public static void Error_AddressOfCapturedVar (ResolveContext ec, IVariableReference var, Location loc) + public static void Error_AddressOfCapturedVar (ResolveContext rc, IVariableReference var, Location loc) { - ec.Report.Error (1686, loc, + if (rc.CurrentAnonymousMethod is AsyncInitializer) + return; + + rc.Report.Error (1686, loc, "Local variable or parameter `{0}' cannot have their address taken and be used inside an anonymous method, lambda expression or query expression", var.Name); } @@ -1723,6 +1738,7 @@ namespace Mono.CSharp { Modifiers modifiers; TypeDefinition parent = null; TypeParameters hoisted_tparams = null; + ParametersCompiled method_parameters = parameters; var src_block = Block.Original.Explicit; if (src_block.HasCapturedVariable || src_block.HasCapturedThis) { @@ -1770,6 +1786,18 @@ namespace Mono.CSharp { parent = storey = ec.CurrentAnonymousMethod.Storey; modifiers = Modifiers.STATIC | Modifiers.PRIVATE; + + // + // Convert generated method to closed delegate method where unused + // this argument is generated during compilation which speeds up dispatch + // by about 25% + // + + // + // Disabled for now due to JIT bug + // + //method_parameters = ParametersCompiled.Prefix (method_parameters, + // new Parameter (null, null, 0, null, loc), ec.Module.Compiler.BuiltinTypes.Object); } if (storey == null && hoisted_tparams == null) @@ -1795,7 +1823,7 @@ namespace Mono.CSharp { return new AnonymousMethodMethod (parent, this, storey, new TypeExpression (ReturnType, Location), modifiers, - member_name, parameters); + member_name, method_parameters); } protected override Expression DoResolve (ResolveContext ec) @@ -1824,7 +1852,7 @@ namespace Mono.CSharp { } bool is_static = (method.ModFlags & Modifiers.STATIC) != 0; - if (is_static && am_cache == null) { + if (is_static && am_cache == null && !ec.IsStaticConstructor) { // // Creates a field cache to store delegate instance if it's not generic // diff --git a/mcs/mcs/argument.cs b/mcs/mcs/argument.cs index 13d0526cc2..f546a62adf 100644 --- a/mcs/mcs/argument.cs +++ b/mcs/mcs/argument.cs @@ -276,6 +276,16 @@ namespace Mono.CSharp ordered.Add (arg); } + public override void FlowAnalysis (FlowAnalysisContext fc, List movable = null) + { + foreach (var arg in ordered) { + if (arg.ArgType != Argument.AType.Out) + arg.FlowAnalysis (fc); + } + + base.FlowAnalysis (fc, ordered); + } + public override Arguments Emit (EmitContext ec, bool dup_args, bool prepareAwait) { foreach (var a in ordered) { @@ -497,7 +507,7 @@ namespace Mono.CSharp return null; } - public void FlowAnalysis (FlowAnalysisContext fc) + public virtual void FlowAnalysis (FlowAnalysisContext fc, List movable = null) { bool has_out = false; foreach (var arg in args) { @@ -506,7 +516,14 @@ namespace Mono.CSharp continue; } - arg.FlowAnalysis (fc); + if (movable == null) { + arg.FlowAnalysis (fc); + continue; + } + + var ma = arg as MovableArgument; + if (ma != null && !movable.Contains (ma)) + arg.FlowAnalysis (fc); } if (!has_out) diff --git a/mcs/mcs/assembly.cs b/mcs/mcs/assembly.cs index cd77ac2622..f93c038396 100644 --- a/mcs/mcs/assembly.cs +++ b/mcs/mcs/assembly.cs @@ -207,7 +207,7 @@ namespace Mono.CSharp return; if (Compiler.Settings.Target == Target.Exe) { - a.Error_AttributeEmitError ("The executables cannot be satelite assemblies, remove the attribute or keep it empty"); + Report.Error (7059, a.Location, "Executables cannot be satellite assemblies. Remove the attribute or keep it empty"); return; } @@ -231,7 +231,8 @@ namespace Mono.CSharp var vinfo = IsValidAssemblyVersion (value, true); if (vinfo == null) { - a.Error_AttributeEmitError (string.Format ("Specified version `{0}' is not valid", value)); + Report.Error (7034, a.Location, "The specified version string `{0}' does not conform to the required format - major[.minor[.build[.revision]]]", + value); return; } @@ -322,13 +323,18 @@ namespace Mono.CSharp if (a.Type == pa.InternalsVisibleTo) { string assembly_name = a.GetString (); + if (assembly_name == null) { + Report.Error (7030, a.Location, "Friend assembly reference cannot have `null' value"); + return; + } + if (assembly_name.Length == 0) return; #if STATIC ParsedAssemblyName aname; ParseAssemblyResult r = Fusion.ParseAssemblyName (assembly_name, out aname); if (r != ParseAssemblyResult.OK) { - Report.Warning (1700, 3, a.Location, "Assembly reference `{0}' is invalid and cannot be resolved", + Report.Warning (1700, 3, a.Location, "Friend assembly reference `{0}' is invalid and cannot be resolved", assembly_name); return; } @@ -353,7 +359,7 @@ namespace Mono.CSharp } else if (a.Type == pa.AssemblyFileVersion) { vi_product_version = a.GetString (); if (string.IsNullOrEmpty (vi_product_version) || IsValidAssemblyVersion (vi_product_version, false) == null) { - Report.Warning (1607, 1, a.Location, "The version number `{0}' specified for `{1}' is invalid", + Report.Warning (7035, 1, a.Location, "The specified version string `{0}' does not conform to the recommended format major.minor.build.revision", vi_product_version, a.Name); return; } @@ -399,8 +405,8 @@ namespace Mono.CSharp } var ci = a.Assembly.GetName ().CultureInfo; - if (!ci.Equals (System.Globalization.CultureInfo.InvariantCulture)) { - Report.Warning (1607, 1, "Referenced assembly `{0}' has different culture setting of `{1}'", + if (!ci.Equals (CultureInfo.InvariantCulture)) { + Report.Warning (8009, 1, "Referenced assembly `{0}' has different culture setting of `{1}'", a.Name, ci.Name); } diff --git a/mcs/mcs/assign.cs b/mcs/mcs/assign.cs index 356768d8b7..472a393739 100644 --- a/mcs/mcs/assign.cs +++ b/mcs/mcs/assign.cs @@ -645,6 +645,7 @@ namespace Mono.CSharp { public override void FlowAnalysis (FlowAnalysisContext fc) { source.FlowAnalysis (fc); + ((FieldExpr) target).SetFieldAssigned (fc); } public bool IsDefaultInitializer { diff --git a/mcs/mcs/async.cs b/mcs/mcs/async.cs index 7ed03d2bad..0029cf8940 100644 --- a/mcs/mcs/async.cs +++ b/mcs/mcs/async.cs @@ -74,10 +74,6 @@ namespace Mono.CSharp protected override Expression DoResolve (ResolveContext rc) { - if (rc.HasSet (ResolveContext.Options.FinallyScope)) { - rc.Report.Error (1984, loc, "The `await' operator cannot be used in the body of a finally clause"); - } - if (rc.HasSet (ResolveContext.Options.LockScope)) { rc.Report.Error (1996, loc, "The `await' operator cannot be used in the body of a lock statement"); @@ -244,7 +240,7 @@ namespace Mono.CSharp var fe_awaiter = new FieldExpr (awaiter, loc); fe_awaiter.InstanceExpression = new CompilerGeneratedThis (ec.CurrentType, loc); - Label skip_continuation = ec.DefineLabel (); + Label skip_continuation = ec.DefineLabel (); using (ec.With (BuilderContext.Options.OmitDebugInfo, true)) { // @@ -324,10 +320,6 @@ namespace Mono.CSharp return false; } - if (bc.HasSet (ResolveContext.Options.CatchScope)) { - bc.Report.Error (1985, loc, "The `await' operator cannot be used in a catch clause"); - } - if (!base.Resolve (bc)) return false; @@ -447,6 +439,10 @@ namespace Mono.CSharp get; set; } + public StackFieldExpr HoistedReturnState { + get; set; + } + public override bool IsIterator { get { return false; @@ -464,9 +460,9 @@ namespace Mono.CSharp protected override BlockContext CreateBlockContext (BlockContext bc) { var ctx = base.CreateBlockContext (bc); - var lambda = bc.CurrentAnonymousMethod as LambdaMethod; - if (lambda != null) - return_inference = lambda.ReturnTypeInference; + var am = bc.CurrentAnonymousMethod as AnonymousMethodBody; + if (am != null) + return_inference = am.ReturnTypeInference; ctx.Set (ResolveContext.Options.TryScope); @@ -478,6 +474,24 @@ namespace Mono.CSharp throw new NotImplementedException (); } + public void EmitCatchBlock (EmitContext ec) + { + var catch_value = LocalVariable.CreateCompilerGenerated (ec.Module.Compiler.BuiltinTypes.Exception, block, Location); + + ec.BeginCatchBlock (catch_value.Type); + catch_value.EmitAssign (ec); + + ec.EmitThis (); + ec.EmitInt ((int) IteratorStorey.State.After); + ec.Emit (OpCodes.Stfld, storey.PC.Spec); + + ((AsyncTaskStorey) Storey).EmitSetException (ec, new LocalVariableReference (catch_value, Location)); + + ec.Emit (OpCodes.Leave, move_next_ok); + ec.EndExceptionBlock (); + + } + protected override void EmitMoveNextEpilogue (EmitContext ec) { var storey = (AsyncTaskStorey) Storey; @@ -509,7 +523,6 @@ namespace Mono.CSharp MethodSpec builder_factory; MethodSpec builder_start; PropertySpec task; - LocalVariable hoisted_return; int locals_captured; Dictionary> stack_fields; Dictionary> awaiter_fields; @@ -523,11 +536,7 @@ namespace Mono.CSharp #region Properties - public LocalVariable HoistedReturn { - get { - return hoisted_return; - } - } + public Expression HoistedReturnValue { get; set; } public TypeSpec ReturnType { get { @@ -576,7 +585,7 @@ namespace Mono.CSharp return field; } - public Field AddCapturedLocalVariable (TypeSpec type) + public Field AddCapturedLocalVariable (TypeSpec type, bool requiresUninitialized = false) { if (mutator != null) type = mutator.Mutate (type); @@ -584,7 +593,7 @@ namespace Mono.CSharp List existing_fields = null; if (stack_fields == null) { stack_fields = new Dictionary> (); - } else if (stack_fields.TryGetValue (type, out existing_fields)) { + } else if (stack_fields.TryGetValue (type, out existing_fields) && !requiresUninitialized) { foreach (var f in existing_fields) { if (f.IsAvailableForReuse) { f.IsAvailableForReuse = false; @@ -717,7 +726,7 @@ namespace Mono.CSharp set_state_machine.Block.AddStatement (new StatementExpression (new Invocation (mg, args))); if (has_task_return_type) { - hoisted_return = LocalVariable.CreateCompilerGenerated (bt.TypeArguments[0], StateMachineMethod.Block, Location); + HoistedReturnValue = TemporaryVariableReference.Create (bt.TypeArguments [0], StateMachineMethod.Block, Location); } return true; @@ -904,11 +913,11 @@ namespace Mono.CSharp }; Arguments args; - if (hoisted_return == null) { + if (HoistedReturnValue == null) { args = new Arguments (0); } else { args = new Arguments (1); - args.Add (new Argument (new LocalVariableReference (hoisted_return, Location))); + args.Add (new Argument (HoistedReturnValue)); } using (ec.With (BuilderContext.Options.OmitDebugInfo, true)) { diff --git a/mcs/mcs/attribute.cs b/mcs/mcs/attribute.cs index 2152674d2d..7318f26059 100644 --- a/mcs/mcs/attribute.cs +++ b/mcs/mcs/attribute.cs @@ -258,19 +258,22 @@ namespace Mono.CSharp { Report.Error (1970, loc, "Do not use `{0}' directly. Use `dynamic' keyword instead", GetSignatureForError ()); } - /// - /// This is rather hack. We report many emit attribute error with same error to be compatible with - /// csc. But because csc has to report them this way because error came from ilasm we needn't. - /// - public void Error_AttributeEmitError (string inner) + void Error_AttributeEmitError (string inner) { Report.Error (647, Location, "Error during emitting `{0}' attribute. The reason is `{1}'", Type.GetSignatureForError (), inner); } + public void Error_InvalidArgumentValue (TypeSpec attributeType) + { + Report.Error (591, Location, "Invalid value for argument to `{0}' attribute", attributeType.GetSignatureForError ()); + } + public void Error_InvalidSecurityParent () { - Error_AttributeEmitError ("it is attached to invalid parent"); + Report.Error (7070, Location, + "Security attribute `{0}' is not valid on this declaration type. Security attributes are only valid on assembly, type and method declarations", + Type.GetSignatureForError ()); } Attributable Owner { @@ -412,7 +415,7 @@ namespace Mono.CSharp { return ((MethodImplOptions) value | all) == all; } - static bool IsValidArgumentType (TypeSpec t) + public static bool IsValidArgumentType (TypeSpec t) { if (t.IsArray) { var ac = (ArrayContainer) t; @@ -831,6 +834,7 @@ namespace Mono.CSharp { { SecurityAction action = GetSecurityActionValue (); bool for_assembly = Target == AttributeTargets.Assembly || Target == AttributeTargets.Module; + var c = (Constant)pos_args [0].Expr; switch (action) { #pragma warning disable 618 @@ -853,11 +857,22 @@ namespace Mono.CSharp { #pragma warning restore 618 default: - Error_AttributeEmitError ("SecurityAction is out of range"); + Report.Error (7049, c.Location, "Security attribute `{0}' has an invalid SecurityAction value `{1}'", + Type.GetSignatureForError (), c.GetValueAsLiteral()); return false; } - Error_AttributeEmitError (String.Concat ("SecurityAction `", action, "' is not valid for this declaration")); + switch (Target) { + case AttributeTargets.Assembly: + Report.Error (7050, c.Location, "SecurityAction value `{0}' is invalid for security attributes applied to an assembly", + c.GetSignatureForError ()); + break; + default: + Report.Error (7051, c.Location, "SecurityAction value `{0}' is invalid for security attributes applied to a type or a method", + c.GetSignatureForError ()); + break; + } + return false; } @@ -1026,44 +1041,42 @@ namespace Mono.CSharp { return; } } else if (Type == predefined.Guid) { + string v = ((StringConstant) arg_expr).Value; try { - string v = ((StringConstant) arg_expr).Value; new Guid (v); - } catch (Exception e) { - Error_AttributeEmitError (e.Message); + } catch { + Error_InvalidArgumentValue (Type); return; } } else if (Type == predefined.AttributeUsage) { int v = ((IntConstant) ((EnumConstant) arg_expr).Child).Value; - if (v == 0) { - context.Module.Compiler.Report.Error (591, Location, "Invalid value for argument to `{0}' attribute", - "System.AttributeUsage"); - } + if (v == 0) + Error_InvalidArgumentValue (Type); } else if (Type == predefined.MarshalAs) { if (pos_args.Count == 1) { var u_type = (UnmanagedType) System.Enum.Parse (typeof (UnmanagedType), ((Constant) pos_args[0].Expr).GetValue ().ToString ()); if (u_type == UnmanagedType.ByValArray && !(Owner is FieldBase)) { - Error_AttributeEmitError ("Specified unmanaged type is only valid on fields"); + Report.Error (7055, pos_args [0].Expr.Location, "Unmanaged type `ByValArray' is only valid for fields"); } } } else if (Type == predefined.DllImport) { if (pos_args.Count == 1 && pos_args[0].Expr is Constant) { var value = ((Constant) pos_args[0].Expr).GetValue () as string; if (string.IsNullOrEmpty (value)) - Error_AttributeEmitError ("DllName cannot be empty or null"); + Error_InvalidArgumentValue (Type); } } else if (Type == predefined.MethodImpl) { if (pos_args.Count == 1) { var value = (int) ((Constant) arg_expr).GetValueAsLong (); if (!IsValidMethodImplOption (value)) { - Error_AttributeEmitError ("Incorrect argument value"); + Error_InvalidArgumentValue (Type); } } } } - arg_expr.EncodeAttributeValue (context, encoder, pt); + arg_expr.EncodeAttributeValue (context, encoder, pt, pt); } } @@ -1077,7 +1090,7 @@ namespace Mono.CSharp { encoder.Encode (na.Key.Type); encoder.Encode (na.Value.Name); - na.Value.Expr.EncodeAttributeValue (context, encoder, na.Key.Type); + na.Value.Expr.EncodeAttributeValue (context, encoder, na.Key.Type, na.Key.Type); } } else { encoder.EncodeEmptyNamedArguments (); @@ -1527,7 +1540,7 @@ namespace Mono.CSharp { Encode ((byte) 0x54); // property Encode (property.MemberType); Encode (property.Name); - value.EncodeAttributeValue (null, this, property.MemberType); + value.EncodeAttributeValue (null, this, property.MemberType, property.MemberType); } // @@ -1539,7 +1552,7 @@ namespace Mono.CSharp { Encode ((byte) 0x53); // field Encode (field.MemberType); Encode (field.Name); - value.EncodeAttributeValue (null, this, field.MemberType); + value.EncodeAttributeValue (null, this, field.MemberType, field.MemberType); } public void EncodeNamedArguments (T[] members, Constant[] values) where T : MemberSpec, IInterfaceMemberSpec @@ -1559,7 +1572,7 @@ namespace Mono.CSharp { Encode (member.MemberType); Encode (member.Name); - values [i].EncodeAttributeValue (null, this, member.MemberType); + values [i].EncodeAttributeValue (null, this, member.MemberType, member.MemberType); } } diff --git a/mcs/mcs/cfold.cs b/mcs/mcs/cfold.cs index bea0ee06df..befa0dbdbe 100644 --- a/mcs/mcs/cfold.cs +++ b/mcs/mcs/cfold.cs @@ -309,10 +309,10 @@ namespace Mono.CSharp { return new StringConstant (ec.BuiltinTypes, (string)left.GetValue () + (string)right.GetValue (), left.Location); - if (lt == InternalType.NullLiteral) + if (lt == InternalType.NullLiteral || left.IsNull) return new StringConstant (ec.BuiltinTypes, "" + right.GetValue (), left.Location); - if (rt == InternalType.NullLiteral) + if (rt == InternalType.NullLiteral || right.IsNull) return new StringConstant (ec.BuiltinTypes, left.GetValue () + "", left.Location); return null; @@ -367,8 +367,8 @@ namespace Mono.CSharp { return null; result = result.Reduce (ec, lt); - if (result == null) - return null; + if (result == null || lt.IsEnum) + return result; return new EnumConstant (result, lt); } diff --git a/mcs/mcs/class.cs.REMOVED.git-id b/mcs/mcs/class.cs.REMOVED.git-id index 8e66f724bc..f9b31627fe 100644 --- a/mcs/mcs/class.cs.REMOVED.git-id +++ b/mcs/mcs/class.cs.REMOVED.git-id @@ -1 +1 @@ -36761432a51625ec32235fbaa18324d0989c536d \ No newline at end of file +cda04c0e840c340724df311555d8b98032efd8bf \ No newline at end of file diff --git a/mcs/mcs/codegen.cs b/mcs/mcs/codegen.cs index 84394c99ed..b8bb6ac407 100644 --- a/mcs/mcs/codegen.cs +++ b/mcs/mcs/codegen.cs @@ -155,6 +155,12 @@ namespace Mono.CSharp get { return member_context.IsStatic; } } + public bool IsStaticConstructor { + get { + return member_context.IsStatic && (flags & Options.ConstructorScope) != 0; + } + } + public bool IsAnonymousStoreyMutateRequired { get { return CurrentAnonymousMethod != null && @@ -175,6 +181,12 @@ namespace Mono.CSharp } } + public bool NotifyEvaluatorOnStore { + get { + return Module.Evaluator != null && Module.Evaluator.ModificationListener != null; + } + } + // Has to be used for specific emitter errors only any // possible resolver errors have to be reported during Resolve public Report Report { @@ -204,6 +216,10 @@ namespace Mono.CSharp } } + public LocalVariable AsyncThrowVariable { get; set; } + + public List TryFinallyUnwind { get; set; } + #endregion public void AddStatementEpilog (IExpressionCleanup cleanupExpression) @@ -380,9 +396,9 @@ namespace Mono.CSharp // // Creates temporary field in current async storey // - public StackFieldExpr GetTemporaryField (TypeSpec type) + public StackFieldExpr GetTemporaryField (TypeSpec type, bool initializedFieldRequired = false) { - var f = AsyncTaskStorey.AddCapturedLocalVariable (type); + var f = AsyncTaskStorey.AddCapturedLocalVariable (type, initializedFieldRequired); var fexpr = new StackFieldExpr (f); fexpr.InstanceExpression = new CompilerGeneratedThis (CurrentType, Location.Null); return fexpr; @@ -518,8 +534,16 @@ namespace Mono.CSharp type = EnumSpec.GetUnderlyingType (type); switch (type.BuiltinType) { - case BuiltinTypeSpec.Type.Byte: case BuiltinTypeSpec.Type.Bool: + // + // Workaround MSIL limitation. Load bool element as single bit, + // bool array can actually store any byte value + // + ig.Emit (OpCodes.Ldelem_U1); + ig.Emit (OpCodes.Ldc_I4_0); + ig.Emit (OpCodes.Cgt_Un); + break; + case BuiltinTypeSpec.Type.Byte: ig.Emit (OpCodes.Ldelem_U1); break; case BuiltinTypeSpec.Type.SByte: @@ -734,8 +758,12 @@ namespace Mono.CSharp ig.Emit (OpCodes.Ldind_U1); break; case BuiltinTypeSpec.Type.SByte: + ig.Emit (OpCodes.Ldind_I1); + break; case BuiltinTypeSpec.Type.Bool: ig.Emit (OpCodes.Ldind_I1); + ig.Emit (OpCodes.Ldc_I4_0); + ig.Emit (OpCodes.Cgt_Un); break; case BuiltinTypeSpec.Type.ULong: case BuiltinTypeSpec.Type.Long: @@ -1036,7 +1064,7 @@ namespace Mono.CSharp } } - if (call_op == OpCodes.Callvirt && (InstanceExpression.Type.IsGenericParameter || InstanceExpression.Type.IsStruct)) { + if (call_op == OpCodes.Callvirt && (InstanceExpression.Type.IsGenericParameter || InstanceExpression.Type.IsStructOrEnum)) { ec.Emit (OpCodes.Constrained, InstanceExpression.Type); } @@ -1076,7 +1104,7 @@ namespace Mono.CSharp // // Push the instance expression // - if ((instance_type.IsStruct && (callOpcode == OpCodes.Callvirt || (callOpcode == OpCodes.Call && declaringType.IsStruct))) || + if ((instance_type.IsStructOrEnum && (callOpcode == OpCodes.Callvirt || (callOpcode == OpCodes.Call && declaringType.IsStruct))) || instance_type.IsGenericParameter || declaringType.IsNullableType) { // // If the expression implements IMemoryLocation, then @@ -1098,7 +1126,7 @@ namespace Mono.CSharp return ReferenceContainer.MakeType (ec.Module, instance_type); } - if (instance_type.IsEnum || instance_type.IsStruct) { + if (instance_type.IsStructOrEnum) { instance.Emit (ec); ec.Emit (OpCodes.Box, instance_type); return ec.BuiltinTypes.Object; diff --git a/mcs/mcs/constant.cs b/mcs/mcs/constant.cs index d37e0f01bf..8faec94e4c 100644 --- a/mcs/mcs/constant.cs +++ b/mcs/mcs/constant.cs @@ -522,7 +522,7 @@ namespace Mono.CSharp { return Value ? 1 : 0; } - public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType) + public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType) { enc.Encode (Value); } @@ -573,7 +573,7 @@ namespace Mono.CSharp { Value = v; } - public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType) + public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType) { enc.Encode (Value); } @@ -673,7 +673,7 @@ namespace Mono.CSharp { Value = v; } - public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType) + public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType) { enc.Encode ((ushort) Value); } @@ -801,7 +801,7 @@ namespace Mono.CSharp { Value = v; } - public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType) + public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType) { enc.Encode (Value); } @@ -904,7 +904,7 @@ namespace Mono.CSharp { Value = v; } - public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType) + public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType) { enc.Encode (Value); } @@ -1017,7 +1017,7 @@ namespace Mono.CSharp { Value = v; } - public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType) + public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType) { enc.Encode (Value); } @@ -1126,7 +1126,7 @@ namespace Mono.CSharp { Value = v; } - public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType) + public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType) { enc.Encode (Value); } @@ -1302,7 +1302,7 @@ namespace Mono.CSharp { Value = v; } - public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType) + public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType) { enc.Encode (Value); } @@ -1419,7 +1419,7 @@ namespace Mono.CSharp { Value = v; } - public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType) + public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType) { enc.Encode (Value); } @@ -1550,7 +1550,7 @@ namespace Mono.CSharp { Value = v; } - public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType) + public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType) { enc.Encode (Value); } @@ -1674,7 +1674,7 @@ namespace Mono.CSharp { return base.ConvertImplicitly (type); } - public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType) + public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType) { enc.Encode (Value); } @@ -1803,7 +1803,7 @@ namespace Mono.CSharp { Value = v; } - public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType) + public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType) { enc.Encode (Value); } @@ -2088,7 +2088,7 @@ namespace Mono.CSharp { ec.Emit (OpCodes.Ldstr, Value); } - public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType) + public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType) { // cast to object if (type != targetType) @@ -2153,7 +2153,7 @@ namespace Mono.CSharp { return base.CreateExpressionTree (ec); } - public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType) + public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType) { switch (targetType.BuiltinType) { case BuiltinTypeSpec.Type.Object: @@ -2174,7 +2174,7 @@ namespace Mono.CSharp { break; } - base.EncodeAttributeValue (rc, enc, targetType); + base.EncodeAttributeValue (rc, enc, targetType, parameterType); } public override void Emit (EmitContext ec) @@ -2314,6 +2314,11 @@ namespace Mono.CSharp { } } + public override bool ContainsEmitWithAwait () + { + return side_effect.ContainsEmitWithAwait (); + } + public override object GetValue () { return value.GetValue (); @@ -2341,6 +2346,11 @@ namespace Mono.CSharp { value.EmitSideEffect (ec); } + public override void FlowAnalysis (FlowAnalysisContext fc) + { + side_effect.FlowAnalysis (fc); + } + public override bool IsDefaultValue { get { return value.IsDefaultValue; } } diff --git a/mcs/mcs/context.cs b/mcs/mcs/context.cs index 8cbaeff0c5..873c92d24e 100644 --- a/mcs/mcs/context.cs +++ b/mcs/mcs/context.cs @@ -664,7 +664,7 @@ namespace Mono.CSharp ConstructorScope = 1 << 3, - AsyncBody = 1 << 4 + AsyncBody = 1 << 4, } // utility helper for CheckExpr, UnCheckExpr, Checked and Unchecked statements diff --git a/mcs/mcs/convert.cs b/mcs/mcs/convert.cs index 00be96b40a..df21c11d11 100644 --- a/mcs/mcs/convert.cs +++ b/mcs/mcs/convert.cs @@ -27,6 +27,15 @@ namespace Mono.CSharp { // static class Convert { + [Flags] + public enum UserConversionRestriction + { + None = 0, + ImplicitOnly = 1, + ProbingOnly = 1 << 1, + NullableSourceOnly = 1 << 2 + + } // // From a one-dimensional array-type S[] to System.Collections.IList and base // interfaces of this interface, provided there is an implicit reference conversion @@ -675,7 +684,7 @@ namespace Mono.CSharp { // public static bool ImplicitConversionExists (ResolveContext ec, Expression expr, TypeSpec target_type) { - if (ImplicitStandardConversionExists (expr, target_type)) + if (ImplicitStandardConversionExists (ec, expr, target_type)) return true; if (expr.Type == InternalType.AnonymousMethod) { @@ -686,21 +695,27 @@ namespace Mono.CSharp { return ame.ImplicitStandardConversionExists (ec, target_type); } + // Conversion from __arglist to System.ArgIterator + if (expr.Type == InternalType.Arglist) + return target_type == ec.Module.PredefinedTypes.ArgIterator.TypeSpec; + + return UserDefinedConversion (ec, expr, target_type, + UserConversionRestriction.ImplicitOnly | UserConversionRestriction.ProbingOnly, Location.Null) != null; + } + + public static bool ImplicitStandardConversionExists (ResolveContext rc, Expression expr, TypeSpec target_type) + { if (expr.eclass == ExprClass.MethodGroup) { - if (target_type.IsDelegate && ec.Module.Compiler.Settings.Version != LanguageVersion.ISO_1) { + if (target_type.IsDelegate && rc.Module.Compiler.Settings.Version != LanguageVersion.ISO_1) { MethodGroupExpr mg = expr as MethodGroupExpr; if (mg != null) - return DelegateCreation.ImplicitStandardConversionExists (ec, mg, target_type); + return DelegateCreation.ImplicitStandardConversionExists (rc, mg, target_type); } return false; } - // Conversion from __arglist to System.ArgIterator - if (expr.Type == InternalType.Arglist) - return target_type == ec.Module.PredefinedTypes.ArgIterator.TypeSpec; - - return UserDefinedConversion (ec, expr, target_type, true, true, Location.Null) != null; + return ImplicitStandardConversionExists (expr, target_type); } // @@ -911,7 +926,7 @@ namespace Mono.CSharp { // by making use of FindMostEncomp* methods. Applies the correct rules separately // for explicit and implicit conversion operators. // - static TypeSpec FindMostSpecificSource (List list, TypeSpec sourceType, Expression source, bool apply_explicit_conv_rules) + static TypeSpec FindMostSpecificSource (ResolveContext rc, List list, TypeSpec sourceType, Expression source, bool apply_explicit_conv_rules) { TypeSpec[] src_types_set = null; @@ -937,12 +952,16 @@ namespace Mono.CSharp { var candidate_set = new List (); foreach (TypeSpec param_type in src_types_set){ - if (ImplicitStandardConversionExists (source, param_type)) + if (ImplicitStandardConversionExists (rc, source, param_type)) candidate_set.Add (param_type); } - if (candidate_set.Count != 0) + if (candidate_set.Count != 0) { + if (source.eclass == ExprClass.MethodGroup) + return InternalType.FakeInternalType; + return FindMostEncompassedType (candidate_set); + } } // @@ -1010,7 +1029,7 @@ namespace Mono.CSharp { /// static public Expression ImplicitUserConversion (ResolveContext ec, Expression source, TypeSpec target, Location loc) { - return UserDefinedConversion (ec, source, target, true, false, loc); + return UserDefinedConversion (ec, source, target, UserConversionRestriction.ImplicitOnly, loc); } /// @@ -1018,10 +1037,10 @@ namespace Mono.CSharp { /// static Expression ExplicitUserConversion (ResolveContext ec, Expression source, TypeSpec target, Location loc) { - return UserDefinedConversion (ec, source, target, false, false, loc); + return UserDefinedConversion (ec, source, target, 0, loc); } - static void FindApplicableUserDefinedConversionOperators (IList operators, Expression source, TypeSpec target, bool implicitOnly, ref List candidates) + static void FindApplicableUserDefinedConversionOperators (ResolveContext rc, IList operators, Expression source, TypeSpec target, UserConversionRestriction restr, ref List candidates) { if (source.Type.IsInterface) { // Neither A nor B are interface-types @@ -1043,14 +1062,17 @@ namespace Mono.CSharp { continue; var t = op.Parameters.Types[0]; - if (source.Type != t && !ImplicitStandardConversionExists (source, t)) { - if (implicitOnly) + if (source.Type != t && !ImplicitStandardConversionExists (rc, source, t)) { + if ((restr & UserConversionRestriction.ImplicitOnly) != 0) continue; if (!ImplicitStandardConversionExists (new EmptyExpression (t), source.Type)) - continue; + continue; } + if ((restr & UserConversionRestriction.NullableSourceOnly) != 0 && !t.IsNullableType) + continue; + t = op.ReturnType; if (t.IsInterface) @@ -1061,7 +1083,7 @@ namespace Mono.CSharp { t = Nullable.NullableInfo.GetUnderlyingType (t); if (!ImplicitStandardConversionExists (new EmptyExpression (t), target)) { - if (implicitOnly) + if ((restr & UserConversionRestriction.ImplicitOnly) != 0) continue; if (texpr == null) @@ -1082,7 +1104,7 @@ namespace Mono.CSharp { // // User-defined conversions // - static Expression UserDefinedConversion (ResolveContext ec, Expression source, TypeSpec target, bool implicitOnly, bool probingOnly, Location loc) + public static Expression UserDefinedConversion (ResolveContext rc, Expression source, TypeSpec target, UserConversionRestriction restr, Location loc) { List candidates = null; @@ -1094,6 +1116,7 @@ namespace Mono.CSharp { TypeSpec target_type = target; Expression source_type_expr; bool nullable_source = false; + var implicitOnly = (restr & UserConversionRestriction.ImplicitOnly) != 0; if (source_type.IsNullableType) { // No unwrapping conversion S? -> T for non-reference types @@ -1119,13 +1142,13 @@ namespace Mono.CSharp { var operators = MemberCache.GetUserOperator (source_type, Operator.OpType.Implicit, declared_only); if (operators != null) { - FindApplicableUserDefinedConversionOperators (operators, source_type_expr, target_type, implicitOnly, ref candidates); + FindApplicableUserDefinedConversionOperators (rc, operators, source_type_expr, target_type, restr, ref candidates); } if (!implicitOnly) { operators = MemberCache.GetUserOperator (source_type, Operator.OpType.Explicit, declared_only); if (operators != null) { - FindApplicableUserDefinedConversionOperators (operators, source_type_expr, target_type, false, ref candidates); + FindApplicableUserDefinedConversionOperators (rc, operators, source_type_expr, target_type, restr, ref candidates); } } } @@ -1135,13 +1158,13 @@ namespace Mono.CSharp { var operators = MemberCache.GetUserOperator (target_type, Operator.OpType.Implicit, declared_only); if (operators != null) { - FindApplicableUserDefinedConversionOperators (operators, source_type_expr, target_type, implicitOnly, ref candidates); + FindApplicableUserDefinedConversionOperators (rc, operators, source_type_expr, target_type, restr, ref candidates); } if (!implicitOnly) { operators = MemberCache.GetUserOperator (target_type, Operator.OpType.Explicit, declared_only); if (operators != null) { - FindApplicableUserDefinedConversionOperators (operators, source_type_expr, target_type, false, ref candidates); + FindApplicableUserDefinedConversionOperators (rc, operators, source_type_expr, target_type, restr, ref candidates); } } } @@ -1163,7 +1186,7 @@ namespace Mono.CSharp { // Pass original source type to find the best match against input type and // not the unwrapped expression // - s_x = FindMostSpecificSource (candidates, source.Type, source_type_expr, !implicitOnly); + s_x = FindMostSpecificSource (rc, candidates, source.Type, source_type_expr, !implicitOnly); if (s_x == null) return null; @@ -1183,16 +1206,18 @@ namespace Mono.CSharp { // // Unless running in probing more // - if (!probingOnly) { - MethodSpec ambig_arg = null; + if ((restr & UserConversionRestriction.ProbingOnly) == 0) { + MethodSpec ambig_arg = candidates [0]; + most_specific_operator = candidates [1]; + /* foreach (var candidate in candidates) { if (candidate.ReturnType == t_x) most_specific_operator = candidate; else if (candidate.Parameters.Types[0] == s_x) ambig_arg = candidate; } - - ec.Report.Error (457, loc, + */ + rc.Report.Error (457, loc, "Ambiguous user defined operators `{0}' and `{1}' when converting from `{2}' to `{3}'", ambig_arg.GetSignatureForError (), most_specific_operator.GetSignatureForError (), source.Type.GetSignatureForError (), target.GetSignatureForError ()); @@ -1208,21 +1233,21 @@ namespace Mono.CSharp { if (s_x != source_type) { var c = source as Constant; if (c != null) { - source = c.Reduce (ec, s_x); + source = c.Reduce (rc, s_x); if (source == null) c = null; } if (c == null) { source = implicitOnly ? - ImplicitConversionStandard (ec, source_type_expr, s_x, loc) : - ExplicitConversionStandard (ec, source_type_expr, s_x, loc); + ImplicitConversionStandard (rc, source_type_expr, s_x, loc) : + ExplicitConversionStandard (rc, source_type_expr, s_x, loc); } } else { source = source_type_expr; } - source = new UserCast (most_specific_operator, source, loc).Resolve (ec); + source = new UserCast (most_specific_operator, source, loc).Resolve (rc); // // Convert result type when it's different to best operator return type @@ -1241,19 +1266,19 @@ namespace Mono.CSharp { var unwrap = Nullable.Unwrap.CreateUnwrapped (source); source = implicitOnly ? - ImplicitConversionStandard (ec, unwrap, target_type, loc) : - ExplicitConversionStandard (ec, unwrap, target_type, loc); + ImplicitConversionStandard (rc, unwrap, target_type, loc) : + ExplicitConversionStandard (rc, unwrap, target_type, loc); if (source == null) return null; if (target.IsNullableType) - source = new Nullable.LiftedConversion (source, unwrap, target).Resolve (ec); + source = new Nullable.LiftedConversion (source, unwrap, target).Resolve (rc); } } else { source = implicitOnly ? - ImplicitConversionStandard (ec, source, target_type, loc) : - ExplicitConversionStandard (ec, source, target_type, loc); + ImplicitConversionStandard (rc, source, target_type, loc) : + ExplicitConversionStandard (rc, source, target_type, loc); if (source == null) return null; @@ -1266,7 +1291,7 @@ namespace Mono.CSharp { // only non-nullable type we need to lift it manually // if (nullable_source && !s_x.IsNullableType) - return new Nullable.LiftedConversion (source, source_type_expr, target).Resolve (ec); + return new Nullable.LiftedConversion (source, source_type_expr, target).Resolve (rc); // // Target is of nullable type but source type is not, wrap the result expression @@ -2230,6 +2255,7 @@ namespace Mono.CSharp { } e = ExplicitUserConversion (ec, expr, target_type, loc); + if (e != null) return e; diff --git a/mcs/mcs/cs-parser.jay.REMOVED.git-id b/mcs/mcs/cs-parser.jay.REMOVED.git-id index d335f2dd3a..2576e56cca 100644 --- a/mcs/mcs/cs-parser.jay.REMOVED.git-id +++ b/mcs/mcs/cs-parser.jay.REMOVED.git-id @@ -1 +1 @@ -f93324f30602ca2f956eff102b7674a76df37471 \ No newline at end of file +2cfa7f1846374357ed745eab43bf41e85fa4e9d3 \ No newline at end of file diff --git a/mcs/mcs/cs-tokenizer.cs b/mcs/mcs/cs-tokenizer.cs index 68ddff9873..23adf2073a 100644 --- a/mcs/mcs/cs-tokenizer.cs +++ b/mcs/mcs/cs-tokenizer.cs @@ -1279,6 +1279,8 @@ namespace Mono.CSharp PushPosition (); current_token = Token.NONE; int next_token; + int parens = 0; + switch (xtoken ()) { case Token.LITERAL: case Token.TRUE: @@ -1299,6 +1301,13 @@ namespace Mono.CSharp case Token.COLON: next_token = Token.INTERR_NULLABLE; break; + + case Token.OPEN_PARENS: + case Token.OPEN_PARENS_CAST: + case Token.OPEN_PARENS_LAMBDA: + next_token = -1; + ++parens; + break; default: next_token = -1; @@ -1317,14 +1326,19 @@ namespace Mono.CSharp case Token.COLON: next_token = Token.INTERR; - break; - + break; + + case Token.OPEN_PARENS: + case Token.OPEN_PARENS_CAST: + case Token.OPEN_PARENS_LAMBDA: + ++parens; + goto default; + default: int ntoken; int interrs = 1; int colons = 0; int braces = 0; - int parens = 0; // // All shorcuts failed, do it hard way // @@ -1342,9 +1356,13 @@ namespace Mono.CSharp --braces; continue; case Token.CLOSE_PARENS: - if (parens > 0) + if (parens > 0) { --parens; - continue; + continue; + } + + PopPosition (); + return Token.INTERR_NULLABLE; } if (braces != 0) diff --git a/mcs/mcs/delegate.cs b/mcs/mcs/delegate.cs index a5adf348a4..7632a6128f 100644 --- a/mcs/mcs/delegate.cs +++ b/mcs/mcs/delegate.cs @@ -446,7 +446,8 @@ namespace Mono.CSharp { public override bool ContainsEmitWithAwait () { - return false; + var instance = method_group.InstanceExpression; + return instance != null && instance.ContainsEmitWithAwait (); } public static Arguments CreateDelegateMethodArguments (ResolveContext rc, AParametersCollection pd, TypeSpec[] types, Location loc) diff --git a/mcs/mcs/ecore.cs.REMOVED.git-id b/mcs/mcs/ecore.cs.REMOVED.git-id index 897f16a951..8fafa41939 100644 --- a/mcs/mcs/ecore.cs.REMOVED.git-id +++ b/mcs/mcs/ecore.cs.REMOVED.git-id @@ -1 +1 @@ -86c7931f13abbb6cc31055bdc6eb2339ccbce2c2 \ No newline at end of file +f0a9de98b6103af652e3d63bcae44183a33246f7 \ No newline at end of file diff --git a/mcs/mcs/eval.cs b/mcs/mcs/eval.cs index 5bda997062..30c42c1af8 100644 --- a/mcs/mcs/eval.cs +++ b/mcs/mcs/eval.cs @@ -24,6 +24,11 @@ using System.Linq; namespace Mono.CSharp { + /// + /// Experimental! + /// + public delegate void ValueModificationHandler (string variableName, int row, int column, object value); + /// /// Evaluator: provides an API to evaluate C# statements and /// expressions dynamically. @@ -71,6 +76,8 @@ namespace Mono.CSharp readonly ModuleContainer module; readonly ReflectionImporter importer; readonly CompilationSourceFile source_file; + + int? listener_id; public Evaluator (CompilerContext ctx) { @@ -291,6 +298,30 @@ namespace Mono.CSharp return compiled; } + static MethodInfo listener_proxy_value; + internal void EmitValueChangedCallback (EmitContext ec, string name, TypeSpec type, Location loc) + { + if (listener_id == null) + listener_id = ListenerProxy.Register (ModificationListener); + + if (listener_proxy_value == null) + listener_proxy_value = typeof (ListenerProxy).GetMethod ("ValueChanged"); + +#if STATIC + throw new NotSupportedException (); +#else + // object value, int row, int col, string name, int listenerId + if (type.IsStructOrEnum) + ec.Emit (OpCodes.Box, type); + + ec.EmitInt (loc.Row); + ec.EmitInt (loc.Column); + ec.Emit (OpCodes.Ldstr, name); + ec.EmitInt (listener_id.Value); + ec.Emit (OpCodes.Call, listener_proxy_value); +#endif + } + /// /// Evaluates and expression or statement and returns any result values. /// @@ -341,6 +372,11 @@ namespace Mono.CSharp Console.WriteLine ("Interrupted!\n{0}", e); } finally { invoking = false; + + if (listener_id != null) { + ListenerProxy.Unregister (listener_id.Value); + listener_id = null; + } } // @@ -448,6 +484,11 @@ namespace Mono.CSharp return result; } + /// + /// Experimental! + /// + public ValueModificationHandler ModificationListener { get; set; } + enum InputKind { EOF, StatementOrExpression, @@ -737,6 +778,7 @@ namespace Mono.CSharp } module.EmitContainer (); + if (Report.Errors != 0){ if (undo != null) undo.ExecuteUndo (); @@ -1257,5 +1299,38 @@ namespace Mono.CSharp undo_actions = null; } } - + + static class ListenerProxy + { + static readonly Dictionary listeners = new Dictionary (); + + static int counter; + + public static int Register (ValueModificationHandler listener) + { + lock (listeners) { + var id = counter++; + listeners.Add (id, listener); + return id; + } + } + + public static void Unregister (int listenerId) + { + lock (listeners) { + listeners.Remove (listenerId); + } + } + + public static void ValueChanged (object value, int row, int col, string name, int listenerId) + { + ValueModificationHandler action; + lock (listeners) { + if (!listeners.TryGetValue (listenerId, out action)) + return; + } + + action (name, row, col, value); + } + } } diff --git a/mcs/mcs/expression.cs.REMOVED.git-id b/mcs/mcs/expression.cs.REMOVED.git-id index b19051fead..9abaae675b 100644 --- a/mcs/mcs/expression.cs.REMOVED.git-id +++ b/mcs/mcs/expression.cs.REMOVED.git-id @@ -1 +1 @@ -6976b97c8b1c65f12280680fe68c3ab7bb7c30e6 \ No newline at end of file +0ab48acb382e4c47a8494814726d8a2c6ce99dff \ No newline at end of file diff --git a/mcs/mcs/flowanalysis.cs b/mcs/mcs/flowanalysis.cs index 4f54f268d2..dbb74a7515 100644 --- a/mcs/mcs/flowanalysis.cs +++ b/mcs/mcs/flowanalysis.cs @@ -139,15 +139,22 @@ namespace Mono.CSharp var field = struct_info.Fields[i]; if (!fc.IsStructFieldDefinitelyAssigned (vi, field.Name)) { - if (field.MemberDefinition is Property.BackingField) { + var bf = field.MemberDefinition as Property.BackingField; + if (bf != null) { + if (bf.Initializer != null) + continue; + fc.Report.Error (843, loc, "An automatically implemented property `{0}' must be fully assigned before control leaves the constructor. Consider calling the default struct contructor from a constructor initializer", field.GetSignatureForError ()); - } else { - fc.Report.Error (171, loc, - "Field `{0}' must be fully assigned before control leaves the constructor", - field.GetSignatureForError ()); + + ok = false; + continue; } + + fc.Report.Error (171, loc, + "Field `{0}' must be fully assigned before control leaves the constructor", + field.GetSignatureForError ()); ok = false; } } diff --git a/mcs/mcs/generic.cs b/mcs/mcs/generic.cs index d97c7f3b82..f309c6ba57 100644 --- a/mcs/mcs/generic.cs +++ b/mcs/mcs/generic.cs @@ -620,6 +620,11 @@ namespace Mono.CSharp { spec.SetMetaInfo (type); } + public void Define (TypeParameter tp) + { + builder = tp.builder; + } + public void EmitConstraints (GenericTypeParameterBuilder builder) { var attr = GenericParameterAttributes.None; @@ -1047,7 +1052,8 @@ namespace Mono.CSharp { continue; } - types [i] = ((TypeParameterSpec)t).GetEffectiveBase (); + var tps = t as TypeParameterSpec; + types [i] = tps != null ? tps.GetEffectiveBase () : t; } if (HasTypeConstraint) @@ -1349,7 +1355,15 @@ namespace Mono.CSharp { if (TypeArguments != null) { foreach (var t in TypeArguments) { - if (((TypeParameterSpec) t).IsConvertibleToInterface (iface)) + var tps = t as TypeParameterSpec; + if (tps != null) { + if (tps.IsConvertibleToInterface (iface)) + return true; + + continue; + } + + if (t.ImplementsInterface (iface, false)) return true; } } @@ -1465,6 +1479,9 @@ namespace Mono.CSharp { if (ac != null) return ArrayContainer.MakeType (context.Module, et, ac.Rank); + if (ec is PointerContainer) + return PointerContainer.MakeType (context.Module, et); + throw new NotImplementedException (); } diff --git a/mcs/mcs/import.cs b/mcs/mcs/import.cs index 0d7e9e5ad5..b8c5832d21 100644 --- a/mcs/mcs/import.cs +++ b/mcs/mcs/import.cs @@ -434,6 +434,8 @@ namespace Mono.CSharp else mod |= Modifiers.VIRTUAL; } + } else if (parameters.HasExtensionMethodType) { + mod |= Modifiers.METHOD_EXTENSION; } } diff --git a/mcs/mcs/iterators.cs b/mcs/mcs/iterators.cs index f10773009d..5dce0ed159 100644 --- a/mcs/mcs/iterators.cs +++ b/mcs/mcs/iterators.cs @@ -74,6 +74,9 @@ namespace Mono.CSharp public void RegisterResumePoint () { + if (resume_pc != 0) + return; + if (inside_try_block == null) { resume_pc = machine_initializer.AddResumePoint (this); } else { @@ -723,8 +726,7 @@ namespace Mono.CSharp // // The state as we generate the machine // - Label move_next_ok; - Label iterator_body_end; + protected Label move_next_ok; protected Label move_next_error; LocalBuilder skip_finally; protected LocalBuilder current_pc; @@ -738,11 +740,7 @@ namespace Mono.CSharp #region Properties - public Label BodyEnd { - get { - return iterator_body_end; - } - } + public Label BodyEnd { get; set; } public LocalBuilder CurrentPC { @@ -830,11 +828,18 @@ namespace Mono.CSharp // We only care if the PC is zero (start executing) or non-zero (don't do anything) ec.Emit (OpCodes.Brtrue, move_next_error); - iterator_body_end = ec.DefineLabel (); + BodyEnd = ec.DefineLabel (); + + var async_init = this as AsyncInitializer; + if (async_init != null) + ec.BeginExceptionBlock (); block.EmitEmbedded (ec); - ec.MarkLabel (iterator_body_end); + if (async_init != null) + async_init.EmitCatchBlock (ec); + + ec.MarkLabel (BodyEnd); EmitMoveNextEpilogue (ec); @@ -844,6 +849,8 @@ namespace Mono.CSharp ec.EmitInt (0); ec.Emit (OpCodes.Ret); } + + ec.MarkLabel (move_next_ok); } void EmitMoveNext (EmitContext ec) @@ -893,26 +900,14 @@ namespace Mono.CSharp ec.MarkLabel (labels[0]); - iterator_body_end = ec.DefineLabel (); + BodyEnd = ec.DefineLabel (); block.EmitEmbedded (ec); - ec.MarkLabel (iterator_body_end); + ec.MarkLabel (BodyEnd); if (async_init != null) { - var catch_value = LocalVariable.CreateCompilerGenerated (ec.Module.Compiler.BuiltinTypes.Exception, block, Location); - - ec.BeginCatchBlock (catch_value.Type); - catch_value.EmitAssign (ec); - - ec.EmitThis (); - ec.EmitInt ((int) IteratorStorey.State.After); - ec.Emit (OpCodes.Stfld, storey.PC.Spec); - - ((AsyncTaskStorey) async_init.Storey).EmitSetException (ec, new LocalVariableReference (catch_value, Location)); - - ec.Emit (OpCodes.Leave, move_next_ok); - ec.EndExceptionBlock (); + async_init.EmitCatchBlock (ec); } ec.Mark (Block.Original.EndLocation); diff --git a/mcs/mcs/membercache.cs b/mcs/mcs/membercache.cs index 82acb67b16..7336f1dbf8 100644 --- a/mcs/mcs/membercache.cs +++ b/mcs/mcs/membercache.cs @@ -721,6 +721,9 @@ namespace Mono.CSharp { if (!fs.IsPublic && container.MemberDefinition.IsImported && (!fs.MemberType.IsArray && TypeSpec.IsReferenceType (fs.MemberType))) continue; + //if ((fs.Modifiers & (Modifiers.BACKING_FIELD) != 0) + // continue; + if (fields == null) fields = new List (); diff --git a/mcs/mcs/method.cs b/mcs/mcs/method.cs index 58baf51b09..d368fe933b 100644 --- a/mcs/mcs/method.cs +++ b/mcs/mcs/method.cs @@ -563,6 +563,12 @@ namespace Mono.CSharp { if ((ModFlags & extern_static) != extern_static) { Report.Error (601, a.Location, "The DllImport attribute must be specified on a method marked `static' and `extern'"); } + + if (MemberName.IsGeneric || Parent.IsGenericOrParentIsGeneric) { + Report.Error (7042, a.Location, + "The DllImport attribute cannot be applied to a method that is generic or contained in a generic type"); + } + is_external_implementation = true; } @@ -719,6 +725,11 @@ namespace Mono.CSharp { if (MethodData != null) MethodData.Emit (Parent); + if (block != null && block.StateMachine is AsyncTaskStorey) { + var psm = Module.PredefinedAttributes.AsyncStateMachine; + psm.EmitAttribute (MethodBuilder, block.StateMachine); + } + if ((ModFlags & Modifiers.PARTIAL) == 0) Block = null; } @@ -1324,6 +1335,12 @@ namespace Mono.CSharp { if (IsPartialDefinition) { if (partialMethodImplementation != null && CurrentTypeParameters != null) { CurrentTypeParameters.CheckPartialConstraints (partialMethodImplementation); + + var otp = partialMethodImplementation.CurrentTypeParameters; + for (int i = 0; i < CurrentTypeParameters.Count; ++i) { + var tp = CurrentTypeParameters [i]; + tp.Define (otp[i]); + } } return; @@ -1343,12 +1360,6 @@ namespace Mono.CSharp { } } - if (block != null && block.StateMachine is AsyncTaskStorey) { - var psm = Module.PredefinedAttributes.AsyncStateMachine; - - psm.EmitAttribute (MethodBuilder, block.StateMachine); - } - if ((ModFlags & Modifiers.METHOD_EXTENSION) != 0) Module.PredefinedAttributes.Extension.EmitAttribute (MethodBuilder); @@ -1387,17 +1398,40 @@ namespace Mono.CSharp { // Ensure we are always using method declaration parameters for (int i = 0; i < methodDefinition.parameters.Count; ++i ) { - parameters [i].Name = methodDefinition.parameters [i].Name; - parameters [i].DefaultValue = methodDefinition.parameters [i].DefaultValue; + var md_p = methodDefinition.parameters [i]; + var p = parameters [i]; + p.Name = md_p.Name; + p.DefaultValue = md_p.DefaultValue; + if (md_p.OptAttributes != null) { + if (p.OptAttributes == null) { + p.OptAttributes = md_p.OptAttributes; + } else { + p.OptAttributes.Attrs.AddRange (md_p.OptAttributes.Attrs); + } + } } - if (methodDefinition.attributes == null) - return; + if (methodDefinition.attributes != null) { + if (attributes == null) { + attributes = methodDefinition.attributes; + } else { + attributes.Attrs.AddRange (methodDefinition.attributes.Attrs); + } + } - if (attributes == null) { - attributes = methodDefinition.attributes; - } else { - attributes.Attrs.AddRange (methodDefinition.attributes.Attrs); + if (CurrentTypeParameters != null) { + for (int i = 0; i < CurrentTypeParameters.Count; ++i) { + var tp_other = methodDefinition.CurrentTypeParameters [i]; + if (tp_other.OptAttributes == null) + continue; + + var tp = CurrentTypeParameters [i]; + if (tp.OptAttributes == null) { + tp.OptAttributes = tp_other.OptAttributes; + } else { + tp.OptAttributes.Attrs.AddRange (tp.OptAttributes.Attrs); + } + } } } } @@ -1586,7 +1620,6 @@ namespace Mono.CSharp { } public bool IsPrimaryConstructor { get; set; } - MethodBase IMethodDefinition.Metadata { get { @@ -1675,12 +1708,12 @@ namespace Mono.CSharp { if (!CheckBase ()) return false; - if (Parent.PrimaryConstructorParameters != null && !IsPrimaryConstructor) { - if (Parent.Kind == MemberKind.Struct) { - Report.Error (9009, Location, "`{0}': Structs with primary constructor cannot have explicit constructor", + if (Parent.PrimaryConstructorParameters != null && !IsPrimaryConstructor && !IsStatic) { + if (Parent.Kind == MemberKind.Struct && Initializer is ConstructorThisInitializer && Initializer.Arguments == null) { + Report.Error (8043, Location, "`{0}': Structs with primary constructor cannot specify default constructor initializer", GetSignatureForError ()); } else if (Initializer == null || Initializer is ConstructorBaseInitializer) { - Report.Error (9002, Location, "`{0}': Instance constructor of type with primary constructor must specify `this' constructor initializer", + Report.Error (8037, Location, "`{0}': Instance constructor of type with primary constructor must specify `this' constructor initializer", GetSignatureForError ()); } } @@ -1740,6 +1773,14 @@ namespace Mono.CSharp { bc.Set (ResolveContext.Options.ConstructorScope); if (block != null) { + if (!IsStatic && Initializer == null && Parent.PartialContainer.Kind == MemberKind.Struct) { + // + // If this is a non-static `struct' constructor and doesn't have any + // initializer, it must initialize all of the struct's fields. + // + block.AddThisVariable (bc); + } + // // If we use a "this (...)" constructor initializer, then // do not emit field initializers, they are initialized in the other constructor @@ -1748,16 +1789,8 @@ namespace Mono.CSharp { Parent.PartialContainer.ResolveFieldInitializers (bc); if (!IsStatic) { - if (Initializer == null) { - if (Parent.PartialContainer.Kind == MemberKind.Struct) { - // - // If this is a non-static `struct' constructor and doesn't have any - // initializer, it must initialize all of the struct's fields. - // - block.AddThisVariable (bc); - } else if (Parent.PartialContainer.Kind == MemberKind.Class) { - Initializer = new GeneratedBaseInitializer (Location, null); - } + if (Initializer == null && Parent.PartialContainer.Kind == MemberKind.Class) { + Initializer = new GeneratedBaseInitializer (Location, null); } if (Initializer != null) { diff --git a/mcs/mcs/namespace.cs b/mcs/mcs/namespace.cs index f6031a534d..5a368ee05b 100644 --- a/mcs/mcs/namespace.cs +++ b/mcs/mcs/namespace.cs @@ -683,6 +683,7 @@ namespace Mono.CSharp { public bool DeclarationFound; Namespace[] namespace_using_table; + TypeSpec[] types_using_table; Dictionary aliases; public NamespaceContainer (MemberName name, NamespaceContainer parent) @@ -935,6 +936,24 @@ namespace Mono.CSharp { return new ExtensionMethodCandidates (invocationContext, candidates, this, position); } + // LAMESPEC: TODO no spec about priority over normal extension methods yet + if (types_using_table != null) { + foreach (var t in types_using_table) { + + var res = t.MemberCache.FindExtensionMethods (invocationContext, name, arity); + if (res == null) + continue; + + if (candidates == null) + candidates = res; + else + candidates.AddRange (res); + } + + if (candidates != null) + return new ExtensionMethodCandidates (invocationContext, candidates, this, position); + } + return null; } @@ -1116,6 +1135,42 @@ namespace Mono.CSharp { return match; } + public static MethodGroupExpr LookupStaticUsings (IMemberContext mc, string name, int arity, Location loc) + { + for (var m = mc.CurrentMemberDefinition; m != null; m = m.Parent) { + + var nc = m as NamespaceContainer; + if (nc == null) + continue; + + List candidates = null; + if (nc.types_using_table != null) { + foreach (var using_type in nc.types_using_table) { + var members = MemberCache.FindMembers (using_type, name, true); + if (members != null) { + foreach (var member in members) { + if ((member.Modifiers & Modifiers.METHOD_EXTENSION) != 0) + continue; + + if (arity > 0 && member.Arity != arity) + continue; + + if (candidates == null) + candidates = new List (); + + candidates.Add (member); + } + } + } + } + + if (candidates != null) + return new MethodGroupExpr (candidates, null, loc); + } + + return null; + } + protected override void DefineNamespace () { if (namespace_using_table == null) @@ -1129,7 +1184,9 @@ namespace Mono.CSharp { namespace_using_table = empty_namespaces; if (clauses != null) { - var list = new List (clauses.Count); + List namespaces = null; + List types = null; + bool post_process_using_aliases = false; for (int i = 0; i < clauses.Count; ++i) { @@ -1168,21 +1225,36 @@ namespace Mono.CSharp { } var using_ns = entry.ResolvedExpression as NamespaceExpression; - if (using_ns == null) - continue; + if (using_ns == null) { - if (list.Contains (using_ns.Namespace)) { - // Ensure we don't report the warning multiple times in repl - clauses.RemoveAt (i--); + var type = ((TypeExpr)entry.ResolvedExpression).Type; - Compiler.Report.Warning (105, 3, entry.Location, - "The using directive for `{0}' appeared previously in this namespace", using_ns.GetSignatureForError ()); + if (types == null) + types = new List (); + + if (types.Contains (type)) { + Warning_DuplicateEntry (entry); + } else { + types.Add (type); + } } else { - list.Add (using_ns.Namespace); + if (namespaces == null) + namespaces = new List (); + + if (namespaces.Contains (using_ns.Namespace)) { + // Ensure we don't report the warning multiple times in repl + clauses.RemoveAt (i--); + + Warning_DuplicateEntry (entry); + } else { + namespaces.Add (using_ns.Namespace); + } } } - namespace_using_table = list.ToArray (); + namespace_using_table = namespaces == null ? new Namespace [0] : namespaces.ToArray (); + if (types != null) + types_using_table = types.ToArray (); if (post_process_using_aliases) { for (int i = 0; i < clauses.Count; ++i) { @@ -1239,6 +1311,13 @@ namespace Mono.CSharp { return false; } + void Warning_DuplicateEntry (UsingNamespace entry) + { + Compiler.Report.Warning (105, 3, entry.Location, + "The using directive for `{0}' appeared previously in this namespace", + entry.ResolvedExpression.GetSignatureForError ()); + } + public override void Accept (StructuralVisitor visitor) { visitor.Visit (this); @@ -1294,13 +1373,27 @@ namespace Mono.CSharp { { resolved = expr.ResolveAsTypeOrNamespace (ctx); var ns = resolved as NamespaceExpression; - if (ns == null) { - if (resolved != null) { - ctx.Module.Compiler.Report.SymbolRelatedToPreviousError (resolved.Type); - ctx.Module.Compiler.Report.Error (138, Location, - "`{0}' is a type not a namespace. A using namespace directive can only be applied to namespaces", - GetSignatureForError ()); + if (ns != null) + return; + + if (resolved != null) { + var compiler = ctx.Module.Compiler; + var type = resolved.Type; + if (compiler.Settings.Version >= LanguageVersion.V_6) { + if (!type.IsClass || !type.IsStatic) { + compiler.Report.SymbolRelatedToPreviousError (type); + compiler.Report.Error (7007, Location, + "`{0}' is not a static class. A using namespace directive can only be applied to static classes or namespace", + GetSignatureForError ()); + } + + return; } + + compiler.Report.SymbolRelatedToPreviousError (type); + compiler.Report.Error (138, Location, + "`{0}' is a type not a namespace. A using namespace directive can only be applied to namespaces", + GetSignatureForError ()); } } diff --git a/mcs/mcs/nullable.cs b/mcs/mcs/nullable.cs index 5f1822d007..dd36b88aef 100644 --- a/mcs/mcs/nullable.cs +++ b/mcs/mcs/nullable.cs @@ -187,6 +187,11 @@ namespace Mono.CSharp.Nullable call.EmitPredefined (ec, NullableInfo.GetHasValue (expr.Type), null); } + public override void EmitSideEffect (EmitContext ec) + { + expr.EmitSideEffect (ec); + } + public override Expression EmitToField (EmitContext ec) { if (temp_field == null) @@ -1158,26 +1163,25 @@ namespace Mono.CSharp.Nullable // Constant lc = left as Constant; if (lc != null && !lc.IsDefaultValue) - return ReducedExpression.Create (lc, this); + return ReducedExpression.Create (lc, this, false); // // Reduce (left ?? null) to left OR (null-constant ?? right) to right // - if (right.IsNull || lc != null) - return ReducedExpression.Create (lc != null ? right : left, this); + if (right.IsNull || lc != null) { + // + // Special case null ?? null + // + if (right.IsNull && ltype == right.Type) + return null; + + return ReducedExpression.Create (lc != null ? right : left, this, false); + } right = Convert.ImplicitConversion (ec, right, ltype, loc); type = ltype; return this; } - - // - // Special case null ?? null - // - if (ltype == right.Type) { - type = ltype; - return this; - } } else { return null; } @@ -1190,7 +1194,7 @@ namespace Mono.CSharp.Nullable // Reduce (null ?? right) to right // if (left.IsNull) - return ReducedExpression.Create (right, this).Resolve (ec); + return ReducedExpression.Create (right, this, false).Resolve (ec); left = Convert.ImplicitConversion (ec, unwrap ?? left, rtype, loc); type = rtype; @@ -1238,7 +1242,7 @@ namespace Mono.CSharp.Nullable // When both expressions are nullable the unwrap // is needed only for null check not for value uwrap // - if (type.IsNullableType) + if (type.IsNullableType && TypeSpecComparer.IsEqual (NullableInfo.GetUnderlyingType (type), unwrap.Type)) unwrap.Load (ec); else left.Emit (ec); diff --git a/mcs/mcs/parameter.cs b/mcs/mcs/parameter.cs index d95363c774..1a30ae384c 100644 --- a/mcs/mcs/parameter.cs +++ b/mcs/mcs/parameter.cs @@ -222,8 +222,7 @@ namespace Mono.CSharp { CallerMask = CallerMemberName | CallerLineNumber | CallerFilePath } - static readonly string[] attribute_targets = new string[] { "param" }; - static readonly string[] attribute_targets_primary = new string[] { "param", "field" }; + static readonly string[] attribute_targets = new [] { "param" }; FullNamedExpression texpr; Modifier modFlags; @@ -234,7 +233,6 @@ namespace Mono.CSharp { protected int idx; public bool HasAddressTaken; - Constructor primary_constructor; TemporaryVariableReference expr_tree_variable; HoistedParameter hoisted_variant; @@ -309,7 +307,7 @@ namespace Mono.CSharp { public override string[] ValidAttributeTargets { get { - return primary_constructor != null ? attribute_targets_primary : attribute_targets; + return attribute_targets; } } @@ -317,12 +315,6 @@ namespace Mono.CSharp { public override void ApplyAttributeBuilder (Attribute a, MethodSpec ctor, byte[] cdata, PredefinedAttributes pa) { - if (a.Target == AttributeTargets.Field) { - var field = MemberCache.FindMember (primary_constructor.Spec.DeclaringType, MemberFilter.Field (name, parameter_type), BindingRestriction.DeclaredOnly); - ((Field)field.MemberDefinition).ApplyAttributeBuilder (a, ctor, cdata, pa); - return; - } - if (a.Type == pa.In && ModFlags == Modifier.OUT) { a.Report.Error (36, a.Location, "An out parameter cannot have the `In' attribute"); return; @@ -379,6 +371,15 @@ namespace Mono.CSharp { return member.IsAccessibleAs (parameter_type); } + bool IsValidCallerContext (MemberCore memberContext) + { + var m = memberContext as Method; + if (m != null) + return !m.IsPartialImplementation; + + return true; + } + // // Resolve is used in method definitions // @@ -390,10 +391,6 @@ namespace Mono.CSharp { if (attributes != null) attributes.AttachTo (this, rc); - var ctor = rc.CurrentMemberDefinition as Constructor; - if (ctor != null && ctor.IsPrimaryConstructor) - primary_constructor = ctor; - parameter_type = texpr.ResolveAsType (rc); if (parameter_type == null) return null; @@ -428,6 +425,7 @@ namespace Mono.CSharp { { var pa = rc.Module.PredefinedAttributes; TypeSpec caller_type; + Attribute callerMemberName = null, callerFilePath = null; foreach (var attr in attributes.Attrs) { var atype = attr.ResolveTypeForComparison (); @@ -442,18 +440,31 @@ namespace Mono.CSharp { caller_type.GetSignatureForError (), parameter_type.GetSignatureForError ()); } + if (!IsValidCallerContext (rc.CurrentMemberDefinition)) { + rc.Report.Warning (4026, 1, attr.Location, + "The CallerMemberName applied to parameter `{0}' will have no effect because it applies to a member that is used in context that do not allow optional arguments", + name); + } + modFlags |= Modifier.CallerMemberName; + callerMemberName = attr; continue; } if (atype == pa.CallerLineNumberAttribute) { caller_type = rc.BuiltinTypes.Int; - if (caller_type != parameter_type && !Convert.ImplicitNumericConversionExists (caller_type, parameter_type)) { + if (caller_type != parameter_type && !Convert.ImplicitStandardConversionExists (new IntConstant (caller_type, int.MaxValue, Location.Null), parameter_type)) { rc.Report.Error (4017, attr.Location, - "The CallerMemberName attribute cannot be applied because there is no standard conversion from `{0}' to `{1}'", + "The CallerLineNumberAttribute attribute cannot be applied because there is no standard conversion from `{0}' to `{1}'", caller_type.GetSignatureForError (), parameter_type.GetSignatureForError ()); } + if (!IsValidCallerContext (rc.CurrentMemberDefinition)) { + rc.Report.Warning (4024, 1, attr.Location, + "The CallerLineNumberAttribute applied to parameter `{0}' will have no effect because it applies to a member that is used in context that do not allow optional arguments", + name); + } + modFlags |= Modifier.CallerLineNumber; continue; } @@ -466,10 +477,40 @@ namespace Mono.CSharp { caller_type.GetSignatureForError (), parameter_type.GetSignatureForError ()); } + if (!IsValidCallerContext (rc.CurrentMemberDefinition)) { + rc.Report.Warning (4025, 1, attr.Location, + "The CallerFilePath applied to parameter `{0}' will have no effect because it applies to a member that is used in context that do not allow optional arguments", + name); + } + modFlags |= Modifier.CallerFilePath; + callerFilePath = attr; continue; } } + + if ((modFlags & Modifier.CallerLineNumber) != 0) { + if (callerMemberName != null) { + rc.Report.Warning (7081, 1, callerMemberName.Location, + "The CallerMemberNameAttribute applied to parameter `{0}' will have no effect. It is overridden by the CallerLineNumberAttribute", + Name); + } + + if (callerFilePath != null) { + rc.Report.Warning (7082, 1, callerFilePath.Location, + "The CallerFilePathAttribute applied to parameter `{0}' will have no effect. It is overridden by the CallerLineNumberAttribute", + name); + } + } + + if ((modFlags & Modifier.CallerMemberName) != 0) { + if (callerFilePath != null) { + rc.Report.Warning (7080, 1, callerFilePath.Location, + "The CallerMemberNameAttribute applied to parameter `{0}' will have no effect. It is overridden by the CallerFilePathAttribute", + name); + } + + } } public void ResolveDefaultValue (ResolveContext rc) @@ -736,6 +777,11 @@ namespace Mono.CSharp { return new TypeExpression (p_type, location); } + public void SetIndex (int index) + { + idx = index; + } + public void Warning_UselessOptionalParameter (Report Report) { Report.Warning (1066, 1, Location, @@ -1098,6 +1144,23 @@ namespace Mono.CSharp { return new ParametersCompiled (parameters, types); } + public static ParametersCompiled Prefix (ParametersCompiled parameters, Parameter p, TypeSpec type) + { + var ptypes = new TypeSpec [parameters.Count + 1]; + ptypes [0] = type; + Array.Copy (parameters.Types, 0, ptypes, 1, parameters.Count); + + var param = new Parameter [ptypes.Length]; + param [0] = p; + for (int i = 0; i < parameters.Count; ++i) { + var pi = parameters [i]; + param [i + 1] = pi; + pi.SetIndex (i + 1); + } + + return ParametersCompiled.CreateFullyResolved (param, ptypes); + } + // // TODO: This does not fit here, it should go to different version of AParametersCollection // as the underlying type is not Parameter and some methods will fail to cast @@ -1356,9 +1419,11 @@ namespace Mono.CSharp { expr = Child; if (!(expr is Constant || expr is DefaultValueExpression || (expr is New && ((New) expr).IsDefaultStruct))) { - rc.Report.Error (1736, Location, - "The expression being assigned to optional parameter `{0}' must be a constant or default value", - p.Name); + if (!(expr is ErrorExpression)) { + rc.Report.Error (1736, Location, + "The expression being assigned to optional parameter `{0}' must be a constant or default value", + p.Name); + } return; } diff --git a/mcs/mcs/property.cs b/mcs/mcs/property.cs index e8b3879f05..8c59db158b 100644 --- a/mcs/mcs/property.cs +++ b/mcs/mcs/property.cs @@ -732,12 +732,14 @@ namespace Mono.CSharp { readonly Property property; - public BackingField (Property p) + public BackingField (Property p, bool readOnly) : base (p.Parent, p.type_expr, Modifiers.BACKING_FIELD | Modifiers.COMPILER_GENERATED | Modifiers.PRIVATE | (p.ModFlags & (Modifiers.STATIC | Modifiers.UNSAFE)), new MemberName ("<" + p.GetFullName (p.MemberName) + ">k__BackingField", p.Location), null) { this.property = p; + if (readOnly) + ModFlags |= Modifiers.READONLY; } public Property OriginalProperty { @@ -766,6 +768,8 @@ namespace Mono.CSharp { } + public Expression Initializer { get; set; } + public override void Accept (StructuralVisitor visitor) { visitor.Visit (this); @@ -784,10 +788,16 @@ namespace Mono.CSharp void CreateAutomaticProperty () { // Create backing field - backing_field = new BackingField (this); + backing_field = new BackingField (this, Initializer != null && Set == null); if (!backing_field.Define ()) return; + if (Initializer != null) { + backing_field.Initializer = Initializer; + Parent.RegisterFieldForInitialization (backing_field, new FieldInitializer (backing_field, Initializer, Location)); + backing_field.ModFlags |= Modifiers.READONLY; + } + Parent.PartialContainer.Members.Add (backing_field); FieldExpr fe = new FieldExpr (backing_field, Location); @@ -802,11 +812,15 @@ namespace Mono.CSharp Get.Block = new ToplevelBlock (Compiler, ParametersCompiled.EmptyReadOnlyParameters, Location.Null); Return r = new Return (fe, Get.Location); Get.Block.AddStatement (r); + Get.ModFlags |= Modifiers.COMPILER_GENERATED; // Create set block - Set.Block = new ToplevelBlock (Compiler, Set.ParameterInfo, Location.Null); - Assign a = new SimpleAssign (fe, new SimpleName ("value", Location.Null), Location.Null); - Set.Block.AddStatement (new StatementExpression (a, Set.Location)); + if (Set != null) { + Set.Block = new ToplevelBlock (Compiler, Set.ParameterInfo, Location.Null); + Assign a = new SimpleAssign (fe, new SimpleName ("value", Location.Null), Location.Null); + Set.Block.AddStatement (new StatementExpression (a, Set.Location)); + Set.ModFlags |= Modifiers.COMPILER_GENERATED; + } } public override bool Define () @@ -816,13 +830,37 @@ namespace Mono.CSharp flags |= MethodAttributes.HideBySig | MethodAttributes.SpecialName; - if (!IsInterface && (ModFlags & (Modifiers.ABSTRACT | Modifiers.EXTERN)) == 0 && - AccessorSecond != null && Get.Block == null && Set.Block == null) { - if (Compiler.Settings.Version <= LanguageVersion.ISO_2) - Report.FeatureIsNotAvailable (Compiler, Location, "automatically implemented properties"); + bool auto = AccessorFirst.Block == null && (AccessorSecond == null || AccessorSecond.Block == null) && + (ModFlags & (Modifiers.ABSTRACT | Modifiers.EXTERN)) == 0; + + if (Initializer != null) { + if (!auto) + Report.Error (8050, Location, "`{0}': Only auto-implemented properties can have initializers", + GetSignatureForError ()); + + if (IsInterface) + Report.Error (8053, Location, "`{0}': Properties inside interfaces cannot have initializers", + GetSignatureForError ()); + + if (Compiler.Settings.Version < LanguageVersion.V_6) + Report.FeatureIsNotAvailable (Compiler, Location, "auto-implemented property initializer"); + } + + if (auto) { + if (Get == null) { + Report.Error (8052, Location, "Auto-implemented property `{0}' must have get accessor", + GetSignatureForError ()); + return false; + } + + if (Initializer == null && AccessorSecond == null) { + Report.Error (8051, Location, "Auto-implemented property `{0}' must have set accessor or initializer", + GetSignatureForError ()); + } + + if (Compiler.Settings.Version < LanguageVersion.V_3 && Initializer == null) + Report.FeatureIsNotAvailable (Compiler, Location, "auto-implemented properties"); - Get.ModFlags |= Modifiers.COMPILER_GENERATED; - Set.ModFlags |= Modifiers.COMPILER_GENERATED; CreateAutomaticProperty (); } diff --git a/mcs/mcs/report.cs b/mcs/mcs/report.cs index 009007b0d5..5ae47d8a0d 100644 --- a/mcs/mcs/report.cs +++ b/mcs/mcs/report.cs @@ -56,7 +56,9 @@ namespace Mono.CSharp { 3000, 3001, 3002, 3003, 3005, 3006, 3007, 3008, 3009, 3010, 3011, 3012, 3013, 3014, 3015, 3016, 3017, 3018, 3019, 3021, 3022, 3023, 3024, 3026, 3027, - 4014 + 4014, 4024, 4025, 4026, + 7035, 7080, 7081, 7082, 7095, + 8009, }; static HashSet AllWarningsHashSet; diff --git a/mcs/mcs/settings.cs b/mcs/mcs/settings.cs index 5e56f614f2..3c7f13bdb1 100644 --- a/mcs/mcs/settings.cs +++ b/mcs/mcs/settings.cs @@ -28,6 +28,7 @@ namespace Mono.CSharp { V_3 = 3, V_4 = 4, V_5 = 5, + V_6 = 6, Future = 100, Default = LanguageVersion.Future, @@ -1136,11 +1137,13 @@ namespace Mono.CSharp { switch (value.ToLowerInvariant ()) { case "iso-1": + case "1": settings.Version = LanguageVersion.ISO_1; return ParseResult.Success; case "default": settings.Version = LanguageVersion.Default; return ParseResult.Success; + case "2": case "iso-2": settings.Version = LanguageVersion.ISO_2; return ParseResult.Success; @@ -1153,12 +1156,15 @@ namespace Mono.CSharp { case "5": settings.Version = LanguageVersion.V_5; return ParseResult.Success; + case "6": + settings.Version = LanguageVersion.V_6; + return ParseResult.Success; case "future": settings.Version = LanguageVersion.Future; return ParseResult.Success; } - report.Error (1617, "Invalid -langversion option `{0}'. It must be `ISO-1', `ISO-2', `3', `4', `5', `Default' or `Future'", value); + report.Error (1617, "Invalid -langversion option `{0}'. It must be `ISO-1', `ISO-2', Default or value in range 1 to 6", value); return ParseResult.Error; case "/codepage": diff --git a/mcs/mcs/statement.cs.REMOVED.git-id b/mcs/mcs/statement.cs.REMOVED.git-id index 888d45d456..7040de1d8f 100644 --- a/mcs/mcs/statement.cs.REMOVED.git-id +++ b/mcs/mcs/statement.cs.REMOVED.git-id @@ -1 +1 @@ -cfcf334197132489b4a1ff7637f4022f46182267 \ No newline at end of file +085a9a0fb5adf09da74a561c68300679586bca25 \ No newline at end of file diff --git a/mcs/mcs/typemanager.cs b/mcs/mcs/typemanager.cs index 870b7be2a7..6e785dfc09 100644 --- a/mcs/mcs/typemanager.cs +++ b/mcs/mcs/typemanager.cs @@ -73,7 +73,6 @@ namespace Mono.CSharp public readonly TypeSpec[] OperatorsUnaryMutator; public readonly TypeSpec[] BinaryPromotionsTypes; - public readonly TypeSpec[] SwitchUserTypes; readonly BuiltinTypeSpec[] types; @@ -125,7 +124,6 @@ namespace Mono.CSharp OperatorsUnaryMutator = UnaryMutator.CreatePredefinedOperatorsTable (this); BinaryPromotionsTypes = ConstantFold.CreateBinaryPromotionsTypes (this); - SwitchUserTypes = Switch.CreateSwitchUserTypes (this); types = new BuiltinTypeSpec[] { Object, ValueType, Attribute, @@ -200,6 +198,7 @@ namespace Mono.CSharp public readonly PredefinedType SecurityAction; public readonly PredefinedType Dictionary; public readonly PredefinedType Hashtable; + public readonly TypeSpec[] SwitchUserTypes; // // C# 3.0 @@ -321,6 +320,8 @@ namespace Mono.CSharp Task.Define (); if (TaskGeneric.Define ()) TaskGeneric.TypeSpec.IsGenericTask = true; + + SwitchUserTypes = Switch.CreateSwitchUserTypes (module, Nullable.TypeSpec); } } diff --git a/mcs/mcs/typespec.cs b/mcs/mcs/typespec.cs index 73d82b086f..0da8133fbd 100644 --- a/mcs/mcs/typespec.cs +++ b/mcs/mcs/typespec.cs @@ -295,6 +295,12 @@ namespace Mono.CSharp } } + public bool IsStructOrEnum { + get { + return (Kind & (MemberKind.Struct | MemberKind.Enum)) != 0; + } + } + public bool IsTypeBuilder { get { #if STATIC @@ -1930,6 +1936,11 @@ namespace Mono.CSharp return ac; } + + public override List ResolveMissingDependencies (MemberSpec caller) + { + return Element.ResolveMissingDependencies (caller); + } } class ReferenceContainer : ElementTypeSpec diff --git a/mcs/tests/Makefile b/mcs/tests/Makefile index 33925e7df2..522c78d44d 100644 --- a/mcs/tests/Makefile +++ b/mcs/tests/Makefile @@ -6,7 +6,7 @@ thisdir = tests SUBDIRS = include ../build/rules.make -DISTFILES = $(wildcard dlls/**/*.cs) $(wildcard dlls/*.cs) $(wildcard dlls/*.inc) +DISTFILES = $(wildcard dlls/**/*.cs) $(wildcard dlls/*.cs) $(wildcard dlls/*.inc) $(wildcard dlls/*.il) DISTFILES += $(wildcard *.cs) $(wildcard *.il) $(wildcard *.xml) $(wildcard *.inc) $(wildcard known-issues-*) $(wildcard *.snk) with_mono_path = MONO_PATH="$(topdir)/class/lib/$(PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" diff --git a/mcs/tests/dlls/test-883.il b/mcs/tests/dlls/test-883.il new file mode 100644 index 0000000000..d6b1fc4a1e --- /dev/null +++ b/mcs/tests/dlls/test-883.il @@ -0,0 +1,27 @@ +.assembly extern mscorlib +{ +} + +.assembly 'test-883' +{ + .publickey = (00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 // .$.............. + 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 // .$..RSA1........ + 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF // y..w..:.k.z.t... + CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D // .....t.+...,.4GM + 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE // ..$G.~.h..So. (); - - [DllImport ("Dingus")] - extern static void Do2 (); - - public static void Main () - { - - } -} \ No newline at end of file diff --git a/mcs/tests/gtest-391.cs b/mcs/tests/gtest-391.cs index bea361535a..fbc4644f46 100644 --- a/mcs/tests/gtest-391.cs +++ b/mcs/tests/gtest-391.cs @@ -19,12 +19,8 @@ class C if (b != "a") return 1; - int? i = null ?? null; - if (i != null) - return 2; - object z = a ?? null; - if (i != null) + if (z != null) return 3; string p = default (string) ?? "a"; diff --git a/mcs/tests/gtest-409.cs b/mcs/tests/gtest-409.cs index 96aff7aa33..1d2a5ad00f 100644 --- a/mcs/tests/gtest-409.cs +++ b/mcs/tests/gtest-409.cs @@ -1,7 +1,7 @@ using System; // -// Parser conditional and cast expression tests +// parser conditional and cast expression tests // class A @@ -31,6 +31,18 @@ public class ConditionalParsing struct S { } + + struct MyTestStruct : IDisposable + { + public void Dispose () + { + } + + public static implicit operator MyTestStruct (int i) + { + return new MyTestStruct (); + } + } void Test_1 (bool a) { @@ -129,6 +141,15 @@ public class ConditionalParsing bool? b = Test (1, arg:2); } + void Test_17 () + { + { + using (MyTestStruct? mts = (int?) 1) + { + } + } + } + static void Helper (T arg) { } diff --git a/mcs/tests/gtest-502.cs b/mcs/tests/gtest-502.cs index dce8e68b55..6789ff8756 100644 --- a/mcs/tests/gtest-502.cs +++ b/mcs/tests/gtest-502.cs @@ -15,6 +15,10 @@ class C static Type simple = typeof (Simple); } +class D : C +{ +} + class A { public class N @@ -30,6 +34,9 @@ class M if (typeof (TestAlias).ToString () != "A+N`1[System.Double]") return 1; + + if (typeof (D<>.Simple).ToString () != "C`1+Simple[T]") + return 2; return 0; } diff --git a/mcs/tests/gtest-614.cs b/mcs/tests/gtest-614.cs new file mode 100644 index 0000000000..d68193ad0b --- /dev/null +++ b/mcs/tests/gtest-614.cs @@ -0,0 +1,28 @@ +using System; + +struct S +{ + public static explicit operator int? (S? s) + { + throw new ApplicationException (); + } + + public static implicit operator int (S? s) + { + return 2; + } +} + +class C +{ + public static int Main() + { + int? nn = 3; + S? s = new S (); + int? ret = s ?? nn; + if (ret != 2) + return 1; + + return 0; + } +} diff --git a/mcs/tests/gtest-616.cs b/mcs/tests/gtest-616.cs new file mode 100644 index 0000000000..500e254207 --- /dev/null +++ b/mcs/tests/gtest-616.cs @@ -0,0 +1,37 @@ +using System; + +struct S : IDisposable +{ + public void Dispose () + { + } +} + +class A where T : IDisposable +{ + public virtual bool Test (U u) where U : T + { + using (u) { + return false; + } + } +} + +class B : A +{ + public override bool Test (U u) + { + using (u) { + return true; + } + } + + public static int Main () + { + var b = new B (); + if (!b.Test (new S ())) + return 1; + + return 0; + } +} \ No newline at end of file diff --git a/mcs/tests/gtest-617.cs b/mcs/tests/gtest-617.cs new file mode 100644 index 0000000000..da3b3c654a --- /dev/null +++ b/mcs/tests/gtest-617.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; + +class Program +{ + static void Main() + { + foreach (string x in new B ()) { + } + } +} + +class A +{ + public IEnumerator GetEnumerator () + { + var s = new List(); + s.Add("1"); + return s.GetEnumerator(); + } +} + +class B : A +{ + public IEnumerator GetEnumerator (int[] x = null) + { + throw new NotImplementedException (); + } +} \ No newline at end of file diff --git a/mcs/tests/gtest-618.cs b/mcs/tests/gtest-618.cs new file mode 100644 index 0000000000..d92fa12d18 --- /dev/null +++ b/mcs/tests/gtest-618.cs @@ -0,0 +1,73 @@ +using System; + +struct S1 +{ + public static implicit operator int (S1? s) + { + return 1; + } +} + +struct S2 +{ + public static implicit operator int? (S2? s) + { + return null; + } +} + +struct S3 +{ + public static implicit operator int? (S3? s) + { + return 2; + } +} + +struct S4 +{ + public static implicit operator int? (S4 s) + { + return 3; + } +} + +class C +{ + public static int Main () + { + S1? s1 = new S1 (); + switch (s1) { + case 1: + break; + default: + return 1; + } + + S2? s2 = new S2 (); + switch (s2) { + case null: + break; + default: + return 2; + } + + S3? s3 = new S3 (); + switch (s3) { + case 2: + break; + default: + return 3; + } + + S4 s4 = new S4 (); + switch (s4) { + case 3: + break; + default: + return 4; + } + + return 0; + } +} \ No newline at end of file diff --git a/mcs/tests/gtest-619.cs b/mcs/tests/gtest-619.cs new file mode 100644 index 0000000000..63bc79c595 --- /dev/null +++ b/mcs/tests/gtest-619.cs @@ -0,0 +1,35 @@ +interface I +{ +} + +interface IB : I +{ + +} + +struct S +{ + class P + { + } + + public class C : IB

+ { + } +} + +class M +{ + static void Test (I iface) + { + } + + static void Test (IB iface) + { + } + + static void Main () + { + Test (new S.C ()); + } +} diff --git a/mcs/tests/gtest-620.cs b/mcs/tests/gtest-620.cs new file mode 100644 index 0000000000..45e6059a2c --- /dev/null +++ b/mcs/tests/gtest-620.cs @@ -0,0 +1,28 @@ +interface I +{ +} + +class A +{ + public virtual T M (U u) where U : T + { + return u; + } +} + +class B : A>, I +{ + public override I M (U u) + { + return u; + } +} + +class Bug +{ + public static void Main () + { + var b = new B (); + b.M (b); + } +} \ No newline at end of file diff --git a/mcs/tests/gtest-autoproperty-09.cs b/mcs/tests/gtest-autoproperty-09.cs new file mode 100644 index 0000000000..e018015684 --- /dev/null +++ b/mcs/tests/gtest-autoproperty-09.cs @@ -0,0 +1,52 @@ +using System; + +struct S +{ + public static int P { get; } = 4; + + public static int Main () + { + if (P != 4) + return 1; + + var c = new C (); + if (c.P != -3) + return 2; + + if (c.P2 != 1) + return 3; + + c.P2 = 9; + if (c.P2 != 9) + return 4; + + var s = new S2 (null); + if (s.P != 4) + return 12; + + if (s.P2 != 1) + return 13; + + s.P2 = 9; + if (s.P2 != 9) + return 14; + + return 0; + } +} + +class C +{ + public decimal P { get; } = -3; + public int P2 { get; set; } = 1; +} + +struct S2 +{ + public int P { get; } = 4; + public int P2 { get; set; } = 1; + + public S2 (object o) + { + } +} \ No newline at end of file diff --git a/mcs/tests/gtest-collectioninit-04.cs b/mcs/tests/gtest-collectioninit-04.cs new file mode 100644 index 0000000000..8fc41c7555 --- /dev/null +++ b/mcs/tests/gtest-collectioninit-04.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +class X +{ + internal static Dictionary> Test = new Dictionary> { { + typeof (int), + metadata => "1" + }, { + typeof (uint), + metadata => "2" + }, + }; + + public static void Main () + { + } +} \ No newline at end of file diff --git a/mcs/tests/gtest-initialize-13.cs b/mcs/tests/gtest-initialize-13.cs new file mode 100644 index 0000000000..7c213e461e --- /dev/null +++ b/mcs/tests/gtest-initialize-13.cs @@ -0,0 +1,18 @@ +using System; + +public struct EventInitializerTest +{ + public event Action a; + public event Action b; + public event Action c; + + public static void Main() + { + Action d = null; + var eit = new EventInitializerTest() { + a = null, + b = delegate {}, + c = d + }; + } +} \ No newline at end of file diff --git a/mcs/tests/gtest-lambda-35.cs b/mcs/tests/gtest-lambda-35.cs new file mode 100644 index 0000000000..4cfd316d42 --- /dev/null +++ b/mcs/tests/gtest-lambda-35.cs @@ -0,0 +1,30 @@ +using System; + +class C +{ + static int Foo (Func b) + { + return 1; + } + + static int Foo (Func a) + { + return 2; + } + + static int Main() + { + if (Foo (() => 1) != 2) + return 1; + + if (Foo (() => (short) 1) != 1) + return 2; + + if (Foo (() => (byte) 1) != 1) + return 3; + + Console.WriteLine ("ok"); + return 0; + } + +} \ No newline at end of file diff --git a/mcs/tests/gtest-named-05.cs b/mcs/tests/gtest-named-05.cs new file mode 100644 index 0000000000..125e60d4b1 --- /dev/null +++ b/mcs/tests/gtest-named-05.cs @@ -0,0 +1,26 @@ +class Test +{ + public static void Main () + { + string p; + M (y: p = F (), x: p); + + int i; + string p2; + M2 (out i, c: p2 = F (), b : p2); + } + + public static void M (string x, string y) + { + } + + static void M2 (out int a, string b, string c) + { + a = 2; + } + + public static string F () + { + return null; + } +} \ No newline at end of file diff --git a/mcs/tests/gtest-optional-32.cs b/mcs/tests/gtest-optional-32.cs new file mode 100644 index 0000000000..4ca3a6097d --- /dev/null +++ b/mcs/tests/gtest-optional-32.cs @@ -0,0 +1,23 @@ +using System; + +abstract class A +{ + public abstract int[] Foo (params int[] args); +} + +class B : A +{ + public override int[] Foo (int[] args = null) + { + return args; + } + + static int Main () + { + var b = new B(); + if (b.Foo().Length != 0) + return 1; + + return 0; + } +} \ No newline at end of file diff --git a/mcs/tests/gtest-optional-33.cs b/mcs/tests/gtest-optional-33.cs new file mode 100644 index 0000000000..0a0d311bb0 --- /dev/null +++ b/mcs/tests/gtest-optional-33.cs @@ -0,0 +1,72 @@ +using System.Runtime.CompilerServices; +using System; + +class TestCallerLineNumber +{ + static void Test ([CallerLineNumber] object line = null) + { + } + + static void Test ([CallerLineNumber] decimal line = 1) + { + } + + static void Test ([CallerLineNumber] double line = 1) + { + } + + static void Test ([CallerLineNumber] float line = 1) + { + } + + static void Test ([CallerLineNumber] int line = 1) + { + } + + static void Test ([CallerLineNumber] uint line = uint.MaxValue) + { + } + + static void Test ([CallerLineNumber] long line = 1) + { + } + + static void Test ([CallerLineNumber] ulong line = 1) + { + } + + static void Test ([CallerLineNumber] decimal? line = 1) + { + } + + static void Test ([CallerLineNumber] double? line = 1) + { + } + + static void Test ([CallerLineNumber] float? line = 1) + { + } + + static void Test ([CallerLineNumber] int? line = 1) + { + } + + static void Test ([CallerLineNumber] uint? line = uint.MaxValue) + { + } + + static void Test ([CallerLineNumber] long? line = 1) + { + } + + static void Test ([CallerLineNumber] ulong? line = 1) + { + } +} + +class D +{ + public static void Main () + { + } +} \ No newline at end of file diff --git a/mcs/tests/test-640.cs b/mcs/tests/test-640.cs index 705149a365..c85253596c 100644 --- a/mcs/tests/test-640.cs +++ b/mcs/tests/test-640.cs @@ -3,6 +3,11 @@ enum MyEnum : byte Value_1 = 1 } +enum E : ushort +{ + V = 1 +} + public class C { public static int Main () @@ -28,6 +33,11 @@ public class C if (b != (MyEnum)254) return 4; + var e = E.V; + checked { + var res = ~e; + } + System.Console.WriteLine ("OK"); return 0; } diff --git a/mcs/tests/test-671.cs b/mcs/tests/test-671.cs index f6b992f384..87395cdeb3 100644 --- a/mcs/tests/test-671.cs +++ b/mcs/tests/test-671.cs @@ -9,7 +9,7 @@ class C static bool Bar (object t) { - return Bar is object; + return t is object; } } diff --git a/mcs/tests/test-77.cs b/mcs/tests/test-77.cs index c4525d7b34..7da6a379d4 100644 --- a/mcs/tests/test-77.cs +++ b/mcs/tests/test-77.cs @@ -57,7 +57,15 @@ class XX { s = (object)1 + null; if (s != "1") return 12; - + + s = (string)null + (object)null; + if (s.Length != 0) + return 13; + + s = (object)null + (string)null; + if (s.Length != 0) + return 14; + System.Console.WriteLine ("test ok"); return 0; } diff --git a/mcs/tests/test-894.cs b/mcs/tests/test-894.cs new file mode 100644 index 0000000000..259a66cd03 --- /dev/null +++ b/mcs/tests/test-894.cs @@ -0,0 +1,19 @@ +using System; + +[AttributeUsage (AttributeTargets.All + 0xFFFFFE + 1)] +class A1Attribute : Attribute +{ +} + +[AttributeUsage ((AttributeTargets) 0xffff)] +class A2Attribute : Attribute +{ +} + +public class Test +{ + public static void Main () + { + + } +} \ No newline at end of file diff --git a/mcs/tests/test-896.cs b/mcs/tests/test-896.cs new file mode 100644 index 0000000000..4336bf7314 --- /dev/null +++ b/mcs/tests/test-896.cs @@ -0,0 +1,13 @@ +using System; + +class Program +{ + public static void Main () + { + goto L1; + int z; + L1: + z = 3; + Console.WriteLine (z); + } +} \ No newline at end of file diff --git a/mcs/tests/test-897.cs b/mcs/tests/test-897.cs new file mode 100644 index 0000000000..e5b328255e --- /dev/null +++ b/mcs/tests/test-897.cs @@ -0,0 +1,26 @@ +using System; + +class X +{ + static int Foo () + { + throw new ApplicationException (); + } + + public static int Main () + { + try { + var b = Foo () is object; + return 1; + } catch (ApplicationException) { + } + + try { + var b = Foo () as object; + return 2; + } catch (ApplicationException) { + } + + return 0; + } +} \ No newline at end of file diff --git a/mcs/tests/test-898.cs b/mcs/tests/test-898.cs new file mode 100644 index 0000000000..5b6940372f --- /dev/null +++ b/mcs/tests/test-898.cs @@ -0,0 +1,79 @@ +// Compiler options: -unsafe + +using System; + +class BoolArrayWithByteValues +{ + + static int Foo (ref bool b) + { + bool b2 = true; + bool r; + r = b == true; + if (!r) + return 10; + + r = b == b2; + if (!r) + return 11; + + return 0; + } + + static unsafe bool Ptr () + { + bool rv; + + var arr = new byte [256]; + for (int i = 0; i < arr.Length; i++) + arr [i] = (byte) i; + fixed (byte* bptr = arr) { + rv = true; + for (int i = 0; i < arr.Length; i++) { + bool* boptr = (bool*)(bptr + i); + if (arr[i] > 0 && !*boptr) + rv = false; + System.Console.WriteLine ("#{0} = {1}", i, *boptr); + } + } + + return rv; + } + + static int Main() + { + var a = new bool[1]; + Buffer.SetByte (a, 0, 5); + + var b = true; + bool r; + r = a [0]; + if (!r) + return 1; + + r = a [0] == true; + if (!r) + return 2; + + r = a [0] == b; + if (!r) + return 3; + + r = a [0] != false; + if (!r) + return 4; + + r = a [0] != b; + if (r) + return 5; + + var res = Foo (ref a [0]); + if (res != 0) + return res; + + if (!Ptr ()) + return 6; + + return 0; + } +} \ No newline at end of file diff --git a/mcs/tests/test-899.cs b/mcs/tests/test-899.cs new file mode 100644 index 0000000000..2f8c9e57d3 --- /dev/null +++ b/mcs/tests/test-899.cs @@ -0,0 +1,15 @@ +using System; + +class Test +{ + public static void Main() + { + object o; + lock (o = new object()) + { + Console.WriteLine (o); + } + + Console.WriteLine (o); + } +} diff --git a/mcs/tests/test-900.cs b/mcs/tests/test-900.cs new file mode 100644 index 0000000000..b0e4b0a3da --- /dev/null +++ b/mcs/tests/test-900.cs @@ -0,0 +1,17 @@ +using System; + +class D +{ + public static implicit operator D (Action d) + { + return new D (); + } +} + +class Program +{ + static void Main() + { + D d = (D) Main; + } +} diff --git a/mcs/tests/test-901.cs b/mcs/tests/test-901.cs new file mode 100644 index 0000000000..bdd7d076ce --- /dev/null +++ b/mcs/tests/test-901.cs @@ -0,0 +1,23 @@ +using System; + +class X +{ + public static void Main () + { + int i; + if (true) { + i = 3; + } + + Console.WriteLine (i); + + int i2; + if (false) { + throw new ApplicationException (); + } else { + i2 = 4; + } + + Console.WriteLine (i2); + } +} \ No newline at end of file diff --git a/mcs/tests/test-902.cs b/mcs/tests/test-902.cs new file mode 100644 index 0000000000..271035fddb --- /dev/null +++ b/mcs/tests/test-902.cs @@ -0,0 +1,24 @@ +abstract class A +{ + public virtual void M (params B[] b) + { + } +} + +class B : A +{ + public override void M (B[] b2) + { + } +} + +class Test2 +{ + public static void Main() + { + B b = new B(); + A a = b; + a.M (b, b); + b.M (b, b, b); + } +} \ No newline at end of file diff --git a/mcs/tests/test-async-13.cs b/mcs/tests/test-async-13.cs index 9f8cccac07..33279ff095 100644 --- a/mcs/tests/test-async-13.cs +++ b/mcs/tests/test-async-13.cs @@ -8,10 +8,12 @@ using System.Runtime.CompilerServices; struct S { public int Value; + public S2 s2; public S (int a1, string a2) { Value = a1; + s2 = new S2 (); } public void SetValue (int value) @@ -32,6 +34,11 @@ struct S } } +struct S2 +{ + public int Value; +} + enum E { E_1 = 1 @@ -270,6 +277,21 @@ class Tester : Base return 0; } + async Task ArrayAccessTest_10 () + { + var b = new bool [1] { true }; + + var r = b [await Task.Factory.StartNew (() => 0)]; + return r; + } + + async Task ArrayAccessTest_11 () + { + var a = new S [1]; + a [await Task.Factory.StartNew (() => 0)].s2.Value += 5; + return a [await Task.Factory.StartNew(() => 0)].s2.Value == 5; + } + async Task AssignTest_1 () { field_int = await Task.Factory.StartNew (() => 0); @@ -585,6 +607,18 @@ class Tester : Base var s = new S (await Task.Factory.StartNew (() => 77), await Task.Factory.StartNew (() => "b")); return s.Value == 77; } + + async Task NewDelegate_1 () + { + var f = new Func (await NewDelegate_1_0 ()); + return f (); + } + + static async Task> NewDelegate_1_0 () + { + await Task.Factory.StartNew (() => { }); + return () => 0; + } async Task NewInitTest_1 () { diff --git a/mcs/tests/test-async-15.cs b/mcs/tests/test-async-15.cs index a1da25f39d..a3ae814086 100644 --- a/mcs/tests/test-async-15.cs +++ b/mcs/tests/test-async-15.cs @@ -1,8 +1,8 @@ -// Compiler options: -langversion:future - using System; using System.Threading.Tasks; using System.Threading; +using System.Collections; +using System.Collections.Generic; interface IFoo { @@ -25,12 +25,28 @@ struct S : IFoo } } +struct S2 : IEnumerable +{ + public List Values; + + public void Add (int x) + { + if (Values == null) + Values = new List (); + + Values.Add(x); + } + + public IEnumerator GetEnumerator() + { + return Values as IEnumerator; + } +} + class Tester { async Task NewInitTestGen () where T : struct, IFoo { - int value = 9; - var s = new T () { Value = await Task.Factory.StartNew (() => 13).ConfigureAwait (false) }; @@ -40,6 +56,16 @@ class Tester return s; } + + static async Task NewInitCol () + { + var s = new S2 { + await Task.FromResult (1), + await Task.Factory.StartNew (() => 2) + }; + + return s.Values [0] + s.Values [1]; + } public static int Main () { @@ -51,6 +77,10 @@ class Tester if (t.Result.Value != 13) return 2; + + var v = NewInitCol ().Result; + if (v != 3) + return 3; return 0; } diff --git a/mcs/tests/test-async-22.cs b/mcs/tests/test-async-22.cs index ca6e1faf90..e715d1a459 100644 --- a/mcs/tests/test-async-22.cs +++ b/mcs/tests/test-async-22.cs @@ -174,4 +174,13 @@ namespace AwaitNS var l = await.Length; } } + + class TypeChecks + { + static void M (object await) + { + var b = await is Exception; + var c = await as Exception; + } + } } diff --git a/mcs/tests/test-async-35.cs b/mcs/tests/test-async-35.cs index 5b2cadb227..e04a810ebc 100644 --- a/mcs/tests/test-async-35.cs +++ b/mcs/tests/test-async-35.cs @@ -14,6 +14,15 @@ namespace N.M return 0; } + public static async Task NestedAsyncAnonymousMethod () + { + Action a = async delegate { + await Task.Yield(); + }; + + await Task.Yield(); + } + public static int Main () { var m = typeof (C).GetMethod ("AsyncMethod"); @@ -32,6 +41,28 @@ namespace N.M if (c != 1) return 3; + + m = typeof (C).GetMethod ("NestedAsyncAnonymousMethod"); + attr = m.GetCustomAttribute (); + if (attr == null) + return 10; + + if (attr.StateMachineType == null) + return 11; + + var n = typeof (C).GetNestedTypes (BindingFlags.NonPublic).Single (l => l.Name.Contains ("NestedAsyncAnonymousMethod")); + if (n == null) + return 12; + + m = n.GetMethods (BindingFlags.NonPublic | BindingFlags.Static).Single (l => l.Name.Contains ("m__")); + + attr = m.GetCustomAttribute (); + if (attr == null) + return 13; + + if (attr.StateMachineType == null) + return 14; + return 0; } } diff --git a/mcs/tests/test-async-63.cs b/mcs/tests/test-async-63.cs new file mode 100644 index 0000000000..4572d7e2ed --- /dev/null +++ b/mcs/tests/test-async-63.cs @@ -0,0 +1,85 @@ +using System; +using System.Threading.Tasks; + +class C +{ + static int counter; + public static async Task TestSingleAwait (bool throwException) + { + try { + if (throwException) + throw new ApplicationException (); + } catch (ApplicationException ex) { + Console.WriteLine ("x1a"); + ++counter; + await Call (); + Console.WriteLine ("x2a"); + ++counter; + } catch { + throw; + } + + Console.WriteLine ("end"); + } + + public static async Task TestDoubleAwait (bool throwException) + { + try { + if (throwException) + throw new ApplicationException (); + } catch (ApplicationException ex) { + Console.WriteLine ("x1a"); + ++counter; + await Call (); + Console.WriteLine ("x2a"); + ++counter; + } catch { + Console.WriteLine ("x1b"); + counter += 4; + await Call (); + Console.WriteLine ("x2b"); + counter += 7; + } + + Console.WriteLine ("end"); + } + + static Task Call () + { + return Task.Factory.StartNew (() => false); + } + + void HH () + { + try { + throw new ApplicationException (); + } catch { + throw; + } + } + + public static int Main () + { + TestSingleAwait (true).Wait (); + Console.WriteLine (counter); + if (counter != 2) + return 1; + + TestSingleAwait (false).Wait (); + if (counter != 2) + return 2; + + counter = 0; + + TestDoubleAwait (true).Wait (); + Console.WriteLine (counter); + if (counter != 2) + return 3; + + TestDoubleAwait (false).Wait (); + if (counter != 2) + return 4; + + return 0; + } +} diff --git a/mcs/tests/test-async-64.cs b/mcs/tests/test-async-64.cs new file mode 100644 index 0000000000..e16e127029 --- /dev/null +++ b/mcs/tests/test-async-64.cs @@ -0,0 +1,18 @@ +using System; +using System.Threading.Tasks; + +class X +{ + public static void Main () + { + Invoke (async delegate { + await Task.Yield (); + return 1; + }); + } + + static T Invoke (Func> m) + { + return default (T); + } +} \ No newline at end of file diff --git a/mcs/tests/test-async-65.cs b/mcs/tests/test-async-65.cs new file mode 100644 index 0000000000..3967236691 --- /dev/null +++ b/mcs/tests/test-async-65.cs @@ -0,0 +1,54 @@ +using System; +using System.Threading.Tasks; + +class C +{ + static int counter; + + public static async Task TestRethrow (Exception e) + { + try { + throw e; + } catch (ApplicationException) { + Console.WriteLine ("x1a"); + counter = 1; + await Task.Delay (1); + Console.WriteLine ("x2a"); + counter = 3; + throw; + } catch { + counter = 9; + await Task.Delay (1); + Console.WriteLine ("ga"); + throw; + } + } + + public static int Main () + { + var ex = new ApplicationException (); + try { + TestRethrow (ex).Wait (); + } catch (AggregateException e) { + if (e.InnerException != ex) + return 1; + } + + if (counter != 3) + return 2; + + var ex2 = new NotSupportedException (); + try { + TestRethrow (ex2).Wait (); + } catch (AggregateException e) { + if (e.InnerException != ex2) + return 3; + } + + if (counter != 9) + return 4; + + Console.WriteLine ("ok"); + return 0; + } +} diff --git a/mcs/tests/test-async-66.cs b/mcs/tests/test-async-66.cs new file mode 100644 index 0000000000..bbba098022 --- /dev/null +++ b/mcs/tests/test-async-66.cs @@ -0,0 +1,42 @@ +using System; +using System.Threading.Tasks; + +class TestFinally +{ + static int counter; + + async static Task Test (bool throwException) + { + try { + if (throwException) + throw new ApplicationException (); + + ++counter; + System.Console.WriteLine (); + } finally { + counter += 10; + await Task.Delay (2); + counter += 100; + } + counter += 1000; + } + + static int Main () + { + Test (false).Wait (); + if (counter != 1111) + return 1; + + counter = 0; + try { + Test (true).Wait (); + return 2; + } catch (AggregateException) { + } + + if (counter != 110) + return 3; + + return 0; + } +} \ No newline at end of file diff --git a/mcs/tests/test-async-67.cs b/mcs/tests/test-async-67.cs new file mode 100644 index 0000000000..2348dc7ff7 --- /dev/null +++ b/mcs/tests/test-async-67.cs @@ -0,0 +1,24 @@ +using System; +using System.Threading.Tasks; + +class Test +{ + public static async Task Run () + { + return new int[] { + 1, await Task.Factory.StartNew (() => 2) + }; + } + + public static int Main () + { + var t = Run ().Result; + if (t [0] != 1) + return 1; + + if (t [1] != 2) + return 2; + + return 0; + } +} \ No newline at end of file diff --git a/mcs/tests/test-async-69.cs b/mcs/tests/test-async-69.cs new file mode 100644 index 0000000000..af133f953c --- /dev/null +++ b/mcs/tests/test-async-69.cs @@ -0,0 +1,151 @@ +using System; +using System.Threading.Tasks; + +class Test +{ + static bool fin; + + static async Task YieldValue (int a) + { + await Task.Yield (); + return a; + } + + static async Task TestFinallyWithReturn (int value) + { + fin = false; + try { + if (value > 4) + return 5; + + value += 10; + Console.WriteLine ("try"); + } finally { + fin = true; + Console.WriteLine ("finally"); + value += await YieldValue (100); + } + + value += 1000; + Console.WriteLine ("over"); + + return value; + } + + static async Task TestFinallyWithReturnNoValue (int value) + { + fin = false; + try { + if (value > 4) + return; + + value += 10; + Console.WriteLine ("try"); + } finally { + fin = true; + Console.WriteLine ("finally"); + value += await YieldValue (100); + } + + value += 1000; + Console.WriteLine ("over"); + } + + static async Task TestFinallyWithGoto (int value) + { + fin = false; + try { + if (value > 4) + goto L; + + value += 10; + Console.WriteLine ("try"); + } finally { + fin = true; + Console.WriteLine ("finally"); + value += await YieldValue (100); + } + value += 1000; +L: + Console.WriteLine ("over"); + return value; + } + + static async Task TestFinallyWithGotoAndReturn (int value) + { + fin = false; + try { + if (value > 4) + goto L; + + value += 10; + Console.WriteLine ("try"); + if (value > 12) + return 9; + } finally { + fin = true; + Console.WriteLine ("finally"); + value += await YieldValue (100); + } + value += 1000; +L: + Console.WriteLine ("over"); + return value; + } + + public static int Main () + { + if (TestFinallyWithReturn (9).Result != 5) + return 1; + + if (!fin) + return 2; + + if (TestFinallyWithReturn (1).Result != 1111) + return 3; + + if (!fin) + return 4; + + TestFinallyWithReturnNoValue (9).Wait (); + if (!fin) + return 5; + + TestFinallyWithReturnNoValue (1).Wait (); + if (!fin) + return 6; + + if (TestFinallyWithGoto (9).Result != 109) + return 7; + + if (!fin) + return 8; + + if (TestFinallyWithGoto (1).Result != 1111) + return 9; + + if (!fin) + return 10; + + if (TestFinallyWithGotoAndReturn (9).Result != 109) + return 11; + + if (!fin) + return 12; + + if (TestFinallyWithGotoAndReturn (1).Result != 1111) + return 13; + + if (!fin) + return 14; + + if (TestFinallyWithGotoAndReturn (3).Result != 9) + return 15; + + if (!fin) + return 16; + + Console.WriteLine ("ok"); + return 0; + } +} \ No newline at end of file diff --git a/mcs/tests/test-async-70.cs b/mcs/tests/test-async-70.cs new file mode 100644 index 0000000000..550c2bbcb8 --- /dev/null +++ b/mcs/tests/test-async-70.cs @@ -0,0 +1,97 @@ +using System; +using System.Threading.Tasks; + +class Test +{ + static async Task YieldValue (int a) + { + await Task.Yield (); + return a; + } + + static async Task TestNestedReturn (int v) + { + int x = 0; + + try { + try { + x = await YieldValue (1); + Console.WriteLine ("T1"); + if (x == v) + return 6; + } finally { + Console.WriteLine ("F1"); + + x += await YieldValue (2); + } + + Console.WriteLine ("AF1"); + } finally { + Console.WriteLine ("F2"); + try { + x += await YieldValue (4); + Console.WriteLine ("T3"); + } finally { + Console.WriteLine ("F3"); + x += await YieldValue (8); + } + } + + Console.WriteLine ("END"); + + return x; + } + + static async Task TestNestedGoto (int v) + { + int x = 0; + + try { + try { + Console.WriteLine ("T1"); + if (x == v) + goto L; + + x = await YieldValue (1); + } finally { + Console.WriteLine ("F1"); + + x += await YieldValue (2); + } + + Console.WriteLine ("AF1"); + } finally { + Console.WriteLine ("F2"); + try { + x += await YieldValue (4); + Console.WriteLine ("T3"); + } finally { + Console.WriteLine ("F3"); + x += await YieldValue (8); + } + } + + Console.WriteLine ("END"); +L: + Console.WriteLine ("END L"); + + return x; + } + + public static int Main () + { + if (TestNestedReturn (1).Result != 6) + return 1; + + if (TestNestedReturn (0).Result != 15) + return 2; + + if (TestNestedGoto (1).Result != 15) + return 3; + + if (TestNestedGoto (0).Result != 14) + return 4; + + return 0; + } +} \ No newline at end of file diff --git a/mcs/tests/test-async-71.cs b/mcs/tests/test-async-71.cs new file mode 100644 index 0000000000..2b7c425f8b --- /dev/null +++ b/mcs/tests/test-async-71.cs @@ -0,0 +1,25 @@ +// Compiler options: -unsafe + +using System; +using System.Threading.Tasks; + +class UnsafeContext +{ + static int Main() + { + if (TestUnsafe (1).Result != 0) + return 1; + + return 0; + } + + static async Task TestUnsafe (int g) + { + unsafe { + int* ga = &g; + } + + await Task.Yield (); + return 0; + } +} \ No newline at end of file diff --git a/mcs/tests/test-async-72.cs b/mcs/tests/test-async-72.cs new file mode 100644 index 0000000000..3621863a75 --- /dev/null +++ b/mcs/tests/test-async-72.cs @@ -0,0 +1,88 @@ +using System; +using System.Threading.Tasks; + +class Test +{ + static async Task YieldValue (int a) + { + await Task.Yield (); + return a; + } + + public static async Task BreakTest () + { + int value = 0; + try { + for (int i = 0; i < 8; ++i) { + try { + try { + value += await YieldValue (1); + + Console.WriteLine ("i = " + i); + + if (i > 2) + break; + + if (i > 1) + throw new ApplicationException (); + } catch (ApplicationException) { + Console.WriteLine ("catch"); + value += await YieldValue (100); + } + } finally { + Console.WriteLine ("F1"); + value += await YieldValue (10); + } + } + } finally { + Console.WriteLine ("F2"); + value += await YieldValue (1000); + } + + return value; + } + + public static async Task ContinueTest () + { + int value = 0; + try { + for (int i = 0; i < 8; ++i) { + try { + try { + value += await YieldValue (1); + + Console.WriteLine ("i = " + i); + + if (i < 2) + continue; + + if (i > 1) + throw new ApplicationException (); + } catch (ApplicationException) { + Console.WriteLine ("catch"); + value += await YieldValue (100); + } + } finally { + Console.WriteLine ("F1"); + value += await YieldValue (10); + } + } + } finally { + Console.WriteLine ("F2"); + value += await YieldValue (1000); + } + + return value; + } + + public static int Main () + { + if (BreakTest ().Result != 1144) + return 1; + + if (ContinueTest ().Result != 1688) + return 1; + + return 0; + } +} \ No newline at end of file diff --git a/mcs/tests/test-async-73.cs b/mcs/tests/test-async-73.cs new file mode 100644 index 0000000000..dc1935ff74 --- /dev/null +++ b/mcs/tests/test-async-73.cs @@ -0,0 +1,31 @@ +using System.Threading.Tasks; +using System; + +class X +{ + static async Task Foo () + { + var v = Throws (); + + try { + await v; + } catch (Exception e) { + return 0; + } + + return 1; + } + + static async Task Throws () + { + throw new Exception (); + } + + static int Main () + { + if (Foo ().Result != 0) + return 1; + + return 0; + } +} \ No newline at end of file diff --git a/mcs/tests/test-async-74.cs b/mcs/tests/test-async-74.cs new file mode 100644 index 0000000000..97bb7fd946 --- /dev/null +++ b/mcs/tests/test-async-74.cs @@ -0,0 +1,27 @@ +using System; +using System.Threading.Tasks; + +class AwaitGotoBug +{ + public async Task Test() + { + using ((IDisposable)null) + { + retry: + + if (Equals(1, 2)) + { + await Task.Yield(); + goto retry; + } + else + { + await Task.Yield(); + } + } + } + + public static void Main () + { + } +} \ No newline at end of file diff --git a/mcs/tests/test-ex-filter-03.cs b/mcs/tests/test-ex-filter-03.cs new file mode 100644 index 0000000000..d2a3e91041 --- /dev/null +++ b/mcs/tests/test-ex-filter-03.cs @@ -0,0 +1,21 @@ +using System; + +class X +{ + public static int Main () + { + try { + bool x = true; + try { + throw new ApplicationException (); + } catch (NullReferenceException) if (x) { + throw; + } + + return 1; + } catch (ApplicationException) { + Console.WriteLine ("ok"); + return 0; + } + } +} \ No newline at end of file diff --git a/mcs/tests/test-ex-filter-04.cs b/mcs/tests/test-ex-filter-04.cs new file mode 100644 index 0000000000..122accb2ee --- /dev/null +++ b/mcs/tests/test-ex-filter-04.cs @@ -0,0 +1,74 @@ +using System; +using System.Threading.Tasks; + +class X +{ + static Exception ex = new ApplicationException (); + + public static int Main () + { + if (Test (5, null).Result != 5) + return 1; + + try { + Test (5, ex).Wait (); + return 2; + } catch (AggregateException ae) { + if (ae.InnerException != ex) + return 3; + } + + try { + Test (15, ex).Wait (); + return 4; + } catch (AggregateException ae) { + if (ae.InnerException != ex) + return 5; + } + + try { + TestGeneric (5).Wait (); + return 10; + } catch (AggregateException ae) { + if (ae.InnerException != ex) + return 11; + } + + try { + TestGeneric (15).Wait (); + return 12; + } catch (AggregateException ae) { + if (ae.InnerException != ex) + return 13; + } + + return 0; + } + + async static Task Test (int x, Exception e) + { + try { + Console.WriteLine (x); + if (e != null) + throw e; + } catch (Exception) if (x != 15) { + await Task.FromResult (0); + throw; + } + + return x; + } + + async static Task TestGeneric (int x) + { + try { + Console.WriteLine (x); + throw ex; + } catch if (x != 15) { + await Task.FromResult (0); + throw; + } + + return x; + } +} \ No newline at end of file diff --git a/mcs/tests/test-ex-filter-05.cs b/mcs/tests/test-ex-filter-05.cs new file mode 100644 index 0000000000..5d1251a34d --- /dev/null +++ b/mcs/tests/test-ex-filter-05.cs @@ -0,0 +1,40 @@ +using System; +using System.Threading.Tasks; + +class Test +{ + static bool Verify (Func f) + { + return f (); + } + + static async Task TestCapturedException (Exception e) + { + try { + if (e != null) + throw e; + } catch (Exception ex) if (Verify (() => ex.Message == "foo")) { + await Task.Yield (); + Console.WriteLine (ex); + return 1; + } catch (Exception ex) if (Verify (() => ex.Message != null)) { + await Task.Yield (); + Console.WriteLine (ex); + return 2; + } + + return 3; + } + + public static int Main() + { + if (TestCapturedException (null).Result != 3) + return 1; + + var ex = new ApplicationException (); + if (TestCapturedException (ex).Result != 2) + return 2; + + return 0; + } +} \ No newline at end of file diff --git a/mcs/tests/test-ex-filter-06.cs b/mcs/tests/test-ex-filter-06.cs new file mode 100644 index 0000000000..86bbf0e2ea --- /dev/null +++ b/mcs/tests/test-ex-filter-06.cs @@ -0,0 +1,29 @@ +using System; +using System.IO; +using System.Collections.Generic; + +class C +{ + static int Test () where T : Exception + { + try { + throw null; + } catch (T t) if (t.Message != null) { + return 0; + } + } + + static int Main() + { + try { + Test (); + return 1; + } catch { + } + + if (Test () != 0) + return 2; + + return 0; + } +} \ No newline at end of file diff --git a/mcs/tests/test-expression-bodied-01.cs b/mcs/tests/test-expression-bodied-01.cs new file mode 100644 index 0000000000..6d827f21ed --- /dev/null +++ b/mcs/tests/test-expression-bodied-01.cs @@ -0,0 +1,54 @@ +using System; + +class C +{ + int value; + string f1 = "f-1"; + string f2 = "f=2"; + + public static string Test1 (string a, string b) => a + "|" + b; + void Test2 (int x) => value = x; + Func Test3 (int a) => () => a; + + public static implicit operator string (C c) => "op"; + + protected string Prop => f1 + " " + f2; + static Func Prop2 => () => "n1"; + + public int this[int arg1, int arg2] => arg2 - arg1; + + + int Check () + { + if (Test1 ("1", "5") != "1|5") + return 1; + + Test2 (6); + if (value != 6) + return 2; + + if (Test3 (9) () != 9) + return 3; + + string s = this; + if (s != "op") + return 4; + + if (Prop != "f-1 f=2") + return 5; + + if (Prop2 () != "n1") + return 6; + + if (this [13, 20] != 7) + return 7; + + return 0; + } + + static int Main() + { + var c = new C (); + return c.Check (); + } +} \ No newline at end of file diff --git a/mcs/tests/test-partial-26.cs b/mcs/tests/test-partial-26.cs index 54cfb9cb4e..78a543212d 100644 --- a/mcs/tests/test-partial-26.cs +++ b/mcs/tests/test-partial-26.cs @@ -1,21 +1,25 @@ using System; -namespace ConsoleApplication1 +namespace TestAttributesCollecting { - public partial class X + class A : Attribute { - [CLSCompliant (true)] - partial void Foo (); } public partial class X { - partial void Foo () + [A] + partial void Foo<[A] T>(/*[A]*/ int p); + } + + public partial class X + { + partial void Foo (int p) { int i; } } - + public partial class Y { partial void Foo () @@ -23,7 +27,7 @@ namespace ConsoleApplication1 int i; } } - + public partial class Y { [CLSCompliant (true)] @@ -34,16 +38,22 @@ namespace ConsoleApplication1 { public static int Main () { - var x = typeof (X).GetMethod ("Foo", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).GetCustomAttributes (true); + var m = typeof (X).GetMethod ("Foo", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); + var x = m.GetCustomAttributes (true); Console.WriteLine (x.Length); if (x.Length != 1) return 1; + var ga = m.GetGenericArguments (); + x = ga [0].GetCustomAttributes (false); + if (x.Length != 1) + return 2; + x = typeof (Y).GetMethod ("Foo", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).GetCustomAttributes (true); Console.WriteLine (x.Length); if (x.Length != 1) - return 2; - + return 3; + return 0; } } diff --git a/mcs/tests/test-primary-ctor-01.cs b/mcs/tests/test-primary-ctor-01.cs index dac84c863c..f2b2239fd4 100644 --- a/mcs/tests/test-primary-ctor-01.cs +++ b/mcs/tests/test-primary-ctor-01.cs @@ -1,10 +1,6 @@ class Simple(int arg) { - int Property { - get { - return arg; - } - } + int Property { get; } = arg; public static int Main () { @@ -22,9 +18,5 @@ class Simple(int arg) struct S(decimal arg) { - internal decimal Property { - get { - return arg; - } - } + internal decimal Property { get; } = arg; } \ No newline at end of file diff --git a/mcs/tests/test-primary-ctor-02.cs b/mcs/tests/test-primary-ctor-02.cs index 5369a49c9b..bc02c026c7 100644 --- a/mcs/tests/test-primary-ctor-02.cs +++ b/mcs/tests/test-primary-ctor-02.cs @@ -5,22 +5,21 @@ partial class Part public Part (string s) : this (5) { - if (arg != 5) - throw new ApplicationException ("1"); - - if (Property != 12) - throw new ApplicationException ("2"); } } partial class Part(int arg) { - int field = 7; + static int field = 7; - int Property { - get { - return arg + field; - } + int Property { get; } = arg + field; + + { + if (arg != 5) + throw new ApplicationException ("1"); + + if (Property != 12) + throw new ApplicationException ("2"); } public static int Main () diff --git a/mcs/tests/test-primary-ctor-03.cs b/mcs/tests/test-primary-ctor-03.cs index d6e472e4d4..269dfe8dd1 100644 --- a/mcs/tests/test-primary-ctor-03.cs +++ b/mcs/tests/test-primary-ctor-03.cs @@ -4,7 +4,7 @@ class D(string arg) : Base (arg) abstract class Base (object obj) { - public string Prop { get { return obj.ToString (); } } + public string Prop { get; } = obj.ToString (); } class X diff --git a/mcs/tests/test-primary-ctor-05.cs b/mcs/tests/test-primary-ctor-05.cs index 503e944c55..f127ceccc3 100644 --- a/mcs/tests/test-primary-ctor-05.cs +++ b/mcs/tests/test-primary-ctor-05.cs @@ -7,21 +7,19 @@ class A : Attribute { } -class X ([field:A] int value) +[method:A] +class X (int value) { public int f = value; - public int P { - get { - return value; - } - } + public int P { get; } = value; public static int Main () { - var attr = (A)typeof (X).GetField("value", BindingFlags.NonPublic | BindingFlags.Instance).GetCustomAttribute (typeof (A)); + var x = typeof (X); + var attr = x.GetConstructors ()[0].GetCustomAttribute (typeof (A)) as A; if (attr == null) - return 1; + return 2; return 0; } diff --git a/mcs/tests/test-primary-ctor-06.cs b/mcs/tests/test-primary-ctor-06.cs new file mode 100644 index 0000000000..7d9ef1e9c5 --- /dev/null +++ b/mcs/tests/test-primary-ctor-06.cs @@ -0,0 +1,15 @@ +using System; + +class ID () : IDisposable +{ + void IDisposable.Dispose () + { + } +} + +class X +{ + public static void Main () + { + } +} \ No newline at end of file diff --git a/mcs/tests/test-primary-ctor-07.cs b/mcs/tests/test-primary-ctor-07.cs new file mode 100644 index 0000000000..233cfd0d03 --- /dev/null +++ b/mcs/tests/test-primary-ctor-07.cs @@ -0,0 +1,29 @@ +using System; + +struct S (int x) +{ + public int y = x; + + public S (char x) + : this (1) + { + } + + static S () + { + } +} + +class X +{ + public static int Main () + { + if (new S (-5).y != -5) + return 1; + + if (new S ('x').y != 1) + return 2; + + return 0; + } +} \ No newline at end of file diff --git a/mcs/tests/test-primary-ctor-08.cs b/mcs/tests/test-primary-ctor-08.cs new file mode 100644 index 0000000000..9f24885856 --- /dev/null +++ b/mcs/tests/test-primary-ctor-08.cs @@ -0,0 +1,31 @@ +struct S (int arg) +{ + { + v = arg; + } + + public readonly int v; +} + +class C (int arg) +{ + { + v = arg; + } + + public readonly int v; +} + +class Test +{ + public static int Main () + { + if (new C (4).v != 4) + return 1; + + if (new S (3).v != 3) + return 2; + + return 0; + } +} \ No newline at end of file diff --git a/mcs/tests/test-primary-ctor-09.cs b/mcs/tests/test-primary-ctor-09.cs new file mode 100644 index 0000000000..64e5ac6332 --- /dev/null +++ b/mcs/tests/test-primary-ctor-09.cs @@ -0,0 +1,30 @@ +using System; + +class A (Func barg) +{ + public Func BaseArg = barg; +} + +partial class PC +{ + public Func f1 = (a) => arg; +} + +partial class PC (int arg) + : A ((a) => arg) +{ +} + +class X +{ + public static int Main () + { + if (new PC (3).f1 (4) != 3) + return 1; + + if (new PC (3).BaseArg (4) != 3) + return 2; + + return 0; + } +} \ No newline at end of file diff --git a/mcs/tests/test-static-using-01.cs b/mcs/tests/test-static-using-01.cs new file mode 100644 index 0000000000..88358aaa28 --- /dev/null +++ b/mcs/tests/test-static-using-01.cs @@ -0,0 +1,28 @@ +// Compiler options: -langversion:6 + +using A.B.X; + +namespace A.B +{ + static class X + { + public static int Test () + { + return 5; + } + } +} + +namespace C +{ + class M + { + public static int Main () + { + if (Test () != 5) + return 1; + + return 0; + } + } +} \ No newline at end of file diff --git a/mcs/tests/test-static-using-02.cs b/mcs/tests/test-static-using-02.cs new file mode 100644 index 0000000000..db11121394 --- /dev/null +++ b/mcs/tests/test-static-using-02.cs @@ -0,0 +1,42 @@ +// Compiler options: -langversion:6 + +using System; + +namespace A.B +{ + static class X + { + public static int Test (object o) + { + return 1; + } + } +} + +namespace A.C +{ + static class X + { + public static int Test (int o) + { + return 2; + } + } +} + +namespace C +{ + using A.B.X; + using A.C.X; + + class M + { + public static int Main () + { + if (Test (3) != 2) + return 1; + + return 0; + } + } +} \ No newline at end of file diff --git a/mcs/tests/test-static-using-03.cs b/mcs/tests/test-static-using-03.cs new file mode 100644 index 0000000000..870643f465 --- /dev/null +++ b/mcs/tests/test-static-using-03.cs @@ -0,0 +1,42 @@ +// Compiler options: -langversion:6 + +using System; +using A.B.X; + +namespace A.B +{ + static class X + { + public static int Test (int o) + { + return 1; + } + } +} + +namespace A.C +{ + static class X + { + public static int Test (int o) + { + return 2; + } + } +} + +namespace C +{ + using A.C.X; + + class M + { + public static int Main () + { + if (Test (3) != 2) + return 1; + + return 0; + } + } +} \ No newline at end of file diff --git a/mcs/tests/test-static-using-04.cs b/mcs/tests/test-static-using-04.cs new file mode 100644 index 0000000000..fe18b97deb --- /dev/null +++ b/mcs/tests/test-static-using-04.cs @@ -0,0 +1,42 @@ +// Compiler options: -langversion:6 + +using System; + +namespace A.B +{ + static class X + { + public static int Test (object o) + { + return 1; + } + } +} + +namespace A.C +{ + static class X + { + private static int Test (int o) + { + return 2; + } + } +} + +namespace C +{ + using A.B.X; + using A.C.X; + + class M + { + public static int Main () + { + if (Test (3) != 1) + return 1; + + return 0; + } + } +} \ No newline at end of file diff --git a/mcs/tests/test-static-using-05.cs b/mcs/tests/test-static-using-05.cs new file mode 100644 index 0000000000..0ddabc0c75 --- /dev/null +++ b/mcs/tests/test-static-using-05.cs @@ -0,0 +1,11 @@ +using System.Console; +using System.Linq.Enumerable; + +class Test +{ + static void Main() + { + var range = Range (5, 17); + WriteLine (range.Where (i => i % 2 == 0).Count ()); + } +} \ No newline at end of file diff --git a/mcs/tests/test-static-using-06.cs b/mcs/tests/test-static-using-06.cs new file mode 100644 index 0000000000..fe259c8216 --- /dev/null +++ b/mcs/tests/test-static-using-06.cs @@ -0,0 +1,44 @@ +// Compiler options: -langversion:6 + +using System; +using A.B.X; +using A.C.X; + +namespace A.B +{ + static class X + { + public static int Test (object o) + { + return 1; + } + } +} + +namespace A.C +{ + static class X + { + public static int Test (T o) + { + if (typeof (T) != typeof (object)) + return -1; + + return 2; + } + } +} + +namespace C +{ + class M + { + public static int Main () + { + if (Test ("") != 2) + return 1; + + return 0; + } + } +} \ No newline at end of file diff --git a/mcs/tests/ver-il-net_4_5.xml.REMOVED.git-id b/mcs/tests/ver-il-net_4_5.xml.REMOVED.git-id index 69ad8e7e74..0aaa45a695 100644 --- a/mcs/tests/ver-il-net_4_5.xml.REMOVED.git-id +++ b/mcs/tests/ver-il-net_4_5.xml.REMOVED.git-id @@ -1 +1 @@ -5ea5442888e9df7fe09b3e0314235e0d2b5b540d \ No newline at end of file +39ede7039d281d13439d8c657506fe625d60631c \ No newline at end of file diff --git a/mcs/tools/linker/Mono.Linker.Steps/MarkStep.cs b/mcs/tools/linker/Mono.Linker.Steps/MarkStep.cs index 30b7779f58..430f2c2c88 100644 --- a/mcs/tools/linker/Mono.Linker.Steps/MarkStep.cs +++ b/mcs/tools/linker/Mono.Linker.Steps/MarkStep.cs @@ -290,12 +290,28 @@ namespace Mono.Linker.Steps { if (CheckProcessed (assembly)) return; + ProcessModule (assembly); + MarkCustomAttributes (assembly); foreach (ModuleDefinition module in assembly.Modules) MarkCustomAttributes (module); } + void ProcessModule (AssemblyDefinition assembly) + { + // Pre-mark if there is any methods as they need to be executed + // at assembly load time + foreach (TypeDefinition type in assembly.MainModule.Types) + { + if (type.Name == "" && type.HasMethods) + { + MarkType (type); + break; + } + } + } + protected void MarkField (FieldReference reference) { // if (IgnoreScope (reference.DeclaringType.Scope)) diff --git a/mcs/tools/linker/Mono.Linker/LinkContext.cs b/mcs/tools/linker/Mono.Linker/LinkContext.cs index 8d97f8dc15..c4d71083cd 100644 --- a/mcs/tools/linker/Mono.Linker/LinkContext.cs +++ b/mcs/tools/linker/Mono.Linker/LinkContext.cs @@ -217,6 +217,14 @@ namespace Mono.Linker { case "mscorlib": case "Accessibility": case "Mono.Security": + // WPF + case "PresentationFramework": + case "PresentationCore": + case "WindowsBase": + case "UIAutomationProvider": + case "UIAutomationTypes": + case "PresentationUI": + case "ReachFramework": return true; default: return name.Name.StartsWith ("System") diff --git a/mcs/tools/mono-shlib-cop/Makefile b/mcs/tools/mono-shlib-cop/Makefile index ec9d5a2a87..f63dafc218 100644 --- a/mcs/tools/mono-shlib-cop/Makefile +++ b/mcs/tools/mono-shlib-cop/Makefile @@ -20,7 +20,7 @@ cleanup: run-test-local: run-mono-shlib-cop-test run-mono-shlib-cop-test: $(the_lib) $(TEST_INPUT) - $(RUNTIME) $(the_lib) $(TEST_INPUT) | diff - test.dll.out + MONO_PATH="$(topdir)/class/lib/$(PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(RUNTIME) $(the_lib) $(TEST_INPUT) | diff - test.dll.out $(TEST_INPUT) : test.cs $(CSCOMPILE) -target:library $< -out:$@ diff --git a/mcs/tools/mono-shlib-cop/test.cs b/mcs/tools/mono-shlib-cop/test.cs index d67d7b778c..bfd106b750 100644 --- a/mcs/tools/mono-shlib-cop/test.cs +++ b/mcs/tools/mono-shlib-cop/test.cs @@ -42,8 +42,8 @@ namespace Mono.Unmanaged.Check { private static extern int g_module_close (IntPtr handle); // Warning - [DllImport ("libglib-2.0.so")] - private static extern void g_free (IntPtr mem); + [DllImport ("libMonoPosixHelper.so")] + private static extern int Mono_Posix_Stdlib_TMP_MAX (); // Error: no such library [DllImport ("does-not-exist")] @@ -60,7 +60,7 @@ namespace Mono.Unmanaged.Check { Test () { g_module_close (IntPtr.Zero); - g_free (IntPtr.Zero); + Mono_Posix_Stdlib_TMP_MAX (); Foo (); RenameMe (); DoesNotExist (); diff --git a/mcs/tools/xbuild/Makefile b/mcs/tools/xbuild/Makefile index 31d53299aa..5e8dd82bd0 100644 --- a/mcs/tools/xbuild/Makefile +++ b/mcs/tools/xbuild/Makefile @@ -47,6 +47,8 @@ install-frameworks: $(INSTALL_DATA) frameworks/net_4.0.xml $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.0/RedistList/FrameworkList.xml $(MKINSTALLDIRS) $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.0/Profile/Client/RedistList $(INSTALL_DATA) frameworks/net_4.0_client.xml $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.0/Profile/Client/RedistList/FrameworkList.xml + $(MKINSTALLDIRS) $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.5.1/RedistList + $(INSTALL_DATA) frameworks/net_4.5.1.xml $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.5.1/RedistList/FrameworkList.xml install-pcl-targets: $(MKINSTALLDIRS) $(DESTDIR)$(PORTABLE_TARGETS_DIR)/v4.0 @@ -91,6 +93,7 @@ EXTRA_DISTFILES = \ frameworks/net_4.0.xml \ frameworks/net_4.0_client.xml \ frameworks/net_4.5.xml \ + frameworks/net_4.5.1.xml \ targets/Microsoft.Portable.CSharp_4.0.targets \ targets/Microsoft.Portable.CSharp_4.5.targets \ targets/Microsoft.Portable.Common.targets \ diff --git a/mcs/tools/xbuild/SolutionParser.cs b/mcs/tools/xbuild/SolutionParser.cs index 92fd84e949..47ae1d9c04 100644 --- a/mcs/tools/xbuild/SolutionParser.cs +++ b/mcs/tools/xbuild/SolutionParser.cs @@ -262,6 +262,10 @@ namespace Mono.XBuild.CommandLine { if (info != null) projectInfo.Dependencies [info.Guid] = info; } + + // unload the project after reading info from it + // it'll be reloaded with proper context when building the solution + p.ParentEngine.UnloadProject (currentProject); } // fill in the project info for deps found in the .sln file diff --git a/mcs/tools/xbuild/data/12.0/Microsoft.CSharp.targets b/mcs/tools/xbuild/data/12.0/Microsoft.CSharp.targets index 0936512b57..11b40d66a9 100644 --- a/mcs/tools/xbuild/data/12.0/Microsoft.CSharp.targets +++ b/mcs/tools/xbuild/data/12.0/Microsoft.CSharp.targets @@ -31,11 +31,24 @@ directories for mscorlib.dll by constructing a filtered item set, and assume it only has one item. --> - + <_ExplicitReference Include="@(_TargetFrameworkDirectories->'%(FullPath)\mscorlib.dll')" Condition="Exists('%(FullPath)\mscorlib.dll')"> false + + <_ExplicitMSCorlibPath>$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPathToStandardLibraries ('$(TargetFrameworkIdentifier)', '$(TargetFrameworkVersion)', '$(TargetFrameworkProfile)'))\mscorlib.dll + + + <_ExplicitReference Include="@(_TargetFrameworkDirectories->'%(FullPath)\mscorlib.dll')" Condition="Exists('%(FullPath)\mscorlib.dll')"> + false + + + + <_ExplicitReference Include="$(_ExplicitMSCorlibPath)" Condition="Exists('$(_ExplicitMSCorlibPath)')"> + false + + - + 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'"/> diff --git a/mcs/tools/xbuild/data/4.0/Microsoft.CSharp.targets b/mcs/tools/xbuild/data/4.0/Microsoft.CSharp.targets index 0936512b57..11b40d66a9 100644 --- a/mcs/tools/xbuild/data/4.0/Microsoft.CSharp.targets +++ b/mcs/tools/xbuild/data/4.0/Microsoft.CSharp.targets @@ -31,11 +31,24 @@ directories for mscorlib.dll by constructing a filtered item set, and assume it only has one item. --> - + <_ExplicitReference Include="@(_TargetFrameworkDirectories->'%(FullPath)\mscorlib.dll')" Condition="Exists('%(FullPath)\mscorlib.dll')"> false + + <_ExplicitMSCorlibPath>$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPathToStandardLibraries ('$(TargetFrameworkIdentifier)', '$(TargetFrameworkVersion)', '$(TargetFrameworkProfile)'))\mscorlib.dll + + + <_ExplicitReference Include="@(_TargetFrameworkDirectories->'%(FullPath)\mscorlib.dll')" Condition="Exists('%(FullPath)\mscorlib.dll')"> + false + + + + <_ExplicitReference Include="$(_ExplicitMSCorlibPath)" Condition="Exists('$(_ExplicitMSCorlibPath)')"> + false + + + + diff --git a/mono-core.spec b/mono-core.spec index 9dc38c0a8f..015be96546 100644 --- a/mono-core.spec +++ b/mono-core.spec @@ -12,7 +12,7 @@ License: LGPL v2.1 only Group: Development/Languages/Mono Summary: A .NET Runtime Environment Url: http://www.mono-project.com -Version: 3.6.0 +Version: 3.8.0 Release: 0 Source0: mono-%{version}.tar.bz2 BuildRequires: bison @@ -62,7 +62,6 @@ Provides: mono(Mono.Cairo) = 1.0.5000.0 Provides: mono(Mono.CompilerServices.SymbolWriter) = 1.0.5000.0 Provides: mono(Mono.Posix) = 1.0.5000.0 Provides: mono(Mono.Security) = 1.0.5000.0 -Provides: mono(OpenSystem.C) = 1.0.5000.0 Provides: mono(System) = 1.0.5000.0 Provides: mono(System.Security) = 1.0.5000.0 Provides: mono(System.Xml) = 1.0.5000.0 @@ -210,7 +209,6 @@ rm -rf %buildroot %_prefix/lib/mono/2.0/Mono.Security.dll %_prefix/lib/mono/2.0/Mono.Simd.dll %_prefix/lib/mono/2.0/Mono.Tasklets.dll -%_prefix/lib/mono/2.0/OpenSystem.C.dll %_prefix/lib/mono/2.0/System.Configuration.dll %_prefix/lib/mono/2.0/System.Core.dll %_prefix/lib/mono/2.0/System.Drawing.dll @@ -241,7 +239,6 @@ rm -rf %buildroot %_prefix/lib/mono/4.0/Mono.Security.dll %_prefix/lib/mono/4.0/Mono.Simd.dll %_prefix/lib/mono/4.0/Mono.Tasklets.dll -%_prefix/lib/mono/4.0/OpenSystem.C.dll %_prefix/lib/mono/4.0/System.Configuration.dll %_prefix/lib/mono/4.0/System.Core.dll %_prefix/lib/mono/4.0/System.Drawing.dll @@ -289,7 +286,6 @@ rm -rf %buildroot %_prefix/lib/mono/4.5/Mono.Security.dll %_prefix/lib/mono/4.5/Mono.Simd.dll %_prefix/lib/mono/4.5/Mono.Tasklets.dll -%_prefix/lib/mono/4.5/OpenSystem.C.dll %_prefix/lib/mono/4.5/System.Configuration.dll %_prefix/lib/mono/4.5/System.Core.dll %_prefix/lib/mono/4.5/System.Drawing.dll @@ -332,7 +328,6 @@ rm -rf %buildroot %_prefix/lib/mono/gac/Mono.Security %_prefix/lib/mono/gac/Mono.Simd %_prefix/lib/mono/gac/Mono.Tasklets -%_prefix/lib/mono/gac/OpenSystem.C %_prefix/lib/mono/gac/System %_prefix/lib/mono/gac/System.Configuration %_prefix/lib/mono/gac/System.Core @@ -926,14 +921,12 @@ Mono implementation of ASP.NET, Remoting and Web Services. %_bindir/wsdl2 %_bindir/xsd %_libdir/pkgconfig/aspnetwebstack.pc -%_libdir/pkgconfig/mono.web.pc %_mandir/man1/disco.1%ext_man %_mandir/man1/mconfig.1%ext_man %_mandir/man1/soapsuds.1%ext_man %_mandir/man1/wsdl.1%ext_man %_mandir/man1/xsd.1%ext_man %_prefix/lib/mono/2.0/Mono.Http.dll -%_prefix/lib/mono/2.0/Mono.Web.dll %_prefix/lib/mono/2.0/System.ComponentModel.DataAnnotations.dll %_prefix/lib/mono/2.0/System.Runtime.Remoting.dll %_prefix/lib/mono/2.0/System.Runtime.Serialization.Formatters.Soap.dll @@ -945,7 +938,6 @@ Mono implementation of ASP.NET, Remoting and Web Services. %_prefix/lib/mono/2.0/xsd.exe* %_prefix/lib/mono/4.0/Microsoft.Web.Infrastructure.dll %_prefix/lib/mono/4.0/Mono.Http.dll -%_prefix/lib/mono/4.0/Mono.Web.dll %_prefix/lib/mono/4.0/System.ComponentModel.Composition.dll %_prefix/lib/mono/4.0/System.ComponentModel.DataAnnotations.dll %_prefix/lib/mono/4.0/System.Runtime.Remoting.dll @@ -956,7 +948,6 @@ Mono implementation of ASP.NET, Remoting and Web Services. %_prefix/lib/mono/4.0/System.Web.Services.dll %_prefix/lib/mono/4.0/System.Web.dll %_prefix/lib/mono/4.5/Mono.Http.dll -%_prefix/lib/mono/4.5/Mono.Web.dll %_prefix/lib/mono/4.5/System.ComponentModel.Composition.dll %_prefix/lib/mono/4.5/System.ComponentModel.DataAnnotations.dll %_prefix/lib/mono/4.5/System.Net.Http.Formatting.dll @@ -982,7 +973,6 @@ Mono implementation of ASP.NET, Remoting and Web Services. %_prefix/lib/mono/4.5/Microsoft.Web.Infrastructure.dll %_prefix/lib/mono/gac/Microsoft.Web.Infrastructure %_prefix/lib/mono/gac/Mono.Http -%_prefix/lib/mono/gac/Mono.Web %_prefix/lib/mono/gac/System.ComponentModel.Composition %_prefix/lib/mono/gac/System.ComponentModel.DataAnnotations %_prefix/lib/mono/gac/System.Net.Http.Formatting diff --git a/mono-core.spec.in b/mono-core.spec.in index 88217bad1b..0b7337d05d 100644 --- a/mono-core.spec.in +++ b/mono-core.spec.in @@ -62,7 +62,6 @@ Provides: mono(Mono.Cairo) = 1.0.5000.0 Provides: mono(Mono.CompilerServices.SymbolWriter) = 1.0.5000.0 Provides: mono(Mono.Posix) = 1.0.5000.0 Provides: mono(Mono.Security) = 1.0.5000.0 -Provides: mono(OpenSystem.C) = 1.0.5000.0 Provides: mono(System) = 1.0.5000.0 Provides: mono(System.Security) = 1.0.5000.0 Provides: mono(System.Xml) = 1.0.5000.0 @@ -210,7 +209,6 @@ rm -rf %buildroot %_prefix/lib/mono/2.0/Mono.Security.dll %_prefix/lib/mono/2.0/Mono.Simd.dll %_prefix/lib/mono/2.0/Mono.Tasklets.dll -%_prefix/lib/mono/2.0/OpenSystem.C.dll %_prefix/lib/mono/2.0/System.Configuration.dll %_prefix/lib/mono/2.0/System.Core.dll %_prefix/lib/mono/2.0/System.Drawing.dll @@ -241,7 +239,6 @@ rm -rf %buildroot %_prefix/lib/mono/4.0/Mono.Security.dll %_prefix/lib/mono/4.0/Mono.Simd.dll %_prefix/lib/mono/4.0/Mono.Tasklets.dll -%_prefix/lib/mono/4.0/OpenSystem.C.dll %_prefix/lib/mono/4.0/System.Configuration.dll %_prefix/lib/mono/4.0/System.Core.dll %_prefix/lib/mono/4.0/System.Drawing.dll @@ -289,7 +286,6 @@ rm -rf %buildroot %_prefix/lib/mono/4.5/Mono.Security.dll %_prefix/lib/mono/4.5/Mono.Simd.dll %_prefix/lib/mono/4.5/Mono.Tasklets.dll -%_prefix/lib/mono/4.5/OpenSystem.C.dll %_prefix/lib/mono/4.5/System.Configuration.dll %_prefix/lib/mono/4.5/System.Core.dll %_prefix/lib/mono/4.5/System.Drawing.dll @@ -332,7 +328,6 @@ rm -rf %buildroot %_prefix/lib/mono/gac/Mono.Security %_prefix/lib/mono/gac/Mono.Simd %_prefix/lib/mono/gac/Mono.Tasklets -%_prefix/lib/mono/gac/OpenSystem.C %_prefix/lib/mono/gac/System %_prefix/lib/mono/gac/System.Configuration %_prefix/lib/mono/gac/System.Core @@ -926,14 +921,12 @@ Mono implementation of ASP.NET, Remoting and Web Services. %_bindir/wsdl2 %_bindir/xsd %_libdir/pkgconfig/aspnetwebstack.pc -%_libdir/pkgconfig/mono.web.pc %_mandir/man1/disco.1%ext_man %_mandir/man1/mconfig.1%ext_man %_mandir/man1/soapsuds.1%ext_man %_mandir/man1/wsdl.1%ext_man %_mandir/man1/xsd.1%ext_man %_prefix/lib/mono/2.0/Mono.Http.dll -%_prefix/lib/mono/2.0/Mono.Web.dll %_prefix/lib/mono/2.0/System.ComponentModel.DataAnnotations.dll %_prefix/lib/mono/2.0/System.Runtime.Remoting.dll %_prefix/lib/mono/2.0/System.Runtime.Serialization.Formatters.Soap.dll @@ -945,7 +938,6 @@ Mono implementation of ASP.NET, Remoting and Web Services. %_prefix/lib/mono/2.0/xsd.exe* %_prefix/lib/mono/4.0/Microsoft.Web.Infrastructure.dll %_prefix/lib/mono/4.0/Mono.Http.dll -%_prefix/lib/mono/4.0/Mono.Web.dll %_prefix/lib/mono/4.0/System.ComponentModel.Composition.dll %_prefix/lib/mono/4.0/System.ComponentModel.DataAnnotations.dll %_prefix/lib/mono/4.0/System.Runtime.Remoting.dll @@ -956,7 +948,6 @@ Mono implementation of ASP.NET, Remoting and Web Services. %_prefix/lib/mono/4.0/System.Web.Services.dll %_prefix/lib/mono/4.0/System.Web.dll %_prefix/lib/mono/4.5/Mono.Http.dll -%_prefix/lib/mono/4.5/Mono.Web.dll %_prefix/lib/mono/4.5/System.ComponentModel.Composition.dll %_prefix/lib/mono/4.5/System.ComponentModel.DataAnnotations.dll %_prefix/lib/mono/4.5/System.Net.Http.Formatting.dll @@ -982,7 +973,6 @@ Mono implementation of ASP.NET, Remoting and Web Services. %_prefix/lib/mono/4.5/Microsoft.Web.Infrastructure.dll %_prefix/lib/mono/gac/Microsoft.Web.Infrastructure %_prefix/lib/mono/gac/Mono.Http -%_prefix/lib/mono/gac/Mono.Web %_prefix/lib/mono/gac/System.ComponentModel.Composition %_prefix/lib/mono/gac/System.ComponentModel.DataAnnotations %_prefix/lib/mono/gac/System.Net.Http.Formatting diff --git a/mono/Makefile.in b/mono/Makefile.in index 5874dd618a..70b0089cc9 100644 --- a/mono/Makefile.in +++ b/mono/Makefile.in @@ -220,6 +220,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -228,6 +229,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -294,6 +296,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -343,6 +346,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/mono/arch/Makefile.in b/mono/arch/Makefile.in index 31773eb14a..78530945c7 100644 --- a/mono/arch/Makefile.in +++ b/mono/arch/Makefile.in @@ -249,6 +249,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -257,6 +258,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -323,6 +325,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -372,6 +375,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/mono/arch/amd64/Makefile.in b/mono/arch/amd64/Makefile.in index f402101a2a..6f4b3eb966 100644 --- a/mono/arch/amd64/Makefile.in +++ b/mono/arch/amd64/Makefile.in @@ -206,6 +206,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -214,6 +215,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -280,6 +282,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -329,6 +332,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/mono/arch/arm/Makefile.in b/mono/arch/arm/Makefile.in index 9b0a7c6d90..1b793b1697 100644 --- a/mono/arch/arm/Makefile.in +++ b/mono/arch/arm/Makefile.in @@ -208,6 +208,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -216,6 +217,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -282,6 +284,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -331,6 +334,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/mono/arch/arm64/Makefile.in b/mono/arch/arm64/Makefile.in index b6e0f13c6b..6af32414d4 100644 --- a/mono/arch/arm64/Makefile.in +++ b/mono/arch/arm64/Makefile.in @@ -161,6 +161,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -169,6 +170,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -235,6 +237,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -284,6 +287,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/mono/arch/ia64/Makefile.in b/mono/arch/ia64/Makefile.in index 613f526f9e..c480efa4db 100644 --- a/mono/arch/ia64/Makefile.in +++ b/mono/arch/ia64/Makefile.in @@ -161,6 +161,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -169,6 +170,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -235,6 +237,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -284,6 +287,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/mono/arch/mips/Makefile.in b/mono/arch/mips/Makefile.in index 44736bc600..f03fc99e5f 100644 --- a/mono/arch/mips/Makefile.in +++ b/mono/arch/mips/Makefile.in @@ -212,6 +212,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -220,6 +221,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -286,6 +288,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -335,6 +338,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/mono/arch/ppc/Makefile.in b/mono/arch/ppc/Makefile.in index 02cdd80e3a..2953d2bf19 100644 --- a/mono/arch/ppc/Makefile.in +++ b/mono/arch/ppc/Makefile.in @@ -214,6 +214,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -222,6 +223,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -288,6 +290,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -337,6 +340,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/mono/arch/s390x/Makefile.in b/mono/arch/s390x/Makefile.in index a9337faafc..246af6dc3e 100644 --- a/mono/arch/s390x/Makefile.in +++ b/mono/arch/s390x/Makefile.in @@ -206,6 +206,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -214,6 +215,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -280,6 +282,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -329,6 +332,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/mono/arch/s390x/s390x-codegen.h b/mono/arch/s390x/s390x-codegen.h index 3677b2d95b..47e656422e 100644 --- a/mono/arch/s390x/s390x-codegen.h +++ b/mono/arch/s390x/s390x-codegen.h @@ -6,6 +6,7 @@ #define S390X_H #include #include +#include #define FLOAT_REGS 2 /* No. float registers for parms */ #define GENERAL_REGS 5 /* No. general registers for parms */ @@ -136,13 +137,16 @@ typedef enum { s390_fpc = 256, } S390SpecialRegister; -#define s390_is_imm16(val) ((glong)val >= (glong)-(1<<15) && \ - (glong)val <= (glong)((1<<15)-1)) -#define s390_is_uimm16(val) ((glong)val >= 0 && (glong)val <= 65535) +#define s390_is_imm16(val) ((glong)val >= (glong) SHRT_MIN && \ + (glong)val <= (glong) SHRT_MAX) +#define s390_is_imm32(val) ((glong)val >= (glong) INT_MIN && \ + (glong)val <= (glong) INT_MAX) +#define s390_is_uimm16(val) ((glong)val >= 0 && (glong)val <= (glong) USHRT_MAX) +#define s390_is_uimm32(val) ((glong)val >= 0 && (glong)val <= (glong) UINT_MAX) #define s390_is_uimm20(val) ((glong)val >= 0 && (glong)val <= 1048575) #define s390_is_imm20(val) ((glong)val >= -524288 && (glong)val <= 524287) -#define s390_is_imm12(val) ((glong)val >= (glong)-(1<<11) && \ - (glong)val <= (glong)((1<<11)-1)) +#define s390_is_imm12(val) ((glong)val >= (glong)-4096 && \ + (glong)val <= (glong)4095) #define s390_is_uimm12(val) ((glong)val >= 0 && (glong)val <= 4095) #define STK_BASE s390_r15 @@ -349,7 +353,36 @@ typedef struct { short i2; char xx; char op2; -} RIE_Format; +} RIE_Format_1; + +typedef struct { + char op1; + char r1 : 4; + char r3 : 4; + short i2; + char m2 : 4; + char xx : 4; + char op2; +} RIE_Format_2; + +typedef struct { + char op1; + char r1 : 4; + char r3 : 4; + short d; + char i; + char op2; +} RIE_Format_3; + +typedef struct { + char op1; + char r1 : 4; + char yy : 4; + short i2; + char m3 : 4; + char xx : 4; + char op2; +} RIE_Format_4; typedef struct { char op1; @@ -427,12 +460,22 @@ typedef struct { typedef struct { short op; - char b1 : 4; + short tb1 : 4; short d1 : 12; - char b2 : 4; + short b2 : 4; short d2 : 12; } __attribute__ ((packed)) SSE_Format; +typedef struct { + short op; + char r3 : 4; + char o2 : 4; + short b1 : 4; + short d1 : 12; + short b2 : 4; + short d2 : 12; +} __attribute__ ((packed)) SSF_Format; + #define s390_emit16(c, x) do \ { \ *((guint16 *) c) = (guint16) x; \ @@ -509,12 +552,33 @@ typedef struct { #define S390_RI(c,opc,g1,m2) s390_emit32(c, ((opc >> 4) << 24 | (g1) << 20 | (opc & 0x0f) << 16 | (m2 & 0xffff))) -#define S390_RIE(c,opc,g1,g3,m2) do \ +#define S390_RIE_1(c,opc,g1,g3,m2) do \ { \ s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | g3)); \ s390_emit32(c, ((m2) << 16 | (opc & 0xff))); \ } while (0) +#define S390_RIE_2(c,opc,g1,g2,m3,v) do \ +{ \ + s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | g3)); \ + s390_emit16(c, (v)); \ + s390_emit16(c, ((m2) << 12 | (opc & 0xff))); \ +} while (0) + +#define S390_RIE_3(c,opc,g1,i,m3,d) do \ +{ \ + s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | m3)); \ + s390_emit16(c, (d)); \ + s390_emit16(c, ((i) << 8 | (opc & 0xff))); \ +} while (0) + +#define S390_RIE_4(c,opc,g1,i2,m3) do \ +{ \ + s390_emit16(c, ((opc & 0xff00) | (g1) << 4); \ + s390_emit16(c, (i2)); \ + s390_emit16(c, ((m3) << 12 | (opc & 0xff))); \ +} while (0) + #define S390_RIL_1(c,opc,g1,m2) do \ { \ s390_emit16(c, ((opc >> 4) << 8 | (g1) << 4 | (opc & 0xf))); \ @@ -527,6 +591,20 @@ typedef struct { s390_emit32(c, m2); \ } while (0) +#define S390_RIS(c,opc,r,i,m3,b,d) do \ +{ \ + s390_emit16(c, ((opc, & 0xff00) | (r1) << 4) | (r2)); \ + s390_emit16(c, ((b) << 12) | (d)); \ + s390_emit16(c, ((i) << 4) | ((opc) & 0xff)); \ +} + +#define S390_RRS(c,opc,r1,r2,m3,b,d) do \ +{ \ + s390_emit16(c, ((opc, & 0xff00) | (r1) << 4) | (r2)); \ + s390_emit16(c, ((b) << 12) | (d)); \ + s390_emit16(c, ((m3) << 12) | ((opc) & 0xff)); \ +} + #define S390_SI(c,opc,s1,p1,m2) s390_emit32(c, (opc << 24 | (m2) << 16 | (s1) << 12 | ((p1) & 0xfff))); #define S390_SIY(c,opc,s1,p1,m2) do \ @@ -573,23 +651,60 @@ typedef struct { s390_emit16(c, ((s2) << 12 | ((p2) & 0xfff))); \ } while (0) +#define S390_SSF(c,opc,r3,s1,p1,s2,p2) do \ +{ \ + s390_emit16(c, (((opc) & 0xff00) << 8) | ((r3) << 4) | \ + ((opc) & 0xf)); \ + s390_emit16(c, ((s1) << 12 | ((p1) & 0xfff))); \ + s390_emit16(c, ((s2) << 12 | ((p2) & 0xfff))); \ +} while (0) + #define s390_a(c, r, x, b, d) S390_RX(c, 0x5a, r, x, b, d) #define s390_adb(c, r, x, b, d) S390_RXE(c, 0xed1a, r, x, b, d) #define s390_adbr(c, r1, r2) S390_RRE(c, 0xb31a, r1, r2) #define s390_aebr(c, r1, r2) S390_RRE(c, 0xb30a, r1, r2) +#define s390_afi(c, r, v) S390_RIL_1(c, 0xc29, r, v); #define s390_ag(c, r, x, b, d) S390_RXY(c, 0xe308, r, x, b, d) #define s390_agf(c, r, x, b, d) S390_RXY(c, 0xe318, r, x, b, d) +#define s390_agfi(c, r, v) S390_RIL_1(c, 0xc28, r, v) +#define s390_afgr(c, r1, r2) S390_RRE(c, 0xb918, r1, r2) #define s390_aghi(c, r, v) S390_RI(c, 0xa7b, r, v) +#define s390_aghik(c, r, v) S390_RIE_1(c, 0xecd9, r, v) #define s390_agr(c, r1, r2) S390_RRE(c, 0xb908, r1, r2) +#define s390_agrk(c, r1, r2, r3) S390_RRF_1(c, 0xb9e8, r1, r2, r3) +#define s390_agsi(c, r, v) S390_SIY(c, 0xeb7a, r v) +#define s390_ahhhr(c, r1, r2, r3) S390_RRF_1(c, 0xb9c8, r1, r2, r3) +#define s390_ahhlr(c, r1, r2, r3) S390_RRF_1(c, 0xb9d8, r1, r2, r3) #define s390_ahi(c, r, v) S390_RI(c, 0xa7a, r, v) +#define s390_ahik(c, r, v) S390_RIE_1(c, 0xecd8, r, v) +#define s390_ahy(c, r, x, b, d) S390_RXY(c, 0xe37a, r, b, d) +#define s390_aih(c, r, v) S390_RIL_1(c, 0xcc8, r, v) +#define s390_al(c, r, x, b, d) S390_RX(c, 0x5e, r, x, b, d) +#define s390_alc(c, r, x, b, d) S390_RXY(c, 0xe398, r, x, b, d) +#define s390_alcg(c, r, x, b, d) S390_RXY(c, 0xe388, r, x, b, d) #define s390_alcgr(c, r1, r2) S390_RRE(c, 0xb988, r1, r2) #define s390_alcr(c, r1, r2) S390_RRE(c, 0xb998, r1, r2) -#define s390_al(c, r, x, b, d) S390_RX(c, 0x5e, r, x, b, d) +#define s390_alfi(c, r, v) S390_RIL_1(c, 0xc2b, r, v) #define s390_alg(c, r, x, b, d) S390_RXY(c, 0xe30a, r, x, b, d) #define s390_algf(c, r, x, b, d) S390_RXY(c, 0xe31a, r, x, b, d) +#define s390_algfi(c, r, v) S390_RIL_1(c, 0xc2a, r, v) +#define s390_algfr(c, r1, r2) S390_RRE(c, 0xb91a, r1, r2) +#define s390_alghsik(c, r, v) S390_RIE_1(c, 0xecd8, r, v) #define s390_algr(c, r1, r2) S390_RRE(c, 0xb90a, r1, r2) +#define s390_algsi(c, r, v) S390_SIY(c, 0xeb7e, r, v) +#define s390_alhhhr(c, r1, r2, r3) S390_RRF_1(c, 0xb9ca, r1, r2, r3) +#define s390_alhhlr(c, r1, r2, r3) S390_RRF_1(c, 0xb9da, r1, r2, r3) +#define s390_alhsik(c, r, v) S390_RIE_1(c, 0xecda, r, v) #define s390_alr(c, r1, r2) S390_RR(c, 0x1e, r1, r2) +#define s390_alrk(c, r1, r2) S390_RRF(c, 0xb9fa, r1, r2) +#define s390_alsi(c, r, v) S390_SIY(c, 0xeb6e, r, v) +#define s390_alsih(c, r, v) S390_RIL_1(c, 0xcca, r, v) +#define s390_alsihn(c, r, v) S390_RIL_1(c, 0xccb, r, v) +#define s390_aly(c, r, x, b, d) S390_RXY(c, 0xe35e, r, x, b, d) #define s390_ar(c, r1, r2) S390_RR(c, 0x1a, r1, r2) +#define s390_ark(c, r1, r2, r3) S390_RRF_1(c, 0xb9f8, r1, r2, r3) +#define s390_asi(c, r, v) S390_SIY(c, 0xeb6a, r, v) +#define s390_ay(c, r, x, b, d) S390_RXY(c, 0xe35a, r, x, b, d) #define s390_basr(c, r1, r2) S390_RR(c, 0x0d, r1, r2) #define s390_bctr(c, r1, r2) S390_RR(c, 0x06, r1, r2) #define s390_bctrg(c, r1, r2) S390_RRE(c, 0xb946, r1, r2) @@ -610,19 +725,46 @@ typedef struct { #define s390_cdsg(c, r1, r2, b, d) S390_RSY_1(c, 0xeb3e, r1, r2, b, d) #define s390_cdsy(c, r1, r2, b, d) S390_RSY_1(c, 0xeb31, r1, r2, b, d) #define s390_cebr(c, r1, r2) S390_RRE(c, 0xb309, r1, r2) +#define s390_cegbr(c, r1, r2) S390_RRE(c, 0xb3a4, r1, r2) #define s390_cfdbr(c, r1, m, r2) S390_RRF_2(c, 0xb399, r1, m, r2) +#define s390_cfi(c, r, v) S390_RIL_1(c, 0xc2d, r, v) #define s390_cgdbr(c, r1, m, r2) S390_RRF_2(c, 0xb3a9, r1, m, r2) #define s390_cg(c, r, x, b, d) S390_RXY(c, 0xe320, r, x, b, d) +#define s390_cgfi(c, r, v) S390_RIL_1(c, 0xc2c, r, v) +#define s390_cgfrl(c, r, v) S390_RIL_1(c, 0xc6c, r, v) #define s390_cghi(c, r, i) S390_RI(c, 0xa7f, r, i) +#define s390_cgib(c, r, i, m, b, d) S390_RIS(c, 0xecfc, r, i, m, b, d) +#define s390_cgij(c, r, i, m, d) S390_RIE_3(c, 0xec7c, r, i, m, d) +#define s390_cgit(c, r, i, m) S390_RIE_4(c, 0xec70, r, i m); #define s390_cgr(c, r1, r2) S390_RRE(c, 0xb920, r1, r2) +#define s390_cgrb(c, r1, r2, m3, b, d) S390_RRS(c, 0xece4, r1, r2, m3, b, d) +#define s390_cgrj(c, r1, r2, m3, v) S390_RIE_2(c, 0xec64, r1, r2, m3, v) +#define s390_cgrl(c, r, v) S390_RIL_1(c, 0xc68, r, v) #define s390_chi(c, r, i) S390_RI(c, 0xa7e, r, i) +#define s390_cib(c, r, i, m, b, d) S390_RIS(c, 0xecfe, r, i, m, b, d) +#define s390_cij(c, r, i, m, d) S390_RIE_3(c, 0xec7e, r, i, m, d) +#define s390_cit(c, r, i, m) S390_RIE_4(c, 0xec72, r, i m); #define s390_cl(c, r, x, b, d) S390_RX(c, 0x55, r, x, b, d) #define s390_clg(c, r, x, b, d) S390_RXY(c, 0xe321, r, x, b, d) +#define s390_clgib(c, r, i, m, b, d) S390_RIS(c, 0xecfd, r, i, m, b, d) +#define s390_clgij(c, r, i, b) S390_RIE_3(c, 0xec7d, r, i, m, d) #define s390_clgr(c, r1, r2) S390_RRE(c, 0xb921, r1, r2) +#define s390_clgrj(c, r1, r2, m, v) S390_RIE_2(c, 0xec65, r1, r2, m, v) +#define s390_clgrb(c, r1, r2, m3, b, d) S390_RRS(c, 0xece5, r1, r2, m3, b, d) +#define s390_clib(c, r, i, m, b, d) S390_RIS(c, 0xecff, r, i, m, b, d) +#define s390_clij(c, r, i, b) S390_RIE_3(c, 0xec7f, r, i, m, d) #define s390_clr(c, r1, r2) S390_RR(c, 0x15, r1, r2) +#define s390_clrb(c, r1, r2, m3, b, d) S390_RRS(c, 0xecf7, r1, r2, m3, b, d) +#define s390_clrj(c, r1, r2, m, v) S390_RIE_2(c, 0xec77, r1, r2, m, v) #define s390_cr(c, r1, r2) S390_RR(c, 0x19, r1, r2) +#define s390_crb(c, r1, r2, m3, b, d) S390_RRS(c, 0xecf6, r1, r2, m3, b, d) +#define s390_crj(c, r1, r2, m3, v) S390_RIE_2(c, 0xec76, r1, r2, m3, v) +#define s390_crl(c, r, v) S390_RIL_1(c, 0xc6d, r, v) +#define s390_crt(c, r1, r2, m3) S390_RRF_2(c, 0xb972, r1, r2, m3); +#define s390_cgrt(c, r1, r2, m3) S390_RRF_2(c, 0xb960, r1, r2, m3); #define s390_cs(c, r1, r2, b, d) S390_RX(c, 0xba, r1, r2, b, d) #define s390_csg(c, r1, r2, b, d) S390_RSY_1(c, 0xeb30, r1, r2, b, d) +#define s390_csst(c, d1, b1, d2, b2, r) S390_SSF(c, 0xc82, b1, d1, b2, d2, r) #define s390_csy(c, r1, r2, b, d) S390_RSY_1(c, 0xeb14, r1, r2, b, d) #define s390_ddbr(c, r1, r2) S390_RRE(c, 0xb31d, r1, r2) #define s390_debr(c, r1, r2) S390_RRE(c, 0xb30d, r1, r2) @@ -637,6 +779,12 @@ typedef struct { #define s390_icm(c, r, m, b, d) S390_RX(c, 0xbf, r, m, b, d) #define s390_icmy(c, r, x, b, d) S390_RXY(c, 0xeb81, r, x, b, d) #define s390_icy(c, r, x, b, d) S390_RXY(c, 0xe373, r, x, b, d) +#define s390_iihf(c, r, v) S390_RIL_1(c, 0xc08, r, v) +#define s390_iihh(c, r, v) S390_RI(c, 0xa50, r, v) +#define s390_iihl(c, r, v) S390_RI(c, 0xa51, r, v) +#define s390_iilf(c, r, v) S390_RIL_1(c, 0xc09, r, v) +#define s390_iilh(c, r, v) S390_RI(c, 0xa52, r, v) +#define s390_iill(c, r, v) S390_RI(c, 0xa53, r, v) #define s390_j(c,d) s390_brc(c, S390_CC_UN, d) #define s390_jc(c, m, d) s390_brc(c, m, d) #define s390_jcl(c, m, d) s390_brcl(c, m, d) @@ -690,23 +838,28 @@ typedef struct { #define s390_ldy(c, r, x, b, d) S390_RXY(c, 0xed65, r, x, b, d) #define s390_ldeb(c, r, x, b, d) S390_RXE(c, 0xed04, r, x, b, d) #define s390_ldebr(c, r1, r2) S390_RRE(c, 0xb304, r1, r2) +#define s390_ldgr(c, r1, r2) S390_RRE(c, 0xb3c1, r1, r2) #define s390_ldr(c, r1, r2) S390_RR(c, 0x28, r1, r2) #define s390_le(c, f, x, b, d) S390_RX(c, 0x78, f, x, b, d) #define s390_ledbr(c, r1, r2) S390_RRE(c, 0xb344, r1, r2) #define s390_ler(c, r1, r2) S390_RR(c, 0x38, r1, r2) #define s390_ley(c, r, x, b, d) S390_RXY(c, 0xed64, r, x, b, d) +#define s390_lg(c, r, x, b, d) S390_RXY(c, 0xe304, r, x, b, d) #define s390_lgb(c, r, x, b, d) S390_RXY(c, 0xe377, r, x, b, d) #define s390_lgbr(c, r1, r2) S390_RRE(c, 0xb906, r1, r2) -#define s390_lg(c, r, x, b, d) S390_RXY(c, 0xe304, r, x, b, d) +#define s390_lgdr(c, r1, r2) S390_RRE(c, 0xb3cd, r1, r2) #define s390_lgf(c, r, x, b, d) S390_RXY(c, 0xe314, r, x, b, d) +#define s390_lgfi(c, r, v) S390_RIL_1(c, 0xc01, r, v) +#define s390_lgfrl(c, r1, d) S390_RIL_1(c, 0xc4c, r1, d) #define s390_lgfr(c, r1, r2) S390_RRE(c, 0xb914, r1, r2) #define s390_lgh(c, r, x, b, d) S390_RXY(c, 0xe315, r, x, b, d) #define s390_lghi(c, r, v) S390_RI(c, 0xa79, r, v) +#define s390_lghr(c, r1, r2) S390_RRE(c, 0xb907, r1, r2) #define s390_lgr(c, r1, r2) S390_RRE(c, 0xb904, r1, r2) +#define s390_lgrl(c, r1, d) S390_RIL_1(c, 0xc48, r1, d) #define s390_lh(c, r, x, b, d) S390_RX(c, 0x48, r, x, b, d) #define s390_lhr(c, r1, r2) S390_RRE(c, 0xb927, r1, r2) #define s390_lhg(c, r, x, b, d) S390_RXY(c, 0xe315, r, x, b, d) -#define s390_lghr(c, r1, r2) S390_RRE(c, 0xb907, r1, r2) #define s390_lhi(c, r, v) S390_RI(c, 0xa78, r, v) #define s390_lhy(c, r, x, b, d) S390_RXY(c, 0xe378, r, x, b, d) #define s390_llcr(c, r1, r2) S390_RRE(c, 0xb994, r1, r2) @@ -717,6 +870,12 @@ typedef struct { #define s390_llgh(c, r, x, b, d) S390_RXY(c, 0xe391, r, x, b, d) #define s390_llghr(c, r1, r2) S390_RRE(c, 0xb985, r1, r2) #define s390_llhr(c, r1, r2) S390_RRE(c, 0xb995, r1, r2) +#define s390_llihf(c, r, v) S390_RIL_1(c, 0xc0e, r, v) +#define s390_llihh(c, r, v) S390_RI(c, 0xa5c, r, v) +#define s390_llihl(c, r, v) S390_RI(c, 0xa5d, r, v) +#define s390_llilf(c, r, v) S390_RIL_1(c, 0xc0f, r, v) +#define s390_llilh(c, r, v) S390_RI(c, 0xa5e, r, v) +#define s390_llill(c, r, v) S390_RI(c, 0xa5f, r, v) #define s390_lm(c, r1, r2, b, d) S390_RS_1(c, 0x98, r1, r2, b, d) #define s390_lmg(c, r1, r2, b, d) S390_RSY_1(c, 0xeb04, r1, r2, b, d) #define s390_lndbr(c, r1, r2) S390_RRE(c, 0xb311, r1, r2) @@ -726,6 +885,7 @@ typedef struct { #define s390_lpgr(c, r1, r2) S390_RRE(c, 0xb900, r1, r2) #define s390_lpr(c, r1, r2) S390_RR(c, 0x10, r1, r2) #define s390_lr(c, r1, r2) S390_RR(c, 0x18, r1, r2) +#define s390_lrl(c, r1, d) S390_RIL_1(c, 0xc4d, r1, d) #define s390_ltgfr(c, r1, r2) S390_RRE(c, 0xb912, r1, r2) #define s390_ltgr(c, r1, r2) S390_RRE(c, 0xb902, r1, r2) #define s390_ltr(c, r1, r2) S390_RR(c, 0x12, r1, r2) @@ -734,24 +894,44 @@ typedef struct { #define s390_m(c, r, x, b, d) S390_RX(c, 0x5c, r, x, b, d) #define s390_mdbr(c, r1, r2) S390_RRE(c, 0xb31c, r1, r2) #define s390_meebr(c, r1, r2) S390_RRE(c, 0xb317, r1, r2) +#define s390_mfy(c, r, x, b, d) S390_RXY(c, 0xe35c, r, x, b, d) #define s390_mlgr(c, r1, r2) S390_RRE(c, 0xb986, r1, r2) #define s390_mlr(c, r1, r2) S390_RRE(c, 0xb996, r1, r2) #define s390_mr(c, r1, r2) S390_RR(c, 0x1c, r1, r2) #define s390_ms(c, r, x, b, d) S390_RX(c, 0x71, r, x, b, d) +#define s390_msi(c, r, v) S390_RIL_1(c, 0xc21, r, v) #define s390_msgfr(c, r1, r2) S390_RRE(c, 0xb91c, r1, r2) +#define s390_msgi(c, r, v) S390_RIL_1(c, 0xc20, r, v) #define s390_msgr(c, r1, r2) S390_RRE(c, 0xb90c, r1, r2) #define s390_msr(c, r1, r2) S390_RRE(c, 0xb252, r1, r2) #define s390_mvc(c, l, b1, d1, b2, d2) S390_SS_1(c, 0xd2, l, b1, d1, b2, d2) #define s390_mvcl(c, r1, r2) S390_RR(c, 0x0e, r1, r2) #define s390_mvcle(c, r1, r3, d2, b2) S390_RS_1(c, 0xa8, r1, r3, d2, b2) #define s390_n(c, r, x, b, d) S390_RX(c, 0x54, r, x, b, d) +#define s390_nc(c, l, b1, d1, b2, d2) S390_SS_1(c, 0xd4, l, b1, d1, b2, d2) #define s390_ng(c, r, x, b, d) S390_RXY(c, 0xe380, r, x, b, d) #define s390_ngr(c, r1, r2) S390_RRE(c, 0xb980, r1, r2) +#define s390_ngrk(c, r1, r2, r3) S390_RRF_1(c, 0xb9e4, r1, r2, r3) +#define s390_ni(c, b, d, v) S390_SI(c, 0x94, b, d, v) +#define s390_nihf(c, r, v) S390_RIL_1(c, 0xc0a, r, v) +#define s390_nihh(c, r, v) S390_RI(c, 0xa54, r, v) +#define s390_nihl(c, r, v) S390_RI(c, 0xa55, r, v) +#define s390_nilf(c, r, v) S390_RIL_1(c, 0xc0b, r, v) #define s390_nilh(c, r, v) S390_RI(c, 0xa56, r, v) #define s390_nill(c, r, v) S390_RI(c, 0xa57, r, v) +#define s390_niy(c, b, d, v) S390_SIY(c, 0xeb54, b, d, v) #define s390_nop(c) S390_RR(c, 0x07, 0x0, 0) #define s390_nr(c, r1, r2) S390_RR(c, 0x14, r1, r2) +#define s390_nrk(c, r1, r2) S390_RRF_1(c, 0xb9f4, r1, r2) +#define s390_ny(c, r, x, b, d) S390_RRY(c, 0xe354, r1, r2) #define s390_o(c, r, x, b, d) S390_RX(c, 0x56, r, x, b, d) +#define s390_oihf(c, r, v) S390_RIL_1(c, 0xc0c, r, v) +#define s390_oihh(c, r, v) S390_RI(c, 0xa58, r, v) +#define s390_oihl(c, r, v) S390_RI(c, 0xa59, r, v) +#define s390_oilf(c, r, v) S390_RIL_1(c, 0xc0d, r, v) +#define s390_oilh(c, r, v) S390_RI(c, 0xa5a, r, v) +#define s390_oill(c, r, v) S390_RI(c, 0xa5b` r, v) +#define s390_oiy(c, b, d, v) S390_SIY(c, 0xeb56 b, d, v) #define s390_og(c, r, x, b, d) S390_RXY(c, 0xe381, r, x, b, d) #define s390_ogr(c, r1, r2) S390_RRE(c, 0xb981, r1, r2) #define s390_or(c, r1, r2) S390_RR(c, 0x16, r1, r2) @@ -762,16 +942,19 @@ typedef struct { #define s390_sg(c, r, x, b, d) S390_RXY(c, 0xe309, r, x, b, d) #define s390_sgf(c, r, x, b, d) S390_RXY(c, 0xe319, r, x, b, d) #define s390_sgr(c, r1, r2) S390_RRE(c, 0xb909, r1, r2) +#define s390_sl(c, r, x, b, d) S390_RX(c, 0x5f, r, x, b, d) #define s390_sla(c, r, b, d) S390_RS_3(c, 0x8b, r, b, d) #define s390_slag(c, r1, r2, b, d) S390_RSY_1(c, 0xeb0b, r1, r2, b, d) #define s390_slbg(c, r, x, b, d) S390_RXY(c, 0xe389, r, x, b, d) #define s390_slbgr(c, r1, r2) S390_RRE(c, 0xb989, r1, r2) #define s390_slbr(c, r1, r2) S390_RRE(c, 0xb999, r1, r2) -#define s390_sl(c, r, x, b, d) S390_RX(c, 0x5f, r, x, b, d) #define s390_slda(c, r, b, d) S390_RS_3(c, 0x8f, r, b, d) #define s390_sldl(c, r, b, d) S390_RS_3(c, 0x8d, r, b, d) +#define s390_slfi(c, r, v) S390_RIL_1(c, 0xc25, r, v) #define s390_slg(c, r, x, b, d) S390_RXY(c, 0xe30b, r, x, b, d) #define s390_slgf(c, r, x, b, d) S390_RXY(c, 0xe31b, r, x, b, d) +#define s390_slgfr(c, r1, r2) S390_RRE(c, 0xb91b, r1, r2) +#define s390_slgfi(c, r, v) S390_RIL_1(c, 0xc24, r, v) #define s390_slgr(c, r1, r2) S390_RRE(c, 0xb90b, r1, r2) #define s390_sll(c, r, b, d) S390_RS_3(c, 0x89, r, b, d) #define s390_sllg(c, r1, r2, b, d) S390_RSY_1(c, 0xeb0d, r1, r2, b, d) @@ -805,7 +988,10 @@ typedef struct { #define s390_tcdb(c, r, x, b, d) S390_RXE(c, 0xed11, r, x, b, d) #define s390_tceb(c, r, x, b, d) S390_RXE(c, 0xed10, r, x, b, d) #define s390_x(c, r, x, b, d) S390_RX(c, 0x57, r, x, b, d) +#define s390_xihf(c, r, v) S390_RIL_1(c, 0xc06, r, v) +#define s390_xilf(c, r, v) S390_RIL_1(c, 0xc07, r, v) #define s390_xg(c, r, x, b, d) S390_RXY(c, 0xe382, r, x, b, d) #define s390_xgr(c, r1, r2) S390_RRE(c, 0xb982, r1, r2) #define s390_xr(c, r1, r2) S390_RR(c, 0x17, r1, r2) +#define s390_xy(c, r, x, b, d) S390_RXY(c, 0xe357, r, x, b, d) #endif diff --git a/mono/arch/sparc/Makefile.in b/mono/arch/sparc/Makefile.in index 656a8d5e83..b6ca976c1e 100644 --- a/mono/arch/sparc/Makefile.in +++ b/mono/arch/sparc/Makefile.in @@ -206,6 +206,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -214,6 +215,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -280,6 +282,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -329,6 +332,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/mono/arch/x86/Makefile.in b/mono/arch/x86/Makefile.in index 58e259c84b..b03142a4ae 100644 --- a/mono/arch/x86/Makefile.in +++ b/mono/arch/x86/Makefile.in @@ -208,6 +208,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -216,6 +217,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -282,6 +284,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -331,6 +334,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/mono/benchmark/Makefile.in b/mono/benchmark/Makefile.in index 9b58e8bfca..6311f95a4b 100644 --- a/mono/benchmark/Makefile.in +++ b/mono/benchmark/Makefile.in @@ -161,6 +161,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -169,6 +170,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -235,6 +237,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -284,6 +287,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/mono/cil/Makefile.in b/mono/cil/Makefile.in index 914288e4f9..35c4e274e1 100644 --- a/mono/cil/Makefile.in +++ b/mono/cil/Makefile.in @@ -191,6 +191,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -199,6 +200,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -265,6 +267,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -314,6 +317,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/mono/dis/Makefile.in b/mono/dis/Makefile.in index 79e62b83e7..eefbb9a31e 100644 --- a/mono/dis/Makefile.in +++ b/mono/dis/Makefile.in @@ -269,6 +269,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -277,6 +278,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -343,6 +345,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -392,6 +395,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/mono/dis/util.c b/mono/dis/util.c index 116824da9e..70f3f6e4ce 100755 --- a/mono/dis/util.c +++ b/mono/dis/util.c @@ -12,6 +12,7 @@ #include #include #include "util.h" +#include "mono/utils/mono-compiler.h" #ifdef HAVE_IEEEFP_H #include diff --git a/mono/interpreter/Makefile.in b/mono/interpreter/Makefile.in index 03375346be..1d5db63467 100644 --- a/mono/interpreter/Makefile.in +++ b/mono/interpreter/Makefile.in @@ -254,6 +254,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -262,6 +263,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -328,6 +330,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -377,6 +380,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/mono/io-layer/Makefile.in b/mono/io-layer/Makefile.in index 787c7d2ba1..ed9fc70dfd 100644 --- a/mono/io-layer/Makefile.in +++ b/mono/io-layer/Makefile.in @@ -231,6 +231,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -239,6 +240,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -305,6 +307,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -354,6 +357,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/mono/io-layer/io.c.REMOVED.git-id b/mono/io-layer/io.c.REMOVED.git-id index 024c048f80..7a5a495a12 100644 --- a/mono/io-layer/io.c.REMOVED.git-id +++ b/mono/io-layer/io.c.REMOVED.git-id @@ -1 +1 @@ -9e2fb959697245a7cab2e78ef642f118e752bc8e \ No newline at end of file +d87bee7ec41981d2aa55d0cb2b5e9c3552032f2c \ No newline at end of file diff --git a/mono/io-layer/misc-private.h b/mono/io-layer/misc-private.h index 00b209c4eb..60e8cd827b 100644 --- a/mono/io-layer/misc-private.h +++ b/mono/io-layer/misc-private.h @@ -12,6 +12,7 @@ #include #include +#include extern void _wapi_calc_timeout(struct timespec *timeout, guint32 ms); diff --git a/mono/io-layer/processes.c b/mono/io-layer/processes.c index afbe440448..c65bf23813 100644 --- a/mono/io-layer/processes.c +++ b/mono/io-layer/processes.c @@ -24,7 +24,9 @@ #include #include #include +#ifdef HAVE_SYS_PARAM_H #include +#endif #include #ifdef HAVE_SYS_MKDEV_H diff --git a/mono/io-layer/security.c b/mono/io-layer/security.c index 1d702d3188..d1bf3d0362 100644 --- a/mono/io-layer/security.c +++ b/mono/io-layer/security.c @@ -19,19 +19,6 @@ #include #include - -/* Disclaimers */ - -#if defined(__GNUC__) -#ifndef HAVE_GETRESUID - #warning getresuid not supported. WindowsImpersonationContext wont work -#endif -#ifndef HAVE_SETRESUID - #warning setresuid not supported. WindowsImpersonationContext wont work -#endif -#endif - - gboolean ImpersonateLoggedOnUser (gpointer handle) { diff --git a/mono/io-layer/wapi_glob.c b/mono/io-layer/wapi_glob.c index bd5006db60..7889ad8ff3 100644 --- a/mono/io-layer/wapi_glob.c +++ b/mono/io-layer/wapi_glob.c @@ -66,7 +66,7 @@ #define M_MASK 0xffff #define M_ASCII 0x00ff -typedef u_short Char; +typedef unsigned short Char; #else @@ -87,7 +87,7 @@ typedef char Char; #define ismeta(c) (((c)&M_QUOTE) != 0) -static int g_Ctoc(const gchar *, char *, u_int); +static int g_Ctoc(const gchar *, char *, unsigned int); static int glob0(GDir *dir, const gchar *, wapi_glob_t *, gboolean, gboolean); static int glob1(GDir *dir, gchar *, gchar *, wapi_glob_t *, size_t *, @@ -103,11 +103,11 @@ static void qprintf(const char *, Char *); int _wapi_glob(GDir *dir, const char *pattern, int flags, wapi_glob_t *pglob) { - const u_char *patnext; + const unsigned char *patnext; int c; gchar *bufnext, *bufend, patbuf[PATH_MAX]; - patnext = (u_char *) pattern; + patnext = (unsigned char *) pattern; if (!(flags & WAPI_GLOB_APPEND)) { pglob->gl_pathc = 0; pglob->gl_pathv = NULL; @@ -262,7 +262,7 @@ globextend(const gchar *path, wapi_glob_t *pglob, size_t *limitp) { char **pathv; int i; - u_int newsize, len; + unsigned int newsize, len; char *copy; const gchar *p; @@ -368,7 +368,7 @@ _wapi_globfree(wapi_glob_t *pglob) } static int -g_Ctoc(const gchar *str, char *buf, u_int len) +g_Ctoc(const gchar *str, char *buf, unsigned int len) { while (len--) { diff --git a/mono/metadata/Makefile.am b/mono/metadata/Makefile.am index d3c19c25ba..731c05c976 100644 --- a/mono/metadata/Makefile.am +++ b/mono/metadata/Makefile.am @@ -86,6 +86,9 @@ libmonoruntime_static_la_LIBADD = $(bundle_obj) $(libmonoruntime_la_LIBADD) null_sources = \ console-null.c +null_gc_sources = \ + null-gc.c + common_sources = \ $(platform_sources) \ assembly.c \ @@ -159,7 +162,6 @@ common_sources = \ monitor.h \ nacl-stub.c \ normalization-tables.h \ - null-gc.c \ number-formatter.h \ object-internals.h \ opcodes.c \ @@ -194,7 +196,10 @@ common_sources = \ reflection-internals.h \ file-mmap-posix.c \ file-mmap-windows.c \ - file-mmap.h + file-mmap.h \ + object-offsets.h \ + abi-details.h \ + metadata-cross-helpers.c # These source files have compile time dependencies on GC code @@ -266,7 +271,7 @@ sgen_sources = \ sgen-qsort.c \ sgen-qsort.h -libmonoruntime_la_SOURCES = $(common_sources) $(gc_dependent_sources) $(boehm_sources) +libmonoruntime_la_SOURCES = $(common_sources) $(gc_dependent_sources) $(null_gc_sources) $(boehm_sources) libmonoruntime_la_CFLAGS = $(BOEHM_DEFINES) libmonoruntimesgen_la_SOURCES = $(common_sources) $(gc_dependent_sources) $(sgen_sources) diff --git a/mono/metadata/Makefile.am.in b/mono/metadata/Makefile.am.in index d3c19c25ba..731c05c976 100644 --- a/mono/metadata/Makefile.am.in +++ b/mono/metadata/Makefile.am.in @@ -86,6 +86,9 @@ libmonoruntime_static_la_LIBADD = $(bundle_obj) $(libmonoruntime_la_LIBADD) null_sources = \ console-null.c +null_gc_sources = \ + null-gc.c + common_sources = \ $(platform_sources) \ assembly.c \ @@ -159,7 +162,6 @@ common_sources = \ monitor.h \ nacl-stub.c \ normalization-tables.h \ - null-gc.c \ number-formatter.h \ object-internals.h \ opcodes.c \ @@ -194,7 +196,10 @@ common_sources = \ reflection-internals.h \ file-mmap-posix.c \ file-mmap-windows.c \ - file-mmap.h + file-mmap.h \ + object-offsets.h \ + abi-details.h \ + metadata-cross-helpers.c # These source files have compile time dependencies on GC code @@ -266,7 +271,7 @@ sgen_sources = \ sgen-qsort.c \ sgen-qsort.h -libmonoruntime_la_SOURCES = $(common_sources) $(gc_dependent_sources) $(boehm_sources) +libmonoruntime_la_SOURCES = $(common_sources) $(gc_dependent_sources) $(null_gc_sources) $(boehm_sources) libmonoruntime_la_CFLAGS = $(BOEHM_DEFINES) libmonoruntimesgen_la_SOURCES = $(common_sources) $(gc_dependent_sources) $(sgen_sources) diff --git a/mono/metadata/Makefile.in.REMOVED.git-id b/mono/metadata/Makefile.in.REMOVED.git-id index 93ebdd38f3..67aaa9957a 100644 --- a/mono/metadata/Makefile.in.REMOVED.git-id +++ b/mono/metadata/Makefile.in.REMOVED.git-id @@ -1 +1 @@ -90fad16d348364d75591bcd07498c94f72be1bf1 \ No newline at end of file +aac85511c1d76e845222b1f0a50fec772d9538d7 \ No newline at end of file diff --git a/mono/metadata/abi-details.h b/mono/metadata/abi-details.h new file mode 100644 index 0000000000..01c741b35d --- /dev/null +++ b/mono/metadata/abi-details.h @@ -0,0 +1,31 @@ +/* + * Copyright 2014 Xamarin Inc + */ +#ifndef __MONO_METADATA_ABI_DETAILS_H__ +#define __MONO_METADATA_ABI_DETAILS_H__ + +#include +#include + +#define MONO_ABI_ALIGNOF(type) MONO_ALIGN_ ## type +#define MONO_CURRENT_ABI_ALIGNOF(type) ((int)G_STRUCT_OFFSET(struct { char c; type x; }, x)) + + +#undef DECL_OFFSET +#undef DECL_OFFSET2 +#define DECL_OFFSET(struct,field) MONO_OFFSET_ ## struct ## _ ## field = -1, +#define DECL_OFFSET2(struct,field,offset) MONO_OFFSET_ ## struct ## _ ## field = offset, +#define DECL_ALIGN(type) MONO_ALIGN_ ##type = MONO_CURRENT_ABI_ALIGNOF (type), +#define DECL_ALIGN2(type,size) MONO_ALIGN_ ##type = size, + +enum { +#include "object-offsets.h" +}; + +#ifdef USED_CROSS_COMPILER_OFFSETS +#define MONO_STRUCT_OFFSET(struct,field) MONO_OFFSET_ ## struct ## _ ## field +#else +#define MONO_STRUCT_OFFSET(struct,field) (MONO_OFFSET_ ## struct ## _ ## field == -1, G_STRUCT_OFFSET (struct,field)) +#endif + +#endif diff --git a/mono/metadata/appdomain.c b/mono/metadata/appdomain.c index 5b3294aa6b..1f0a4f59d7 100644 --- a/mono/metadata/appdomain.c +++ b/mono/metadata/appdomain.c @@ -242,10 +242,10 @@ mono_runtime_init (MonoDomain *domain, MonoThreadStartCB start_cb, mono_thread_init (start_cb, attach_cb); class = mono_class_from_name (mono_defaults.corlib, "System", "AppDomainSetup"); - setup = (MonoAppDomainSetup *) mono_object_new (domain, class); + setup = (MonoAppDomainSetup *) mono_object_new_pinned (domain, class); class = mono_class_from_name (mono_defaults.corlib, "System", "AppDomain"); - ad = (MonoAppDomain *) mono_object_new (domain, class); + ad = (MonoAppDomain *) mono_object_new_pinned (domain, class); ad->data = domain; domain->domain = ad; domain->setup = setup; @@ -330,7 +330,7 @@ mono_context_init (MonoDomain *domain) MonoAppContext *context; class = mono_class_from_name (mono_defaults.corlib, "System.Runtime.Remoting.Contexts", "Context"); - context = (MonoAppContext *) mono_object_new (domain, class); + context = (MonoAppContext *) mono_object_new_pinned (domain, class); context->domain_id = domain->domain_id; context->context_id = 0; domain->default_context = context; @@ -403,6 +403,25 @@ mono_domain_create_appdomain (char *friendly_name, char *configuration_file) return mono_domain_from_appdomain (ad); } +/** + * mono_domain_set_config: + * @domain: MonoDomain initialized with the appdomain we want to change + * @base_dir: new base directory for the appdomain + * @config_file_name: path to the new configuration for the app domain + * + * Used to set the system configuration for an appdomain + * + * Without using this, embedded builds will get 'System.Configuration.ConfigurationErrorsException: + * Error Initializing the configuration system. ---> System.ArgumentException: + * The 'ExeConfigFilename' argument cannot be null.' for some managed calls. + */ +void +mono_domain_set_config (MonoDomain *domain, const char *base_dir, const char *config_file_name) +{ + MONO_OBJECT_SETREF (domain->setup, application_base, mono_string_new (domain, base_dir)); + MONO_OBJECT_SETREF (domain->setup, configuration_file, mono_string_new (domain, config_file_name)); +} + static MonoAppDomainSetup* copy_app_domain_setup (MonoDomain *domain, MonoAppDomainSetup *setup) { @@ -1861,7 +1880,7 @@ mono_domain_assembly_search (MonoAssemblyName *aname, for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) { ass = tmp->data; /* Dynamic assemblies can't match here in MS.NET */ - if (ass->dynamic || refonly != ass->ref_only || !mono_assembly_names_equal (aname, &ass->aname)) + if (assembly_is_dynamic (ass) || refonly != ass->ref_only || !mono_assembly_names_equal (aname, &ass->aname)) continue; mono_domain_assemblies_unlock (domain); @@ -2253,12 +2272,12 @@ deregister_reflection_info_roots (MonoDomain *domain) * promoting it from a simple lock to a complex lock, which we better avoid if * possible. */ - if (image->dynamic) + if (image_is_dynamic (image)) deregister_reflection_info_roots_from_list (image); for (i = 0; i < image->module_count; ++i) { MonoImage *module = image->modules [i]; - if (module && module->dynamic) + if (module && image_is_dynamic (module)) deregister_reflection_info_roots_from_list (module); } } diff --git a/mono/metadata/appdomain.h b/mono/metadata/appdomain.h index 3b3884330f..e0c2f671c2 100644 --- a/mono/metadata/appdomain.h +++ b/mono/metadata/appdomain.h @@ -66,6 +66,9 @@ mono_domain_create (void); MONO_API MonoDomain * mono_domain_create_appdomain (char *friendly_name, char *configuration_file); +MONO_API void +mono_domain_set_config (MonoDomain *domain, const char *base_dir, const char *config_file_name); + MONO_API MonoDomain * mono_domain_get (void); diff --git a/mono/metadata/assembly.c b/mono/metadata/assembly.c index 15d6041142..a4988a8243 100644 --- a/mono/metadata/assembly.c +++ b/mono/metadata/assembly.c @@ -582,7 +582,7 @@ compute_base (char *path) return NULL; /* Not a well known Mono executable, we are embedded, cant guess the base */ - if (strcmp (p, "/mono") && strcmp (p, "/mono-sgen") && strcmp (p, "/pedump") && strcmp (p, "/monodis") && strcmp (p, "/mint") && strcmp (p, "/monodiet")) + if (strcmp (p, "/mono") && strcmp (p, "/mono-boehm") && strcmp (p, "/mono-sgen") && strcmp (p, "/pedump") && strcmp (p, "/monodis")) return NULL; *p = 0; @@ -3024,7 +3024,7 @@ mono_assembly_release_gc_roots (MonoAssembly *assembly) if (assembly == NULL || assembly == REFERENCE_MISSING) return; - if (assembly->dynamic) { + if (assembly_is_dynamic (assembly)) { int i; MonoDynamicImage *dynimg = (MonoDynamicImage *)assembly->image; for (i = 0; i < dynimg->image.module_count; ++i) @@ -3087,7 +3087,7 @@ mono_assembly_close_finish (MonoAssembly *assembly) if (assembly->image) mono_image_close_finish (assembly->image); - if (assembly->dynamic) { + if (assembly_is_dynamic (assembly)) { g_free ((char*)assembly->aname.culture); } else { g_free (assembly); diff --git a/mono/metadata/attach.c b/mono/metadata/attach.c index 86a83c3a62..83b06dc6ff 100644 --- a/mono/metadata/attach.c +++ b/mono/metadata/attach.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -220,7 +221,7 @@ mono_attach_start (void) * by creating it is to enable the attach mechanism if the process receives a * SIGQUIT signal, which can only be sent by the owner/root. */ - snprintf (path, sizeof (path), "/tmp/.mono_attach_pid%d", getpid ()); + snprintf (path, sizeof (path), "/tmp/.mono_attach_pid%"PRIdMAX"", (intmax_t) getpid ()); fd = open (path, O_RDONLY); if (fd == -1) return FALSE; @@ -405,7 +406,7 @@ ipc_connect (void) } } - filename = g_strdup_printf ("%s/.mono-%d", directory, getpid ()); + filename = g_strdup_printf ("%s/.mono-%"PRIdMAX"", directory, (intmax_t) getpid ()); unlink (filename); /* Bind a name to the socket. */ @@ -440,7 +441,7 @@ ipc_connect (void) ipc_filename = g_strdup (filename); - server_uri = g_strdup_printf ("unix://%s/.mono-%d?/vm", directory, getpid ()); + server_uri = g_strdup_printf ("unix://%s/.mono-%"PRIdMAX"?/vm", directory, (intmax_t) getpid ()); g_free (filename); g_free (directory); diff --git a/mono/metadata/attach.h b/mono/metadata/attach.h index 19ad3ca58e..b396ed12ed 100644 --- a/mono/metadata/attach.h +++ b/mono/metadata/attach.h @@ -1,6 +1,9 @@ #ifndef __MONO_ATTACH_H__ #define __MONO_ATTACH_H__ +#include +#include + G_BEGIN_DECLS void diff --git a/mono/metadata/boehm-gc.c b/mono/metadata/boehm-gc.c index 49a5f42454..af9eff4780 100644 --- a/mono/metadata/boehm-gc.c +++ b/mono/metadata/boehm-gc.c @@ -59,6 +59,9 @@ boehm_thread_unregister (MonoThreadInfo *p); static void register_test_toggleref_callback (void); +#define BOEHM_GC_BIT_FINALIZER_AWARE 1 +static MonoGCFinalizerCallbacks fin_callbacks; + static void mono_gc_warning (char *msg, GC_word arg) { @@ -1174,7 +1177,7 @@ mono_gc_conservatively_scan_area (void *start, void *end) } void * -mono_gc_scan_object (void *obj) +mono_gc_scan_object (void *obj, void *gc_data) { g_assert_not_reached (); return NULL; @@ -1242,6 +1245,7 @@ void mono_gc_pthread_exit (void *retval) { pthread_exit (retval); + g_assert_not_reached (); } #endif @@ -1260,6 +1264,10 @@ BOOL APIENTRY mono_gc_dllmain (HMODULE module_handle, DWORD reason, LPVOID reser guint mono_gc_get_vtable_bits (MonoClass *class) { + if (fin_callbacks.is_class_finalization_aware) { + if (fin_callbacks.is_class_finalization_aware (class)) + return BOEHM_GC_BIT_FINALIZER_AWARE; + } return 0; } @@ -1339,4 +1347,29 @@ register_test_toggleref_callback (void) mono_gc_toggleref_register_callback (test_toggleref_callback); } +static gboolean +is_finalization_aware (MonoObject *obj) +{ + MonoVTable *vt = obj->vtable; + return (vt->gc_bits & BOEHM_GC_BIT_FINALIZER_AWARE) == BOEHM_GC_BIT_FINALIZER_AWARE; +} + +static void +fin_notifier (MonoObject *obj) +{ + if (is_finalization_aware (obj)) + fin_callbacks.object_queued_for_finalization (obj); +} + +void +mono_gc_register_finalizer_callbacks (MonoGCFinalizerCallbacks *callbacks) +{ + if (callbacks->version != MONO_GC_FINALIZER_EXTENSION_VERSION) + g_error ("Invalid finalizer callback version. Expected %d but got %d\n", MONO_GC_FINALIZER_EXTENSION_VERSION, callbacks->version); + + fin_callbacks = *callbacks; + + GC_set_finalizer_notify_proc ((void (*) (GC_PTR))fin_notifier); +} + #endif /* no Boehm GC */ diff --git a/mono/metadata/char-conversions.h.REMOVED.git-id b/mono/metadata/char-conversions.h.REMOVED.git-id index 4dad556b68..6bf0baecda 100644 --- a/mono/metadata/char-conversions.h.REMOVED.git-id +++ b/mono/metadata/char-conversions.h.REMOVED.git-id @@ -1 +1 @@ -3517e76a90f414e1c46d8cfbffa90fc243bc2509 \ No newline at end of file +5628ce7dd656dabd757ef054b67e8fb93bcc887c \ No newline at end of file diff --git a/mono/metadata/class-internals.h b/mono/metadata/class-internals.h index 2160b11741..ab4a5cb578 100644 --- a/mono/metadata/class-internals.h +++ b/mono/metadata/class-internals.h @@ -673,7 +673,7 @@ void mono_class_setup_supertypes (MonoClass *klass) MONO_INTERNAL; void -mono_class_setup_fields_locking (MonoClass *class) MONO_INTERNAL; +mono_class_setup_fields_locking (MonoClass *klass) MONO_INTERNAL; /* WARNING * Only call this function if you can ensure both @klass and @parent @@ -712,38 +712,38 @@ typedef struct { typedef struct { guint64 new_object_count; - gulong initialized_class_count; - gulong generic_vtable_count; - gulong used_class_count; - gulong method_count; - gulong class_vtable_size; - gulong class_static_data_size; - gulong generic_instance_count; - gulong generic_class_count; - gulong inflated_method_count; - gulong inflated_method_count_2; - gulong inflated_type_count; - gulong generics_metadata_size; - gulong delegate_creations; - gulong imt_tables_size; - gulong imt_number_of_tables; - gulong imt_number_of_methods; - gulong imt_used_slots; - gulong imt_slots_with_collisions; - gulong imt_max_collisions_in_slot; - gulong imt_method_count_when_max_collisions; - gulong imt_thunks_size; - gulong jit_info_table_insert_count; - gulong jit_info_table_remove_count; - gulong jit_info_table_lookup_count; - gulong generics_sharable_methods; - gulong generics_unsharable_methods; - gulong generics_shared_methods; - gulong gsharedvt_methods; - gulong minor_gc_count; - gulong major_gc_count; - gulong minor_gc_time_usecs; - gulong major_gc_time_usecs; + size_t initialized_class_count; + size_t generic_vtable_count; + size_t used_class_count; + size_t method_count; + size_t class_vtable_size; + size_t class_static_data_size; + size_t generic_instance_count; + size_t generic_class_count; + size_t inflated_method_count; + size_t inflated_method_count_2; + size_t inflated_type_count; + size_t generics_metadata_size; + size_t delegate_creations; + size_t imt_tables_size; + size_t imt_number_of_tables; + size_t imt_number_of_methods; + size_t imt_used_slots; + size_t imt_slots_with_collisions; + size_t imt_max_collisions_in_slot; + size_t imt_method_count_when_max_collisions; + size_t imt_thunks_size; + size_t jit_info_table_insert_count; + size_t jit_info_table_remove_count; + size_t jit_info_table_lookup_count; + size_t generics_sharable_methods; + size_t generics_unsharable_methods; + size_t generics_shared_methods; + size_t gsharedvt_methods; + size_t minor_gc_count; + size_t major_gc_count; + size_t minor_gc_time_usecs; + size_t major_gc_time_usecs; gboolean enabled; } MonoStats; @@ -881,6 +881,16 @@ typedef gboolean (*MonoGetCachedClassInfo) (MonoClass *klass, MonoCachedClassInf typedef gboolean (*MonoGetClassFromName) (MonoImage *image, const char *name_space, const char *name, MonoClass **res); +static inline gboolean +method_is_dynamic (MonoMethod *method) +{ +#ifdef DISABLE_REFLECTION_EMIT + return FALSE; +#else + return method->dynamic; +#endif +} + void mono_classes_init (void) MONO_INTERNAL; @@ -909,13 +919,13 @@ void mono_class_setup_parent (MonoClass *klass, MonoClass *parent) MONO_INTERNAL; MonoMethod* -mono_class_get_method_by_index (MonoClass *class, int index) MONO_INTERNAL; +mono_class_get_method_by_index (MonoClass *klass, int index) MONO_INTERNAL; MonoMethod* -mono_class_get_inflated_method (MonoClass *class, MonoMethod *method) MONO_INTERNAL; +mono_class_get_inflated_method (MonoClass *klass, MonoMethod *method) MONO_INTERNAL; MonoMethod* -mono_class_get_vtable_entry (MonoClass *class, int offset) MONO_INTERNAL; +mono_class_get_vtable_entry (MonoClass *klass, int offset) MONO_INTERNAL; GPtrArray* mono_class_get_implemented_interfaces (MonoClass *klass, MonoError *error) MONO_INTERNAL; @@ -985,7 +995,7 @@ void mono_install_get_class_from_name (MonoGetClassFromName func) MONO_INTERNAL; MonoGenericContext* -mono_class_get_context (MonoClass *class) MONO_INTERNAL; +mono_class_get_context (MonoClass *klass) MONO_INTERNAL; MonoMethodSignature* mono_method_signature_checked (MonoMethod *m, MonoError *err) MONO_INTERNAL; @@ -1263,7 +1273,7 @@ char* mono_type_get_name_full (MonoType *type, MonoTypeNameFormat format) MONO_INTERNAL; char* -mono_type_get_full_name (MonoClass *class) MONO_INTERNAL; +mono_type_get_full_name (MonoClass *klass) MONO_INTERNAL; MonoArrayType *mono_dup_array_type (MonoImage *image, MonoArrayType *a) MONO_INTERNAL; MonoMethodSignature *mono_metadata_signature_deep_dup (MonoImage *image, MonoMethodSignature *sig) MONO_INTERNAL; @@ -1324,7 +1334,7 @@ MonoMethod* mono_method_search_in_array_class (MonoClass *klass, const char *name, MonoMethodSignature *sig) MONO_INTERNAL; void -mono_class_setup_interface_id (MonoClass *class) MONO_INTERNAL; +mono_class_setup_interface_id (MonoClass *klass) MONO_INTERNAL; MonoGenericContainer* mono_class_get_generic_container (MonoClass *klass) MONO_INTERNAL; @@ -1342,7 +1352,7 @@ MonoClassField* mono_class_get_field_from_name_full (MonoClass *klass, const char *name, MonoType *type) MONO_INTERNAL; MonoVTable* -mono_class_vtable_full (MonoDomain *domain, MonoClass *class, gboolean raise_on_error) MONO_INTERNAL; +mono_class_vtable_full (MonoDomain *domain, MonoClass *klass, gboolean raise_on_error) MONO_INTERNAL; gboolean mono_class_is_assignable_from_slow (MonoClass *target, MonoClass *candidate) MONO_INTERNAL; @@ -1362,13 +1372,13 @@ MonoClassField* mono_class_get_fields_lazy (MonoClass* klass, gpointer *iter) MONO_INTERNAL; gboolean -mono_class_check_vtable_constraints (MonoClass *class, GList *in_setup) MONO_INTERNAL; +mono_class_check_vtable_constraints (MonoClass *klass, GList *in_setup) MONO_INTERNAL; gboolean mono_class_has_finalizer (MonoClass *klass) MONO_INTERNAL; void -mono_unload_interface_id (MonoClass *class) MONO_INTERNAL; +mono_unload_interface_id (MonoClass *klass) MONO_INTERNAL; GPtrArray* mono_class_get_methods_by_name (MonoClass *klass, const char *name, guint32 bflags, gboolean ignore_case, gboolean allow_ctors, MonoException **ex) MONO_INTERNAL; diff --git a/mono/metadata/class.c.REMOVED.git-id b/mono/metadata/class.c.REMOVED.git-id index 7a70f7194f..d93cd697dd 100644 --- a/mono/metadata/class.c.REMOVED.git-id +++ b/mono/metadata/class.c.REMOVED.git-id @@ -1 +1 @@ -36a86794e77bf55a723c6e26bebff446b1fdb4ce \ No newline at end of file +df1eda26820cc45243b96f9ec5d2874c9f234c6a \ No newline at end of file diff --git a/mono/metadata/cominterop.c b/mono/metadata/cominterop.c index 19b624c3fb..f722716d1e 100644 --- a/mono/metadata/cominterop.c +++ b/mono/metadata/cominterop.c @@ -14,6 +14,7 @@ #include "object.h" #include "loader.h" #include "cil-coff.h" +#include "metadata/abi-details.h" #include "metadata/cominterop.h" #include "metadata/marshal.h" #include "metadata/method-builder.h" @@ -695,11 +696,11 @@ mono_cominterop_emit_object_to_ptr_conv (MonoMethodBuilder *mb, MonoType *type, // load src mono_mb_emit_ldloc (mb, 0); mono_mb_emit_byte (mb, CEE_LDIND_REF); - mono_mb_emit_ldflda (mb, G_STRUCT_OFFSET (MonoTransparentProxy, rp)); + mono_mb_emit_ldflda (mb, MONO_STRUCT_OFFSET (MonoTransparentProxy, rp)); mono_mb_emit_byte (mb, CEE_LDIND_REF); /* load the RCW from the ComInteropProxy*/ - mono_mb_emit_ldflda (mb, G_STRUCT_OFFSET (MonoComInteropProxy, com_object)); + mono_mb_emit_ldflda (mb, MONO_STRUCT_OFFSET (MonoComInteropProxy, com_object)); mono_mb_emit_byte (mb, CEE_LDIND_REF); if (conv == MONO_MARSHAL_CONV_OBJECT_INTERFACE) { @@ -1002,11 +1003,11 @@ mono_cominterop_get_invoke (MonoMethod *method) /* get real proxy object, which is a ComInteropProxy in this case*/ temp_obj = mono_mb_add_local (mb, &mono_defaults.object_class->byval_arg); mono_mb_emit_ldarg (mb, 0); - mono_mb_emit_ldflda (mb, G_STRUCT_OFFSET (MonoTransparentProxy, rp)); + mono_mb_emit_ldflda (mb, MONO_STRUCT_OFFSET (MonoTransparentProxy, rp)); mono_mb_emit_byte (mb, CEE_LDIND_REF); /* load the RCW from the ComInteropProxy*/ - mono_mb_emit_ldflda (mb, G_STRUCT_OFFSET (MonoComInteropProxy, com_object)); + mono_mb_emit_ldflda (mb, MONO_STRUCT_OFFSET (MonoComInteropProxy, com_object)); mono_mb_emit_byte (mb, CEE_LDIND_REF); /* load args and make the call on the RCW */ @@ -1034,7 +1035,7 @@ mono_cominterop_get_invoke (MonoMethod *method) cache_proxy = mono_class_get_method_from_name (com_interop_proxy_class, "CacheProxy", 0); mono_mb_emit_ldarg (mb, 0); - mono_mb_emit_ldflda (mb, G_STRUCT_OFFSET (MonoTransparentProxy, rp)); + mono_mb_emit_ldflda (mb, MONO_STRUCT_OFFSET (MonoTransparentProxy, rp)); mono_mb_emit_byte (mb, CEE_LDIND_REF); mono_mb_emit_managed_call (mb, cache_proxy, NULL); } diff --git a/mono/metadata/console-io.h b/mono/metadata/console-io.h index a7ef7686b6..6693051115 100644 --- a/mono/metadata/console-io.h +++ b/mono/metadata/console-io.h @@ -15,6 +15,7 @@ #include #include +#include G_BEGIN_DECLS diff --git a/mono/metadata/console-unix.c b/mono/metadata/console-unix.c index b8987c9ec3..6a70b35008 100644 --- a/mono/metadata/console-unix.c +++ b/mono/metadata/console-unix.c @@ -17,6 +17,9 @@ #include #include #include +#ifdef HAVE_SYS_SELECT_H +# include +#endif #ifdef HAVE_SYS_TIME_H # include #endif diff --git a/mono/metadata/coree.c b/mono/metadata/coree.c index 9e48a3fe07..6c7ff4a1f2 100644 --- a/mono/metadata/coree.c +++ b/mono/metadata/coree.c @@ -11,12 +11,6 @@ #ifdef HOST_WIN32 -#if _WIN32_WINNT < 0x0501 -/* Required for ACTCTX. */ -#undef _WIN32_WINNT -#define _WIN32_WINNT 0x0501 -#endif /* _WIN32_WINNT < 0x0501 */ - #include #include #include @@ -226,10 +220,12 @@ STDAPI _CorValidateImage(PVOID *ImageBase, LPCWSTR FileName) { IMAGE_DOS_HEADER* DosHeader; IMAGE_NT_HEADERS32* NtHeaders32; - IMAGE_NT_HEADERS64* NtHeaders64; IMAGE_DATA_DIRECTORY* CliHeaderDir; +#ifdef _WIN64 + IMAGE_NT_HEADERS64* NtHeaders64; MonoCLIHeader* CliHeader; DWORD SizeOfHeaders; +#endif DWORD* Address; DWORD OldProtect; @@ -410,7 +406,9 @@ HMODULE WINAPI MonoLoadImage(LPCWSTR FileName) HANDLE MapHandle; IMAGE_DOS_HEADER* DosHeader; IMAGE_NT_HEADERS32* NtHeaders32; +#ifdef _WIN64 IMAGE_NT_HEADERS64* NtHeaders64; +#endif HMODULE ModuleHandle; FileHandle = CreateFile(FileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); @@ -458,7 +456,9 @@ InvalidImageFormat: goto UnmapView; } +#ifdef _WIN64 ValidImage: +#endif UnmapViewOfFile(DosHeader); CloseHandle(MapHandle); diff --git a/mono/metadata/coree.h b/mono/metadata/coree.h index a2bec50a0f..e5f842f252 100644 --- a/mono/metadata/coree.h +++ b/mono/metadata/coree.h @@ -11,10 +11,12 @@ #define __MONO_COREE_H__ #include +#include #ifdef HOST_WIN32 #include +#include #include "image.h" #define STATUS_SUCCESS 0x00000000L diff --git a/mono/metadata/culture-info.h b/mono/metadata/culture-info.h index 50e174ffe0..5ee2eaf03f 100644 --- a/mono/metadata/culture-info.h +++ b/mono/metadata/culture-info.h @@ -3,6 +3,7 @@ #define _MONO_METADATA_CULTURE_INFO_H_ 1 #include +#include #define NUM_DAYS 7 #define NUM_MONTHS 13 diff --git a/mono/metadata/debug-helpers.c b/mono/metadata/debug-helpers.c index a24e415d18..aa62ad230e 100644 --- a/mono/metadata/debug-helpers.c +++ b/mono/metadata/debug-helpers.c @@ -575,7 +575,7 @@ dis_one (GString *str, MonoDisHelper *dh, MonoMethod *method, const unsigned cha size_t len2; char *blob2 = NULL; - if (!method->klass->image->dynamic && !method->dynamic) { + if (!image_is_dynamic (method->klass->image) && !method_is_dynamic (method)) { token = read32 (ip); blob = mono_metadata_user_string (method->klass->image, mono_metadata_token_index (token)); diff --git a/mono/metadata/decimal.h b/mono/metadata/decimal.h index 43c782a207..e9737c752b 100644 --- a/mono/metadata/decimal.h +++ b/mono/metadata/decimal.h @@ -1,3 +1,7 @@ +#ifndef _MONO_DECIMAL_H_ +#define _MONO_DECIMAL_H_ + +#include #include "mono/metadata/object.h" #include "mono/utils/mono-compiler.h" @@ -45,3 +49,4 @@ gint32 mono_decimalSetExponent(/*[In, Out]*/decimal_repr* pA, gint32 texp) MONO_ gint32 mono_string2decimal(/*[Out]*/decimal_repr* pA, /*[In]*/MonoString* s, gint32 decrDecimal, gint32 sign) MONO_INTERNAL; +#endif diff --git a/mono/metadata/domain-internals.h b/mono/metadata/domain-internals.h index 09c6479c03..a9031eb97e 100644 --- a/mono/metadata/domain-internals.h +++ b/mono/metadata/domain-internals.h @@ -197,8 +197,7 @@ struct _MonoJitInfo { } d; struct _MonoJitInfo *next_jit_code_hash; gpointer code_start; - /* This might contain an id for the unwind info instead of a register mask */ - guint32 used_regs; + guint32 unwind_info; int code_size; guint32 num_clauses:15; /* Whenever the code is domain neutral or 'shared' */ diff --git a/mono/metadata/domain.c b/mono/metadata/domain.c index a9bf81b5cd..f42554f739 100644 --- a/mono/metadata/domain.c +++ b/mono/metadata/domain.c @@ -856,13 +856,13 @@ mono_jit_info_add_aot_module (MonoImage *image, gpointer start, gpointer end) { MonoJitInfo *ji; - mono_appdomains_lock (); + g_assert (mono_root_domain); + mono_domain_lock (mono_root_domain); /* * We reuse MonoJitInfoTable to store AOT module info, * this gives us async-safe lookup. */ - g_assert (mono_root_domain); if (!mono_root_domain->aot_modules) { mono_root_domain->num_jit_info_tables ++; mono_root_domain->aot_modules = jit_info_table_new (mono_root_domain); @@ -874,7 +874,7 @@ mono_jit_info_add_aot_module (MonoImage *image, gpointer start, gpointer end) ji->code_size = (guint8*)end - (guint8*)start; jit_info_table_add (mono_root_domain, &mono_root_domain->aot_modules, ji); - mono_appdomains_unlock (); + mono_domain_unlock (mono_root_domain); } void @@ -2023,7 +2023,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; - if (!ass->image || !ass->image->dynamic) + 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); if (!mono_assembly_close_except_image_pools (ass)) @@ -2034,7 +2034,7 @@ mono_domain_free (MonoDomain *domain, gboolean force) MonoAssembly *ass = tmp->data; if (!ass) continue; - if (!ass->image || ass->image->dynamic) + 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); if (!mono_assembly_close_except_image_pools (ass)) diff --git a/mono/metadata/file-mmap-posix.c b/mono/metadata/file-mmap-posix.c index 63648f66a3..32f555ae7b 100644 --- a/mono/metadata/file-mmap-posix.c +++ b/mono/metadata/file-mmap-posix.c @@ -296,7 +296,7 @@ done: return (void*)handle; } -#define MONO_ANON_FILE_TEMPLATE "/tmp/mono.anonmap.XXXXXXXXX" +#define MONO_ANON_FILE_TEMPLATE "/mono.anonmap.XXXXXXXXX" static void* open_memory_map (MonoString *mapName, int mode, gint64 *capacity, int access, int options, int *error) { @@ -326,7 +326,9 @@ open_memory_map (MonoString *mapName, int mode, gint64 *capacity, int access, in //XXX should we ftruncate if the file is smaller than capacity? } else { int fd; - char file_name [sizeof (MONO_ANON_FILE_TEMPLATE) + 1]; + char *file_name; + const char *tmp_dir; + int unused G_GNUC_UNUSED, alloc_size; if (mode == FILE_MODE_OPEN) { *error = FILE_NOT_FOUND; @@ -334,7 +336,16 @@ open_memory_map (MonoString *mapName, int mode, gint64 *capacity, int access, in } *capacity = align_up_to_page_size (*capacity); - strcpy (file_name, MONO_ANON_FILE_TEMPLATE); + tmp_dir = g_get_tmp_dir (); + alloc_size = strlen (tmp_dir) + strlen (MONO_ANON_FILE_TEMPLATE) + 1; + if (alloc_size > 1024) {//rather fail that stack overflow + *error = COULD_NOT_MAP_MEMORY; + goto done; + } + file_name = alloca (alloc_size); + strcpy (file_name, tmp_dir); + strcat (file_name, MONO_ANON_FILE_TEMPLATE); + fd = mkstemp (file_name); if (fd == -1) { *error = COULD_NOT_MAP_MEMORY; @@ -342,7 +353,7 @@ open_memory_map (MonoString *mapName, int mode, gint64 *capacity, int access, in } unlink (file_name); - int unused G_GNUC_UNUSED = ftruncate (fd, (off_t)*capacity); + unused = ftruncate (fd, (off_t)*capacity); handle = g_new0 (MmapHandle, 1); handle->ref_count = 1; diff --git a/mono/metadata/filewatcher.h b/mono/metadata/filewatcher.h index a17872c936..c0a1ca2fcd 100644 --- a/mono/metadata/filewatcher.h +++ b/mono/metadata/filewatcher.h @@ -19,10 +19,6 @@ #include #endif -#ifdef HAVE_SYS_SYSCALL_H -#include -#endif - G_BEGIN_DECLS gint ves_icall_System_IO_FSW_SupportsFSW (void) MONO_INTERNAL; diff --git a/mono/metadata/gc-internal.h b/mono/metadata/gc-internal.h index 01f8435269..62fdb109d4 100644 --- a/mono/metadata/gc-internal.h +++ b/mono/metadata/gc-internal.h @@ -13,6 +13,7 @@ #include #include #include +#include #include typedef struct { @@ -20,6 +21,14 @@ typedef struct { int major_gc_count; long long minor_gc_time_usecs; long long major_gc_time_usecs; +#ifdef HEAVY_STATISTICS + unsigned long long gray_queue_section_alloc; + unsigned long long gray_queue_section_free; + unsigned long long gray_queue_enqueue_fast_path; + unsigned long long gray_queue_dequeue_fast_path; + unsigned long long gray_queue_enqueue_slow_path; + unsigned long long gray_queue_dequeue_slow_path; +#endif } GCStats; #define mono_domain_finalizers_lock(domain) EnterCriticalSection (&(domain)->finalizable_objects_hash_lock); @@ -142,8 +151,8 @@ void* mono_gc_make_root_descr_all_refs (int numbits) MONO_INTERNAL; * foreach (ref in GC references in the are structure pointed to by ADDR) * mark_func (ref) */ -typedef void (*MonoGCMarkFunc) (void **addr); -typedef void (*MonoGCRootMarkFunc) (void *addr, MonoGCMarkFunc mark_func); +typedef void (*MonoGCMarkFunc) (void **addr, void *gc_data); +typedef void (*MonoGCRootMarkFunc) (void *addr, MonoGCMarkFunc mark_func, void *gc_data); /* Create a descriptor with a user defined marking function */ MONO_API void *mono_gc_make_root_descr_user (MonoGCRootMarkFunc marker); @@ -267,7 +276,7 @@ typedef struct { * - in the second pass, it should mark the remaining areas of the stack * using precise marking by calling mono_gc_scan_object (). */ - void (*thread_mark_func) (gpointer user_data, guint8 *stack_start, guint8 *stack_end, gboolean precise); + void (*thread_mark_func) (gpointer user_data, guint8 *stack_start, guint8 *stack_end, gboolean precise, void *gc_data); } MonoGCCallbacks; /* Set the callback functions callable by the GC */ @@ -280,7 +289,7 @@ MonoGCCallbacks *mono_gc_get_gc_callbacks (void) MONO_INTERNAL; void mono_gc_conservatively_scan_area (void *start, void *end) MONO_INTERNAL; /* Scan OBJ, returning its new address */ -void *mono_gc_scan_object (void *obj) MONO_INTERNAL; +void *mono_gc_scan_object (void *obj, void *gc_data) MONO_INTERNAL; /* Return the bitmap encoded by a descriptor */ gsize* mono_gc_get_bitmap_for_descr (void *descr, int *numbits) MONO_INTERNAL; @@ -356,6 +365,19 @@ struct _MonoReferenceQueue { gboolean should_be_deleted; }; +enum { + MONO_GC_FINALIZER_EXTENSION_VERSION = 1, +}; + +typedef struct { + int version; + gboolean (*is_class_finalization_aware) (MonoClass *klass); + void (*object_queued_for_finalization) (MonoObject *object); +} MonoGCFinalizerCallbacks; + +void mono_gc_register_finalizer_callbacks (MonoGCFinalizerCallbacks *callbacks); + + #ifdef HOST_WIN32 BOOL APIENTRY mono_gc_dllmain (HMODULE module_handle, DWORD reason, LPVOID reserved) MONO_INTERNAL; #endif @@ -369,7 +391,7 @@ void mono_gc_bzero_aligned (void *dest, size_t size) MONO_INTERNAL; void mono_gc_memmove_atomic (void *dest, const void *src, size_t size) MONO_INTERNAL; void mono_gc_memmove_aligned (void *dest, const void *src, size_t size) MONO_INTERNAL; -guint mono_gc_get_vtable_bits (MonoClass *class) MONO_INTERNAL; +guint mono_gc_get_vtable_bits (MonoClass *klass) MONO_INTERNAL; void mono_gc_register_altstack (gpointer stack, gint32 stack_size, gpointer altstack, gint32 altstack_size) MONO_INTERNAL; diff --git a/mono/metadata/gc.c b/mono/metadata/gc.c index 1f7a5fb137..3d4532648a 100644 --- a/mono/metadata/gc.c +++ b/mono/metadata/gc.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include /* for mono_delegate_free_ftnptr () */ @@ -1061,6 +1062,8 @@ finalize_domain_objects (DomainFinalizationReq *req) static guint32 finalizer_thread (gpointer unused) { + gboolean wait = TRUE; + while (!finished) { /* Wait to be notified that there's at least one * finaliser to run @@ -1068,12 +1071,15 @@ finalizer_thread (gpointer unused) g_assert (mono_domain_get () == mono_get_root_domain ()); + if (wait) { /* An alertable wait is required so this thread can be suspended on windows */ #ifdef MONO_HAS_SEMAPHORES - MONO_SEM_WAIT_ALERTABLE (&finalizer_sem, TRUE); + MONO_SEM_WAIT_ALERTABLE (&finalizer_sem, TRUE); #else - WaitForSingleObjectEx (finalizer_event, INFINITE, TRUE); + WaitForSingleObjectEx (finalizer_event, INFINITE, TRUE); #endif + } + wait = TRUE; mono_threads_perform_thread_dump (); @@ -1105,7 +1111,16 @@ finalizer_thread (gpointer unused) reference_queue_proccess_all (); - SetEvent (pending_done_event); +#ifdef MONO_HAS_SEMAPHORES + /* Avoid posting the pending done event until there are pending finalizers */ + if (MONO_SEM_TIMEDWAIT (&finalizer_sem, 0) == 0) + /* Don't wait again at the start of the loop */ + wait = FALSE; + else + SetEvent (pending_done_event); +#else + SetEvent (pending_done_event); +#endif } SetEvent (shutdown_event); @@ -1139,6 +1154,14 @@ mono_gc_init (void) mono_counters_register ("Major GC collections", MONO_COUNTER_GC | MONO_COUNTER_INT, &gc_stats.major_gc_count); mono_counters_register ("Minor GC time", MONO_COUNTER_GC | MONO_COUNTER_LONG | MONO_COUNTER_TIME, &gc_stats.minor_gc_time_usecs); mono_counters_register ("Major GC time", MONO_COUNTER_GC | MONO_COUNTER_LONG | MONO_COUNTER_TIME, &gc_stats.major_gc_time_usecs); +#ifdef HEAVY_STATISTICS + mono_counters_register ("Gray Queue alloc section", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &gc_stats.gray_queue_section_alloc); + mono_counters_register ("Gray Queue free section", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &gc_stats.gray_queue_section_free); + mono_counters_register ("Gray Queue enqueue fast path", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &gc_stats.gray_queue_enqueue_fast_path); + mono_counters_register ("Gray Queue dequeue fast path", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &gc_stats.gray_queue_dequeue_fast_path); + mono_counters_register ("Gray Queue enqueue slow path", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &gc_stats.gray_queue_enqueue_slow_path); + mono_counters_register ("Gray Queue dequeue slow path", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &gc_stats.gray_queue_dequeue_slow_path); +#endif mono_gc_base_init (); diff --git a/mono/metadata/icall.c.REMOVED.git-id b/mono/metadata/icall.c.REMOVED.git-id index bf6130844f..9fb2dbad9a 100644 --- a/mono/metadata/icall.c.REMOVED.git-id +++ b/mono/metadata/icall.c.REMOVED.git-id @@ -1 +1 @@ -f711003792d87d41833143dbee518b81c4d4ab5c \ No newline at end of file +0559152fa60c19d73660ad2cc9ab0925ab9eaefb \ No newline at end of file diff --git a/mono/metadata/image.c b/mono/metadata/image.c index f89f0c9ecc..3a4d69c3b5 100644 --- a/mono/metadata/image.c +++ b/mono/metadata/image.c @@ -534,7 +534,7 @@ mono_image_check_for_module_cctor (MonoImage *image) MonoTableInfo *t, *mt; t = &image->tables [MONO_TABLE_TYPEDEF]; mt = &image->tables [MONO_TABLE_METHOD]; - if (image->dynamic) { + if (image_is_dynamic (image)) { /* FIXME: */ image->checked_module_cctor = TRUE; return; @@ -671,12 +671,20 @@ class_next_value (gpointer value) void mono_image_init (MonoImage *image) { + InitializeCriticalSection (&image->lock); + InitializeCriticalSection (&image->szarray_cache_lock); + image->mempool = mono_mempool_new_size (512); mono_internal_hash_table_init (&image->class_cache, g_direct_hash, class_key_extract, class_next_value); - image->field_cache = g_hash_table_new (NULL, NULL); +#ifdef HOST_WIN32 + // FIXME: + image->field_cache = mono_conc_hashtable_new (&image->lock, NULL, NULL); +#else + image->field_cache = mono_conc_hashtable_new (&image->lock.mutex, NULL, NULL); +#endif image->typespec_cache = g_hash_table_new (NULL, NULL); image->memberref_signatures = g_hash_table_new (NULL, NULL); @@ -684,8 +692,6 @@ mono_image_init (MonoImage *image) image->method_signatures = g_hash_table_new (NULL, NULL); image->property_hash = mono_property_hash_new (); - InitializeCriticalSection (&image->lock); - InitializeCriticalSection (&image->szarray_cache_lock); } #if G_BYTE_ORDER != G_LITTLE_ENDIAN @@ -1539,7 +1545,7 @@ mono_image_close_except_pools (MonoImage *image) * assemblies, so we can't release these references in mono_assembly_close () since the * MonoImage might outlive its associated MonoAssembly. */ - if (image->references && !image->dynamic) { + if (image->references && !image_is_dynamic (image)) { for (i = 0; i < image->nreferences; i++) { if (image->references [i] && image->references [i] != REFERENCE_MISSING) { if (!mono_assembly_close_except_image_pools (image->references [i])) @@ -1602,7 +1608,7 @@ mono_image_close_except_pools (MonoImage *image) if (image->methodref_cache) g_hash_table_destroy (image->methodref_cache); mono_internal_hash_table_destroy (&image->class_cache); - g_hash_table_destroy (image->field_cache); + mono_conc_hashtable_destroy (image->field_cache); if (image->array_cache) { g_hash_table_foreach (image->array_cache, free_array_cache_entry, NULL); g_hash_table_destroy (image->array_cache); @@ -1697,7 +1703,7 @@ mono_image_close_except_pools (MonoImage *image) DeleteCriticalSection (&image->lock); /*g_print ("destroy image %p (dynamic: %d)\n", image, image->dynamic);*/ - if (image->dynamic) { + if (image_is_dynamic (image)) { /* Dynamic images are GC_MALLOCed */ g_free ((char*)image->module_name); mono_dynamic_image_free ((MonoDynamicImage*)image); @@ -1713,7 +1719,7 @@ mono_image_close_finish (MonoImage *image) { int i; - if (image->references && !image->dynamic) { + if (image->references && !image_is_dynamic (image)) { for (i = 0; i < image->nreferences; i++) { if (image->references [i] && image->references [i] != REFERENCE_MISSING) mono_assembly_close_finish (image->references [i]); @@ -1734,7 +1740,7 @@ mono_image_close_finish (MonoImage *image) mono_perfcounters->loader_bytes -= mono_mempool_get_allocated (image->mempool); #endif - if (!image->dynamic) { + if (!image_is_dynamic (image)) { if (debug_assembly_unload) mono_mempool_invalidate (image->mempool); else { @@ -2105,7 +2111,7 @@ mono_image_get_public_key (MonoImage *image, guint32 *size) const char *pubkey; guint32 len, tok; - if (image->dynamic) { + if (image_is_dynamic (image)) { if (size) *size = ((MonoDynamicImage*)image)->public_key_len; return (char*)((MonoDynamicImage*)image)->public_key; @@ -2202,7 +2208,7 @@ mono_image_get_assembly (MonoImage *image) gboolean mono_image_is_dynamic (MonoImage *image) { - return image->dynamic; + return image_is_dynamic (image); } /** @@ -2366,7 +2372,7 @@ void mono_image_append_class_to_reflection_info_set (MonoClass *class) { MonoImage *image = class->image; - g_assert (image->dynamic); + g_assert (image_is_dynamic (image)); mono_image_lock (image); image->reflection_info_unregister_classes = g_slist_prepend_mempool (image->mempool, image->reflection_info_unregister_classes, class); mono_image_unlock (image); diff --git a/mono/metadata/loader.c b/mono/metadata/loader.c index f950055953..f1ed2d01dc 100644 --- a/mono/metadata/loader.c +++ b/mono/metadata/loader.c @@ -517,7 +517,7 @@ mono_field_from_token (MonoImage *image, guint32 token, MonoClass **retklass, guint32 type; MonoClassField *field; - if (image->dynamic) { + if (image_is_dynamic (image)) { MonoClassField *result; MonoClass *handle_class; @@ -532,13 +532,10 @@ mono_field_from_token (MonoImage *image, guint32 token, MonoClass **retklass, return result; } - mono_image_lock (image); - if ((field = g_hash_table_lookup (image->field_cache, GUINT_TO_POINTER (token)))) { + if ((field = mono_conc_hashtable_lookup (image->field_cache, GUINT_TO_POINTER (token)))) { *retklass = field->parent; - mono_image_unlock (image); return field; } - mono_image_unlock (image); if (mono_metadata_token_table (token) == MONO_TABLE_MEMBERREF) field = field_from_memberref (image, token, retklass, context); @@ -555,10 +552,9 @@ mono_field_from_token (MonoImage *image, guint32 token, MonoClass **retklass, field = mono_class_get_field (k, token); } - mono_image_lock (image); if (field && field->parent && !field->parent->generic_class && !field->parent->generic_container) - g_hash_table_insert (image->field_cache, GUINT_TO_POINTER (token), field); - mono_image_unlock (image); + mono_conc_hashtable_insert (image->field_cache, GUINT_TO_POINTER (token), field); + return field; } @@ -596,7 +592,7 @@ find_method_in_class (MonoClass *klass, const char *name, const char *qname, con /* Search directly in the metadata to avoid calling setup_methods () */ /* FIXME: !from_class->generic_class condition causes test failures. */ - if (klass->type_token && !klass->image->dynamic && !klass->methods && !klass->rank && klass == from_class && !from_class->generic_class) { + if (klass->type_token && !image_is_dynamic (klass->image) && !klass->methods && !klass->rank && klass == from_class && !from_class->generic_class) { for (i = 0; i < klass->method.count; ++i) { guint32 cols [MONO_METHOD_SIZE]; MonoMethod *method; @@ -855,11 +851,9 @@ mono_method_get_signature_full (MonoMethod *method, MonoImage *image, guint32 to if (method->klass->generic_class) return mono_method_signature (method); -#ifndef DISABLE_REFLECTION_EMIT - if (image->dynamic) { + if (image_is_dynamic (image)) { sig = mono_reflection_lookup_signature (image, method, token); } else { -#endif mono_metadata_decode_row (&image->tables [MONO_TABLE_MEMBERREF], idx-1, cols, MONO_MEMBERREF_SIZE); sig_idx = cols [MONO_MEMBERREF_SIGNATURE]; @@ -888,10 +882,7 @@ mono_method_get_signature_full (MonoMethod *method, MonoImage *image, guint32 to mono_loader_set_error_bad_image (g_strdup_printf ("Incompatible method signature class token 0x%08x field name %s token 0x%08x on image %s", class, fname, token, image->name)); return NULL; } -#ifndef DISABLE_REFLECTION_EMIT } -#endif - if (context) { MonoError error; @@ -1351,7 +1342,7 @@ mono_lookup_pinvoke_call (MonoMethod *method, const char **exc_class, const char if (piinfo->addr) return piinfo->addr; - if (method->klass->image->dynamic) { + if (image_is_dynamic (method->klass->image)) { MonoReflectionMethodAux *method_aux = g_hash_table_lookup ( ((MonoDynamicImage*)method->klass->image)->method_aux_hash, method); @@ -1695,7 +1686,7 @@ mono_get_method_from_token (MonoImage *image, guint32 token, MonoClass *klass, int size; guint32 cols [MONO_TYPEDEF_SIZE]; - if (image->dynamic) { + if (image_is_dynamic (image)) { MonoClass *handle_class; result = mono_lookup_dynamic_token_class (image, token, TRUE, &handle_class, context); @@ -1823,7 +1814,7 @@ mono_get_method_full (MonoImage *image, guint32 token, MonoClass *klass, 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))); - } else if (!image->dynamic) { + } 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)); @@ -1844,7 +1835,7 @@ mono_get_method_full (MonoImage *image, guint32 token, MonoClass *klass, 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))); - else if (!image->dynamic) + else if (!image_is_dynamic (image)) result2 = g_hash_table_lookup (image->methodref_cache, GINT_TO_POINTER (token)); if (result2) { @@ -1854,7 +1845,7 @@ mono_get_method_full (MonoImage *image, guint32 token, MonoClass *klass, if (mono_metadata_token_table (token) == MONO_TABLE_METHOD) g_hash_table_insert (image->method_cache, GINT_TO_POINTER (mono_metadata_token_index (token)), result); - else if (!image->dynamic) + else if (!image_is_dynamic (image)) g_hash_table_insert (image->methodref_cache, GINT_TO_POINTER (token), result); } @@ -1986,7 +1977,7 @@ mono_free_method (MonoMethod *method) /* g_free (method->signature); */ } - if (method->dynamic) { + if (method_is_dynamic (method)) { MonoMethodWrapper *mw = (MonoMethodWrapper*)method; int i; @@ -2039,7 +2030,7 @@ mono_method_get_param_names (MonoMethod *method, const char **names) mono_class_init (klass); - if (klass->image->dynamic) { + if (image_is_dynamic (klass->image)) { MonoReflectionMethodAux *method_aux = g_hash_table_lookup ( ((MonoDynamicImage*)method->klass->image)->method_aux_hash, method); @@ -2096,9 +2087,8 @@ mono_method_get_param_token (MonoMethod *method, int index) mono_class_init (klass); - if (klass->image->dynamic) { + if (image_is_dynamic (klass->image)) g_assert_not_reached (); - } methodt = &klass->image->tables [MONO_TABLE_METHOD]; idx = mono_method_get_index (method); @@ -2131,7 +2121,7 @@ mono_method_get_marshal_info (MonoMethod *method, MonoMarshalSpec **mspecs) for (i = 0; i < signature->param_count + 1; ++i) mspecs [i] = NULL; - if (method->klass->image->dynamic) { + if (image_is_dynamic (method->klass->image)) { MonoReflectionMethodAux *method_aux = g_hash_table_lookup ( ((MonoDynamicImage*)method->klass->image)->method_aux_hash, method); @@ -2186,7 +2176,7 @@ mono_method_has_marshal_info (MonoMethod *method) MonoTableInfo *paramt; guint32 idx; - if (method->klass->image->dynamic) { + if (image_is_dynamic (method->klass->image)) { MonoReflectionMethodAux *method_aux = g_hash_table_lookup ( ((MonoDynamicImage*)method->klass->image)->method_aux_hash, method); @@ -2567,6 +2557,7 @@ mono_method_get_header (MonoMethod *method) MonoImage* img; gpointer loc; MonoMethodHeader *header; + MonoGenericContainer *container; if ((method->flags & METHOD_ATTRIBUTE_ABSTRACT) || (method->iflags & METHOD_IMPL_ATTRIBUTE_RUNTIME) || (method->iflags & METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL) || (method->flags & METHOD_ATTRIBUTE_PINVOKE_IMPL)) return NULL; @@ -2616,7 +2607,14 @@ mono_method_get_header (MonoMethod *method) if (!loc) return NULL; - header = mono_metadata_parse_mh_full (img, mono_method_get_generic_container (method), loc); + /* + * When parsing the types of local variables, we must pass any container available + * to ensure that both VAR and MVAR will get the right owner. + */ + container = mono_method_get_generic_container (method); + if (!container) + container = method->klass->generic_container; + header = mono_metadata_parse_mh_full (img, container, loc); return header; } diff --git a/mono/metadata/locales.h b/mono/metadata/locales.h index 7ebdde0133..26919ea43c 100644 --- a/mono/metadata/locales.h +++ b/mono/metadata/locales.h @@ -26,28 +26,28 @@ typedef enum { CompareOptions_Ordinal=0x40000000 } MonoCompareOptions; -extern void ves_icall_System_Globalization_CultureInfo_construct_internal_locale (MonoCultureInfo *this, MonoString *locale) MONO_INTERNAL; +extern void ves_icall_System_Globalization_CultureInfo_construct_internal_locale (MonoCultureInfo *this_obj, MonoString *locale) MONO_INTERNAL; extern MonoString* ves_icall_System_Globalization_CultureInfo_get_current_locale_name (void) MONO_INTERNAL; -extern MonoBoolean ves_icall_System_Globalization_CultureInfo_construct_internal_locale_from_lcid (MonoCultureInfo *this, gint lcid) MONO_INTERNAL; -extern MonoBoolean ves_icall_System_Globalization_CultureInfo_construct_internal_locale_from_name (MonoCultureInfo *this, MonoString *name) MONO_INTERNAL; +extern MonoBoolean ves_icall_System_Globalization_CultureInfo_construct_internal_locale_from_lcid (MonoCultureInfo *this_obj, gint lcid) MONO_INTERNAL; +extern MonoBoolean ves_icall_System_Globalization_CultureInfo_construct_internal_locale_from_name (MonoCultureInfo *this_obj, MonoString *name) MONO_INTERNAL; extern MonoArray *ves_icall_System_Globalization_CultureInfo_internal_get_cultures (MonoBoolean neutral, MonoBoolean specific, MonoBoolean installed) MONO_INTERNAL; -extern void ves_icall_System_Globalization_CultureInfo_construct_datetime_format (MonoCultureInfo *this) MONO_INTERNAL; -extern void ves_icall_System_Globalization_CultureInfo_construct_number_format (MonoCultureInfo *this) MONO_INTERNAL; +extern void ves_icall_System_Globalization_CultureInfo_construct_datetime_format (MonoCultureInfo *this_obj) MONO_INTERNAL; +extern void ves_icall_System_Globalization_CultureInfo_construct_number_format (MonoCultureInfo *this_obj) MONO_INTERNAL; extern void ves_icall_System_Globalization_CompareInfo_construct_compareinfo (MonoCompareInfo *comp, MonoString *locale) MONO_INTERNAL; -extern int ves_icall_System_Globalization_CompareInfo_internal_compare (MonoCompareInfo *this, MonoString *str1, gint32 off1, gint32 len1, MonoString *str2, gint32 off2, gint32 len2, gint32 options) MONO_INTERNAL; -extern void ves_icall_System_Globalization_CompareInfo_free_internal_collator (MonoCompareInfo *this) MONO_INTERNAL; +extern int ves_icall_System_Globalization_CompareInfo_internal_compare (MonoCompareInfo *this_obj, MonoString *str1, gint32 off1, gint32 len1, MonoString *str2, gint32 off2, gint32 len2, gint32 options) MONO_INTERNAL; +extern void ves_icall_System_Globalization_CompareInfo_free_internal_collator (MonoCompareInfo *this_obj) MONO_INTERNAL; extern MonoBoolean -ves_icall_System_Globalization_RegionInfo_construct_internal_region_from_lcid (MonoRegionInfo *this, gint lcid) MONO_INTERNAL; +ves_icall_System_Globalization_RegionInfo_construct_internal_region_from_lcid (MonoRegionInfo *this_obj, gint lcid) MONO_INTERNAL; extern MonoBoolean -ves_icall_System_Globalization_RegionInfo_construct_internal_region_from_name (MonoRegionInfo *this, +ves_icall_System_Globalization_RegionInfo_construct_internal_region_from_name (MonoRegionInfo *this_obj, MonoString *name) MONO_INTERNAL; -extern void ves_icall_System_Globalization_CompareInfo_assign_sortkey (MonoCompareInfo *this, MonoSortKey *key, MonoString *source, gint32 options) MONO_INTERNAL; -extern int ves_icall_System_Globalization_CompareInfo_internal_index (MonoCompareInfo *this, MonoString *source, gint32 sindex, gint32 count, MonoString *value, gint32 options, MonoBoolean first) MONO_INTERNAL; -extern int ves_icall_System_Globalization_CompareInfo_internal_index_char (MonoCompareInfo *this, MonoString *source, gint32 sindex, gint32 count, gunichar2 value, gint32 options, MonoBoolean first) MONO_INTERNAL; +extern void ves_icall_System_Globalization_CompareInfo_assign_sortkey (MonoCompareInfo *this_obj, MonoSortKey *key, MonoString *source, gint32 options) MONO_INTERNAL; +extern int ves_icall_System_Globalization_CompareInfo_internal_index (MonoCompareInfo *this_obj, MonoString *source, gint32 sindex, gint32 count, MonoString *value, gint32 options, MonoBoolean first) MONO_INTERNAL; +extern int ves_icall_System_Globalization_CompareInfo_internal_index_char (MonoCompareInfo *this_obj, MonoString *source, gint32 sindex, gint32 count, gunichar2 value, gint32 options, MonoBoolean first) MONO_INTERNAL; extern int ves_icall_System_Threading_Thread_current_lcid (void) MONO_INTERNAL; -extern MonoString *ves_icall_System_String_InternalReplace_Str_Comp (MonoString *this, MonoString *old, MonoString *new, MonoCompareInfo *comp) MONO_INTERNAL; -extern MonoString *ves_icall_System_String_InternalToLower_Comp (MonoString *this, MonoCultureInfo *cult) MONO_INTERNAL; -extern MonoString *ves_icall_System_String_InternalToUpper_Comp (MonoString *this, MonoCultureInfo *cult) MONO_INTERNAL; +extern MonoString *ves_icall_System_String_InternalReplace_Str_Comp (MonoString *this_obj, MonoString *old, MonoString *new_str, MonoCompareInfo *comp) MONO_INTERNAL; +extern MonoString *ves_icall_System_String_InternalToLower_Comp (MonoString *this_obj, MonoCultureInfo *cult) MONO_INTERNAL; +extern MonoString *ves_icall_System_String_InternalToUpper_Comp (MonoString *this_obj, MonoCultureInfo *cult) MONO_INTERNAL; extern gunichar2 ves_icall_System_Char_InternalToUpper_Comp (gunichar2 c, MonoCultureInfo *cult) MONO_INTERNAL; extern gunichar2 ves_icall_System_Char_InternalToLower_Comp (gunichar2 c, MonoCultureInfo *cult) MONO_INTERNAL; extern void load_normalization_resource (guint8 **argProps, guint8** argMappedChars, guint8** argCharMapIndex, guint8** argHelperIndex, guint8** argMapIdxToComposite, guint8** argCombiningClass) MONO_INTERNAL; diff --git a/mono/metadata/marshal.c.REMOVED.git-id b/mono/metadata/marshal.c.REMOVED.git-id index 32afd17c1c..8e8f93cb22 100644 --- a/mono/metadata/marshal.c.REMOVED.git-id +++ b/mono/metadata/marshal.c.REMOVED.git-id @@ -1 +1 @@ -8a8b6b8b512b3ade4dd00580152c020beae85bed \ No newline at end of file +4555510e80131af50660e4c699dd6102d9d9514c \ No newline at end of file diff --git a/mono/metadata/marshal.h b/mono/metadata/marshal.h index a85bd5d26f..0c311c8893 100644 --- a/mono/metadata/marshal.h +++ b/mono/metadata/marshal.h @@ -194,7 +194,7 @@ typedef struct { G_BEGIN_DECLS /*type of the function pointer of methods returned by mono_marshal_get_runtime_invoke*/ -typedef MonoObject *(*RuntimeInvokeFunction) (MonoObject *this, void **params, MonoObject **exc, void* compiled_method); +typedef MonoObject *(*RuntimeInvokeFunction) (MonoObject *this_obj, void **params, MonoObject **exc, void* compiled_method); typedef void (*RuntimeInvokeDynamicFunction) (void *args, MonoObject **exc, void* compiled_method); @@ -299,7 +299,7 @@ MonoMethod * mono_marshal_get_delegate_invoke (MonoMethod *method, MonoDelegate *del) MONO_INTERNAL; MonoMethod * -mono_marshal_get_runtime_invoke (MonoMethod *method, gboolean virtual) MONO_INTERNAL; +mono_marshal_get_runtime_invoke (MonoMethod *method, gboolean is_virtual) MONO_INTERNAL; MonoMethod* mono_marshal_get_runtime_invoke_dynamic (void) MONO_INTERNAL; @@ -368,7 +368,7 @@ MonoMethod * mono_marshal_get_array_accessor_wrapper (MonoMethod *method) MONO_INTERNAL; MonoMethod * -mono_marshal_get_generic_array_helper (MonoClass *class, MonoClass *iface, +mono_marshal_get_generic_array_helper (MonoClass *klass, MonoClass *iface, gchar *name, MonoMethod *method) MONO_INTERNAL; MonoMethod * diff --git a/mono/metadata/metadata-cross-helpers.c b/mono/metadata/metadata-cross-helpers.c new file mode 100644 index 0000000000..5953691401 --- /dev/null +++ b/mono/metadata/metadata-cross-helpers.c @@ -0,0 +1,6 @@ +#include "config.h" + +#ifdef ENABLE_EXTENSION_MODULE +#include "../../../mono-extensions/mono/metadata/metadata-cross-helpers.c" +#endif + diff --git a/mono/metadata/metadata-internals.h b/mono/metadata/metadata-internals.h index 618fd5b59d..f165929b27 100644 --- a/mono/metadata/metadata-internals.h +++ b/mono/metadata/metadata-internals.h @@ -13,6 +13,7 @@ #include "mono/utils/mono-property-hash.h" #include "mono/utils/mono-value-hash.h" #include +#include "mono/utils/mono-conc-hashtable.h" struct _MonoType { union { @@ -224,7 +225,7 @@ struct _MonoImage { /* * Indexed by fielddef and memberref tokens */ - GHashTable *field_cache; /*protected by the image lock*/ + MonoConcurrentHashTable *field_cache; /*protected by the image lock*/ /* indexed by typespec tokens. */ GHashTable *typespec_cache; @@ -524,6 +525,26 @@ struct _MonoMethodSignature { #define MONO_SIZEOF_METHOD_SIGNATURE (sizeof (struct _MonoMethodSignature) - MONO_ZERO_LEN_ARRAY * SIZEOF_VOID_P) +static inline gboolean +image_is_dynamic (MonoImage *image) +{ +#ifdef DISABLE_REFLECTION_EMIT + return FALSE; +#else + return image->dynamic; +#endif +} + +static inline gboolean +assembly_is_dynamic (MonoAssembly *assembly) +{ +#ifdef DISABLE_REFLECTION_EMIT + return FALSE; +#else + return assembly->dynamic; +#endif +} + /* for use with allocated memory blocks (assumes alignment is to 8 bytes) */ guint mono_aligned_addr_hash (gconstpointer ptr) MONO_INTERNAL; @@ -577,7 +598,7 @@ void mono_remove_image_unload_hook (MonoImageUnloadFunc func, gpointer user_data) MONO_INTERNAL; void -mono_image_append_class_to_reflection_info_set (MonoClass *class) MONO_INTERNAL; +mono_image_append_class_to_reflection_info_set (MonoClass *klass) MONO_INTERNAL; gpointer mono_image_set_alloc (MonoImageSet *set, guint size) MONO_INTERNAL; @@ -719,7 +740,7 @@ gboolean mono_metadata_type_equal_full (MonoType *t1, MonoType *t2, gboolean signature_only) MONO_INTERNAL; MonoMarshalSpec * -mono_metadata_parse_marshal_spec_full (MonoImage *image, const char *ptr) MONO_INTERNAL; +mono_metadata_parse_marshal_spec_full (MonoImage *image, MonoImage *parent_image, const char *ptr) MONO_INTERNAL; guint mono_metadata_generic_inst_hash (gconstpointer data) MONO_INTERNAL; gboolean mono_metadata_generic_inst_equal (gconstpointer ka, gconstpointer kb) MONO_INTERNAL; @@ -762,5 +783,7 @@ MonoMethod* method_from_method_def_or_ref (MonoImage *m, guint32 tok, MonoGeneri MonoMethod *mono_get_method_constrained_with_method (MonoImage *image, MonoMethod *method, MonoClass *constrained_class, MonoGenericContext *context) MONO_INTERNAL; +void mono_type_set_alignment (MonoTypeEnum type, int align) MONO_INTERNAL; + #endif /* __MONO_METADATA_INTERNALS_H__ */ diff --git a/mono/metadata/metadata.c.REMOVED.git-id b/mono/metadata/metadata.c.REMOVED.git-id index c692023d28..85e35eaaa7 100644 --- a/mono/metadata/metadata.c.REMOVED.git-id +++ b/mono/metadata/metadata.c.REMOVED.git-id @@ -1 +1 @@ -356dc2c24371b6a941f22ef84647bfc16630f6aa \ No newline at end of file +8ab41872ede146efa0b6f5e72ec91e83d1bd9af7 \ No newline at end of file diff --git a/mono/metadata/metadata.h b/mono/metadata/metadata.h index 4b880c7bab..0a61a2dc10 100644 --- a/mono/metadata/metadata.h +++ b/mono/metadata/metadata.h @@ -190,6 +190,7 @@ typedef struct { struct { char *custom_name; char *cookie; + MonoImage *image; } custom_data; struct { MonoMarshalVariant elem_type; diff --git a/mono/metadata/method-builder.c b/mono/metadata/method-builder.c index 0ed15e721a..cb24914888 100644 --- a/mono/metadata/method-builder.c +++ b/mono/metadata/method-builder.c @@ -10,6 +10,7 @@ #include "config.h" #include "loader.h" +#include "mono/metadata/abi-details.h" #include "mono/metadata/method-builder.h" #include "mono/metadata/tabledefs.h" #include "mono/metadata/exception.h" @@ -201,7 +202,7 @@ mono_mb_create_method (MonoMethodBuilder *mb, MonoMethodSignature *signature, in GList *tmp; void **data; l = g_list_reverse (mw->method_data); - if (method->dynamic) + if (method_is_dynamic (method)) data = g_malloc (sizeof (gpointer) * (i + 1)); else data = mono_image_alloc (image, sizeof (gpointer) * (i + 1)); @@ -536,7 +537,7 @@ mono_mb_emit_exception_full (MonoMethodBuilder *mb, const char *exc_nspace, cons mono_mb_emit_op (mb, CEE_NEWOBJ, ctor); if (msg != NULL) { mono_mb_emit_byte (mb, CEE_DUP); - mono_mb_emit_ldflda (mb, G_STRUCT_OFFSET (MonoException, message)); + mono_mb_emit_ldflda (mb, MONO_STRUCT_OFFSET (MonoException, message)); mono_mb_emit_ldstr (mb, (char*)msg); mono_mb_emit_byte (mb, CEE_STIND_REF); } diff --git a/mono/metadata/monitor.c b/mono/metadata/monitor.c index 9784437db4..fc9814b33a 100644 --- a/mono/metadata/monitor.c +++ b/mono/metadata/monitor.c @@ -12,6 +12,7 @@ #include #include +#include #include #include #include @@ -73,18 +74,6 @@ enum { * an object. */ -struct _MonoThreadsSync -{ - gsize owner; /* thread ID */ - guint32 nest; -#ifdef HAVE_MOVING_COLLECTOR - gint32 hash_code; -#endif - volatile gint32 entry_count; - HANDLE entry_sem; - GSList *wait_list; - void *data; -}; typedef struct _MonitorArray MonitorArray; @@ -813,7 +802,7 @@ emit_obj_syncp_check (MonoMethodBuilder *mb, int syncp_loc, int *obj_null_branch /* ldarg 0 obj conv.i objp - ldc.i4 G_STRUCT_OFFSET(MonoObject, synchronisation) objp off + ldc.i4 MONO_STRUCT_OFFSET(MonoObject, synchronisation) objp off add &syncp ldind.i syncp stloc syncp @@ -823,7 +812,7 @@ emit_obj_syncp_check (MonoMethodBuilder *mb, int syncp_loc, int *obj_null_branch mono_mb_emit_byte (mb, CEE_LDARG_0); mono_mb_emit_byte (mb, CEE_CONV_I); - mono_mb_emit_icon (mb, G_STRUCT_OFFSET (MonoObject, synchronisation)); + mono_mb_emit_icon (mb, MONO_STRUCT_OFFSET (MonoObject, synchronisation)); mono_mb_emit_byte (mb, CEE_ADD); mono_mb_emit_byte (mb, CEE_LDIND_I); mono_mb_emit_stloc (mb, syncp_loc); @@ -889,7 +878,6 @@ mono_monitor_get_fast_enter_method (MonoMethod *monitor_enter_method) static MonoMethod *compare_exchange_method; int obj_null_branch, true_locktaken_branch = 0, syncp_null_branch, has_owner_branch, other_owner_branch, tid_branch, thin_hash_branch; int tid_loc, syncp_loc, owner_loc; - int thread_tls_offset; gboolean is_v4 = mono_method_signature (monitor_enter_method)->param_count == 2; int fast_path_idx = is_v4 ? FASTPATH_ENTERV4 : FASTPATH_ENTER; WrapperInfo *info; @@ -897,13 +885,12 @@ mono_monitor_get_fast_enter_method (MonoMethod *monitor_enter_method) /* The !is_v4 version is not used/tested */ g_assert (is_v4); - thread_tls_offset = mono_thread_get_tls_offset (); - if (thread_tls_offset == -1) - return NULL; - if (monitor_il_fastpaths [fast_path_idx]) return monitor_il_fastpaths [fast_path_idx]; + if (!mono_get_runtime_callbacks ()->tls_key_supported (TLS_KEY_THREAD)) + return NULL; + if (!compare_exchange_method) { MonoMethodDesc *desc; MonoClass *class; @@ -932,12 +919,12 @@ mono_monitor_get_fast_enter_method (MonoMethod *monitor_enter_method) /* mono. tls thread_tls_offset threadp - ldc.i4 G_STRUCT_OFFSET(MonoThread, tid) threadp off + ldc.i4 MONO_STRUCT_OFFSET(MonoThread, tid) threadp off add &tid ldind.i tid stloc tid ldloc syncp syncp - ldc.i4 G_STRUCT_OFFSET(MonoThreadsSync, owner) syncp off + ldc.i4 MONO_STRUCT_OFFSET(MonoThreadsSync, owner) syncp off add &owner ldind.i owner stloc owner @@ -948,12 +935,12 @@ mono_monitor_get_fast_enter_method (MonoMethod *monitor_enter_method) mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX); mono_mb_emit_byte (mb, CEE_MONO_TLS); mono_mb_emit_i4 (mb, TLS_KEY_THREAD); - mono_mb_emit_icon (mb, G_STRUCT_OFFSET (MonoInternalThread, tid)); + mono_mb_emit_icon (mb, MONO_STRUCT_OFFSET (MonoInternalThread, tid)); mono_mb_emit_byte (mb, CEE_ADD); mono_mb_emit_byte (mb, CEE_LDIND_I); mono_mb_emit_stloc (mb, tid_loc); mono_mb_emit_ldloc (mb, syncp_loc); - mono_mb_emit_icon (mb, G_STRUCT_OFFSET (MonoThreadsSync, owner)); + mono_mb_emit_icon (mb, MONO_STRUCT_OFFSET (MonoThreadsSync, owner)); mono_mb_emit_byte (mb, CEE_ADD); mono_mb_emit_byte (mb, CEE_LDIND_I); mono_mb_emit_stloc (mb, owner_loc); @@ -962,7 +949,7 @@ mono_monitor_get_fast_enter_method (MonoMethod *monitor_enter_method) /* ldloc syncp syncp - ldc.i4 G_STRUCT_OFFSET(MonoThreadsSync, owner) syncp off + ldc.i4 MONO_STRUCT_OFFSET(MonoThreadsSync, owner) syncp off add &owner ldloc tid &owner tid ldc.i4 0 &owner tid 0 @@ -972,7 +959,7 @@ mono_monitor_get_fast_enter_method (MonoMethod *monitor_enter_method) */ mono_mb_emit_ldloc (mb, syncp_loc); - mono_mb_emit_icon (mb, G_STRUCT_OFFSET (MonoThreadsSync, owner)); + mono_mb_emit_icon (mb, MONO_STRUCT_OFFSET (MonoThreadsSync, owner)); mono_mb_emit_byte (mb, CEE_ADD); mono_mb_emit_ldloc (mb, tid_loc); mono_mb_emit_byte (mb, CEE_LDC_I4_0); @@ -992,7 +979,7 @@ mono_monitor_get_fast_enter_method (MonoMethod *monitor_enter_method) ldloc tid owner tid brne.s other_owner ldloc syncp syncp - ldc.i4 G_STRUCT_OFFSET(MonoThreadsSync, nest) syncp off + ldc.i4 MONO_STRUCT_OFFSET(MonoThreadsSync, nest) syncp off add &nest dup &nest &nest ldind.i4 &nest nest @@ -1007,7 +994,7 @@ mono_monitor_get_fast_enter_method (MonoMethod *monitor_enter_method) mono_mb_emit_ldloc (mb, tid_loc); other_owner_branch = mono_mb_emit_short_branch (mb, CEE_BNE_UN_S); mono_mb_emit_ldloc (mb, syncp_loc); - mono_mb_emit_icon (mb, G_STRUCT_OFFSET (MonoThreadsSync, nest)); + mono_mb_emit_icon (mb, MONO_STRUCT_OFFSET (MonoThreadsSync, nest)); mono_mb_emit_byte (mb, CEE_ADD); mono_mb_emit_byte (mb, CEE_DUP); mono_mb_emit_byte (mb, CEE_LDIND_I4); @@ -1061,17 +1048,15 @@ mono_monitor_get_fast_exit_method (MonoMethod *monitor_exit_method) MonoMethodBuilder *mb; MonoMethod *res; int obj_null_branch, has_waiting_branch, has_syncp_branch, owned_branch, nested_branch, thin_hash_branch; - int thread_tls_offset; int syncp_loc; WrapperInfo *info; - thread_tls_offset = mono_thread_get_tls_offset (); - if (thread_tls_offset == -1) - return NULL; - if (monitor_il_fastpaths [FASTPATH_EXIT]) return monitor_il_fastpaths [FASTPATH_EXIT]; + if (!mono_get_runtime_callbacks ()->tls_key_supported (TLS_KEY_THREAD)) + return NULL; + mb = mono_mb_new (mono_defaults.monitor_class, "FastMonitorExit", MONO_WRAPPER_UNKNOWN); mb->method->slot = -1; @@ -1092,11 +1077,11 @@ mono_monitor_get_fast_exit_method (MonoMethod *monitor_exit_method) /* has_syncp: ldloc syncp syncp - ldc.i4 G_STRUCT_OFFSET(MonoThreadsSync, owner) syncp off + ldc.i4 MONO_STRUCT_OFFSET(MonoThreadsSync, owner) syncp off add &owner ldind.i owner mono. tls thread_tls_offset owner threadp - ldc.i4 G_STRUCT_OFFSET(MonoThread, tid) owner threadp off + ldc.i4 MONO_STRUCT_OFFSET(MonoThread, tid) owner threadp off add owner &tid ldind.i owner tid beq.s owned @@ -1104,13 +1089,13 @@ mono_monitor_get_fast_exit_method (MonoMethod *monitor_exit_method) mono_mb_patch_short_branch (mb, has_syncp_branch); mono_mb_emit_ldloc (mb, syncp_loc); - mono_mb_emit_icon (mb, G_STRUCT_OFFSET (MonoThreadsSync, owner)); + mono_mb_emit_icon (mb, MONO_STRUCT_OFFSET (MonoThreadsSync, owner)); mono_mb_emit_byte (mb, CEE_ADD); mono_mb_emit_byte (mb, CEE_LDIND_I); mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX); mono_mb_emit_byte (mb, CEE_MONO_TLS); mono_mb_emit_i4 (mb, TLS_KEY_THREAD); - mono_mb_emit_icon (mb, G_STRUCT_OFFSET (MonoInternalThread, tid)); + mono_mb_emit_icon (mb, MONO_STRUCT_OFFSET (MonoInternalThread, tid)); mono_mb_emit_byte (mb, CEE_ADD); mono_mb_emit_byte (mb, CEE_LDIND_I); owned_branch = mono_mb_emit_short_branch (mb, CEE_BEQ_S); @@ -1124,7 +1109,7 @@ mono_monitor_get_fast_exit_method (MonoMethod *monitor_exit_method) /* owned: ldloc syncp syncp - ldc.i4 G_STRUCT_OFFSET(MonoThreadsSync, nest) syncp off + ldc.i4 MONO_STRUCT_OFFSET(MonoThreadsSync, nest) syncp off add &nest dup &nest &nest ldind.i4 &nest nest @@ -1135,7 +1120,7 @@ mono_monitor_get_fast_exit_method (MonoMethod *monitor_exit_method) mono_mb_patch_short_branch (mb, owned_branch); mono_mb_emit_ldloc (mb, syncp_loc); - mono_mb_emit_icon (mb, G_STRUCT_OFFSET (MonoThreadsSync, nest)); + mono_mb_emit_icon (mb, MONO_STRUCT_OFFSET (MonoThreadsSync, nest)); mono_mb_emit_byte (mb, CEE_ADD); mono_mb_emit_byte (mb, CEE_DUP); mono_mb_emit_byte (mb, CEE_LDIND_I4); @@ -1147,7 +1132,7 @@ mono_monitor_get_fast_exit_method (MonoMethod *monitor_exit_method) pop &nest pop ldloc syncp syncp - ldc.i4 G_STRUCT_OFFSET(MonoThreadsSync, entry_count) syncp off + ldc.i4 MONO_STRUCT_OFFSET(MonoThreadsSync, entry_count) syncp off add &count ldind.i4 count brtrue.s has_waiting @@ -1156,14 +1141,14 @@ mono_monitor_get_fast_exit_method (MonoMethod *monitor_exit_method) mono_mb_emit_byte (mb, CEE_POP); mono_mb_emit_byte (mb, CEE_POP); mono_mb_emit_ldloc (mb, syncp_loc); - mono_mb_emit_icon (mb, G_STRUCT_OFFSET (MonoThreadsSync, entry_count)); + mono_mb_emit_icon (mb, MONO_STRUCT_OFFSET (MonoThreadsSync, entry_count)); mono_mb_emit_byte (mb, CEE_ADD); mono_mb_emit_byte (mb, CEE_LDIND_I4); has_waiting_branch = mono_mb_emit_short_branch (mb, CEE_BRTRUE_S); /* ldloc syncp syncp - ldc.i4 G_STRUCT_OFFSET(MonoThreadsSync, owner) syncp off + ldc.i4 MONO_STRUCT_OFFSET(MonoThreadsSync, owner) syncp off add &owner ldnull &owner 0 stind.i @@ -1171,7 +1156,7 @@ mono_monitor_get_fast_exit_method (MonoMethod *monitor_exit_method) */ mono_mb_emit_ldloc (mb, syncp_loc); - mono_mb_emit_icon (mb, G_STRUCT_OFFSET (MonoThreadsSync, owner)); + mono_mb_emit_icon (mb, MONO_STRUCT_OFFSET (MonoThreadsSync, owner)); mono_mb_emit_byte (mb, CEE_ADD); mono_mb_emit_byte (mb, CEE_LDNULL); mono_mb_emit_byte (mb, CEE_STIND_I); @@ -1244,9 +1229,9 @@ mono_monitor_threads_sync_members_offset (int *owner_offset, int *nest_offset, i #define ENCODE_OFF_SIZE(o,s) (((o) << 8) | ((s) & 0xff)) - *owner_offset = ENCODE_OFF_SIZE (G_STRUCT_OFFSET (MonoThreadsSync, owner), sizeof (ts.owner)); - *nest_offset = ENCODE_OFF_SIZE (G_STRUCT_OFFSET (MonoThreadsSync, nest), sizeof (ts.nest)); - *entry_count_offset = ENCODE_OFF_SIZE (G_STRUCT_OFFSET (MonoThreadsSync, entry_count), sizeof (ts.entry_count)); + *owner_offset = ENCODE_OFF_SIZE (MONO_STRUCT_OFFSET (MonoThreadsSync, owner), sizeof (ts.owner)); + *nest_offset = ENCODE_OFF_SIZE (MONO_STRUCT_OFFSET (MonoThreadsSync, nest), sizeof (ts.nest)); + *entry_count_offset = ENCODE_OFF_SIZE (MONO_STRUCT_OFFSET (MonoThreadsSync, entry_count), sizeof (ts.entry_count)); } gboolean diff --git a/mono/metadata/monitor.h b/mono/metadata/monitor.h index 183c2ec0b5..a32780dcdf 100644 --- a/mono/metadata/monitor.h +++ b/mono/metadata/monitor.h @@ -12,10 +12,25 @@ #include #include +#include #include "mono/utils/mono-compiler.h" G_BEGIN_DECLS +struct _MonoThreadsSync +{ + gsize owner; /* thread ID */ + guint32 nest; +#ifdef HAVE_MOVING_COLLECTOR + gint32 hash_code; +#endif + volatile gint32 entry_count; + HANDLE entry_sem; + GSList *wait_list; + void *data; +}; + + MONO_API void mono_locks_dump (gboolean include_untaken); void mono_monitor_init (void) MONO_INTERNAL; diff --git a/mono/metadata/mono-basic-block.h b/mono/metadata/mono-basic-block.h index 77abd7a469..18457249d1 100644 --- a/mono/metadata/mono-basic-block.h +++ b/mono/metadata/mono-basic-block.h @@ -2,7 +2,9 @@ #define __MONO_METADATA_BASIC_BLOCK_H__ #include - +#include +#include +#include G_BEGIN_DECLS @@ -16,7 +18,6 @@ struct _MonoSimpleBasicBlock { unsigned dead : 1; }; - MonoSimpleBasicBlock* mono_basic_block_split (MonoMethod *method, MonoError *error) MONO_INTERNAL; diff --git a/mono/metadata/mono-debug.c b/mono/metadata/mono-debug.c index df012ee827..5e5173f932 100644 --- a/mono/metadata/mono-debug.c +++ b/mono/metadata/mono-debug.c @@ -639,7 +639,7 @@ mono_debug_add_method (MonoMethod *method, MonoDebugMethodJitInfo *jit, MonoDoma g_assert (size < max_size); total_size = size + sizeof (MonoDebugMethodAddress); - if (method->dynamic) { + if (method_is_dynamic (method)) { address = g_malloc0 (total_size); } else { address = (MonoDebugMethodAddress *) allocate_data_item ( @@ -682,7 +682,7 @@ mono_debug_add_method (MonoMethod *method, MonoDebugMethodJitInfo *jit, MonoDoma g_hash_table_insert (table->method_address_hash, method, address); - if (!method->dynamic) + if (!method_is_dynamic (method)) write_data_item (table, (guint8 *) address); mono_debugger_unlock (); @@ -700,7 +700,7 @@ mono_debug_remove_method (MonoMethod *method, MonoDomain *domain) if (!mono_debug_initialized) return; - g_assert (method->dynamic); + g_assert (method_is_dynamic (method)); mono_debugger_lock (); diff --git a/mono/metadata/mono-hash.c b/mono/metadata/mono-hash.c index a5f3ff809a..49fac50c68 100644 --- a/mono/metadata/mono-hash.c +++ b/mono/metadata/mono-hash.c @@ -68,7 +68,7 @@ struct _MonoGHashTable { #ifdef HAVE_SGEN_GC static void *table_hash_descr = NULL; -static void mono_g_hash_mark (void *addr, MonoGCMarkFunc mark_func); +static void mono_g_hash_mark (void *addr, MonoGCMarkFunc mark_func, void *gc_data); static Slot* new_slot (MonoGHashTable *hash) @@ -481,7 +481,7 @@ mono_g_hash_table_print_stats (MonoGHashTable *table) /* GC marker function */ static void -mono_g_hash_mark (void *addr, MonoGCMarkFunc mark_func) +mono_g_hash_mark (void *addr, MonoGCMarkFunc mark_func, void *gc_data) { MonoGHashTable *table = (MonoGHashTable*)addr; Slot *node; @@ -491,23 +491,23 @@ mono_g_hash_mark (void *addr, MonoGCMarkFunc mark_func) for (i = 0; i < table->table_size; i++) { for (node = table->table [i]; node; node = node->next) { if (node->key) - mark_func (&node->key); + mark_func (&node->key, gc_data); } } } else if (table->gc_type == MONO_HASH_VALUE_GC) { for (i = 0; i < table->table_size; i++) { for (node = table->table [i]; node; node = node->next) { if (node->value) - mark_func (&node->value); + mark_func (&node->value, gc_data); } } } else if (table->gc_type == MONO_HASH_KEY_VALUE_GC) { for (i = 0; i < table->table_size; i++) { for (node = table->table [i]; node; node = node->next) { if (node->key) - mark_func (&node->key); + mark_func (&node->key, gc_data); if (node->value) - mark_func (&node->value); + mark_func (&node->value, gc_data); } } } diff --git a/mono/metadata/null-gc.c b/mono/metadata/null-gc.c index 6115ec14eb..397f3849f3 100644 --- a/mono/metadata/null-gc.c +++ b/mono/metadata/null-gc.c @@ -20,13 +20,19 @@ void mono_gc_base_init (void) { MonoThreadInfoCallbacks cb; + int dummy; memset (&cb, 0, sizeof (cb)); - cb.mono_method_is_critical = mono_runtime_is_critical_method; + /* TODO: This casts away an incompatible pointer type warning in the same + manner that boehm-gc does it. This is probably worth investigating + more carefully. */ + cb.mono_method_is_critical = (gpointer)mono_runtime_is_critical_method; cb.mono_gc_pthread_create = (gpointer)mono_gc_pthread_create; cb.thread_exit = mono_gc_pthread_exit; mono_threads_init (&cb, sizeof (MonoThreadInfo)); + + mono_thread_info_attach (&dummy); } void @@ -379,7 +385,7 @@ mono_gc_conservatively_scan_area (void *start, void *end) } void * -mono_gc_scan_object (void *obj) +mono_gc_scan_object (void *obj, void *gc_data) { g_assert_not_reached (); return NULL; diff --git a/mono/metadata/object-internals.h b/mono/metadata/object-internals.h index 2e03407768..9ec3893765 100644 --- a/mono/metadata/object-internals.h +++ b/mono/metadata/object-internals.h @@ -596,6 +596,7 @@ typedef struct { void (*set_cast_details) (MonoClass *from, MonoClass *to); void (*debug_log) (int level, MonoString *category, MonoString *message); gboolean (*debug_log_is_enabled) (void); + gboolean (*tls_key_supported) (MonoTlsKey key); } MonoRuntimeCallbacks; typedef gboolean (*MonoInternalStackWalk) (MonoStackFrameInfo *frame, MonoContext *ctx, gpointer data); @@ -647,7 +648,7 @@ void mono_method_return_message_restore (MonoMethod *method, gpointer *params, MonoArray *out_args) MONO_INTERNAL; void -mono_delegate_ctor_with_method (MonoObject *this, MonoObject *target, gpointer addr, MonoMethod *method) MONO_INTERNAL; +mono_delegate_ctor_with_method (MonoObject *this_obj, MonoObject *target, gpointer addr, MonoMethod *method) MONO_INTERNAL; void mono_delegate_ctor (MonoObject *this_obj, MonoObject *target, gpointer addr) MONO_INTERNAL; @@ -1476,7 +1477,7 @@ void mono_array_full_copy (MonoArray *src, MonoArray *dest) MONO_INTERNAL; gboolean -mono_array_calc_byte_len (MonoClass *class, uintptr_t len, uintptr_t *res) MONO_INTERNAL; +mono_array_calc_byte_len (MonoClass *klass, uintptr_t len, uintptr_t *res) MONO_INTERNAL; #ifndef DISABLE_REMOTING MonoObject * @@ -1567,7 +1568,7 @@ void mono_runtime_unhandled_exception_policy_set (MonoRuntimeUnhandledExceptionPolicy policy) MONO_INTERNAL; MonoVTable * -mono_class_try_get_vtable (MonoDomain *domain, MonoClass *class) MONO_INTERNAL; +mono_class_try_get_vtable (MonoDomain *domain, MonoClass *klass) MONO_INTERNAL; MonoException * mono_runtime_class_init_full (MonoVTable *vtable, gboolean raise_exception) MONO_INTERNAL; @@ -1576,16 +1577,16 @@ void mono_method_clear_object (MonoDomain *domain, MonoMethod *method) MONO_INTERNAL; void -mono_class_compute_gc_descriptor (MonoClass *class) MONO_INTERNAL; +mono_class_compute_gc_descriptor (MonoClass *klass) MONO_INTERNAL; gsize* -mono_class_compute_bitmap (MonoClass *class, gsize *bitmap, int size, int offset, int *max_set, gboolean static_fields) MONO_INTERNAL; +mono_class_compute_bitmap (MonoClass *klass, gsize *bitmap, int size, int offset, int *max_set, gboolean static_fields) MONO_INTERNAL; MonoObject* mono_object_xdomain_representation (MonoObject *obj, MonoDomain *target_domain, MonoObject **exc) MONO_INTERNAL; gboolean -mono_class_is_reflection_method_or_constructor (MonoClass *class) MONO_INTERNAL; +mono_class_is_reflection_method_or_constructor (MonoClass *klass) MONO_INTERNAL; MonoObject * mono_get_object_from_blob (MonoDomain *domain, MonoType *type, const char *blob) MONO_INTERNAL; diff --git a/mono/metadata/object-offsets.h b/mono/metadata/object-offsets.h new file mode 100644 index 0000000000..f50cba1a64 --- /dev/null +++ b/mono/metadata/object-offsets.h @@ -0,0 +1,231 @@ +/* +This is a parameterized header. It's supposed/ok to be included multiple times. + +Input defines: (those to be defined by the includer file) + +Required: +DECL_OFFSET(struct,field) +DECL_OFFSET2(struct,field,offset) +DECL_ALIGN(name,type) +DECL_ALIGN2(name,alignment) + +Optional: +USE_CROSS_COMPILE_OFFSETS - if defined, force the cross compiler offsets to be used, otherwise + they will only be used if MONO_CROSS_COMPILE is defined + +Output defines: + +HAS_CROSS_COMPILER_OFFSETS - if set, it means we found some cross offsets, it doesnt mean we'll use it. +USED_CROSS_COMPILER_OFFSETS - if set, it means we used the cross offsets +*/ + + +#undef HAS_CROSS_COMPILER_OFFSETS +#undef USED_CROSS_COMPILER_OFFSETS + +#ifdef ENABLE_EXTENSION_MODULE +#include "../../../mono-extensions/mono/metadata/object-offsets.h" +#endif + + +#ifndef USED_CROSS_COMPILER_OFFSETS + +DECL_ALIGN(gint8) +DECL_ALIGN(gint16) +DECL_ALIGN(gint32) +DECL_ALIGN(gint64) +DECL_ALIGN(float) +DECL_ALIGN(double) +DECL_ALIGN(gpointer) + +#ifndef DISABLE_METADATA_OFFSETS +//object offsets +DECL_OFFSET(MonoObject, vtable) +DECL_OFFSET(MonoObject, synchronisation) + +DECL_OFFSET(MonoClass, interface_bitmap) +DECL_OFFSET(MonoClass, byval_arg) +DECL_OFFSET(MonoClass, cast_class) +DECL_OFFSET(MonoClass, element_class) +DECL_OFFSET(MonoClass, idepth) +DECL_OFFSET(MonoClass, instance_size) +DECL_OFFSET(MonoClass, interface_id) +DECL_OFFSET(MonoClass, max_interface_id) +DECL_OFFSET(MonoClass, parent) +DECL_OFFSET(MonoClass, rank) +DECL_OFFSET(MonoClass, sizes) +DECL_OFFSET(MonoClass, supertypes) + +DECL_OFFSET(MonoVTable, klass) +DECL_OFFSET(MonoVTable, max_interface_id) +DECL_OFFSET(MonoVTable, interface_bitmap) +DECL_OFFSET(MonoVTable, vtable) +DECL_OFFSET(MonoVTable, rank) +DECL_OFFSET(MonoVTable, type) +DECL_OFFSET(MonoVTable, runtime_generic_context) + +DECL_OFFSET(MonoDomain, stack_overflow_ex) + +DECL_OFFSET(MonoDelegate, target) +DECL_OFFSET(MonoDelegate, method_ptr) +DECL_OFFSET(MonoDelegate, invoke_impl) +DECL_OFFSET(MonoDelegate, method) +DECL_OFFSET(MonoDelegate, method_code) + +DECL_OFFSET(MonoInternalThread, tid) +DECL_OFFSET(MonoInternalThread, static_data) + +DECL_OFFSET(MonoMulticastDelegate, prev) + +DECL_OFFSET(MonoTransparentProxy, rp) +DECL_OFFSET(MonoTransparentProxy, remote_class) +DECL_OFFSET(MonoTransparentProxy, custom_type_info) + +DECL_OFFSET(MonoRealProxy, target_domain_id) +DECL_OFFSET(MonoRealProxy, context) +DECL_OFFSET(MonoRealProxy, unwrapped_server) + +DECL_OFFSET(MonoRemoteClass, proxy_class) + +DECL_OFFSET(MonoArray, vector) +DECL_OFFSET(MonoArray, max_length) +DECL_OFFSET(MonoArray, bounds) + +DECL_OFFSET(MonoArrayBounds, lower_bound) +DECL_OFFSET(MonoArrayBounds, length) + +DECL_OFFSET(MonoSafeHandle, handle) + +DECL_OFFSET(MonoHandleRef, handle) + +DECL_OFFSET(MonoComInteropProxy, com_object) + +DECL_OFFSET(MonoString, length) +DECL_OFFSET(MonoString, chars) + +DECL_OFFSET(MonoException, message) + +DECL_OFFSET(MonoTypedRef, type) +DECL_OFFSET(MonoTypedRef, klass) +DECL_OFFSET(MonoTypedRef, value) + +//Internal structs +DECL_OFFSET(MonoThreadsSync, owner) +DECL_OFFSET(MonoThreadsSync, nest) +DECL_OFFSET(MonoThreadsSync, entry_count) + +#if defined (HAVE_SGEN_GC) && !defined (HAVE_KW_THREAD) +DECL_OFFSET(SgenThreadInfo, tlab_next_addr) +DECL_OFFSET(SgenThreadInfo, tlab_temp_end) +#endif + +#endif //DISABLE METADATA OFFSETS + +#ifndef DISABLE_JIT_OFFSETS +DECL_OFFSET(MonoLMF, previous_lmf) + +DECL_OFFSET(MonoMethodRuntimeGenericContext, class_vtable) + +DECL_OFFSET(MonoJitTlsData, lmf) +DECL_OFFSET(MonoJitTlsData, class_cast_from) +DECL_OFFSET(MonoJitTlsData, class_cast_to) +DECL_OFFSET(MonoJitTlsData, handler_block_return_address) +DECL_OFFSET(MonoJitTlsData, restore_stack_prot) + +DECL_OFFSET(MonoGSharedVtMethodRuntimeInfo, locals_size) +DECL_OFFSET(MonoGSharedVtMethodRuntimeInfo, entries) //XXX more to fix here + +DECL_OFFSET(MonoContinuation, stack_used_size) +DECL_OFFSET(MonoContinuation, saved_stack) +DECL_OFFSET(MonoContinuation, return_sp) +DECL_OFFSET(MonoContinuation, lmf) +DECL_OFFSET(MonoContinuation, return_ip) + +#ifdef TARGET_X86 +DECL_OFFSET(MonoContext, eax) +DECL_OFFSET(MonoContext, ebx) +DECL_OFFSET(MonoContext, ecx) +DECL_OFFSET(MonoContext, edx) +DECL_OFFSET(MonoContext, edi) +DECL_OFFSET(MonoContext, esi) +DECL_OFFSET(MonoContext, esp) +DECL_OFFSET(MonoContext, ebp) +DECL_OFFSET(MonoContext, eip) + +DECL_OFFSET(MonoLMF, method) +DECL_OFFSET(MonoLMF, lmf_addr) +DECL_OFFSET(MonoLMF, esp) +DECL_OFFSET(MonoLMF, ebx) +DECL_OFFSET(MonoLMF, edi) +DECL_OFFSET(MonoLMF, esi) +DECL_OFFSET(MonoLMF, ebp) +DECL_OFFSET(MonoLMF, eip) +#endif + +#ifdef TARGET_ARM +DECL_OFFSET (MonoContext, pc) +DECL_OFFSET (MonoContext, regs) +DECL_OFFSET (MonoContext, fregs) + +DECL_OFFSET(MonoLMF, method) +DECL_OFFSET(MonoLMF, lmf_addr) +DECL_OFFSET(MonoLMF, sp) +DECL_OFFSET(MonoLMF, fp) +DECL_OFFSET(MonoLMF, ip) +DECL_OFFSET(MonoLMF, iregs) +DECL_OFFSET(MonoLMF, fregs) + +DECL_OFFSET(SeqPointInfo, bp_addrs) +DECL_OFFSET(SeqPointInfo, ss_trigger_page) + +DECL_OFFSET(DynCallArgs, res) +DECL_OFFSET(DynCallArgs, res2) +#endif + +#ifdef TARGET_AMD64 +DECL_OFFSET(MonoContext, rax) +DECL_OFFSET(MonoContext, rcx) +DECL_OFFSET(MonoContext, rdx) +DECL_OFFSET(MonoContext, rbx) +DECL_OFFSET(MonoContext, rbp) +DECL_OFFSET(MonoContext, rsi) +DECL_OFFSET(MonoContext, rdi) +DECL_OFFSET(MonoContext, rsp) +DECL_OFFSET(MonoContext, r8) +DECL_OFFSET(MonoContext, r9) +DECL_OFFSET(MonoContext, r10) +DECL_OFFSET(MonoContext, r12) +DECL_OFFSET(MonoContext, r13) +DECL_OFFSET(MonoContext, r14) +DECL_OFFSET(MonoContext, r15) +DECL_OFFSET(MonoContext, rip) + +#ifdef TARGET_WIN32 +DECL_OFFSET(MonoLMF, lmf_addr) +#endif + +DECL_OFFSET(MonoLMF, rsp) +DECL_OFFSET(MonoLMF, rbp) +DECL_OFFSET(MonoLMF, rip) + +DECL_OFFSET(SeqPointInfo, bp_addrs) +DECL_OFFSET(DynCallArgs, res) +DECL_OFFSET(SeqPointInfo, ss_trigger_page) + +DECL_OFFSET(MonoLMFTramp, regs) +DECL_OFFSET(MonoLMFTramp, lmf_addr) + +#endif + +DECL_OFFSET(MonoDelegateTrampInfo, invoke_impl) +DECL_OFFSET(MonoDelegateTrampInfo, method_ptr) + +#endif + +#endif + +#undef DECL_OFFSET +#undef DECL_OFFSET2 +#undef DECL_ALIGN +#undef DECL_ALIGN2 +#undef USE_CROSS_COMPILE_OFFSETS diff --git a/mono/metadata/object.c.REMOVED.git-id b/mono/metadata/object.c.REMOVED.git-id index 40db25974d..053bffbaef 100644 --- a/mono/metadata/object.c.REMOVED.git-id +++ b/mono/metadata/object.c.REMOVED.git-id @@ -1 +1 @@ -a9a86706f234a79c35762e85c190bd477cc81fc4 \ No newline at end of file +305a48820b980825278dd59f8c6005160cab9611 \ No newline at end of file diff --git a/mono/metadata/object.h b/mono/metadata/object.h index 0f96cf7ecc..8a62a1e10e 100644 --- a/mono/metadata/object.h +++ b/mono/metadata/object.h @@ -26,7 +26,7 @@ typedef struct _MonoDynamicImage MonoDynamicImage; typedef struct _MonoReflectionMethodBody MonoReflectionMethodBody; typedef struct _MonoAppContext MonoAppContext; -typedef struct { +typedef struct _MonoObject { MonoVTable *vtable; MonoThreadsSync *synchronisation; } MonoObject; diff --git a/mono/metadata/process.c b/mono/metadata/process.c index 658c43375e..c9e0f8bf63 100755 --- a/mono/metadata/process.c +++ b/mono/metadata/process.c @@ -23,9 +23,6 @@ #include #include #include -#if defined (MINGW_CROSS_COMPILE) && defined (HAVE_GETPROCESSID) -#undef HAVE_GETPROCESSID -#endif #ifndef HAVE_GETPROCESSID #if defined(_MSC_VER) || defined(HAVE_WINTERNL_H) #include diff --git a/mono/metadata/process.h b/mono/metadata/process.h index fb184a774b..96ea93b888 100644 --- a/mono/metadata/process.h +++ b/mono/metadata/process.h @@ -60,13 +60,13 @@ G_BEGIN_DECLS HANDLE ves_icall_System_Diagnostics_Process_GetProcess_internal (guint32 pid) MONO_INTERNAL; MonoArray *ves_icall_System_Diagnostics_Process_GetProcesses_internal (void) MONO_INTERNAL; guint32 ves_icall_System_Diagnostics_Process_GetPid_internal (void) MONO_INTERNAL; -void ves_icall_System_Diagnostics_Process_Process_free_internal (MonoObject *this, HANDLE process) MONO_INTERNAL; -MonoArray *ves_icall_System_Diagnostics_Process_GetModules_internal (MonoObject *this, HANDLE process) MONO_INTERNAL; -void ves_icall_System_Diagnostics_FileVersionInfo_GetVersionInfo_internal (MonoObject *this, MonoString *filename) MONO_INTERNAL; +void ves_icall_System_Diagnostics_Process_Process_free_internal (MonoObject *this_obj, HANDLE process) MONO_INTERNAL; +MonoArray *ves_icall_System_Diagnostics_Process_GetModules_internal (MonoObject *this_obj, HANDLE process) MONO_INTERNAL; +void ves_icall_System_Diagnostics_FileVersionInfo_GetVersionInfo_internal (MonoObject *this_obj, MonoString *filename) MONO_INTERNAL; MonoBoolean ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal (MonoProcessStartInfo *proc_start_info, MonoProcInfo *process_handle) MONO_INTERNAL; MonoBoolean ves_icall_System_Diagnostics_Process_CreateProcess_internal (MonoProcessStartInfo *proc_start_info, HANDLE stdin_handle, HANDLE stdout_handle, HANDLE stderr_handle, MonoProcInfo *process_handle) MONO_INTERNAL; -MonoBoolean ves_icall_System_Diagnostics_Process_WaitForExit_internal (MonoObject *this, HANDLE process, gint32 ms) MONO_INTERNAL; -MonoBoolean ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal (MonoObject *this, HANDLE process, gint32 ms) MONO_INTERNAL; +MonoBoolean ves_icall_System_Diagnostics_Process_WaitForExit_internal (MonoObject *this_obj, HANDLE process, gint32 ms) MONO_INTERNAL; +MonoBoolean ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal (MonoObject *this_obj, HANDLE process, gint32 ms) MONO_INTERNAL; gint64 ves_icall_System_Diagnostics_Process_ExitTime_internal (HANDLE process) MONO_INTERNAL; gint64 ves_icall_System_Diagnostics_Process_StartTime_internal (HANDLE process) MONO_INTERNAL; gint32 ves_icall_System_Diagnostics_Process_ExitCode_internal (HANDLE process) MONO_INTERNAL; diff --git a/mono/metadata/rand.c b/mono/metadata/rand.c index 4ed1203f85..77d152d5a6 100644 --- a/mono/metadata/rand.c +++ b/mono/metadata/rand.c @@ -44,8 +44,8 @@ get_entropy_from_server (const char *path, guchar *buf, int len) ret = -1; else { egd_addr.sun_family = AF_UNIX; - strncpy (egd_addr.sun_path, path, MONO_SIZEOF_SUNPATH - 1); - egd_addr.sun_path [MONO_SIZEOF_SUNPATH-1] = '\0'; + strncpy (egd_addr.sun_path, path, sizeof(egd_addr.sun_path) - 1); + egd_addr.sun_path [sizeof(egd_addr.sun_path)-1] = '\0'; ret = connect (file, (struct sockaddr *)&egd_addr, sizeof(egd_addr)); } if (ret == -1) { diff --git a/mono/metadata/rand.h b/mono/metadata/rand.h index 96b4efe76f..76864ca31c 100644 --- a/mono/metadata/rand.h +++ b/mono/metadata/rand.h @@ -12,6 +12,7 @@ #ifndef _MONO_METADATA_RAND_H_ #define _MONO_METADATA_RAND_H_ +#include #include #include "mono/utils/mono-compiler.h" diff --git a/mono/metadata/reflection.c.REMOVED.git-id b/mono/metadata/reflection.c.REMOVED.git-id index eb19514348..32619bb719 100644 --- a/mono/metadata/reflection.c.REMOVED.git-id +++ b/mono/metadata/reflection.c.REMOVED.git-id @@ -1 +1 @@ -089867768b97f2b0c88d2b48fe63c8ba327f74ec \ No newline at end of file +d6dd94c8104a77361dd7e82d80ed45b0ca41a05b \ No newline at end of file diff --git a/mono/metadata/reflection.h b/mono/metadata/reflection.h index 0301342806..a080809959 100644 --- a/mono/metadata/reflection.h +++ b/mono/metadata/reflection.h @@ -134,6 +134,8 @@ MONO_API MonoBoolean mono_declsec_get_assembly_action (MonoAssembly *assembly, u MONO_API MonoType* mono_reflection_type_get_type (MonoReflectionType *reftype); +MONO_API MonoAssembly* mono_reflection_assembly_get_assembly (MonoReflectionAssembly *refassembly); + MONO_END_DECLS #endif /* __METADATA_REFLECTION_H__ */ diff --git a/mono/metadata/runtime.h b/mono/metadata/runtime.h index 83f17b7d33..42b8d7d3d7 100644 --- a/mono/metadata/runtime.h +++ b/mono/metadata/runtime.h @@ -10,7 +10,10 @@ #ifndef _MONO_METADATA_RUNTIME_H_ #define _MONO_METADATA_RUNTIME_H_ +#include +#include #include +#include MONO_BEGIN_DECLS diff --git a/mono/metadata/security-core-clr.h b/mono/metadata/security-core-clr.h index 126a48da2c..987f745968 100644 --- a/mono/metadata/security-core-clr.h +++ b/mono/metadata/security-core-clr.h @@ -10,7 +10,9 @@ #ifndef _MONO_METADATA_SECURITY_CORE_CLR_H_ #define _MONO_METADATA_SECURITY_CORE_CLR_H_ +#include #include +#include typedef enum { /* We compare these values as integers, so the order must not @@ -37,8 +39,8 @@ typedef enum { extern gboolean mono_security_core_clr_test; -extern void mono_security_core_clr_check_inheritance (MonoClass *class) MONO_INTERNAL; -extern void mono_security_core_clr_check_override (MonoClass *class, MonoMethod *override, MonoMethod *base) MONO_INTERNAL; +extern void mono_security_core_clr_check_inheritance (MonoClass *klass) MONO_INTERNAL; +extern void mono_security_core_clr_check_override (MonoClass *klass, MonoMethod *override, MonoMethod *base) MONO_INTERNAL; extern void mono_security_core_clr_ensure_reflection_access_field (MonoClassField *field) MONO_INTERNAL; extern void mono_security_core_clr_ensure_reflection_access_method (MonoMethod *method) MONO_INTERNAL; @@ -50,7 +52,7 @@ extern gboolean mono_security_core_clr_can_access_internals (MonoImage *accessin extern MonoException* mono_security_core_clr_is_field_access_allowed (MonoMethod *caller, MonoClassField *field) MONO_INTERNAL; extern MonoException* mono_security_core_clr_is_call_allowed (MonoMethod *caller, MonoMethod *callee) MONO_INTERNAL; -extern MonoSecurityCoreCLRLevel mono_security_core_clr_class_level (MonoClass *class) MONO_INTERNAL; +extern MonoSecurityCoreCLRLevel mono_security_core_clr_class_level (MonoClass *klass) MONO_INTERNAL; extern MonoSecurityCoreCLRLevel mono_security_core_clr_method_level (MonoMethod *method, gboolean with_class_level) MONO_INTERNAL; extern gboolean mono_security_core_clr_is_platform_image (MonoImage *image) MONO_INTERNAL; diff --git a/mono/metadata/security.h b/mono/metadata/security.h index 6158ac820d..f30f5e82e1 100644 --- a/mono/metadata/security.h +++ b/mono/metadata/security.h @@ -11,7 +11,10 @@ #ifndef _MONO_METADATA_SECURITY_H_ #define _MONO_METADATA_SECURITY_H_ +#include #include +#include +#include G_BEGIN_DECLS diff --git a/mono/metadata/sgen-alloc.c b/mono/metadata/sgen-alloc.c index 6eb71c13c3..254f15d5bb 100644 --- a/mono/metadata/sgen-alloc.c +++ b/mono/metadata/sgen-alloc.c @@ -45,6 +45,7 @@ #include "metadata/profiler-private.h" #include "metadata/marshal.h" #include "metadata/method-builder.h" +#include "metadata/abi-details.h" #include "utils/mono-memory-model.h" #include "utils/mono-counters.h" @@ -117,15 +118,15 @@ alloc_degraded (MonoVTable *vtable, size_t size, gboolean for_mature) void *p; if (!for_mature) { - if (last_major_gc_warned < stat_major_gcs) { + if (last_major_gc_warned < gc_stats.major_gc_count) { ++num_degraded; if (num_degraded == 1 || num_degraded == 3) mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC, "Warning: Degraded allocation. Consider increasing nursery-size if the warning persists."); else if (num_degraded == 10) mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC, "Warning: Repeated degraded allocation. Consider increasing nursery-size."); - last_major_gc_warned = stat_major_gcs; + last_major_gc_warned = gc_stats.major_gc_count; } - InterlockedExchangeAdd (°raded_mode, size); + SGEN_ATOMIC_ADD_P (degraded_mode, size); sgen_ensure_free_space (size); } else { if (sgen_need_major_collection (size)) @@ -283,7 +284,7 @@ mono_gc_alloc_obj_nolock (MonoVTable *vtable, size_t size) if (degraded_mode && degraded_mode < DEFAULT_NURSERY_SIZE) return alloc_degraded (vtable, size, FALSE); - available_in_tlab = TLAB_REAL_END - TLAB_NEXT; + 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 */ do { @@ -396,7 +397,7 @@ mono_gc_try_alloc_obj_nolock (MonoVTable *vtable, size_t size) new_next = (char*)p + size; real_end = TLAB_REAL_END; - available_in_tlab = real_end - (char*)p; + available_in_tlab = (int)(real_end - (char*)p);//We'll never have tlabs > 2Gb if (G_LIKELY (new_next < real_end)) { TLAB_NEXT = new_next; @@ -508,7 +509,7 @@ mono_gc_alloc_vector (MonoVTable *vtable, size_t size, uintptr_t max_length) arr = mono_gc_try_alloc_obj_nolock (vtable, size); if (arr) { /*This doesn't require fencing since EXIT_CRITICAL_REGION already does it for us*/ - arr->max_length = max_length; + arr->max_length = (mono_array_size_t)max_length; EXIT_CRITICAL_REGION; return arr; } @@ -523,7 +524,7 @@ mono_gc_alloc_vector (MonoVTable *vtable, size_t size, uintptr_t max_length) return mono_gc_out_of_memory (size); } - arr->max_length = max_length; + arr->max_length = (mono_array_size_t)max_length; UNLOCK_GC; @@ -545,7 +546,7 @@ mono_gc_alloc_array (MonoVTable *vtable, size_t size, uintptr_t max_length, uint arr = mono_gc_try_alloc_obj_nolock (vtable, size); if (arr) { /*This doesn't require fencing since EXIT_CRITICAL_REGION already does it for us*/ - arr->max_length = max_length; + arr->max_length = (mono_array_size_t)max_length; bounds = (MonoArrayBounds*)((char*)arr + size - bounds_size); arr->bounds = bounds; @@ -563,7 +564,7 @@ mono_gc_alloc_array (MonoVTable *vtable, size_t size, uintptr_t max_length, uint return mono_gc_out_of_memory (size); } - arr->max_length = max_length; + arr->max_length = (mono_array_size_t)max_length; bounds = (MonoArrayBounds*)((char*)arr + size - bounds_size); arr->bounds = bounds; @@ -797,10 +798,10 @@ create_allocator (int atype) if (atype == ATYPE_NORMAL || atype == ATYPE_SMALL) { /* size = vtable->klass->instance_size; */ mono_mb_emit_ldarg (mb, 0); - mono_mb_emit_icon (mb, G_STRUCT_OFFSET (MonoVTable, klass)); + mono_mb_emit_icon (mb, MONO_STRUCT_OFFSET (MonoVTable, klass)); mono_mb_emit_byte (mb, CEE_ADD); mono_mb_emit_byte (mb, CEE_LDIND_I); - mono_mb_emit_icon (mb, G_STRUCT_OFFSET (MonoClass, instance_size)); + mono_mb_emit_icon (mb, MONO_STRUCT_OFFSET (MonoClass, instance_size)); mono_mb_emit_byte (mb, CEE_ADD); /* FIXME: assert instance_size stays a 4 byte integer */ mono_mb_emit_byte (mb, CEE_LDIND_U4); @@ -840,10 +841,10 @@ create_allocator (int atype) /* vtable->klass->sizes.element_size */ mono_mb_emit_ldarg (mb, 0); - mono_mb_emit_icon (mb, G_STRUCT_OFFSET (MonoVTable, klass)); + mono_mb_emit_icon (mb, MONO_STRUCT_OFFSET (MonoVTable, klass)); mono_mb_emit_byte (mb, CEE_ADD); mono_mb_emit_byte (mb, CEE_LDIND_I); - mono_mb_emit_icon (mb, G_STRUCT_OFFSET (MonoClass, sizes.element_size)); + mono_mb_emit_icon (mb, MONO_STRUCT_OFFSET (MonoClass, sizes)); mono_mb_emit_byte (mb, CEE_ADD); mono_mb_emit_byte (mb, CEE_LDIND_U4); mono_mb_emit_byte (mb, CEE_CONV_I); @@ -940,7 +941,7 @@ create_allocator (int atype) /* tlab_next_addr (local) = tlab_next_addr (TLS var) */ tlab_next_addr_var = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg); - EMIT_TLS_ACCESS (mb, tlab_next_addr, TLS_KEY_SGEN_TLAB_NEXT_ADDR); + EMIT_TLS_ACCESS_NEXT_ADDR (mb); mono_mb_emit_stloc (mb, tlab_next_addr_var); /* p = (void**)tlab_next; */ @@ -959,7 +960,7 @@ create_allocator (int atype) /* if (G_LIKELY (new_next < tlab_temp_end)) */ mono_mb_emit_ldloc (mb, new_next_var); - EMIT_TLS_ACCESS (mb, tlab_temp_end, TLS_KEY_SGEN_TLAB_TEMP_END); + EMIT_TLS_ACCESS_TEMP_END (mb); slowpath_branch = mono_mb_emit_short_branch (mb, MONO_CEE_BLT_UN_S); /* Slowpath */ @@ -997,7 +998,7 @@ create_allocator (int atype) /*The tlab store must be visible before the the vtable store. This could be replaced with a DDS but doing it with IL would be tricky. */ mono_mb_emit_byte ((mb), MONO_CUSTOM_PREFIX); - mono_mb_emit_op (mb, CEE_MONO_MEMORY_BARRIER, StoreStoreBarrier); + mono_mb_emit_op (mb, CEE_MONO_MEMORY_BARRIER, (gpointer)StoreStoreBarrier); /* *p = vtable; */ mono_mb_emit_ldloc (mb, p_var); @@ -1007,7 +1008,7 @@ create_allocator (int atype) if (atype == ATYPE_VECTOR) { /* arr->max_length = max_length; */ mono_mb_emit_ldloc (mb, p_var); - mono_mb_emit_ldflda (mb, G_STRUCT_OFFSET (MonoArray, max_length)); + mono_mb_emit_ldflda (mb, MONO_STRUCT_OFFSET (MonoArray, max_length)); mono_mb_emit_ldarg (mb, 1); #ifdef MONO_BIG_ARRAYS mono_mb_emit_byte (mb, CEE_STIND_I); @@ -1018,7 +1019,7 @@ create_allocator (int atype) /* need to set length and clear the last char */ /* s->length = len; */ mono_mb_emit_ldloc (mb, p_var); - mono_mb_emit_icon (mb, G_STRUCT_OFFSET (MonoString, length)); + mono_mb_emit_icon (mb, MONO_STRUCT_OFFSET (MonoString, length)); mono_mb_emit_byte (mb, MONO_CEE_ADD); mono_mb_emit_ldarg (mb, 1); mono_mb_emit_byte (mb, MONO_CEE_STIND_I4); @@ -1036,7 +1037,7 @@ create_allocator (int atype) We must make sure both vtable and max_length are globaly visible before returning to managed land. */ mono_mb_emit_byte ((mb), MONO_CUSTOM_PREFIX); - mono_mb_emit_op (mb, CEE_MONO_MEMORY_BARRIER, StoreStoreBarrier); + mono_mb_emit_op (mb, CEE_MONO_MEMORY_BARRIER, (gpointer)StoreStoreBarrier); /* return p */ mono_mb_emit_ldloc (mb, p_var); diff --git a/mono/metadata/sgen-bridge.c b/mono/metadata/sgen-bridge.c index 1c36c29292..4d7dd6f4bf 100644 --- a/mono/metadata/sgen-bridge.c +++ b/mono/metadata/sgen-bridge.c @@ -270,7 +270,8 @@ sgen_bridge_register_finalized_object (MonoObject *obj) void sgen_bridge_describe_pointer (MonoObject *obj) { - bridge_processor.describe_pointer (obj); + if (bridge_processor.describe_pointer) + bridge_processor.describe_pointer (obj); } static void diff --git a/mono/metadata/sgen-bridge.h b/mono/metadata/sgen-bridge.h index 8bfeb09a6d..daa071e9d6 100644 --- a/mono/metadata/sgen-bridge.h +++ b/mono/metadata/sgen-bridge.h @@ -56,7 +56,7 @@ typedef struct { typedef struct { int bridge_version; - MonoGCBridgeObjectKind (*bridge_class_kind) (MonoClass *class); + MonoGCBridgeObjectKind (*bridge_class_kind) (MonoClass *klass); mono_bool (*is_bridge_object) (MonoObject *object); void (*cross_references) (int num_sccs, MonoGCBridgeSCC **sccs, int num_xrefs, MonoGCBridgeXRef *xrefs); } MonoGCBridgeCallbacks; diff --git a/mono/metadata/sgen-cardtable.c b/mono/metadata/sgen-cardtable.c index 51f72fe87a..aab3bcb615 100644 --- a/mono/metadata/sgen-cardtable.c +++ b/mono/metadata/sgen-cardtable.c @@ -45,6 +45,8 @@ #endif #include +#define ARRAY_OBJ_INDEX(ptr,array,elem_size) (((char*)(ptr) - ((char*)(array) + G_STRUCT_OFFSET (MonoArray, vector))) / (elem_size)) + guint8 *sgen_cardtable; static gboolean need_mod_union; @@ -238,7 +240,7 @@ sgen_card_table_get_card_data (guint8 *data_dest, mword address, mword cards) #endif } - return mask; + return mask != 0; } void* @@ -585,7 +587,7 @@ sgen_cardtable_scan_object (char *obj, mword block_obj_size, guint8 *cards, gboo mword obj_size = sgen_par_object_get_size (vt, (MonoObject*)obj); char *obj_end = obj + obj_size; size_t card_count; - int extra_idx = 0; + size_t extra_idx = 0; MonoArray *arr = (MonoArray*)obj; mword desc = (mword)klass->element_class->gc_descr; @@ -624,8 +626,8 @@ LOOP_HEAD: card_data = find_next_card (card_data, card_data_end); for (; card_data < card_data_end; card_data = find_next_card (card_data + 1, card_data_end)) { - int index; - int idx = (card_data - card_base) + extra_idx; + size_t index; + size_t idx = (card_data - card_base) + extra_idx; char *start = (char*)(obj_start + idx * CARD_SIZE_IN_BYTES); char *card_end = start + CARD_SIZE_IN_BYTES; char *first_elem, *elem; diff --git a/mono/metadata/sgen-conf.h b/mono/metadata/sgen-conf.h index d22d92130e..f44a4d4ace 100644 --- a/mono/metadata/sgen-conf.h +++ b/mono/metadata/sgen-conf.h @@ -22,6 +22,8 @@ #ifndef __MONO_SGENCONF_H__ #define __MONO_SGENCONF_H__ +#include + /*Basic defines and static tunables */ #if SIZEOF_VOID_P == 4 diff --git a/mono/metadata/sgen-debug.c b/mono/metadata/sgen-debug.c index e084b5ffee..1387676c75 100644 --- a/mono/metadata/sgen-debug.c +++ b/mono/metadata/sgen-debug.c @@ -160,7 +160,7 @@ static gboolean missing_remsets; if (*(ptr) && sgen_ptr_in_nursery ((char*)*(ptr))) { \ if (!sgen_get_remset ()->find_address ((char*)(ptr)) && !sgen_cement_lookup (*(ptr))) { \ SGEN_LOG (0, "Oldspace->newspace reference %p at offset %td in object %p (%s.%s) not found in remsets.", *(ptr), (char*)(ptr) - (char*)(obj), (obj), ((MonoObject*)(obj))->vtable->klass->name_space, ((MonoObject*)(obj))->vtable->klass->name); \ - binary_protocol_missing_remset ((obj), (gpointer)LOAD_VTABLE ((obj)), (char*)(ptr) - (char*)(obj), *(ptr), (gpointer)LOAD_VTABLE(*(ptr)), object_is_pinned (*(ptr))); \ + binary_protocol_missing_remset ((obj), (gpointer)LOAD_VTABLE ((obj)), (int) ((char*)(ptr) - (char*)(obj)), *(ptr), (gpointer)LOAD_VTABLE(*(ptr)), object_is_pinned (*(ptr))); \ if (!object_is_pinned (*(ptr))) \ missing_remsets = TRUE; \ } \ @@ -220,7 +220,7 @@ is_major_or_los_object_marked (char *obj) if (*(ptr) && !sgen_ptr_in_nursery ((char*)*(ptr)) && !is_major_or_los_object_marked ((char*)*(ptr))) { \ if (!sgen_get_remset ()->find_address_with_cards (start, cards, (char*)(ptr))) { \ SGEN_LOG (0, "major->major reference %p at offset %td in object %p (%s.%s) not found in remsets.", *(ptr), (char*)(ptr) - (char*)(obj), (obj), ((MonoObject*)(obj))->vtable->klass->name_space, ((MonoObject*)(obj))->vtable->klass->name); \ - binary_protocol_missing_remset ((obj), (gpointer)LOAD_VTABLE ((obj)), (char*)(ptr) - (char*)(obj), *(ptr), (gpointer)LOAD_VTABLE(*(ptr)), object_is_pinned (*(ptr))); \ + binary_protocol_missing_remset ((obj), (gpointer)LOAD_VTABLE ((obj)), (int) ((char*)(ptr) - (char*)(obj)), *(ptr), (gpointer)LOAD_VTABLE(*(ptr)), object_is_pinned (*(ptr))); \ missing_remsets = TRUE; \ } \ } \ @@ -640,7 +640,7 @@ static MonoObject *check_key = NULL; static RootRecord *check_root = NULL; static void -check_root_obj_specific_ref_from_marker (void **obj) +check_root_obj_specific_ref_from_marker (void **obj, void *gc_data) { check_root_obj_specific_ref (check_root, check_key, *obj); } @@ -669,7 +669,7 @@ scan_roots_for_specific_ref (MonoObject *key, int root_type) return; case ROOT_DESC_COMPLEX: { gsize *bitmap_data = sgen_get_complex_descriptor_bitmap (desc); - int bwords = (*bitmap_data) - 1; + int bwords = (int) ((*bitmap_data) - 1); void **start_run = start_root; bitmap_data++; while (bwords-- > 0) { @@ -687,7 +687,7 @@ scan_roots_for_specific_ref (MonoObject *key, int root_type) } case ROOT_DESC_USER: { MonoGCRootMarkFunc marker = sgen_get_user_descriptor_func (desc); - marker (start_root, check_root_obj_specific_ref_from_marker); + marker (start_root, check_root_obj_specific_ref_from_marker, NULL); break; } case ROOT_DESC_RUN_LEN: @@ -735,6 +735,13 @@ check_obj_not_in_domain (void **o) g_assert (((MonoObject*)(*o))->vtable->domain != check_domain); } + +static void +check_obj_not_in_domain_callback (void **o, void *gc_data) +{ + g_assert (((MonoObject*)(*o))->vtable->domain != check_domain); +} + void sgen_scan_for_registered_roots_in_domain (MonoDomain *domain, int root_type) { @@ -761,7 +768,7 @@ sgen_scan_for_registered_roots_in_domain (MonoDomain *domain, int root_type) break; case ROOT_DESC_COMPLEX: { gsize *bitmap_data = sgen_get_complex_descriptor_bitmap (desc); - int bwords = (*bitmap_data) - 1; + int bwords = (int)((*bitmap_data) - 1); void **start_run = start_root; bitmap_data++; while (bwords-- > 0) { @@ -779,7 +786,7 @@ sgen_scan_for_registered_roots_in_domain (MonoDomain *domain, int root_type) } case ROOT_DESC_USER: { MonoGCRootMarkFunc marker = sgen_get_user_descriptor_func (desc); - marker (start_root, check_obj_not_in_domain); + marker (start_root, check_obj_not_in_domain_callback, NULL); break; } case ROOT_DESC_RUN_LEN: @@ -797,7 +804,7 @@ is_xdomain_ref_allowed (gpointer *ptr, char *obj, MonoDomain *domain) { MonoObject *o = (MonoObject*)(obj); MonoObject *ref = (MonoObject*)*(ptr); - int offset = (char*)(ptr) - (char*)o; + size_t offset = (char*)(ptr) - (char*)o; if (o->vtable->klass == mono_defaults.thread_class && offset == G_STRUCT_OFFSET (MonoThread, internal_thread)) return TRUE; @@ -846,7 +853,7 @@ check_reference_for_xdomain (gpointer *ptr, char *obj, MonoDomain *domain) { MonoObject *o = (MonoObject*)(obj); MonoObject *ref = (MonoObject*)*(ptr); - int offset = (char*)(ptr) - (char*)o; + size_t offset = (char*)(ptr) - (char*)o; MonoClass *class; MonoClassField *field; char *str; @@ -927,6 +934,7 @@ compare_xrefs (const void *a_ptr, const void *b_ptr) return 0; } +/* static void dump_processor_state (SgenBridgeProcessor *p) { @@ -951,6 +959,7 @@ dump_processor_state (SgenBridgeProcessor *p) printf ("-------\n"); } +*/ gboolean sgen_compare_bridge_processor_results (SgenBridgeProcessor *a, SgenBridgeProcessor *b) diff --git a/mono/metadata/sgen-descriptor.c b/mono/metadata/sgen-descriptor.c index 1e3bc152e7..c578a91cfb 100644 --- a/mono/metadata/sgen-descriptor.c +++ b/mono/metadata/sgen-descriptor.c @@ -87,7 +87,7 @@ alloc_complex_descriptor (gsize *bitmap, int numbits) return i; } } - i += complex_descriptors [i]; + i += (int)complex_descriptors [i]; } if (complex_descriptors_next + nwords > complex_descriptors_size) { int new_size = complex_descriptors_size * 2 + nwords; @@ -266,7 +266,7 @@ mono_gc_get_bitmap_for_descr (void *descr, int *numbits) case DESC_TYPE_COMPLEX: { gsize *bitmap_data = sgen_get_complex_descriptor (d); - int bwords = (*bitmap_data) - 1; + int bwords = (int)(*bitmap_data) - 1;//Max scalar object size is 1Mb, which means up to 32k descriptor words int i; bitmap = g_new0 (gsize, bwords); diff --git a/mono/metadata/sgen-descriptor.h b/mono/metadata/sgen-descriptor.h index f07ad4a6ba..366c766777 100644 --- a/mono/metadata/sgen-descriptor.h +++ b/mono/metadata/sgen-descriptor.h @@ -235,7 +235,7 @@ sgen_gc_descr_has_references (mword desc) /* there are pointers */ \ void **_objptr = (void**)(obj); \ gsize *bitmap_data = sgen_get_complex_descriptor ((desc)); \ - int bwords = (*bitmap_data) - 1; \ + gsize bwords = (*bitmap_data) - 1; \ void **start_run = _objptr; \ bitmap_data++; \ if (0) { \ @@ -261,8 +261,8 @@ sgen_gc_descr_has_references (mword desc) #define OBJ_COMPLEX_ARR_FOREACH_PTR(vt,obj) do { \ /* there are pointers */ \ gsize *mbitmap_data = sgen_get_complex_descriptor ((vt)->desc); \ - int mbwords = (*mbitmap_data++) - 1; \ - int el_size = mono_array_element_size (vt->klass); \ + gsize mbwords = (*mbitmap_data++) - 1; \ + gsize el_size = mono_array_element_size (vt->klass); \ char *e_start = (char*)(obj) + G_STRUCT_OFFSET (MonoArray, vector); \ char *e_end = e_start + el_size * mono_array_length_fast ((MonoArray*)(obj)); \ if (0) \ @@ -270,7 +270,7 @@ sgen_gc_descr_has_references (mword desc) while (e_start < e_end) { \ void **_objptr = (void**)e_start; \ gsize *bitmap_data = mbitmap_data; \ - unsigned int bwords = mbwords; \ + gsize bwords = mbwords; \ while (bwords-- > 0) { \ gsize _bmap = *bitmap_data++; \ void **start_run = _objptr; \ diff --git a/mono/metadata/sgen-fin-weak-hash.c b/mono/metadata/sgen-fin-weak-hash.c index bb350a9e91..3793c9435b 100644 --- a/mono/metadata/sgen-fin-weak-hash.c +++ b/mono/metadata/sgen-fin-weak-hash.c @@ -41,7 +41,7 @@ int num_ready_finalizers = 0; static int no_finalize = 0; #define DISLINK_OBJECT(l) (REVEAL_POINTER (*(void**)(l))) -#define DISLINK_TRACK(l) ((~(gulong)(*(void**)(l))) & 1) +#define DISLINK_TRACK(l) ((~(size_t)(*(void**)(l))) & 1) /* * The finalizable hash has the object as the key, the diff --git a/mono/metadata/sgen-gc.c.REMOVED.git-id b/mono/metadata/sgen-gc.c.REMOVED.git-id index 441cd9e0e3..2ae9301fcd 100644 --- a/mono/metadata/sgen-gc.c.REMOVED.git-id +++ b/mono/metadata/sgen-gc.c.REMOVED.git-id @@ -1 +1 @@ -6572b737f1e3b8fd00e0d4b318ba02b74909c7b4 \ No newline at end of file +dab50ef57a52c7679e84b07ffd21343b4accd55b \ No newline at end of file diff --git a/mono/metadata/sgen-gc.h b/mono/metadata/sgen-gc.h index 7008cec2f7..3d751d6d0b 100644 --- a/mono/metadata/sgen-gc.h +++ b/mono/metadata/sgen-gc.h @@ -49,6 +49,7 @@ typedef struct _SgenThreadInfo SgenThreadInfo; #include #include #include +#include /* The method used to clear the nursery */ /* Clearing at nursery collections is the safest, but has bad interactions with caches. @@ -143,7 +144,7 @@ struct _GCMemSection { char **scan_starts; /* in major collections indexes in the pin_queue for objects that pin this section */ void **pin_queue_start; - int pin_queue_num_entries; + size_t pin_queue_num_entries; size_t num_scan_start; }; @@ -239,13 +240,19 @@ extern int num_ready_finalizers; #define SGEN_CAN_ALIGN_UP(s) ((s) <= SIZE_MAX - (SGEN_ALLOC_ALIGN - 1)) #define SGEN_ALIGN_UP(s) (((s)+(SGEN_ALLOC_ALIGN-1)) & ~(SGEN_ALLOC_ALIGN-1)) +#if SIZEOF_VOID_P == 4 +#define ONE_P 1 +#else +#define ONE_P 1ll +#endif + /* * The link pointer is hidden by negating each bit. We use the lowest * bit of the link (before negation) to store whether it needs * resurrection tracking. */ -#define HIDE_POINTER(p,t) ((gpointer)(~((gulong)(p)|((t)?1:0)))) -#define REVEAL_POINTER(p) ((gpointer)((~(gulong)(p))&~3L)) +#define HIDE_POINTER(p,t) ((gpointer)(~((size_t)(p)|((t)?1:0)))) +#define REVEAL_POINTER(p) ((gpointer)((~(size_t)(p))&~3L)) #ifdef SGEN_ALIGN_NURSERY #define SGEN_PTR_IN_NURSERY(p,bits,start,end) (((mword)(p) & ~((1 << (bits)) - 1)) == (mword)(start)) @@ -340,26 +347,52 @@ typedef struct { */ #define SGEN_LOAD_VTABLE(addr) ((*(mword*)(addr)) & ~SGEN_VTABLE_BITS_MASK) +static inline MONO_ALWAYS_INLINE void +GRAY_OBJECT_ENQUEUE (SgenGrayQueue *queue, char* obj) +{ #if defined(SGEN_GRAY_OBJECT_ENQUEUE) || SGEN_MAX_DEBUG_LEVEL >= 9 -#define GRAY_OBJECT_ENQUEUE sgen_gray_object_enqueue -#define GRAY_OBJECT_DEQUEUE(queue,o) ((o) = sgen_gray_object_dequeue ((queue))) + sgen_gray_object_enqueue (queue, obj); #else -#define GRAY_OBJECT_ENQUEUE(queue,o) do { \ - if (G_UNLIKELY (!(queue)->first || (queue)->first->end == SGEN_GRAY_QUEUE_SECTION_SIZE)) \ - sgen_gray_object_enqueue ((queue), (o)); \ - else \ - (queue)->first->objects [(queue)->first->end++] = (o); \ - PREFETCH ((o)); \ - } while (0) -#define GRAY_OBJECT_DEQUEUE(queue,o) do { \ - if (!(queue)->first) \ - (o) = NULL; \ - else if (G_UNLIKELY ((queue)->first->end == 1)) \ - (o) = sgen_gray_object_dequeue ((queue)); \ - else \ - (o) = (queue)->first->objects [--(queue)->first->end]; \ - } while (0) + if (G_UNLIKELY (!queue->first || queue->cursor == GRAY_LAST_CURSOR_POSITION (queue->first))) { + sgen_gray_object_enqueue (queue, obj); + } else { + HEAVY_STAT (gc_stats.gray_queue_enqueue_fast_path ++); + + *++queue->cursor = obj; +#ifdef SGEN_HEAVY_BINARY_PROTOCOL + binary_protocol_gray_enqueue (queue, queue->cursor, obj); #endif + } + + PREFETCH (obj); +#endif +} + +static inline MONO_ALWAYS_INLINE void +GRAY_OBJECT_DEQUEUE (SgenGrayQueue *queue, char** obj) +{ +#if defined(SGEN_GRAY_OBJECT_ENQUEUE) || SGEN_MAX_DEBUG_LEVEL >= 9 + *obj = sgen_gray_object_enqueue (queue); +#else + if (!queue->first) { + HEAVY_STAT (gc_stats.gray_queue_dequeue_fast_path ++); + + *obj = NULL; +#ifdef SGEN_HEAVY_BINARY_PROTOCOL + binary_protocol_gray_dequeue (queue, queue->cursor, *obj); +#endif + } else if (G_UNLIKELY (queue->cursor == GRAY_FIRST_CURSOR_POSITION (queue->first))) { + *obj = sgen_gray_object_dequeue (queue); + } else { + HEAVY_STAT (gc_stats.gray_queue_dequeue_fast_path ++); + + *obj = *queue->cursor--; +#ifdef SGEN_HEAVY_BINARY_PROTOCOL + binary_protocol_gray_dequeue (queue, queue->cursor + 1, *obj); +#endif + } +#endif +} /* List of what each bit on of the vtable gc bits means. @@ -367,6 +400,7 @@ List of what each bit on of the vtable gc bits means. enum { SGEN_GC_BIT_BRIDGE_OBJECT = 1, SGEN_GC_BIT_BRIDGE_OPAQUE_OBJECT = 2, + SGEN_GC_BIT_FINALIZER_AWARE = 4, }; /* the runtime can register areas of memory as roots: we keep two lists of roots, @@ -490,7 +524,7 @@ void sgen_free_internal (void *addr, int type) MONO_INTERNAL; void* sgen_alloc_internal_dynamic (size_t size, int type, gboolean assert_on_failure) MONO_INTERNAL; void sgen_free_internal_dynamic (void *addr, size_t size, int type) MONO_INTERNAL; -void** sgen_find_optimized_pin_queue_area (void *start, void *end, int *num) MONO_INTERNAL; +void** sgen_find_optimized_pin_queue_area (void *start, void *end, size_t *num) MONO_INTERNAL; void sgen_find_section_pin_queue_start_end (GCMemSection *section) MONO_INTERNAL; void sgen_pin_objects_in_section (GCMemSection *section, ScanCopyContext ctx) MONO_INTERNAL; @@ -498,7 +532,7 @@ void sgen_pin_stats_register_object (char *obj, size_t size); void sgen_pin_stats_register_global_remset (char *obj); void sgen_pin_stats_print_class_stats (void); -void sgen_sort_addresses (void **array, int size) MONO_INTERNAL; +void sgen_sort_addresses (void **array, size_t size) MONO_INTERNAL; void sgen_add_to_global_remset (gpointer ptr, gpointer obj) MONO_INTERNAL; int sgen_get_current_collection_generation (void) MONO_INTERNAL; @@ -559,14 +593,14 @@ Test 1 (compiling corlib): #define SGEN_TO_SPACE_GRANULE_IN_BYTES (1 << SGEN_TO_SPACE_GRANULE_BITS) extern char *sgen_space_bitmap MONO_INTERNAL; -extern int sgen_space_bitmap_size MONO_INTERNAL; +extern size_t sgen_space_bitmap_size MONO_INTERNAL; static inline gboolean sgen_nursery_is_to_space (char *object) { - int idx = (object - sgen_nursery_start) >> SGEN_TO_SPACE_GRANULE_BITS; - int byte = idx / 8; - int bit = idx & 0x7; + size_t idx = (object - sgen_nursery_start) >> SGEN_TO_SPACE_GRANULE_BITS; + size_t byte = idx / 8; + size_t bit = idx & 0x7; SGEN_ASSERT (4, sgen_ptr_in_nursery (object), "object %p is not in nursery [%p - %p]", object, sgen_get_nursery_start (), sgen_get_nursery_end ()); SGEN_ASSERT (4, byte < sgen_space_bitmap_size, "byte index %d out of range", byte, sgen_space_bitmap_size); @@ -604,7 +638,7 @@ typedef struct { SgenObjectOperations serial_ops; SgenObjectOperations parallel_ops; - void (*prepare_to_space) (char *to_space_bitmap, int space_bitmap_size); + void (*prepare_to_space) (char *to_space_bitmap, size_t space_bitmap_size); void (*clear_fragments) (void); SgenFragment* (*build_fragments_get_exclude_head) (void); void (*build_fragments_release_exclude_head) (void); @@ -661,8 +695,8 @@ struct _SgenMajorCollector { SgenObjectOperations major_ops; SgenObjectOperations major_concurrent_ops; - void* (*alloc_object) (MonoVTable *vtable, int size, gboolean has_references); - void* (*par_alloc_object) (MonoVTable *vtable, int size, gboolean has_references); + void* (*alloc_object) (MonoVTable *vtable, size_t size, gboolean has_references); + void* (*par_alloc_object) (MonoVTable *vtable, size_t size, gboolean has_references); void (*free_pinned_object) (char *obj, size_t size); void (*iterate_objects) (IterateObjectsFlags flags, IterateObjectCallbackFunc callback, void *data); void (*free_non_pinned_object) (char *obj, size_t size); @@ -685,7 +719,7 @@ struct _SgenMajorCollector { gboolean (*ptr_is_in_non_pinned_space) (char *ptr, char **start); gboolean (*obj_is_from_pinned_alloc) (char *obj); void (*report_pinned_memory_usage) (void); - int (*get_num_major_sections) (void); + size_t (*get_num_major_sections) (void); gboolean (*handle_gc_param) (const char *opt); void (*print_gc_param_usage) (void); gboolean (*is_worker_thread) (MonoNativeThreadId thread); @@ -710,7 +744,7 @@ void sgen_marksweep_conc_init (SgenMajorCollector *collector) MONO_INTERNAL; SgenMajorCollector* sgen_get_major_collector (void) MONO_INTERNAL; -typedef struct { +typedef struct _SgenRemeberedSet { void (*wbarrier_set_field) (MonoObject *obj, gpointer field_ptr, MonoObject* value); void (*wbarrier_set_arrayref) (MonoArray *arr, gpointer slot_ptr, MonoObject* value); void (*wbarrier_arrayref_copy) (gpointer dest_ptr, gpointer src_ptr, int count); @@ -730,7 +764,7 @@ typedef struct { SgenRemeberedSet *sgen_get_remset (void) MONO_INTERNAL; -static guint /*__attribute__((noinline)) not sure if this hint is a good idea*/ +static mword /*__attribute__((noinline)) not sure if this hint is a good idea*/ slow_object_get_size (MonoVTable *vtable, MonoObject* o) { MonoClass *klass = vtable->klass; @@ -761,7 +795,7 @@ slow_object_get_size (MonoVTable *vtable, MonoObject* o) * vtable field, is not intact. This is necessary for the parallel * collector. */ -static inline guint +static inline mword sgen_par_object_get_size (MonoVTable *vtable, MonoObject* o) { mword descr = (mword)vtable->gc_descr; @@ -788,7 +822,7 @@ sgen_par_object_get_size (MonoVTable *vtable, MonoObject* o) return slow_object_get_size (vtable, o); } -static inline guint +static inline mword sgen_safe_object_get_size (MonoObject *obj) { char *forwarded; @@ -811,7 +845,7 @@ void sgen_bridge_processing_stw_step (void) MONO_INTERNAL; void sgen_bridge_processing_finish (int generation) MONO_INTERNAL; void sgen_register_test_bridge_callbacks (const char *bridge_class_name) MONO_INTERNAL; gboolean sgen_is_bridge_object (MonoObject *obj) MONO_INTERNAL; -MonoGCBridgeObjectKind sgen_bridge_class_kind (MonoClass *class) MONO_INTERNAL; +MonoGCBridgeObjectKind sgen_bridge_class_kind (MonoClass *klass) MONO_INTERNAL; void sgen_mark_bridge_object (MonoObject *obj) MONO_INTERNAL; void sgen_bridge_register_finalized_object (MonoObject *object) MONO_INTERNAL; void sgen_bridge_describe_pointer (MonoObject *object) MONO_INTERNAL; @@ -923,8 +957,6 @@ struct _LOSObject { char data [MONO_ZERO_LEN_ARRAY]; }; -#define ARRAY_OBJ_INDEX(ptr,array,elem_size) (((char*)(ptr) - ((char*)(array) + G_STRUCT_OFFSET (MonoArray, vector))) / (elem_size)) - extern LOSObject *los_object_list; extern mword los_memory_usage; @@ -952,7 +984,7 @@ gboolean sgen_los_object_is_pinned (char *obj) MONO_INTERNAL; void sgen_clear_nursery_fragments (void) MONO_INTERNAL; void sgen_nursery_allocator_prepare_for_pinning (void) MONO_INTERNAL; void sgen_nursery_allocator_set_nursery_bounds (char *nursery_start, char *nursery_end) MONO_INTERNAL; -mword sgen_build_nursery_fragments (GCMemSection *nursery_section, void **start, int num_entries, SgenGrayQueue *unpin_queue) MONO_INTERNAL; +mword sgen_build_nursery_fragments (GCMemSection *nursery_section, void **start, size_t num_entries, SgenGrayQueue *unpin_queue) MONO_INTERNAL; void sgen_init_nursery_allocator (void) MONO_INTERNAL; void sgen_nursery_allocator_init_heavy_stats (void) MONO_INTERNAL; void sgen_alloc_init_heavy_stats (void) MONO_INTERNAL; @@ -1005,24 +1037,43 @@ extern __thread char *stack_end; #endif #ifdef HAVE_KW_THREAD -#define EMIT_TLS_ACCESS(mb,member,key) do { \ + +#define EMIT_TLS_ACCESS_NEXT_ADDR(mb) do { \ mono_mb_emit_byte ((mb), MONO_CUSTOM_PREFIX); \ mono_mb_emit_byte ((mb), CEE_MONO_TLS); \ - mono_mb_emit_i4 ((mb), (key)); \ + mono_mb_emit_i4 ((mb), TLS_KEY_SGEN_TLAB_NEXT_ADDR); \ } while (0) + +#define EMIT_TLS_ACCESS_TEMP_END(mb) do { \ + mono_mb_emit_byte ((mb), MONO_CUSTOM_PREFIX); \ + mono_mb_emit_byte ((mb), CEE_MONO_TLS); \ + mono_mb_emit_i4 ((mb), TLS_KEY_SGEN_TLAB_TEMP_END); \ + } while (0) + #else #if defined(__APPLE__) || defined (HOST_WIN32) -#define EMIT_TLS_ACCESS(mb,member,key) do { \ +#define EMIT_TLS_ACCESS_NEXT_ADDR(mb) do { \ mono_mb_emit_byte ((mb), MONO_CUSTOM_PREFIX); \ mono_mb_emit_byte ((mb), CEE_MONO_TLS); \ mono_mb_emit_i4 ((mb), TLS_KEY_SGEN_THREAD_INFO); \ - mono_mb_emit_icon ((mb), G_STRUCT_OFFSET (SgenThreadInfo, member)); \ + mono_mb_emit_icon ((mb), MONO_STRUCT_OFFSET (SgenThreadInfo, tlab_next_addr)); \ mono_mb_emit_byte ((mb), CEE_ADD); \ mono_mb_emit_byte ((mb), CEE_LDIND_I); \ } while (0) + +#define EMIT_TLS_ACCESS_TEMP_END(mb) do { \ + mono_mb_emit_byte ((mb), MONO_CUSTOM_PREFIX); \ + mono_mb_emit_byte ((mb), CEE_MONO_TLS); \ + mono_mb_emit_i4 ((mb), TLS_KEY_SGEN_THREAD_INFO); \ + mono_mb_emit_icon ((mb), MONO_STRUCT_OFFSET (SgenThreadInfo, tlab_temp_end)); \ + mono_mb_emit_byte ((mb), CEE_ADD); \ + mono_mb_emit_byte ((mb), CEE_LDIND_I); \ + } while (0) + #else -#define EMIT_TLS_ACCESS(mb,member,key) do { g_error ("sgen is not supported when using --with-tls=pthread.\n"); } while (0) +#define EMIT_TLS_ACCESS_NEXT_ADDR(mb) do { g_error ("sgen is not supported when using --with-tls=pthread.\n"); } while (0) +#define EMIT_TLS_ACCESS_TEMP_END(mb) do { g_error ("sgen is not supported when using --with-tls=pthread.\n"); } while (0) #endif #endif @@ -1030,11 +1081,10 @@ extern __thread char *stack_end; /* Other globals */ extern GCMemSection *nursery_section; -extern int stat_major_gcs; extern guint32 collect_before_allocs; extern guint32 verify_before_allocs; extern gboolean has_per_allocation_action; -extern int degraded_mode; +extern size_t degraded_mode; extern int default_nursery_size; extern guint32 tlab_size; extern NurseryClearPolicy nursery_clear_policy; @@ -1049,7 +1099,7 @@ extern int do_pin_stats; static inline void sgen_set_nursery_scan_start (char *p) { - int idx = (p - (char*)nursery_section->data) / SGEN_SCAN_START_SIZE; + size_t idx = (p - (char*)nursery_section->data) / SGEN_SCAN_START_SIZE; char *old = nursery_section->scan_starts [idx]; if (!old || old > p) nursery_section->scan_starts [idx] = p; @@ -1097,10 +1147,8 @@ sgen_dummy_use (gpointer v) { #if defined(__GNUC__) __asm__ volatile ("" : "=r"(v) : "r"(v)); #elif defined(_MSC_VER) - __asm { - mov eax, v; - and eax, eax; - }; + static volatile gpointer ptr; + ptr = v; #else #error "Implement sgen_dummy_use for your compiler" #endif diff --git a/mono/metadata/sgen-gray.c b/mono/metadata/sgen-gray.c index e2a7d60122..2393cbabb1 100644 --- a/mono/metadata/sgen-gray.c +++ b/mono/metadata/sgen-gray.c @@ -23,6 +23,7 @@ #include "metadata/sgen-gc.h" #include "utils/mono-counters.h" +#include "sgen-protocol.h" #define GRAY_QUEUE_LENGTH_LIMIT 64 @@ -45,6 +46,8 @@ sgen_gray_object_alloc_queue_section (SgenGrayQueue *queue) { GrayQueueSection *section; + HEAVY_STAT (gc_stats.gray_queue_section_alloc ++); + if (queue->alloc_prepare_func) queue->alloc_prepare_func (queue); @@ -59,18 +62,21 @@ sgen_gray_object_alloc_queue_section (SgenGrayQueue *queue) STATE_SET (section, GRAY_QUEUE_SECTION_STATE_FLOATING); } - section->end = 0; + section->size = SGEN_GRAY_QUEUE_SECTION_SIZE; STATE_TRANSITION (section, GRAY_QUEUE_SECTION_STATE_FLOATING, GRAY_QUEUE_SECTION_STATE_ENQUEUED); /* Link it with the others */ section->next = queue->first; queue->first = section; + queue->cursor = (char**)section->objects - 1; } void sgen_gray_object_free_queue_section (GrayQueueSection *section) { + HEAVY_STAT (gc_stats.gray_queue_section_free ++); + STATE_TRANSITION (section, GRAY_QUEUE_SECTION_STATE_FLOATING, GRAY_QUEUE_SECTION_STATE_FREED); sgen_free_internal (section, INTERNAL_MEM_GRAY_QUEUE); } @@ -84,6 +90,8 @@ sgen_gray_object_free_queue_section (GrayQueueSection *section) void sgen_gray_object_enqueue (SgenGrayQueue *queue, char *obj) { + HEAVY_STAT (gc_stats.gray_queue_enqueue_slow_path ++); + SGEN_ASSERT (9, obj, "enqueueing a null object"); //sgen_check_objref (obj); @@ -92,11 +100,21 @@ sgen_gray_object_enqueue (SgenGrayQueue *queue, char *obj) queue->enqueue_check_func (obj); #endif - if (G_UNLIKELY (!queue->first || queue->first->end == SGEN_GRAY_QUEUE_SECTION_SIZE)) + if (G_UNLIKELY (!queue->first || queue->cursor == GRAY_LAST_CURSOR_POSITION (queue->first))) { + if (queue->first) { + /* Set the current section size back to default, might have been changed by sgen_gray_object_dequeue_section */ + queue->first->size = SGEN_GRAY_QUEUE_SECTION_SIZE; + } + sgen_gray_object_alloc_queue_section (queue); + } STATE_ASSERT (queue->first, GRAY_QUEUE_SECTION_STATE_ENQUEUED); - SGEN_ASSERT (9, queue->first->end < SGEN_GRAY_QUEUE_SECTION_SIZE, "gray queue %p overflow, first %p, end %d", queue, queue->first, queue->first->end); - queue->first->objects [queue->first->end++] = obj; + SGEN_ASSERT (9, queue->cursor <= GRAY_LAST_CURSOR_POSITION (queue->first), "gray queue %p overflow, first %p, cursor %p", queue, queue->first, queue->cursor); + *++queue->cursor = obj; + +#ifdef SGEN_HEAVY_BINARY_PROTOCOL + binary_protocol_gray_enqueue (queue, queue->cursor, obj); +#endif } char* @@ -104,15 +122,21 @@ sgen_gray_object_dequeue (SgenGrayQueue *queue) { char *obj; + HEAVY_STAT (gc_stats.gray_queue_dequeue_slow_path ++); + if (sgen_gray_object_queue_is_empty (queue)) return NULL; STATE_ASSERT (queue->first, GRAY_QUEUE_SECTION_STATE_ENQUEUED); - SGEN_ASSERT (9, queue->first->end, "gray queue %p underflow, first %p, end %d", queue, queue->first, queue->first->end); + SGEN_ASSERT (9, queue->cursor >= (char**)queue->first->objects, "gray queue %p underflow, first %p, cursor %d", queue, queue->first, queue->cursor); - obj = queue->first->objects [--queue->first->end]; + obj = *queue->cursor--; - if (G_UNLIKELY (queue->first->end == 0)) { +#ifdef SGEN_HEAVY_BINARY_PROTOCOL + binary_protocol_gray_dequeue (queue, queue->cursor + 1, obj); +#endif + + if (G_UNLIKELY (queue->cursor == (char**)queue->first->objects - 1)) { GrayQueueSection *section = queue->first; queue->first = section->next; section->next = queue->free_list; @@ -120,6 +144,7 @@ sgen_gray_object_dequeue (SgenGrayQueue *queue) STATE_TRANSITION (section, GRAY_QUEUE_SECTION_STATE_ENQUEUED, GRAY_QUEUE_SECTION_STATE_FREE_LIST); queue->free_list = section; + queue->cursor = queue->first ? (char**)queue->first->objects + queue->first->size - 1 : NULL; } return obj; @@ -137,6 +162,9 @@ sgen_gray_object_dequeue_section (SgenGrayQueue *queue) queue->first = section->next; section->next = NULL; + section->size = queue->cursor - (char**)section->objects + 1; + + queue->cursor = queue->first ? (char**)queue->first->objects + queue->first->size - 1 : NULL; STATE_TRANSITION (section, GRAY_QUEUE_SECTION_STATE_ENQUEUED, GRAY_QUEUE_SECTION_STATE_FLOATING); @@ -148,12 +176,16 @@ sgen_gray_object_enqueue_section (SgenGrayQueue *queue, GrayQueueSection *sectio { STATE_TRANSITION (section, GRAY_QUEUE_SECTION_STATE_FLOATING, GRAY_QUEUE_SECTION_STATE_ENQUEUED); + if (queue->first) + queue->first->size = queue->cursor - (char**)queue->first->objects + 1; + section->next = queue->first; queue->first = section; + queue->cursor = (char**)queue->first->objects + queue->first->size - 1; #ifdef SGEN_CHECK_GRAY_OBJECT_ENQUEUE if (queue->enqueue_check_func) { int i; - for (i = 0; i < section->end; ++i) + for (i = 0; i < section->size; ++i) queue->enqueue_check_func (section->objects [i]); } #endif @@ -305,7 +337,7 @@ sgen_section_gray_queue_enqueue (SgenSectionGrayQueue *queue, GrayQueueSection * #ifdef SGEN_CHECK_GRAY_OBJECT_ENQUEUE if (queue->enqueue_check_func) { int i; - for (i = 0; i < section->end; ++i) + for (i = 0; i < section->size; ++i) queue->enqueue_check_func (section->objects [i]); } #endif diff --git a/mono/metadata/sgen-gray.h b/mono/metadata/sgen-gray.h index df22ec13ea..2dfea35a14 100644 --- a/mono/metadata/sgen-gray.h +++ b/mono/metadata/sgen-gray.h @@ -20,6 +20,34 @@ #ifndef __MONO_SGEN_GRAY_H__ #define __MONO_SGEN_GRAY_H__ +/* + * This gray queue has to be as optimized as possible, because it is in the core of + * the mark/copy phase of the garbage collector. The memory access has then to be as + * cache friendly as possible. That's why we use a cursor based implementation. + * + * This simply consist in maintaining a pointer to the current element in the + * queue. In addition to using this cursor, we use a simple linked list of arrays, + * called sections, so that we have the cache friendliness of arrays without having + * the cost of memory reallocation of a dynaic array, not the cost of memory + * indirection of a linked list. + * + * This implementation also allows the dequeuing of a whole section at a time. This is + * for example used in the parallel GC because it would be too costly to take one element + * at a time. This imply the main constraint that, because we don't carry the cursor + * with the section, we still have to store the index of the last element. This is done + * through the 'size' field on the section, which default value is it's maximum value + * SGEN_GRAY_QUEUE_SECTION_SIZE. This field is updated in multiple cases : + * - section allocation : default value + * - object push : default value if we fill the current queue first + * - section dequeue : position of the cursor in the dequeued section + * - section enqueue : position of the cursor in the previously first section in the queue + * + * The previous implementation was an index based access where we would store the index + * of the last element in the section. This was less efficient because we would have + * to make 1 memory access for the index value, 1 for the base address of the objects + * array and another 1 for the actual value in the array. + */ + #define SGEN_GRAY_QUEUE_SECTION_SIZE (128 - 3) #ifdef SGEN_CHECK_GRAY_OBJECT_SECTIONS @@ -45,7 +73,7 @@ struct _GrayQueueSection { int dummy; GrayQueueSectionState state; #endif - int end; + int size; GrayQueueSection *next; char *objects [SGEN_GRAY_QUEUE_SECTION_SIZE]; }; @@ -56,6 +84,7 @@ typedef void (*GrayQueueAllocPrepareFunc) (SgenGrayQueue*); typedef void (*GrayQueueEnqueueCheckFunc) (char*); struct _SgenGrayQueue { + char **cursor; GrayQueueSection *first; GrayQueueSection *free_list; GrayQueueAllocPrepareFunc alloc_prepare_func; @@ -76,6 +105,9 @@ struct _SgenSectionGrayQueue { #endif }; +#define GRAY_LAST_CURSOR_POSITION(s) ((char**)(s)->objects + SGEN_GRAY_QUEUE_SECTION_SIZE - 1) +#define GRAY_FIRST_CURSOR_POSITION(s) ((char**)(s)->objects) + void sgen_gray_object_enqueue (SgenGrayQueue *queue, char *obj) MONO_INTERNAL; char* sgen_gray_object_dequeue (SgenGrayQueue *queue) MONO_INTERNAL; GrayQueueSection* sgen_gray_object_dequeue_section (SgenGrayQueue *queue) MONO_INTERNAL; diff --git a/mono/metadata/sgen-los.c b/mono/metadata/sgen-los.c index c04da2545f..1e38006cac 100644 --- a/mono/metadata/sgen-los.c +++ b/mono/metadata/sgen-los.c @@ -67,7 +67,7 @@ struct _LOSFreeChunks { typedef struct _LOSSection LOSSection; struct _LOSSection { LOSSection *next; - int num_free_chunks; + size_t num_free_chunks; unsigned char *free_chunk_map; }; @@ -143,7 +143,7 @@ los_consistency_check (void) static void add_free_chunk (LOSFreeChunks *free_chunks, size_t size) { - int num_chunks = size >> LOS_CHUNK_BITS; + size_t num_chunks = size >> LOS_CHUNK_BITS; free_chunks->size = size; @@ -158,7 +158,8 @@ get_from_size_list (LOSFreeChunks **list, size_t size) { LOSFreeChunks *free_chunks = NULL; LOSSection *section; - int num_chunks, i, start_index; + size_t i, num_chunks, start_index; + g_assert ((size & (LOS_CHUNK_SIZE - 1)) == 0); @@ -198,7 +199,7 @@ get_los_section_memory (size_t size) { LOSSection *section; LOSFreeChunks *free_chunks; - int num_chunks; + size_t num_chunks; size += LOS_CHUNK_SIZE - 1; size &= ~(LOS_CHUNK_SIZE - 1); @@ -212,7 +213,7 @@ get_los_section_memory (size_t size) if (num_chunks >= LOS_NUM_FAST_SIZES) { free_chunks = get_from_size_list (&los_fast_free_lists [0], size); } else { - int i; + size_t i; for (i = num_chunks; i < LOS_NUM_FAST_SIZES; ++i) { free_chunks = get_from_size_list (&los_fast_free_lists [i], size); if (free_chunks) @@ -257,7 +258,7 @@ static void free_los_section_memory (LOSObject *obj, size_t size) { LOSSection *section = LOS_SECTION_FOR_OBJ (obj); - int num_chunks, i, start_index; + size_t num_chunks, i, start_index; size += LOS_CHUNK_SIZE - 1; size &= ~(LOS_CHUNK_SIZE - 1); diff --git a/mono/metadata/sgen-marksweep.c b/mono/metadata/sgen-marksweep.c index d409df5872..d309338580 100755 --- a/mono/metadata/sgen-marksweep.c +++ b/mono/metadata/sgen-marksweep.c @@ -83,7 +83,7 @@ typedef struct _MSBlockInfo MSBlockInfo; struct _MSBlockInfo { int obj_size; int obj_size_index; - int pin_queue_num_entries; + size_t pin_queue_num_entries; unsigned int pinned : 1; unsigned int has_references : 1; unsigned int has_pinned : 1; /* means cannot evacuate */ @@ -130,10 +130,12 @@ typedef struct { #define MS_BLOCK_FOR_OBJ(o) (((MSBlockHeader*)MS_BLOCK_DATA_FOR_OBJ ((o)))->info) #endif -#define MS_BLOCK_OBJ_INDEX(o,b) (((char*)(o) - ((b)->block + MS_BLOCK_SKIP)) / (b)->obj_size) +/* object index will always be small */ +#define MS_BLOCK_OBJ_INDEX(o,b) ((int)(((char*)(o) - ((b)->block + MS_BLOCK_SKIP)) / (b)->obj_size)) +//casting to int is fine since blocks are 32k #define MS_CALC_MARK_BIT(w,b,o) do { \ - int i = ((char*)(o) - MS_BLOCK_DATA_FOR_OBJ ((o))) >> SGEN_ALLOC_ALIGN_BITS; \ + int i = ((int)((char*)(o) - MS_BLOCK_DATA_FOR_OBJ ((o)))) >> SGEN_ALLOC_ALIGN_BITS; \ if (sizeof (mword) == 4) { \ (w) = i >> 5; \ (b) = i & 31; \ @@ -143,11 +145,11 @@ typedef struct { } \ } while (0) -#define MS_MARK_BIT(bl,w,b) ((bl)->mark_words [(w)] & (1L << (b))) -#define MS_SET_MARK_BIT(bl,w,b) ((bl)->mark_words [(w)] |= (1L << (b))) +#define MS_MARK_BIT(bl,w,b) ((bl)->mark_words [(w)] & (ONE_P << (b))) +#define MS_SET_MARK_BIT(bl,w,b) ((bl)->mark_words [(w)] |= (ONE_P << (b))) #define MS_PAR_SET_MARK_BIT(was_marked,bl,w,b) do { \ mword __old = (bl)->mark_words [(w)]; \ - mword __bitmask = 1L << (b); \ + mword __bitmask = ONE_P << (b); \ if (__old & __bitmask) { \ was_marked = TRUE; \ break; \ @@ -187,9 +189,9 @@ static LOCK_DECLARE (ms_block_list_mutex); #endif static gboolean *evacuate_block_obj_sizes; -static float evacuation_threshold = 0.666; +static float evacuation_threshold = 0.666f; #ifdef SGEN_HAVE_CONCURRENT_MARK -static float concurrent_evacuation_threshold = 0.666; +static float concurrent_evacuation_threshold = 0.666f; static gboolean want_evacuation = FALSE; #endif @@ -209,13 +211,13 @@ static MSBlockInfo *empty_blocks = NULL; #else /* non-allocated block free-list */ static void *empty_blocks = NULL; -static int num_empty_blocks = 0; +static size_t num_empty_blocks = 0; #endif #define FOREACH_BLOCK(bl) for ((bl) = all_blocks; (bl); (bl) = (bl)->next) { #define END_FOREACH_BLOCK } -static int num_major_sections = 0; +static size_t num_major_sections = 0; /* one free block list for each block object size */ static MSBlockInfo **free_block_lists [MS_BLOCK_TYPE_MAX]; @@ -250,7 +252,7 @@ static void sweep_block (MSBlockInfo *block, gboolean during_major_collection); static int -ms_find_block_obj_size_index (int size) +ms_find_block_obj_size_index (size_t size) { int i; SGEN_ASSERT (9, size <= SGEN_MAX_SMALL_OBJ_SIZE, "size %d is bigger than max small object size %d", size, SGEN_MAX_SMALL_OBJ_SIZE); @@ -397,7 +399,7 @@ ms_get_empty_block (void) p += MS_BLOCK_SIZE; } - SGEN_ATOMIC_ADD (num_empty_blocks, alloc_num); + SGEN_ATOMIC_ADD_P (num_empty_blocks, alloc_num); stat_major_blocks_alloced += alloc_num; #if SIZEOF_VOID_P != 8 @@ -414,7 +416,7 @@ ms_get_empty_block (void) next = *(void**)block; } while (SGEN_CAS_PTR (&empty_blocks, next, empty) != empty); - SGEN_ATOMIC_ADD (num_empty_blocks, -1); + SGEN_ATOMIC_ADD_P (num_empty_blocks, -1); *(void**)block = NULL; @@ -436,7 +438,7 @@ ms_free_block (void *block) *(void**)block = empty; } while (SGEN_CAS_PTR (&empty_blocks, block, empty) != empty); - SGEN_ATOMIC_ADD (num_empty_blocks, 1); + SGEN_ATOMIC_ADD_P (num_empty_blocks, 1); } #endif @@ -476,7 +478,7 @@ check_empty_blocks (void) { #ifndef FIXED_HEAP void *p; - int i = 0; + size_t i = 0; for (p = empty_blocks; p; p = *(void**)p) ++i; g_assert (i == num_empty_blocks); @@ -728,14 +730,14 @@ alloc_obj_par (MonoVTable *vtable, int size, gboolean pinned, gboolean has_refer } static void* -major_par_alloc_object (MonoVTable *vtable, int size, gboolean has_references) +major_par_alloc_object (MonoVTable *vtable, size_t size, gboolean has_references) { return alloc_obj_par (vtable, size, FALSE, has_references); } #endif static void* -alloc_obj (MonoVTable *vtable, int size, gboolean pinned, gboolean has_references) +alloc_obj (MonoVTable *vtable, size_t size, gboolean pinned, gboolean has_references) { int size_index = MS_BLOCK_OBJ_SIZE_INDEX (size); MSBlockInfo **free_blocks = FREE_BLOCKS (pinned, has_references); @@ -759,7 +761,7 @@ alloc_obj (MonoVTable *vtable, int size, gboolean pinned, gboolean has_reference } static void* -major_alloc_object (MonoVTable *vtable, int size, gboolean has_references) +major_alloc_object (MonoVTable *vtable, size_t size, gboolean has_references) { return alloc_obj (vtable, size, FALSE, has_references); } @@ -831,7 +833,7 @@ static void* major_alloc_degraded (MonoVTable *vtable, size_t size) { void *obj; - int old_num_sections; + size_t old_num_sections; old_num_sections = num_major_sections; @@ -1710,6 +1712,7 @@ ms_sweep (void) */ *iter = block->next; + binary_protocol_empty (MS_BLOCK_OBJ (block, 0), (char*)MS_BLOCK_OBJ (block, count) - (char*)MS_BLOCK_OBJ (block, 0)); #ifdef FIXED_HEAP ms_free_block (block); #else @@ -1812,7 +1815,7 @@ ms_calculate_block_obj_sizes (double factor, int *arr) int last_size = 0; do { - int target_count = ceil (MS_BLOCK_FREE / target_size); + int target_count = (int)ceil (MS_BLOCK_FREE / target_size); int size = MIN ((MS_BLOCK_FREE / target_count) & ~(SGEN_ALLOC_ALIGN - 1), SGEN_MAX_SMALL_OBJ_SIZE); if (size != last_size) { @@ -1829,7 +1832,7 @@ ms_calculate_block_obj_sizes (double factor, int *arr) } /* only valid during minor collections */ -static int old_num_major_sections; +static mword old_num_major_sections; static void major_start_nursery_collection (void) @@ -1904,7 +1907,7 @@ static void major_have_computer_minor_collection_allowance (void) { #ifndef FIXED_HEAP - int section_reserve = sgen_get_minor_collection_allowance () / MS_BLOCK_SIZE; + size_t section_reserve = sgen_get_minor_collection_allowance () / MS_BLOCK_SIZE; g_assert (have_swept); @@ -2105,7 +2108,7 @@ major_get_used_size (void) return size; } -static int +static size_t get_num_major_sections (void) { return num_major_sections; @@ -2132,7 +2135,7 @@ major_handle_gc_param (const char *opt) fprintf (stderr, "evacuation-threshold must be an integer in the range 0-100.\n"); exit (1); } - evacuation_threshold = (float)percentage / 100.0; + evacuation_threshold = (float)percentage / 100.0f; return TRUE; } else if (!strcmp (opt, "lazy-sweep")) { lazy_sweep = TRUE; @@ -2283,7 +2286,7 @@ major_scan_card_table (gboolean mod_union, SgenGrayQueue *queue) base = sgen_card_table_align_pointer (obj); while (obj < end) { - int card_offset; + size_t card_offset; if (!block->swept) sweep_block (block, FALSE); @@ -2337,8 +2340,8 @@ major_scan_card_table (gboolean mod_union, SgenGrayQueue *queue) card_data_end = card_data + CARDS_PER_BLOCK; for (card_data = initial_skip_card (card_data); card_data < card_data_end; ++card_data) { //card_data = skip_card (card_data + 1, card_data_end)) { - int index; - int idx = card_data - card_base; + size_t index; + size_t idx = card_data - card_base; char *start = (char*)(block_start + idx * CARD_SIZE_IN_BYTES); char *end = start + CARD_SIZE_IN_BYTES; char *first_obj, *obj; diff --git a/mono/metadata/sgen-memory-governor.c b/mono/metadata/sgen-memory-governor.c index 2081de4fc7..448ebef3f0 100644 --- a/mono/metadata/sgen-memory-governor.c +++ b/mono/metadata/sgen-memory-governor.c @@ -57,14 +57,14 @@ static gboolean debug_print_allowance = FALSE; /* use this to tune when to do a major/minor collection */ static mword memory_pressure = 0; static mword minor_collection_allowance; -static int minor_collection_sections_alloced = 0; +static mword minor_collection_sections_alloced = 0; -static int last_major_num_sections = 0; -static int last_los_memory_usage = 0; +static mword last_major_num_sections = 0; +static mword last_los_memory_usage = 0; static gboolean need_calculate_minor_collection_allowance; -static int last_collection_old_num_major_sections; +static mword last_collection_old_num_major_sections; static mword last_collection_los_memory_usage = 0; static mword last_collection_old_los_memory_usage; static mword last_collection_los_memory_alloced; @@ -85,7 +85,7 @@ double_to_mword_with_saturation (double value) static void sgen_memgov_try_calculate_minor_collection_allowance (gboolean overwrite) { - int num_major_sections, num_major_sections_saved; + size_t num_major_sections, num_major_sections_saved; mword los_memory_saved, new_major, new_heap_size, save_target, allowance_target; if (overwrite) @@ -210,7 +210,7 @@ static void log_timming (GGTimingInfo *info) { //unsigned long stw_time, unsigned long bridge_time, gboolean is_overflow - int num_major_sections = major_collector.get_num_major_sections (); + mword num_major_sections = major_collector.get_num_major_sections (); char full_timing_buff [1024]; full_timing_buff [0] = '\0'; @@ -248,7 +248,7 @@ sgen_memgov_collection_end (int generation, GGTimingInfo* info, int info_count) } void -sgen_register_major_sections_alloced (int num_sections) +sgen_register_major_sections_alloced (size_t num_sections) { minor_collection_sections_alloced += num_sections; } @@ -342,7 +342,7 @@ sgen_free_os_memory (void *addr, size_t size, SgenAllocFlags flags) g_assert (!(flags & ~SGEN_ALLOC_HEAP)); mono_vfree (addr, size); - SGEN_ATOMIC_ADD_P (total_alloc, -size); + SGEN_ATOMIC_ADD_P (total_alloc, -(gssize)size); if (flags & SGEN_ALLOC_HEAP) MONO_GC_HEAP_FREE ((mword)addr, size); } @@ -369,7 +369,7 @@ sgen_memgov_available_free_space (void) void sgen_memgov_release_space (mword size, int space) { - SGEN_ATOMIC_ADD_P (allocated_heap, -size); + SGEN_ATOMIC_ADD_P (allocated_heap, -(gssize)size); } gboolean diff --git a/mono/metadata/sgen-memory-governor.h b/mono/metadata/sgen-memory-governor.h index 497ecb0576..fffe906f5b 100644 --- a/mono/metadata/sgen-memory-governor.h +++ b/mono/metadata/sgen-memory-governor.h @@ -39,7 +39,7 @@ void sgen_memgov_major_collection_end (void) MONO_INTERNAL; void sgen_memgov_collection_start (int generation) MONO_INTERNAL; void sgen_memgov_collection_end (int generation, GGTimingInfo* info, int info_count) MONO_INTERNAL; -void sgen_register_major_sections_alloced (int num_sections) MONO_INTERNAL; +void sgen_register_major_sections_alloced (size_t num_sections) MONO_INTERNAL; mword sgen_get_minor_collection_allowance (void) MONO_INTERNAL; gboolean sgen_need_major_collection (mword space_needed) MONO_INTERNAL; diff --git a/mono/metadata/sgen-new-bridge.c b/mono/metadata/sgen-new-bridge.c index c322e649b7..ad486c0c47 100644 --- a/mono/metadata/sgen-new-bridge.c +++ b/mono/metadata/sgen-new-bridge.c @@ -262,11 +262,13 @@ dyn_array_int_size (DynIntArray *da) return da->array.size; } +#ifdef NEW_XREFS static void dyn_array_int_empty (DynIntArray *da) { dyn_array_empty (&da->array); } +#endif static void dyn_array_int_add (DynIntArray *da, int x) @@ -281,17 +283,13 @@ dyn_array_int_get (DynIntArray *da, int x) return ((int*)da->array.data)[x]; } +#ifdef NEW_XREFS static void dyn_array_int_set (DynIntArray *da, int idx, int val) { ((int*)da->array.data)[idx] = val; } - -static void -dyn_array_int_ensure_capacity (DynIntArray *da, int capacity) -{ - dyn_array_ensure_capacity (&da->array, capacity, sizeof (int)); -} +#endif static void dyn_array_int_ensure_independent (DynIntArray *da) @@ -428,6 +426,7 @@ dyn_array_scc_get_ptr (DynSCCArray *da, int x) static DynIntArray merge_array; +#ifdef NEW_XREFS static gboolean dyn_array_int_contains (DynIntArray *da, int x) { @@ -437,6 +436,7 @@ dyn_array_int_contains (DynIntArray *da, int x) return TRUE; return FALSE; } +#endif static void enable_accounting (void) @@ -881,7 +881,7 @@ dump_graph (void) MonoObject *obj; HashEntry *entry; - int prefix_len = strlen (dump_prefix); + size_t prefix_len = strlen (dump_prefix); char *filename = alloca(prefix_len + 64); FILE *file; int edge_id = 0; diff --git a/mono/metadata/sgen-nursery-allocator.c b/mono/metadata/sgen-nursery-allocator.c index 189a60b529..4ac1aa0c21 100644 --- a/mono/metadata/sgen-nursery-allocator.c +++ b/mono/metadata/sgen-nursery-allocator.c @@ -108,7 +108,7 @@ int sgen_nursery_bits = 22; #endif char *sgen_space_bitmap MONO_INTERNAL; -int sgen_space_bitmap_size MONO_INTERNAL; +size_t sgen_space_bitmap_size MONO_INTERNAL; #ifdef HEAVY_STATISTICS @@ -414,7 +414,7 @@ par_alloc_from_fragment (SgenFragmentAllocator *allocator, SgenFragment *frag, s /*frag->next read must happen before the first CAS*/ mono_memory_write_barrier (); - /*Fail if the next done is removed concurrently and its CAS wins */ + /*Fail if the next node is removed concurrently and its CAS wins */ if (InterlockedCompareExchangePointer ((volatile gpointer*)&frag->next, mask (next, 1), next) != next) { continue; } @@ -424,7 +424,7 @@ par_alloc_from_fragment (SgenFragmentAllocator *allocator, SgenFragment *frag, s mono_memory_write_barrier (); /* Fail if the previous node was deleted and its CAS wins */ - if (InterlockedCompareExchangePointer ((volatile gpointer*)prev_ptr, next, frag) != frag) { + if (InterlockedCompareExchangePointer ((volatile gpointer*)prev_ptr, unmask (next), frag) != frag) { prev_ptr = find_previous_pointer_fragment (allocator, frag); continue; } @@ -471,7 +471,7 @@ restart: for (frag = unmask (allocator->alloc_head); unmask (frag); frag = unmask (frag->next)) { HEAVY_STAT (InterlockedIncrement (&stat_alloc_iterations)); - if (size <= (frag->fragment_end - frag->fragment_next)) { + if (size <= (size_t)(frag->fragment_end - frag->fragment_next)) { void *p = par_alloc_from_fragment (allocator, frag, size); if (!p) { HEAVY_STAT (InterlockedIncrement (&stat_alloc_retries)); @@ -579,7 +579,7 @@ restart: #endif for (frag = unmask (allocator->alloc_head); frag; frag = unmask (frag->next)) { - int frag_size = frag->fragment_end - frag->fragment_next; + size_t frag_size = frag->fragment_end - frag->fragment_next; HEAVY_STAT (InterlockedIncrement (&stat_alloc_range_iterations)); @@ -608,7 +608,7 @@ restart: if (min_frag) { void *p; - int frag_size; + size_t frag_size; frag_size = min_frag->fragment_end - min_frag->fragment_next; if (frag_size < minimum_size) @@ -685,7 +685,7 @@ sgen_clear_range (char *start, char *end) /* Mark this as not a real object */ o->obj.synchronisation = GINT_TO_POINTER (-1); o->bounds = NULL; - o->max_length = size - sizeof (MonoArray); + o->max_length = (mono_array_size_t)(size - sizeof (MonoArray)); sgen_set_nursery_scan_start (start); g_assert (start + sgen_safe_object_get_size ((MonoObject*)o) == end); } @@ -745,11 +745,11 @@ fragment_list_reverse (SgenFragmentAllocator *allocator) } mword -sgen_build_nursery_fragments (GCMemSection *nursery_section, void **start, int num_entries, SgenGrayQueue *unpin_queue) +sgen_build_nursery_fragments (GCMemSection *nursery_section, void **start, size_t num_entries, SgenGrayQueue *unpin_queue) { char *frag_start, *frag_end; size_t frag_size; - int i = 0; + size_t i = 0; SgenFragment *frags_ranges; #ifdef NALLOC_DEBUG @@ -827,9 +827,9 @@ sgen_build_nursery_fragments (GCMemSection *nursery_section, void **start, int n sgen_minor_collector.build_fragments_finish (&mutator_allocator); if (!unmask (mutator_allocator.alloc_head)) { - SGEN_LOG (1, "Nursery fully pinned (%d)", num_entries); + SGEN_LOG (1, "Nursery fully pinned (%zd)", num_entries); for (i = 0; i < num_entries; ++i) { - SGEN_LOG (3, "Bastard pinning obj %p (%s), size: %d", start [i], sgen_safe_name (start [i]), sgen_safe_object_get_size (start [i])); + SGEN_LOG (3, "Bastard pinning obj %p (%s), size: %zd", start [i], sgen_safe_name (start [i]), sgen_safe_object_get_size (start [i])); } } return fragment_total; @@ -860,7 +860,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)) { - if ((frag->fragment_end - frag->fragment_next) >= size) + if ((size_t)(frag->fragment_end - frag->fragment_next) >= size) return TRUE; } return FALSE; diff --git a/mono/metadata/sgen-pinning.c b/mono/metadata/sgen-pinning.c index d0a38ef426..85ee6e9f40 100644 --- a/mono/metadata/sgen-pinning.c +++ b/mono/metadata/sgen-pinning.c @@ -27,9 +27,9 @@ #include "metadata/sgen-protocol.h" static void** pin_queue; -static int pin_queue_size = 0; -static int next_pin_slot = 0; -static int last_num_pinned = 0; +static size_t pin_queue_size = 0; +static size_t next_pin_slot = 0; +static size_t last_num_pinned = 0; #define PIN_HASH_SIZE 1024 static void *pin_hash_filter [PIN_HASH_SIZE]; @@ -50,13 +50,13 @@ sgen_finish_pinning (void) static void realloc_pin_queue (void) { - int new_size = pin_queue_size? pin_queue_size + pin_queue_size/2: 1024; + size_t new_size = pin_queue_size? pin_queue_size + pin_queue_size/2: 1024; void **new_pin = sgen_alloc_internal_dynamic (sizeof (void*) * new_size, INTERNAL_MEM_PIN_QUEUE, TRUE); memcpy (new_pin, pin_queue, sizeof (void*) * next_pin_slot); sgen_free_internal_dynamic (pin_queue, sizeof (void*) * pin_queue_size, INTERNAL_MEM_PIN_QUEUE); pin_queue = new_pin; pin_queue_size = new_size; - SGEN_LOG (4, "Reallocated pin queue to size: %d", new_size); + SGEN_LOG (4, "Reallocated pin queue to size: %zd", new_size); } void @@ -75,12 +75,12 @@ sgen_pin_stage_ptr (void *ptr) pin_queue [next_pin_slot++] = ptr; } -static int +static size_t optimized_pin_queue_search (void *addr) { - int first = 0, last = next_pin_slot; + size_t first = 0, last = next_pin_slot; while (first < last) { - int middle = first + ((last - first) >> 1); + size_t middle = first + ((last - first) >> 1); if (addr <= pin_queue [middle]) last = middle; else @@ -91,9 +91,9 @@ optimized_pin_queue_search (void *addr) } void** -sgen_find_optimized_pin_queue_area (void *start, void *end, int *num) +sgen_find_optimized_pin_queue_area (void *start, void *end, size_t *num) { - int first, last; + size_t first, last; first = optimized_pin_queue_search (start); last = optimized_pin_queue_search (end); *num = last - first; @@ -107,7 +107,7 @@ sgen_find_section_pin_queue_start_end (GCMemSection *section) { SGEN_LOG (6, "Pinning from section %p (%p-%p)", section, section->data, section->end_data); section->pin_queue_start = sgen_find_optimized_pin_queue_area (section->data, section->end_data, §ion->pin_queue_num_entries); - SGEN_LOG (6, "Found %d pinning addresses in section %p", section->pin_queue_num_entries, section); + SGEN_LOG (6, "Found %zd pinning addresses in section %p", section->pin_queue_num_entries, section); } /*This will setup the given section for the while pin queue. */ @@ -125,7 +125,7 @@ sgen_pinning_trim_queue_to_section (GCMemSection *section) } void -sgen_pin_queue_clear_discarded_entries (GCMemSection *section, int max_pin_slot) +sgen_pin_queue_clear_discarded_entries (GCMemSection *section, size_t max_pin_slot) { void **start = section->pin_queue_start + section->pin_queue_num_entries; void **end = pin_queue + max_pin_slot; @@ -144,12 +144,12 @@ sgen_pin_queue_clear_discarded_entries (GCMemSection *section, int max_pin_slot) /* reduce the info in the pin queue, removing duplicate pointers and sorting them */ void -sgen_optimize_pin_queue (int start_slot) +sgen_optimize_pin_queue (size_t start_slot) { void **start, **cur, **end; /* sort and uniq pin_queue: we just sort and we let the rest discard multiple values */ /* it may be better to keep ranges of pinned memory instead of individually pinning objects */ - SGEN_LOG (5, "Sorting pin queue, size: %d", next_pin_slot); + SGEN_LOG (5, "Sorting pin queue, size: %zd", next_pin_slot); if ((next_pin_slot - start_slot) > 1) sgen_sort_addresses (pin_queue + start_slot, next_pin_slot - start_slot); start = cur = pin_queue + start_slot; @@ -161,10 +161,10 @@ sgen_optimize_pin_queue (int start_slot) start++; }; next_pin_slot = start - pin_queue; - SGEN_LOG (5, "Pin queue reduced to size: %d", next_pin_slot); + SGEN_LOG (5, "Pin queue reduced to size: %zd", next_pin_slot); } -int +size_t sgen_get_pinned_count (void) { return next_pin_slot; @@ -176,7 +176,7 @@ sgen_dump_pin_queue (void) int i; for (i = 0; i < last_num_pinned; ++i) { - SGEN_LOG (3, "Bastard pinning obj %p (%s), size: %d", pin_queue [i], sgen_safe_name (pin_queue [i]), sgen_safe_object_get_size (pin_queue [i])); + SGEN_LOG (3, "Bastard pinning obj %p (%s), size: %zd", pin_queue [i], sgen_safe_name (pin_queue [i]), sgen_safe_object_get_size (pin_queue [i])); } } @@ -311,7 +311,7 @@ sgen_cement_lookup_or_register (char *obj) vt->klass->name_space, vt->klass->name); } binary_protocol_cement (obj, (gpointer)SGEN_LOAD_VTABLE (obj), - sgen_safe_object_get_size ((MonoObject*)obj)); + (int)sgen_safe_object_get_size ((MonoObject*)obj)); } return FALSE; diff --git a/mono/metadata/sgen-pinning.h b/mono/metadata/sgen-pinning.h index f141cd6839..ef41df24d2 100644 --- a/mono/metadata/sgen-pinning.h +++ b/mono/metadata/sgen-pinning.h @@ -28,11 +28,11 @@ enum { }; void sgen_pin_stage_ptr (void *ptr) MONO_INTERNAL; -void sgen_optimize_pin_queue (int start_slot) MONO_INTERNAL; +void sgen_optimize_pin_queue (size_t start_slot) MONO_INTERNAL; void sgen_init_pinning (void) MONO_INTERNAL; void sgen_finish_pinning (void) MONO_INTERNAL; -void sgen_pin_queue_clear_discarded_entries (GCMemSection *section, int max_pin_slot) MONO_INTERNAL; -int sgen_get_pinned_count (void) MONO_INTERNAL; +void sgen_pin_queue_clear_discarded_entries (GCMemSection *section, size_t max_pin_slot) MONO_INTERNAL; +size_t sgen_get_pinned_count (void) MONO_INTERNAL; void sgen_pinning_setup_section (GCMemSection *section) MONO_INTERNAL; void sgen_pinning_trim_queue_to_section (GCMemSection *section) MONO_INTERNAL; diff --git a/mono/metadata/sgen-protocol.c b/mono/metadata/sgen-protocol.c index ce0ac028cf..0ed3ebbd0f 100644 --- a/mono/metadata/sgen-protocol.c +++ b/mono/metadata/sgen-protocol.c @@ -456,6 +456,20 @@ binary_protocol_dislink_process_staged (gpointer link, gpointer obj, int index) SGenProtocolDislinkProcessStaged entry = { link, obj, index }; protocol_entry (SGEN_PROTOCOL_DISLINK_PROCESS_STAGED, &entry, sizeof (SGenProtocolDislinkProcessStaged)); } + +void +binary_protocol_gray_enqueue (gpointer queue, gpointer cursor, gpointer value) +{ + SGenProtocolGrayQueue entry = { queue, cursor, value }; + protocol_entry (SGEN_PROTOCOL_GRAY_ENQUEUE, &entry, sizeof (SGenProtocolGrayQueue)); +} + +void +binary_protocol_gray_dequeue (gpointer queue, gpointer cursor, gpointer value) +{ + SGenProtocolGrayQueue entry = { queue, cursor, value }; + protocol_entry (SGEN_PROTOCOL_GRAY_DEQUEUE, &entry, sizeof (SGenProtocolGrayQueue)); +} #endif #endif /* HAVE_SGEN_GC */ diff --git a/mono/metadata/sgen-protocol.h b/mono/metadata/sgen-protocol.h index 1e7222c8b3..1483880e3e 100644 --- a/mono/metadata/sgen-protocol.h +++ b/mono/metadata/sgen-protocol.h @@ -20,6 +20,9 @@ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#ifndef __MONO_SGENPROTOCOL_H__ +#define __MONO_SGENPROTOCOL_H__ + #include "sgen-gc.h" enum { @@ -57,7 +60,9 @@ enum { SGEN_PROTOCOL_DISLINK_UPDATE_STAGED, SGEN_PROTOCOL_DISLINK_PROCESS_STAGED, SGEN_PROTOCOL_DOMAIN_UNLOAD_BEGIN, - SGEN_PROTOCOL_DOMAIN_UNLOAD_END + SGEN_PROTOCOL_DOMAIN_UNLOAD_END, + SGEN_PROTOCOL_GRAY_ENQUEUE, + SGEN_PROTOCOL_GRAY_DEQUEUE, }; typedef struct { @@ -221,6 +226,12 @@ typedef struct { gpointer domain; } SGenProtocolDomainUnload; +typedef struct { + gpointer queue; + gpointer cursor; + gpointer value; +} SGenProtocolGrayQueue; + /* missing: finalizers, roots, non-store wbarriers */ void binary_protocol_init (const char *filename) MONO_INTERNAL; @@ -274,6 +285,8 @@ void binary_protocol_card_scan (gpointer start, int size) MONO_INTERNAL; void binary_protocol_dislink_update (gpointer link, gpointer obj, int track, int staged) MONO_INTERNAL; void binary_protocol_dislink_update_staged (gpointer link, gpointer obj, int track, int index) MONO_INTERNAL; void binary_protocol_dislink_process_staged (gpointer link, gpointer obj, int index) MONO_INTERNAL; +void binary_protocol_gray_enqueue (gpointer queue, gpointer cursor, gpointer value) MONO_INTERNAL; +void binary_protocol_gray_dequeue (gpointer queue, gpointer cursor, gpointer value) MONO_INTERNAL; #else @@ -296,5 +309,9 @@ void binary_protocol_dislink_process_staged (gpointer link, gpointer obj, int in #define binary_protocol_dislink_update(link,obj,track,staged) #define binary_protocol_dislink_update_staged(link,obj,track,index) #define binary_protocol_dislink_process_staged(link,obj,index) +#define binary_protocol_gray_enqueue(queue,cursor,value) +#define binary_protocol_gray_dequeue(queue,cursor,value) + +#endif #endif diff --git a/mono/metadata/sgen-simple-nursery.c b/mono/metadata/sgen-simple-nursery.c index 3a0c57e022..f2f7066c30 100644 --- a/mono/metadata/sgen-simple-nursery.c +++ b/mono/metadata/sgen-simple-nursery.c @@ -58,7 +58,7 @@ build_fragments_finish (SgenFragmentAllocator *allocator) } static void -prepare_to_space (char *to_space_bitmap, int space_bitmap_size) +prepare_to_space (char *to_space_bitmap, size_t space_bitmap_size) { } diff --git a/mono/metadata/sgen-split-nursery.c b/mono/metadata/sgen-split-nursery.c index fc741cfc05..1f62d14b70 100644 --- a/mono/metadata/sgen-split-nursery.c +++ b/mono/metadata/sgen-split-nursery.c @@ -139,7 +139,7 @@ static float alloc_ratio = 60.f/100.f; static char *region_age; -static int region_age_size; +static size_t region_age_size; static AgeAllocationBuffer age_alloc_buffers [MAX_AGE]; /* The collector allocs from here. */ @@ -150,14 +150,14 @@ static LOCK_DECLARE (par_alloc_buffer_refill_mutex); static inline int get_object_age (char *object) { - int idx = (object - sgen_nursery_start) >> SGEN_TO_SPACE_GRANULE_BITS; + size_t idx = (object - sgen_nursery_start) >> SGEN_TO_SPACE_GRANULE_BITS; return region_age [idx]; } static inline void set_object_age (char *object, int age) { - int idx = (object - sgen_nursery_start) >> SGEN_TO_SPACE_GRANULE_BITS; + size_t idx = (object - sgen_nursery_start) >> SGEN_TO_SPACE_GRANULE_BITS; region_age [idx] = age; } @@ -165,7 +165,7 @@ static void set_age_in_range (char *start, char *end, int age) { char *region_start; - int region_idx, length; + size_t region_idx, length; region_idx = (start - sgen_nursery_start) >> SGEN_TO_SPACE_GRANULE_BITS; region_start = ®ion_age [region_idx]; length = (end - start) >> SGEN_TO_SPACE_GRANULE_BITS; @@ -175,8 +175,8 @@ set_age_in_range (char *start, char *end, int age) static inline void mark_bit (char *space_bitmap, char *pos) { - int idx = (pos - sgen_nursery_start) >> SGEN_TO_SPACE_GRANULE_BITS; - int byte = idx / 8; + size_t idx = (pos - sgen_nursery_start) >> SGEN_TO_SPACE_GRANULE_BITS; + size_t byte = idx / 8; int bit = idx & 0x7; g_assert (byte < sgen_space_bitmap_size); @@ -420,7 +420,7 @@ build_fragments_finish (SgenFragmentAllocator *allocator) } static void -prepare_to_space (char *to_space_bitmap, int space_bitmap_size) +prepare_to_space (char *to_space_bitmap, size_t space_bitmap_size) { SgenFragment **previous, *frag; diff --git a/mono/metadata/sgen-tarjan-bridge.c b/mono/metadata/sgen-tarjan-bridge.c index 1abcda6b2e..59013f7012 100644 --- a/mono/metadata/sgen-tarjan-bridge.c +++ b/mono/metadata/sgen-tarjan-bridge.c @@ -67,14 +67,6 @@ typedef struct { /* private */ -static void -dyn_array_init (DynArray *da) -{ - da->size = 0; - da->capacity = 0; - da->data = NULL; -} - static void dyn_array_uninit (DynArray *da, int elem_size) { @@ -121,12 +113,6 @@ dyn_array_add (DynArray *da, int elem_size) /* ptr */ -static void -dyn_array_ptr_init (DynPtrArray *da) -{ - dyn_array_init (&da->array); -} - static void dyn_array_ptr_uninit (DynPtrArray *da) { @@ -461,6 +447,7 @@ bridge_object_forward (MonoObject *obj) return fwd ? fwd : obj; } +#ifdef DUMP_GRAPH static const char* safe_name_bridge (MonoObject *obj) { @@ -476,7 +463,7 @@ find_or_create_data (MonoObject *obj) entry = create_data (obj); return entry; } - +#endif //---------- typedef struct { @@ -502,7 +489,7 @@ static HashEntry merge_cache [COLOR_CACHE_SIZE][ELEMENTS_PER_BUCKET]; static int mix_hash (size_t hash) { - return ((hash * 215497) >> 16) ^ (hash * 1823231) + hash; + return (int)(((hash * 215497) >> 16) ^ ((hash * 1823231) + hash)); } static void @@ -908,6 +895,7 @@ cleanup (void) num_colors_with_bridges = 0; } +#ifdef DUMP_GRAPH static void dump_color_table (const char *why, gboolean do_index) { @@ -938,6 +926,7 @@ dump_color_table (const char *why, gboolean do_index) } } +#endif static gint64 step_timer (gint64 *timer) @@ -1036,16 +1025,6 @@ reset_xrefs (ColorData *color) } } -static mono_bool -is_bridge_object_alive (MonoObject *obj, void *data) -{ - SgenHashTable *table = data; - unsigned char *value = sgen_hash_table_lookup (table, obj); - if (!value) - return TRUE; - return *value; -} - static void processing_build_callback_data (int generation) { diff --git a/mono/metadata/sgen-workers.c b/mono/metadata/sgen-workers.c index 77c7fadcac..b3eebb02d9 100644 --- a/mono/metadata/sgen-workers.c +++ b/mono/metadata/sgen-workers.c @@ -246,7 +246,17 @@ workers_steal (WorkerData *data, WorkerData *victim_data, gboolean lock) memcpy (queue->first->objects, victim_data->stealable_stack + victim_data->stealable_stack_fill - num + n, sizeof (char*) * m); - queue->first->end = m; + queue->first->size = m; + + /* + * DO NOT move outside this loop + * Doing so trigger "assert not reached" in sgen-scan-object.h : we use the queue->cursor + * to compute the size of the first section during section allocation (via alloc_prepare_func + * -> workers_gray_queue_share_redirect -> sgen_gray_object_dequeue_section) which will be then + * set to 0, because queue->cursor is still pointing to queue->first->objects [-1], thus + * losing objects in the gray queue. + */ + queue->cursor = (char**)queue->first->objects + queue->first->size - 1; } victim_data->stealable_stack_fill -= num; @@ -279,10 +289,9 @@ workers_get_work (WorkerData *data) return TRUE; /* From another worker. */ - for (i = 0; i < workers_num; ++i) { - WorkerData *victim_data = &workers_data [i]; - if (data == victim_data) - continue; + for (i = data->index + 1; i < workers_num + data->index; ++i) { + WorkerData *victim_data = &workers_data [i % workers_num]; + g_assert (data != victim_data); if (workers_steal (data, victim_data, TRUE)) return TRUE; } @@ -326,16 +335,16 @@ workers_gray_queue_share_redirect (SgenGrayQueue *queue) while (data->stealable_stack_fill < STEALABLE_STACK_SIZE && (section = sgen_gray_object_dequeue_section (queue))) { - int num = MIN (section->end, STEALABLE_STACK_SIZE - data->stealable_stack_fill); + int num = MIN (section->size, STEALABLE_STACK_SIZE - data->stealable_stack_fill); memcpy (data->stealable_stack + data->stealable_stack_fill, - section->objects + section->end - num, + section->objects + section->size - num, sizeof (char*) * num); - section->end -= num; + section->size -= num; data->stealable_stack_fill += num; - if (section->end) + if (section->size) sgen_gray_object_enqueue_section (queue, section); else sgen_gray_object_free_queue_section (section); @@ -459,6 +468,8 @@ sgen_workers_init (int num_workers) workers_gc_thread_major_collector_data = sgen_get_major_collector ()->alloc_worker_data (); for (i = 0; i < workers_num; ++i) { + workers_data [i].index = i; + /* private gray queue is inited by the thread itself */ mono_mutex_init (&workers_data [i].stealable_stack_mutex); workers_data [i].stealable_stack_fill = 0; diff --git a/mono/metadata/sgen-workers.h b/mono/metadata/sgen-workers.h index f5bbf55454..9070623673 100644 --- a/mono/metadata/sgen-workers.h +++ b/mono/metadata/sgen-workers.h @@ -26,6 +26,7 @@ typedef struct _WorkerData WorkerData; struct _WorkerData { + int index; MonoNativeThreadId thread; void *major_collector_data; diff --git a/mono/metadata/socket-io.c b/mono/metadata/socket-io.c index b160096e92..cbce0f7726 100644 --- a/mono/metadata/socket-io.c +++ b/mono/metadata/socket-io.c @@ -1216,7 +1216,7 @@ static struct sockaddr *create_sockaddr_from_object(MonoObject *saddr_obj, /* Need a byte for the '\0' terminator/prefix, and the first * two bytes hold the SocketAddress family */ - if (len - 2 >= MONO_SIZEOF_SUNPATH) { + if (len - 2 >= sizeof(sock_un->sun_path)) { mono_raise_exception (mono_get_exception_index_out_of_range ()); } diff --git a/mono/metadata/socket-io.h b/mono/metadata/socket-io.h index 825d4330ff..2694483944 100644 --- a/mono/metadata/socket-io.h +++ b/mono/metadata/socket-io.h @@ -191,7 +191,7 @@ typedef struct gint gid; } MonoPeerCredData; -extern gpointer ves_icall_System_Net_Sockets_Socket_Socket_internal(MonoObject *this, gint32 family, gint32 type, gint32 proto, gint32 *error) MONO_INTERNAL; +extern gpointer ves_icall_System_Net_Sockets_Socket_Socket_internal(MonoObject *this_obj, gint32 family, gint32 type, gint32 proto, gint32 *error) MONO_INTERNAL; extern void ves_icall_System_Net_Sockets_Socket_Close_internal(SOCKET sock, gint32 *error) MONO_INTERNAL; extern gint32 ves_icall_System_Net_Sockets_SocketException_WSAGetLastError_internal(void) MONO_INTERNAL; extern gint32 ves_icall_System_Net_Sockets_Socket_Available_internal(SOCKET sock, gint32 *error) MONO_INTERNAL; diff --git a/mono/metadata/string-icalls.h b/mono/metadata/string-icalls.h index a0889ebbf5..a0b831a1e2 100644 --- a/mono/metadata/string-icalls.h +++ b/mono/metadata/string-icalls.h @@ -10,6 +10,7 @@ * (C) 2001 Ximian, Inc. */ +#include #include #include #include "mono/utils/mono-compiler.h" diff --git a/mono/metadata/threadpool-internals.h b/mono/metadata/threadpool-internals.h index 9d73ccdeb3..165445c6a8 100644 --- a/mono/metadata/threadpool-internals.h +++ b/mono/metadata/threadpool-internals.h @@ -1,6 +1,10 @@ #ifndef _MONO_THREADPOOL_INTERNALS_H_ #define _MONO_THREADPOOL_INTERNALS_H_ +#include +#include +#include + void mono_thread_pool_remove_socket (int sock) MONO_INTERNAL; gboolean mono_thread_pool_is_queue_array (MonoArray *o) MONO_INTERNAL; void mono_internal_thread_unhandled_exception (MonoObject* exc) MONO_INTERNAL; diff --git a/mono/metadata/threads-types.h b/mono/metadata/threads-types.h index 431fe93ea0..6aeca4acf5 100644 --- a/mono/metadata/threads-types.h +++ b/mono/metadata/threads-types.h @@ -15,6 +15,7 @@ #include #include +#include #include "mono/utils/mono-compiler.h" #include "mono/utils/mono-membar.h" @@ -58,7 +59,7 @@ MonoInternalThread* mono_thread_create_internal (MonoDomain *domain, gpointer fu void mono_threads_install_cleanup (MonoThreadCleanupFunc func) MONO_INTERNAL; -void ves_icall_System_Threading_Thread_ConstructInternalThread (MonoThread *this) MONO_INTERNAL; +void ves_icall_System_Threading_Thread_ConstructInternalThread (MonoThread *this_obj) MONO_INTERNAL; HANDLE ves_icall_System_Threading_Thread_Thread_internal(MonoThread *this_obj, MonoObject *start) MONO_INTERNAL; void ves_icall_System_Threading_InternalThread_Thread_free_internal(MonoInternalThread *this_obj, HANDLE thread) MONO_INTERNAL; void ves_icall_System_Threading_Thread_Sleep_internal(gint32 ms) MONO_INTERNAL; @@ -184,7 +185,7 @@ void mono_special_static_data_free_slot (guint32 offset, guint32 size) MONO_INTE uint32_t mono_thread_alloc_tls (MonoReflectionType *type) MONO_INTERNAL; void mono_thread_destroy_tls (uint32_t tls_offset) MONO_INTERNAL; void mono_thread_destroy_domain_tls (MonoDomain *domain) MONO_INTERNAL; -void mono_thread_free_local_slot_values (int slot, MonoBoolean thread_local) MONO_INTERNAL; +void mono_thread_free_local_slot_values (int slot, MonoBoolean is_thread_local) MONO_INTERNAL; void mono_thread_current_check_pending_interrupt (void) MONO_INTERNAL; void mono_thread_set_state (MonoInternalThread *thread, MonoThreadState state) MONO_INTERNAL; diff --git a/mono/metadata/threads.c.REMOVED.git-id b/mono/metadata/threads.c.REMOVED.git-id index 3e9a00576e..f49175a202 100644 --- a/mono/metadata/threads.c.REMOVED.git-id +++ b/mono/metadata/threads.c.REMOVED.git-id @@ -1 +1 @@ -689e4e294880af8ac185598acc0bdf1b329facc9 \ No newline at end of file +0867b3dee8509793a824eb9bc44ed098c762db7e \ No newline at end of file diff --git a/mono/metadata/verify-internals.h b/mono/metadata/verify-internals.h index 8a999f81d6..d02816f656 100644 --- a/mono/metadata/verify-internals.h +++ b/mono/metadata/verify-internals.h @@ -1,7 +1,10 @@ #ifndef __MONO_METADATA_VERIFY_INTERNAL_H__ #define __MONO_METADATA_VERIFY_INTERNAL_H__ +#include #include +#include +#include G_BEGIN_DECLS @@ -21,7 +24,7 @@ gboolean mono_verifier_is_enabled_for_class (MonoClass *klass) MONO_INTERNAL; gboolean mono_verifier_is_method_full_trust (MonoMethod *method) MONO_INTERNAL; gboolean mono_verifier_is_class_full_trust (MonoClass *klass) MONO_INTERNAL; -gboolean mono_verifier_class_is_valid_generic_instantiation (MonoClass *class) MONO_INTERNAL; +gboolean mono_verifier_class_is_valid_generic_instantiation (MonoClass *klass) MONO_INTERNAL; gboolean mono_verifier_is_method_valid_generic_instantiation (MonoMethod *method) MONO_INTERNAL; gboolean mono_verifier_verify_class (MonoClass *klass) MONO_INTERNAL; diff --git a/mono/metadata/verify.c.REMOVED.git-id b/mono/metadata/verify.c.REMOVED.git-id index 2d3bc11bfd..9398c849f2 100644 --- a/mono/metadata/verify.c.REMOVED.git-id +++ b/mono/metadata/verify.c.REMOVED.git-id @@ -1 +1 @@ -3c29b116e4c5522eb4a9176455a8c10ee2d8a9c2 \ No newline at end of file +50781a4bbf4016b6955b6eb6f6a40211525dc3a3 \ No newline at end of file diff --git a/mono/mini/Makefile.am b/mono/mini/Makefile.am index cd935b50bb..f928eec806 100644 --- a/mono/mini/Makefile.am +++ b/mono/mini/Makefile.am @@ -276,9 +276,15 @@ endif # Create monow.exe, linked for the 'windows' subsystem if HOST_WIN32 +if SUPPORT_BOEHM monow_LDADD = $(mono_boehm_LDADD) monow_LDFLAGS = $(mono_boehm_LDFLAGS) -mwindows monow_SOURCES = $(mono_boehm_SOURCES) +else +monow_LDADD = $(mono_sgen_LDADD) +monow_LDFLAGS = $(mono_sgen_LDFLAGS) -mwindows +monow_SOURCES = $(mono_sgen_SOURCES) +endif endif genmdesc_SOURCES = \ @@ -426,7 +432,8 @@ common_sources = \ xdebug.c \ mini-llvm.h \ mini-llvm-cpp.h \ - alias-analysis.c + alias-analysis.c \ + mini-cross-helpers.c test_sources = \ basic-calls.cs \ diff --git a/mono/mini/Makefile.am.in b/mono/mini/Makefile.am.in index cd935b50bb..f928eec806 100755 --- a/mono/mini/Makefile.am.in +++ b/mono/mini/Makefile.am.in @@ -276,9 +276,15 @@ endif # Create monow.exe, linked for the 'windows' subsystem if HOST_WIN32 +if SUPPORT_BOEHM monow_LDADD = $(mono_boehm_LDADD) monow_LDFLAGS = $(mono_boehm_LDFLAGS) -mwindows monow_SOURCES = $(mono_boehm_SOURCES) +else +monow_LDADD = $(mono_sgen_LDADD) +monow_LDFLAGS = $(mono_sgen_LDFLAGS) -mwindows +monow_SOURCES = $(mono_sgen_SOURCES) +endif endif genmdesc_SOURCES = \ @@ -426,7 +432,8 @@ common_sources = \ xdebug.c \ mini-llvm.h \ mini-llvm-cpp.h \ - alias-analysis.c + alias-analysis.c \ + mini-cross-helpers.c test_sources = \ basic-calls.cs \ diff --git a/mono/mini/Makefile.in.REMOVED.git-id b/mono/mini/Makefile.in.REMOVED.git-id index 6e1933f7dc..bd848b8f31 100644 --- a/mono/mini/Makefile.in.REMOVED.git-id +++ b/mono/mini/Makefile.in.REMOVED.git-id @@ -1 +1 @@ -c3babf4940c0a25ae27669a385bec1e9d8d047a4 \ No newline at end of file +2f30bdbf60795aee40ea0f4f24cae680080b15fa \ No newline at end of file diff --git a/mono/mini/alias-analysis.c b/mono/mini/alias-analysis.c index bc5bd8e012..c260dae2c7 100644 --- a/mono/mini/alias-analysis.c +++ b/mono/mini/alias-analysis.c @@ -156,6 +156,7 @@ lower_memory_access (MonoCompile *cfg) g_hash_table_remove_all (addr_loads); for (ins = bb->code; ins; ins = ins->next) { +handle_instruction: switch (ins->opcode) { case OP_LDADDR: g_hash_table_insert (addr_loads, GINT_TO_POINTER (ins->dreg), ins); @@ -197,7 +198,11 @@ lower_memory_access (MonoCompile *cfg) tmp = 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); } - needs_dce |= lower_load (cfg, ins, tmp); + if (lower_load (cfg, ins, tmp)) { + needs_dce = TRUE; + /* Try to propagate known aliases if an OP_MOVE was inserted */ + goto handle_instruction; + } } break; @@ -214,7 +219,11 @@ lower_memory_access (MonoCompile *cfg) tmp = 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); } - needs_dce |= lower_store (cfg, ins, tmp); + if (lower_store (cfg, ins, tmp)) { + needs_dce = TRUE; + /* Try to propagate known aliases if an OP_MOVE was inserted */ + goto handle_instruction; + } } break; @@ -229,6 +238,15 @@ lower_memory_access (MonoCompile *cfg) needs_dce |= lower_store_imm (cfg, ins, tmp); } break; + case OP_CHECK_THIS: + case OP_NOT_NULL: + tmp = 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); + needs_dce = TRUE; + } + break; } } } @@ -237,13 +255,14 @@ lower_memory_access (MonoCompile *cfg) } static gboolean -recompute_aliased_variables (MonoCompile *cfg) +recompute_aliased_variables (MonoCompile *cfg, int *restored_vars) { int i; MonoBasicBlock *bb; MonoInst *ins; int kills = 0; int adds = 0; + *restored_vars = 0; for (i = 0; i < cfg->num_varinfo; i++) { MonoInst *var = cfg->varinfo [i]; @@ -275,7 +294,8 @@ recompute_aliased_variables (MonoCompile *cfg) } } } - + *restored_vars = adds; + mono_jit_stats.alias_found += kills; mono_jit_stats.alias_removed += kills - adds; if (kills > adds) { @@ -299,6 +319,7 @@ TODO: void mono_local_alias_analysis (MonoCompile *cfg) { + int i, restored_vars = 1; if (!cfg->has_indirection) return; @@ -319,17 +340,18 @@ mono_local_alias_analysis (MonoCompile *cfg) /* Some variables no longer need to be flagged as indirect, find them. + Since indirect vars are converted into global vregs, each pass eliminates only one level of indirection. + Most cases only need one pass and some 2. */ - if (!recompute_aliased_variables (cfg)) - goto done; - - /* - A lot of simplification just took place, we recompute local variables and do DCE to - really profit from the previous gains - */ - mono_handle_global_vregs (cfg); - if (cfg->opt & MONO_OPT_DEADCE) - mono_local_deadce (cfg); + for (i = 0; i < 3 && restored_vars > 0 && recompute_aliased_variables (cfg, &restored_vars); ++i) { + /* + A lot of simplification just took place, we recompute local variables and do DCE to + really profit from the previous gains + */ + mono_handle_global_vregs (cfg); + if (cfg->opt & MONO_OPT_DEADCE) + mono_local_deadce (cfg); + } done: if (cfg->verbose_level > 2) diff --git a/mono/mini/aot-compiler.c.REMOVED.git-id b/mono/mini/aot-compiler.c.REMOVED.git-id index 2aa99d1a64..9b61960c77 100644 --- a/mono/mini/aot-compiler.c.REMOVED.git-id +++ b/mono/mini/aot-compiler.c.REMOVED.git-id @@ -1 +1 @@ -59569b46563ffd6d0a1b832feb1a0c35a6d557cc \ No newline at end of file +aa04ced89dd20f011d9fa71594f5bdbfd6910623 \ No newline at end of file diff --git a/mono/mini/aot-runtime.c.REMOVED.git-id b/mono/mini/aot-runtime.c.REMOVED.git-id index 1e713d13a2..4bbaf64d85 100644 --- a/mono/mini/aot-runtime.c.REMOVED.git-id +++ b/mono/mini/aot-runtime.c.REMOVED.git-id @@ -1 +1 @@ -5ff4c985a0a8925043dff955b45ee85703bf6f19 \ No newline at end of file +c140ec6e354229a054147083fe8815d2856dc711 \ No newline at end of file diff --git a/mono/mini/basic-calls.cs b/mono/mini/basic-calls.cs index 41cb62405c..bc3a617e18 100644 --- a/mono/mini/basic-calls.cs +++ b/mono/mini/basic-calls.cs @@ -129,12 +129,12 @@ class Tests return pass_bytes (0, 1, 2, 3, 4, 5, 6); } - static int pass_sbytes (sbyte a, sbyte b, sbyte c, sbyte d, sbyte e, sbyte f, sbyte g) { - return (int)(a + b + c + d + e + f + g); + static int pass_sbytes (sbyte a, sbyte b, sbyte c, sbyte d, sbyte e, sbyte f, sbyte g, sbyte h1, sbyte h2, sbyte h3, sbyte h4) { + return (int)(a + b + c + d + e + f + g + h1 + h2 + h3 + h4); } - public static int test_21_sparc_sbyte_argument_passing () { - return pass_sbytes (0, 1, 2, 3, 4, 5, 6); + public static int test_55_sparc_sbyte_argument_passing () { + return pass_sbytes (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10); } static int pass_shorts (short a, short b, short c, short d, short e, short f, short g) { diff --git a/mono/mini/basic-long.cs b/mono/mini/basic-long.cs index 96db6ca37f..1d81232c3a 100644 --- a/mono/mini/basic-long.cs +++ b/mono/mini/basic-long.cs @@ -1211,5 +1211,57 @@ class Tests return (int)res; } + + public static int test_0_lrem_imm_1 () { + long b = 12L; + return (int)(b % 1L); + } + + public static int test_0_lrem_imm_1_neg () { + long b = -2L; + return (int)(b % 1L); + } + + public static int test_0_lrem_imm_2 () + { + long x = 245345634L; + return (int)(x % 2L); + } + + public static int test_1_lrem_imm_2 () + { + long x = 24534553245L; + return (int)(x % 2L); + } + + public static int test_1_lrem_imm_2_neg () + { + long x = -24534553245L; + return -(int)(x % 2L); + } + + public static int test_13_lrem_imm_32 () + { + long x = 17389L; + return (int)(x % 32L); + } + + public static int test_27_lrem_imm_32_neg () + { + long x = -2435323L; + return -(int)(x % 32L); + } + + public static int test_5_lrem_imm_large () + { + long x = 0x1000000005L; + return (int)(x % 0x40000000L); + } + + public static int test_5_lrem_imm_too_large () + { + long x = 0x1000000005L; + return (int)(x % 0x80000000L); + } } diff --git a/mono/mini/cpu-amd64.md b/mono/mini/cpu-amd64.md index 5107e999fa..bb6f32f9e6 100644 --- a/mono/mini/cpu-amd64.md +++ b/mono/mini/cpu-amd64.md @@ -293,15 +293,13 @@ amd64_icompare_reg_membase: src1:i src2:b len:8 amd64_set_xmmreg_r4: dest:f src1:f len:14 clob:m amd64_set_xmmreg_r8: dest:f src1:f len:14 clob:m amd64_save_sp_to_lmf: len:16 -tls_get: dest:i len:16 +tls_get: dest:i len:32 tls_get_reg: dest:i src1:i len:32 tls_set: src1:i len:16 tls_set_reg: src1:i src2:i len:32 atomic_add_i4: src1:b src2:i dest:i len:32 -atomic_add_new_i4: src1:b src2:i dest:i len:32 -atomic_exchange_i4: src1:b src2:i dest:a len:32 atomic_add_i8: src1:b src2:i dest:i len:32 -atomic_add_new_i8: src1:b src2:i dest:i len:32 +atomic_exchange_i4: src1:b src2:i dest:a len:32 atomic_exchange_i8: src1:b src2:i dest:a len:32 atomic_cas_i4: src1:b src2:i src3:a dest:a len:24 atomic_cas_i8: src1:b src2:i src3:a dest:a len:24 @@ -353,7 +351,6 @@ int_sub_imm: dest:i src1:i clob:1 len:8 nacl:10 int_mul_imm: dest:i src1:i clob:1 len:32 int_div_imm: dest:a src1:i clob:d len:32 int_div_un_imm: dest:a src1:i clob:d len:32 -int_rem_imm: dest:a src1:a len:32 clob:d int_rem_un_imm: dest:d src1:i clob:a len:32 int_and_imm: dest:i src1:i clob:1 len:8 int_or_imm: dest:i src1:i clob:1 len:8 diff --git a/mono/mini/cpu-arm.md b/mono/mini/cpu-arm.md index 367cb5d4c5..431936113c 100644 --- a/mono/mini/cpu-arm.md +++ b/mono/mini/cpu-arm.md @@ -347,6 +347,6 @@ gc_liveness_use: len:0 gc_spill_slot_liveness_def: len:0 gc_param_slot_liveness_def: len:0 +atomic_add_i4: dest:i src1:i src2:i len:64 atomic_exchange_i4: dest:i src1:i src2:i len:64 atomic_cas_i4: dest:i src1:i src2:i src3:i len:64 -atomic_add_new_i4: dest:i src1:i src2:i len:64 diff --git a/mono/mini/cpu-arm64.md b/mono/mini/cpu-arm64.md index d57b6eeda2..7d9e40b226 100644 --- a/mono/mini/cpu-arm64.md +++ b/mono/mini/cpu-arm64.md @@ -414,8 +414,8 @@ arm64_cbzx: src1:i len:16 arm64_cbnzw: src1:i len:16 arm64_cbnzx: src1:i len:16 -atomic_add_new_i4: dest:i src1:i src2:i len:32 -atomic_add_new_i8: dest:i src1:i src2:i len:32 +atomic_add_i4: dest:i src1:i src2:i len:32 +atomic_add_i8: dest:i src1:i src2:i len:32 atomic_exchange_i4: dest:i src1:i src2:i len:32 atomic_exchange_i8: dest:i src1:i src2:i len:32 atomic_cas_i4: dest:i src1:i src2:i src3:i len:32 diff --git a/mono/mini/cpu-ia64.md b/mono/mini/cpu-ia64.md index 5d4fec0443..0bae69301b 100644 --- a/mono/mini/cpu-ia64.md +++ b/mono/mini/cpu-ia64.md @@ -153,14 +153,12 @@ endfinally: len:96 aot_const: dest:i len:48 tls_get: dest:i len:48 atomic_add_i4: src1:b src2:i dest:i len:48 -atomic_add_new_i4: src1:b src2:i dest:i len:48 -atomic_exchange_i4: src1:b src2:i dest:i len:48 atomic_add_i8: src1:b src2:i dest:i len:48 -atomic_add_new_i8: src1:b src2:i dest:i len:48 -atomic_add_imm_new_i4: src1:b dest:i len:48 -atomic_add_imm_new_i8: src1:b dest:i len:48 +atomic_exchange_i4: src1:b src2:i dest:i len:48 atomic_exchange_i8: src1:b src2:i dest:i len:48 memory_barrier: len:48 +atomic_add_imm_i4: src1:b dest:i len:48 +atomic_add_imm_i8: src1:b dest:i len:48 adc: dest:i src1:i src2:i len:48 addcc: dest:i src1:i src2:i len:48 subcc: dest:i src1:i src2:i len:48 diff --git a/mono/mini/cpu-ppc.md b/mono/mini/cpu-ppc.md index f21320cabd..44a482aad1 100644 --- a/mono/mini/cpu-ppc.md +++ b/mono/mini/cpu-ppc.md @@ -313,4 +313,5 @@ vcall2_membase: src1:b len:16 clob:c jump_table: dest:i len:8 -atomic_cas_i4: src1:b src2:i src3:i dest:i len:30 +atomic_add_i4: src1:b src2:i dest:i len:20 +atomic_cas_i4: src1:b src2:i src3:i dest:i len:38 diff --git a/mono/mini/cpu-ppc64.md b/mono/mini/cpu-ppc64.md index 4bf27a306e..114bc3cf3b 100644 --- a/mono/mini/cpu-ppc64.md +++ b/mono/mini/cpu-ppc64.md @@ -380,8 +380,7 @@ vcall2_membase: src1:b len:16 clob:c jump_table: dest:i len:20 -atomic_add_new_i4: src1:b src2:i dest:i len:20 -atomic_add_new_i8: src1:b src2:i dest:i len:20 - -atomic_cas_i4: src1:b src2:i src3:i dest:i len:30 -atomic_cas_i8: src1:b src2:i src3:i dest:i len:30 +atomic_add_i4: src1:b src2:i dest:i len:20 +atomic_add_i8: src1:b src2:i dest:i len:20 +atomic_cas_i4: src1:b src2:i src3:i dest:i len:38 +atomic_cas_i8: src1:b src2:i src3:i dest:i len:38 diff --git a/mono/mini/cpu-s390x.md b/mono/mini/cpu-s390x.md index be6a3509d1..b3dce352ec 100644 --- a/mono/mini/cpu-s390x.md +++ b/mono/mini/cpu-s390x.md @@ -56,8 +56,6 @@ and_imm: dest:i src1:i len:24 aot_const: dest:i len:8 atomic_add_i4: src1:b src2:i dest:i len:28 atomic_add_i8: src1:b src2:i dest:i len:30 -atomic_add_new_i4: src1:b src2:i dest:i len:28 -atomic_add_new_i8: src1:b src2:i dest:i len:30 atomic_exchange_i4: src1:b src2:i dest:i len:18 atomic_exchange_i8: src1:b src2:i dest:i len:24 br: len:6 @@ -118,11 +116,11 @@ float_conv_to_i2: dest:i src1:f len:50 float_conv_to_i4: dest:i src1:f len:50 float_conv_to_i8: dest:l src1:f len:50 float_conv_to_i: dest:i src1:f len:52 -float_conv_to_r4: dest:f src1:f len:4 -float_conv_to_u1: dest:i src1:f len:66 -float_conv_to_u2: dest:i src1:f len:66 -float_conv_to_u4: dest:i src1:f len:66 -float_conv_to_u8: dest:i src1:f len:66 +float_conv_to_r4: dest:f src1:f len:8 +float_conv_to_u1: dest:i src1:f len:72 +float_conv_to_u2: dest:i src1:f len:72 +float_conv_to_u4: dest:i src1:f len:72 +float_conv_to_u8: dest:i src1:f len:72 float_conv_to_u: dest:i src1:f len:36 float_div: dest:f src1:f src2:f len:6 float_div_un: dest:f src1:f src2:f len:6 @@ -135,27 +133,25 @@ float_sub: dest:f src1:f src2:f len:6 fmove: dest:f src1:f len:4 i8const: dest:i len:20 icompare: src1:i src2:i len:4 -icompare_imm: src1:i len:14 +icompare_imm: src1:i len:18 iconst: dest:i len:40 - - jmp: len:46 label: len:0 lcall: dest:o len:22 clob:c lcall_membase: dest:o src1:b len:12 clob:c lcall_reg: dest:o src1:i len:8 clob:c lcompare: src1:i src2:i len:4 -load_membase: dest:i src1:b len:26 +load_membase: dest:i src1:b len:30 loadi1_membase: dest:i src1:b len:40 -loadi2_membase: dest:i src1:b len:26 -loadi4_membase: dest:i src1:b len:26 -loadi8_membase: dest:i src1:b len:26 +loadi2_membase: dest:i src1:b len:30 +loadi4_membase: dest:i src1:b len:30 +loadi8_membase: dest:i src1:b len:30 loadr4_membase: dest:f src1:b len:28 loadr8_membase: dest:f src1:b len:28 -loadu1_membase: dest:i src1:b len:26 -loadu2_membase: dest:i src1:b len:26 +loadu1_membase: dest:i src1:b len:30 +loadu2_membase: dest:i src1:b len:30 loadu4_mem: dest:i len:8 -loadu4_membase: dest:i src1:b len:26 +loadu4_membase: dest:i src1:b len:30 localloc: dest:i src1:i len:106 memory_barrier: len: 10 move: dest:i src1:i len:4 @@ -177,7 +173,7 @@ s390_move: len:48 dest:b src1:b s390_setf4ret: dest:f src1:f len:4 sbb: dest:i src1:i src2:i len:6 sbb_imm: dest:i src1:i len:14 -seq_point: len:36 +seq_point: len:54 sext_i4: dest:i src1:i len:4 zext_i4: dest:i src1:i len:4 shl_imm: dest:i src1:i len:10 diff --git a/mono/mini/cpu-x86.md b/mono/mini/cpu-x86.md index b239ed0e76..ca87f2fba4 100644 --- a/mono/mini/cpu-x86.md +++ b/mono/mini/cpu-x86.md @@ -149,7 +149,7 @@ call_membase: dest:a src1:b len:16 nacl:18 clob:c iconst: dest:i len:5 r4const: dest:f len:15 r8const: dest:f len:16 -store_membase_imm: dest:b len:10 +store_membase_imm: dest:b len:11 store_membase_reg: dest:b src1:i len:7 storei1_membase_imm: dest:b len:10 storei1_membase_reg: dest:b src1:y len:7 @@ -301,12 +301,11 @@ bigmul: len:2 dest:l src1:a src2:i bigmul_un: len:2 dest:l src1:a src2:i sext_i1: dest:i src1:y len:3 sext_i2: dest:i src1:y len:3 -tls_get: dest:i len:20 +tls_get: dest:i len:32 tls_get_reg: dest:i src1:i len:20 tls_set: src1:i len:20 tls_set_reg: src1:i src2:i len:20 atomic_add_i4: src1:b src2:i dest:i len:16 -atomic_add_new_i4: src1:b src2:i dest:i len:16 atomic_exchange_i4: src1:b src2:i dest:a len:24 atomic_cas_i4: src1:b src2:i src3:a dest:a len:24 memory_barrier: len:16 diff --git a/mono/mini/debug-mini.c b/mono/mini/debug-mini.c index 3167fa5a47..742b6e93d9 100644 --- a/mono/mini/debug-mini.c +++ b/mono/mini/debug-mini.c @@ -689,7 +689,7 @@ mono_debug_print_vars (gpointer ip, gboolean only_arguments) * breakpoint when the method is JITed. */ -static GPtrArray *breakpoints = NULL; +static GPtrArray *breakpoints; static int mono_debugger_insert_breakpoint_full (MonoMethodDesc *desc) diff --git a/mono/mini/debugger-agent.c.REMOVED.git-id b/mono/mini/debugger-agent.c.REMOVED.git-id index 65f3e4e3e3..1313ef98f1 100644 --- a/mono/mini/debugger-agent.c.REMOVED.git-id +++ b/mono/mini/debugger-agent.c.REMOVED.git-id @@ -1 +1 @@ -d7a903adbeda21cbbb73300054996c178fe17857 \ No newline at end of file +d902826ab2807876bb0f589ad1b55726178a92ac \ No newline at end of file diff --git a/mono/mini/decompose.c b/mono/mini/decompose.c index e9536e9f52..07242d8613 100644 --- a/mono/mini/decompose.c +++ b/mono/mini/decompose.c @@ -13,6 +13,7 @@ #include "jit-icalls.h" #include +#include #ifndef DISABLE_JIT @@ -476,6 +477,43 @@ mono_decompose_opcode (MonoCompile *cfg, MonoInst *ins) break; #endif +#if SIZEOF_REGISTER == 8 + case OP_LREM_IMM: +#endif + case OP_IREM_IMM: { + int power = mono_is_power_of_two (ins->inst_imm); + if (ins->inst_imm == 1) { + ins->opcode = OP_ICONST; + MONO_INST_NULLIFY_SREGS (ins); + ins->inst_c0 = 0; + } else if ((ins->inst_imm > 0) && (ins->inst_imm < (1LL << 32)) && (power != -1)) { + gboolean is_long = ins->opcode == OP_LREM_IMM; + int compensator_reg = alloc_ireg (cfg); + int intermediate_reg; + + /* Based on gcc code */ + + /* Add compensation for negative numerators */ + + if (power > 1) { + intermediate_reg = compensator_reg; + MONO_EMIT_NEW_BIALU_IMM (cfg, is_long ? OP_LSHR_IMM : OP_SHR_IMM, intermediate_reg, ins->sreg1, is_long ? 63 : 31); + } else { + intermediate_reg = ins->sreg1; + } + + MONO_EMIT_NEW_BIALU_IMM (cfg, is_long ? OP_LSHR_UN_IMM : OP_SHR_UN_IMM, compensator_reg, intermediate_reg, (is_long ? 64 : 32) - power); + MONO_EMIT_NEW_BIALU (cfg, is_long ? OP_LADD : OP_IADD, ins->dreg, ins->sreg1, compensator_reg); + /* Compute remainder */ + MONO_EMIT_NEW_BIALU_IMM (cfg, is_long ? OP_LAND_IMM : OP_AND_IMM, ins->dreg, ins->dreg, (1 << power) - 1); + /* Remove compensation */ + MONO_EMIT_NEW_BIALU (cfg, is_long ? OP_LSUB : OP_ISUB, ins->dreg, ins->dreg, compensator_reg); + + NULLIFY_INS (ins); + } + break; + } + default: emulate = TRUE; break; @@ -1519,7 +1557,7 @@ mono_decompose_array_access_opts (MonoCompile *cfg) switch (ins->opcode) { case OP_LDLEN: NEW_LOAD_MEMBASE_FLAGS (cfg, dest, OP_LOADI4_MEMBASE, ins->dreg, ins->sreg1, - G_STRUCT_OFFSET (MonoArray, max_length), ins->flags | MONO_INST_INVARIANT_LOAD); + MONO_STRUCT_OFFSET (MonoArray, max_length), ins->flags | MONO_INST_INVARIANT_LOAD); MONO_ADD_INS (cfg->cbb, dest); break; case OP_BOUNDS_CHECK: @@ -1558,7 +1596,7 @@ mono_decompose_array_access_opts (MonoCompile *cfg) break; case OP_STRLEN: MONO_EMIT_NEW_LOAD_MEMBASE_OP_FLAGS (cfg, OP_LOADI4_MEMBASE, ins->dreg, - ins->sreg1, G_STRUCT_OFFSET (MonoString, length), ins->flags | MONO_INST_INVARIANT_LOAD); + ins->sreg1, MONO_STRUCT_OFFSET (MonoString, length), ins->flags | MONO_INST_INVARIANT_LOAD); break; default: break; diff --git a/mono/mini/driver.c b/mono/mini/driver.c index 5855b81ca9..3a67c37ecb 100644 --- a/mono/mini/driver.c +++ b/mono/mini/driver.c @@ -57,7 +57,7 @@ #include "version.h" #include "debugger-agent.h" -static FILE *mini_stats_fd = NULL; +static FILE *mini_stats_fd; static void mini_usage (void); @@ -1308,7 +1308,6 @@ static const char info[] = #ifdef HOST_WIN32 BOOL APIENTRY DllMain (HMODULE module_handle, DWORD reason, LPVOID reserved) { - int dummy; if (!mono_gc_dllmain (module_handle, reason, reserved)) return FALSE; @@ -1518,9 +1517,6 @@ mono_main (int argc, char* argv[]) if (g_getenv ("MONO_NO_SMP")) mono_set_use_smp (FALSE); - if (!g_thread_supported ()) - g_thread_init (NULL); - g_log_set_always_fatal (G_LOG_LEVEL_ERROR); g_log_set_fatal_mask (G_LOG_DOMAIN, G_LOG_LEVEL_ERROR); diff --git a/mono/mini/exceptions-amd64.c b/mono/mini/exceptions-amd64.c index bd9847c417..2a253a8cef 100644 --- a/mono/mini/exceptions-amd64.c +++ b/mono/mini/exceptions-amd64.c @@ -10,12 +10,6 @@ #include -#if _WIN32_WINNT < 0x0501 -/* Required for Vectored Exception Handling. */ -#undef _WIN32_WINNT -#define _WIN32_WINNT 0x0501 -#endif /* _WIN32_WINNT < 0x0501 */ - #include #include #include @@ -25,6 +19,7 @@ #endif #include +#include #include #include #include @@ -48,7 +43,6 @@ static MonoW32ExceptionHandler segv_handler; LPTOP_LEVEL_EXCEPTION_FILTER mono_old_win_toplevel_exception_filter; void *mono_win_vectored_exception_handle; -extern gboolean mono_win_chained_exception_needs_run; #define W32_SEH_HANDLE_EX(_ex) \ if (_ex##_handler) _ex##_handler(0, ep, sctx) @@ -76,8 +70,13 @@ static LONG CALLBACK seh_vectored_exception_handler(EXCEPTION_POINTERS* ep) CONTEXT* ctx; MonoContext* sctx; LONG res; + MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id); - mono_win_chained_exception_needs_run = FALSE; + /* If the thread is not managed by the runtime return early */ + if (!jit_tls) + return EXCEPTION_CONTINUE_SEARCH; + + jit_tls->mono_win_chained_exception_needs_run = FALSE; res = EXCEPTION_CONTINUE_EXECUTION; er = ep->ExceptionRecord; @@ -115,10 +114,11 @@ static LONG CALLBACK seh_vectored_exception_handler(EXCEPTION_POINTERS* ep) W32_SEH_HANDLE_EX(fpe); break; default: + jit_tls->mono_win_chained_exception_needs_run = TRUE; break; } - if (mono_win_chained_exception_needs_run) { + if (jit_tls->mono_win_chained_exception_needs_run) { /* Don't copy context back if we chained exception * as the handler may have modfied the EXCEPTION_POINTERS * directly. We don't pass sigcontext to chained handlers. @@ -208,21 +208,21 @@ mono_arch_get_restore_context (MonoTrampInfo **info, gboolean aot) amd64_mov_reg_reg (code, AMD64_R11, AMD64_ARG_REG1, 8); /* Restore all registers except %rip and %r11 */ - amd64_mov_reg_membase (code, AMD64_RAX, AMD64_R11, G_STRUCT_OFFSET (MonoContext, rax), 8); - amd64_mov_reg_membase (code, AMD64_RCX, AMD64_R11, G_STRUCT_OFFSET (MonoContext, rcx), 8); - amd64_mov_reg_membase (code, AMD64_RDX, AMD64_R11, G_STRUCT_OFFSET (MonoContext, rdx), 8); - amd64_mov_reg_membase (code, AMD64_RBX, AMD64_R11, G_STRUCT_OFFSET (MonoContext, rbx), 8); - amd64_mov_reg_membase (code, AMD64_RBP, AMD64_R11, G_STRUCT_OFFSET (MonoContext, rbp), 8); - amd64_mov_reg_membase (code, AMD64_RSI, AMD64_R11, G_STRUCT_OFFSET (MonoContext, rsi), 8); - amd64_mov_reg_membase (code, AMD64_RDI, AMD64_R11, G_STRUCT_OFFSET (MonoContext, rdi), 8); - //amd64_mov_reg_membase (code, AMD64_R8, AMD64_R11, G_STRUCT_OFFSET (MonoContext, r8), 8); - //amd64_mov_reg_membase (code, AMD64_R9, AMD64_R11, G_STRUCT_OFFSET (MonoContext, r9), 8); - //amd64_mov_reg_membase (code, AMD64_R10, AMD64_R11, G_STRUCT_OFFSET (MonoContext, r10), 8); - amd64_mov_reg_membase (code, AMD64_R12, AMD64_R11, G_STRUCT_OFFSET (MonoContext, r12), 8); - amd64_mov_reg_membase (code, AMD64_R13, AMD64_R11, G_STRUCT_OFFSET (MonoContext, r13), 8); - amd64_mov_reg_membase (code, AMD64_R14, AMD64_R11, G_STRUCT_OFFSET (MonoContext, r14), 8); + amd64_mov_reg_membase (code, AMD64_RAX, AMD64_R11, MONO_STRUCT_OFFSET (MonoContext, rax), 8); + amd64_mov_reg_membase (code, AMD64_RCX, AMD64_R11, MONO_STRUCT_OFFSET (MonoContext, rcx), 8); + amd64_mov_reg_membase (code, AMD64_RDX, AMD64_R11, MONO_STRUCT_OFFSET (MonoContext, rdx), 8); + amd64_mov_reg_membase (code, AMD64_RBX, AMD64_R11, MONO_STRUCT_OFFSET (MonoContext, rbx), 8); + amd64_mov_reg_membase (code, AMD64_RBP, AMD64_R11, MONO_STRUCT_OFFSET (MonoContext, rbp), 8); + amd64_mov_reg_membase (code, AMD64_RSI, AMD64_R11, MONO_STRUCT_OFFSET (MonoContext, rsi), 8); + amd64_mov_reg_membase (code, AMD64_RDI, AMD64_R11, MONO_STRUCT_OFFSET (MonoContext, rdi), 8); + //amd64_mov_reg_membase (code, AMD64_R8, AMD64_R11, MONO_STRUCT_OFFSET (MonoContext, r8), 8); + //amd64_mov_reg_membase (code, AMD64_R9, AMD64_R11, MONO_STRUCT_OFFSET (MonoContext, r9), 8); + //amd64_mov_reg_membase (code, AMD64_R10, AMD64_R11, MONO_STRUCT_OFFSET (MonoContext, r10), 8); + amd64_mov_reg_membase (code, AMD64_R12, AMD64_R11, MONO_STRUCT_OFFSET (MonoContext, r12), 8); + amd64_mov_reg_membase (code, AMD64_R13, AMD64_R11, MONO_STRUCT_OFFSET (MonoContext, r13), 8); + amd64_mov_reg_membase (code, AMD64_R14, AMD64_R11, MONO_STRUCT_OFFSET (MonoContext, r14), 8); #if !defined(__native_client_codegen__) - amd64_mov_reg_membase (code, AMD64_R15, AMD64_R11, G_STRUCT_OFFSET (MonoContext, r15), 8); + amd64_mov_reg_membase (code, AMD64_R15, AMD64_R11, MONO_STRUCT_OFFSET (MonoContext, r15), 8); #endif /* @@ -233,8 +233,8 @@ mono_arch_get_restore_context (MonoTrampInfo **info, gboolean aot) * size. Hence the stack pointer can be restored only after * we have finished loading everything from the context. */ - amd64_mov_reg_membase (code, AMD64_R8, AMD64_R11, G_STRUCT_OFFSET (MonoContext, rsp), 8); - amd64_mov_reg_membase (code, AMD64_R11, AMD64_R11, G_STRUCT_OFFSET (MonoContext, rip), 8); + amd64_mov_reg_membase (code, AMD64_R8, AMD64_R11, MONO_STRUCT_OFFSET (MonoContext, rsp), 8); + amd64_mov_reg_membase (code, AMD64_R11, AMD64_R11, MONO_STRUCT_OFFSET (MonoContext, rip), 8); amd64_mov_reg_reg (code, AMD64_RSP, AMD64_R8, 8); /* jump to the saved IP */ @@ -294,18 +294,18 @@ mono_arch_get_call_filter (MonoTrampInfo **info, gboolean aot) amd64_alu_reg_imm (code, X86_SUB, AMD64_RSP, 8); /* set new EBP */ - amd64_mov_reg_membase (code, AMD64_RBP, AMD64_ARG_REG1, G_STRUCT_OFFSET (MonoContext, rbp), 8); + amd64_mov_reg_membase (code, AMD64_RBP, AMD64_ARG_REG1, MONO_STRUCT_OFFSET (MonoContext, rbp), 8); /* load callee saved regs */ - amd64_mov_reg_membase (code, AMD64_RBX, AMD64_ARG_REG1, G_STRUCT_OFFSET (MonoContext, rbx), 8); - amd64_mov_reg_membase (code, AMD64_R12, AMD64_ARG_REG1, G_STRUCT_OFFSET (MonoContext, r12), 8); - amd64_mov_reg_membase (code, AMD64_R13, AMD64_ARG_REG1, G_STRUCT_OFFSET (MonoContext, r13), 8); - amd64_mov_reg_membase (code, AMD64_R14, AMD64_ARG_REG1, G_STRUCT_OFFSET (MonoContext, r14), 8); + amd64_mov_reg_membase (code, AMD64_RBX, AMD64_ARG_REG1, MONO_STRUCT_OFFSET (MonoContext, rbx), 8); + amd64_mov_reg_membase (code, AMD64_R12, AMD64_ARG_REG1, MONO_STRUCT_OFFSET (MonoContext, r12), 8); + amd64_mov_reg_membase (code, AMD64_R13, AMD64_ARG_REG1, MONO_STRUCT_OFFSET (MonoContext, r13), 8); + amd64_mov_reg_membase (code, AMD64_R14, AMD64_ARG_REG1, MONO_STRUCT_OFFSET (MonoContext, r14), 8); #if !defined(__native_client_codegen__) - amd64_mov_reg_membase (code, AMD64_R15, AMD64_ARG_REG1, G_STRUCT_OFFSET (MonoContext, r15), 8); + amd64_mov_reg_membase (code, AMD64_R15, AMD64_ARG_REG1, MONO_STRUCT_OFFSET (MonoContext, r15), 8); #endif #ifdef TARGET_WIN32 - amd64_mov_reg_membase (code, AMD64_RDI, AMD64_ARG_REG1, G_STRUCT_OFFSET (MonoContext, rdi), 8); - amd64_mov_reg_membase (code, AMD64_RSI, AMD64_ARG_REG1, G_STRUCT_OFFSET (MonoContext, rsi), 8); + amd64_mov_reg_membase (code, AMD64_RDI, AMD64_ARG_REG1, MONO_STRUCT_OFFSET (MonoContext, rdi), 8); + amd64_mov_reg_membase (code, AMD64_RSI, AMD64_ARG_REG1, MONO_STRUCT_OFFSET (MonoContext, rsi), 8); #endif /* call the handler */ @@ -591,6 +591,7 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, guint8 *cfa; guint32 unwind_info_len; guint8 *unwind_info; + guint8 *epilog; frame->type = FRAME_TYPE_MANAGED; @@ -603,6 +604,7 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, printf ("%s %p %p\n", ji->d.method->name, ji->code_start, ip); mono_print_unwind_info (unwind_info, unwind_info_len); */ + epilog = (guint8*)ji->code_start + ji->code_size - (ji->unwind_info >> 16); regs [AMD64_RAX] = new_ctx->rax; regs [AMD64_RBX] = new_ctx->rbx; @@ -620,7 +622,7 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, mono_unwind_frame (unwind_info, unwind_info_len, ji->code_start, (guint8*)ji->code_start + ji->code_size, - ip, regs, MONO_MAX_IREGS + 1, + ip, &epilog, regs, MONO_MAX_IREGS + 1, save_locations, MONO_MAX_IREGS, &cfa); new_ctx->rax = regs [AMD64_RAX]; @@ -643,11 +645,6 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, /* Adjust IP */ new_ctx->rip --; - if (*lmf && ((*lmf) != jit_tls->first_lmf) && (MONO_CONTEXT_GET_SP (ctx) >= (gpointer)(*lmf)->rsp)) { - /* remove any unused lmf */ - *lmf = (gpointer)(((guint64)(*lmf)->previous_lmf) & ~7); - } - #ifndef MONO_AMD64_NO_PUSHES /* Pop arguments off the stack */ if (ji->has_arch_eh_info) @@ -1405,36 +1402,25 @@ mono_tasklets_arch_restore (void) amd64_mov_reg_reg (code, cont_reg, MONO_AMD64_ARG_REG1, 8); amd64_mov_reg_reg (code, AMD64_RAX, MONO_AMD64_ARG_REG2, 8); /* setup the copy of the stack */ - amd64_mov_reg_membase (code, AMD64_RCX, cont_reg, G_STRUCT_OFFSET (MonoContinuation, stack_used_size), sizeof (int)); + amd64_mov_reg_membase (code, AMD64_RCX, cont_reg, MONO_STRUCT_OFFSET (MonoContinuation, stack_used_size), sizeof (int)); amd64_shift_reg_imm (code, X86_SHR, AMD64_RCX, 3); x86_cld (code); - amd64_mov_reg_membase (code, AMD64_RSI, cont_reg, G_STRUCT_OFFSET (MonoContinuation, saved_stack), sizeof (gpointer)); - amd64_mov_reg_membase (code, AMD64_RDI, cont_reg, G_STRUCT_OFFSET (MonoContinuation, return_sp), sizeof (gpointer)); + amd64_mov_reg_membase (code, AMD64_RSI, cont_reg, MONO_STRUCT_OFFSET (MonoContinuation, saved_stack), sizeof (gpointer)); + amd64_mov_reg_membase (code, AMD64_RDI, cont_reg, MONO_STRUCT_OFFSET (MonoContinuation, return_sp), sizeof (gpointer)); amd64_prefix (code, X86_REP_PREFIX); amd64_movsl (code); /* now restore the registers from the LMF */ - amd64_mov_reg_membase (code, AMD64_RCX, cont_reg, G_STRUCT_OFFSET (MonoContinuation, lmf), 8); - amd64_mov_reg_membase (code, AMD64_RBX, AMD64_RCX, G_STRUCT_OFFSET (MonoLMF, rbx), 8); - amd64_mov_reg_membase (code, AMD64_RBP, AMD64_RCX, G_STRUCT_OFFSET (MonoLMF, rbp), 8); - amd64_mov_reg_membase (code, AMD64_R12, AMD64_RCX, G_STRUCT_OFFSET (MonoLMF, r12), 8); - amd64_mov_reg_membase (code, AMD64_R13, AMD64_RCX, G_STRUCT_OFFSET (MonoLMF, r13), 8); - amd64_mov_reg_membase (code, AMD64_R14, AMD64_RCX, G_STRUCT_OFFSET (MonoLMF, r14), 8); -#if !defined(__native_client_codegen__) - amd64_mov_reg_membase (code, AMD64_R15, AMD64_RCX, G_STRUCT_OFFSET (MonoLMF, r15), 8); -#endif -#ifdef TARGET_WIN32 - amd64_mov_reg_membase (code, AMD64_RDI, AMD64_RCX, G_STRUCT_OFFSET (MonoLMF, rdi), 8); - amd64_mov_reg_membase (code, AMD64_RSI, AMD64_RCX, G_STRUCT_OFFSET (MonoLMF, rsi), 8); -#endif - amd64_mov_reg_membase (code, AMD64_RSP, AMD64_RCX, G_STRUCT_OFFSET (MonoLMF, rsp), 8); + NOT_IMPLEMENTED; + amd64_mov_reg_membase (code, AMD64_RCX, cont_reg, MONO_STRUCT_OFFSET (MonoContinuation, lmf), 8); + amd64_mov_reg_membase (code, AMD64_RSP, AMD64_RCX, MONO_STRUCT_OFFSET (MonoLMF, rsp), 8); /* restore the lmf chain */ /*x86_mov_reg_membase (code, X86_ECX, X86_ESP, 12, 4); x86_mov_membase_reg (code, X86_ECX, 0, X86_EDX, 4);*/ /* state is already in rax */ - amd64_jump_membase (code, cont_reg, G_STRUCT_OFFSET (MonoContinuation, return_ip)); + amd64_jump_membase (code, cont_reg, MONO_STRUCT_OFFSET (MonoContinuation, return_ip)); g_assert ((code - start) <= kMaxCodeSize); nacl_global_codeman_validate(&start, kMaxCodeSize, &code); diff --git a/mono/mini/exceptions-arm.c b/mono/mini/exceptions-arm.c index 1e8d571de0..d7fd3318f3 100644 --- a/mono/mini/exceptions-arm.c +++ b/mono/mini/exceptions-arm.c @@ -25,6 +25,7 @@ #include #include +#include #include #include #include @@ -61,16 +62,16 @@ mono_arch_get_restore_context (MonoTrampInfo **info, gboolean aot) ctx_reg = ARMREG_R0; if (!mono_arch_is_soft_float ()) { - ARM_ADD_REG_IMM8 (code, ARMREG_IP, ctx_reg, G_STRUCT_OFFSET (MonoContext, fregs)); + ARM_ADD_REG_IMM8 (code, ARMREG_IP, ctx_reg, MONO_STRUCT_OFFSET (MonoContext, fregs)); ARM_FLDMD (code, ARM_VFP_D0, 16, ARMREG_IP); } /* move pc to PC */ - ARM_LDR_IMM (code, ARMREG_IP, ctx_reg, G_STRUCT_OFFSET (MonoContext, pc)); - ARM_STR_IMM (code, ARMREG_IP, ctx_reg, G_STRUCT_OFFSET (MonoContext, regs) + (ARMREG_PC * sizeof (mgreg_t))); + ARM_LDR_IMM (code, ARMREG_IP, ctx_reg, MONO_STRUCT_OFFSET (MonoContext, pc)); + ARM_STR_IMM (code, ARMREG_IP, ctx_reg, MONO_STRUCT_OFFSET (MonoContext, regs) + (ARMREG_PC * sizeof (mgreg_t))); /* restore everything */ - ARM_ADD_REG_IMM8 (code, ARMREG_IP, ctx_reg, G_STRUCT_OFFSET(MonoContext, regs)); + ARM_ADD_REG_IMM8 (code, ARMREG_IP, ctx_reg, MONO_STRUCT_OFFSET(MonoContext, regs)); ARM_LDM (code, ARMREG_IP, 0xffff); /* never reached */ @@ -111,8 +112,8 @@ mono_arch_get_call_filter (MonoTrampInfo **info, gboolean aot) /* restore all the regs from ctx (in r0), but not sp, the stack pointer */ ctx_reg = ARMREG_R0; - ARM_LDR_IMM (code, ARMREG_IP, ctx_reg, G_STRUCT_OFFSET (MonoContext, pc)); - ARM_ADD_REG_IMM8 (code, ARMREG_LR, ctx_reg, G_STRUCT_OFFSET(MonoContext, regs) + (MONO_ARM_FIRST_SAVED_REG * sizeof (mgreg_t))); + ARM_LDR_IMM (code, ARMREG_IP, ctx_reg, MONO_STRUCT_OFFSET (MonoContext, pc)); + ARM_ADD_REG_IMM8 (code, ARMREG_LR, ctx_reg, MONO_STRUCT_OFFSET(MonoContext, regs) + (MONO_ARM_FIRST_SAVED_REG * sizeof (mgreg_t))); ARM_LDM (code, ARMREG_LR, MONO_ARM_REGSAVE_MASK); /* call handler at eip (r1) and set the first arg with the exception (r2) */ ARM_MOV_REG_REG (code, ARMREG_R0, ARMREG_R2); @@ -423,7 +424,7 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, mono_unwind_frame (unwind_info, unwind_info_len, ji->code_start, (guint8*)ji->code_start + ji->code_size, - ip, regs, MONO_MAX_IREGS + 8, + ip, NULL, regs, MONO_MAX_IREGS + 8, save_locations, MONO_MAX_IREGS, &cfa); for (i = 0; i < 16; ++i) @@ -435,11 +436,6 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, new_ctx->fregs [8 + i] = regs [MONO_MAX_IREGS + i]; #endif - if (*lmf && (MONO_CONTEXT_GET_SP (ctx) >= (gpointer)(*lmf)->sp)) { - /* remove any unused lmf */ - *lmf = (gpointer)(((gsize)(*lmf)->previous_lmf) & ~3); - } - /* Clear thumb bit */ new_ctx->pc &= ~1; diff --git a/mono/mini/exceptions-mips.c b/mono/mini/exceptions-mips.c index abfe26ce30..3419714504 100644 --- a/mono/mini/exceptions-mips.c +++ b/mono/mini/exceptions-mips.c @@ -413,7 +413,7 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, mono_unwind_frame (unwind_info, unwind_info_len, ji->code_start, (guint8*)ji->code_start + ji->code_size, - ip, regs, MONO_MAX_IREGS, + ip, NULL, regs, MONO_MAX_IREGS, save_locations, MONO_MAX_IREGS, &cfa); for (i = 0; i < MONO_MAX_IREGS; ++i) @@ -421,11 +421,6 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, new_ctx->sc_pc = regs [mips_ra]; new_ctx->sc_regs [mips_sp] = (mgreg_t)cfa; - if (*lmf && (MONO_CONTEXT_GET_SP (ctx) >= (gpointer)(*lmf)->iregs [mips_sp])) { - /* remove any unused lmf */ - *lmf = (gpointer)(((gsize)(*lmf)->previous_lmf) & ~3); - } - /* we substract 8, so that the IP points into the call instruction */ MONO_CONTEXT_SET_IP (new_ctx, new_ctx->sc_pc - 8); diff --git a/mono/mini/exceptions-ppc.c b/mono/mini/exceptions-ppc.c index ca243dfc6e..6c3878e97b 100644 --- a/mono/mini/exceptions-ppc.c +++ b/mono/mini/exceptions-ppc.c @@ -550,7 +550,7 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, mono_unwind_frame (unwind_info, unwind_info_len, ji->code_start, (guint8*)ji->code_start + ji->code_size, - ip, regs, ppc_lr + 1, + ip, NULL, regs, ppc_lr + 1, save_locations, MONO_MAX_IREGS, &cfa); /* we substract 4, so that the IP points into the call instruction */ @@ -561,11 +561,6 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, new_ctx->regs [i] = regs [ppc_r13 + i]; } - if (*lmf && (MONO_CONTEXT_GET_SP (ctx) >= (gpointer)(*lmf)->ebp)) { - /* remove any unused lmf */ - *lmf = (*lmf)->previous_lmf; - } - return TRUE; } else if (*lmf) { diff --git a/mono/mini/exceptions-s390x.c b/mono/mini/exceptions-s390x.c index 38c4a5b987..74c8a0f37a 100644 --- a/mono/mini/exceptions-s390x.c +++ b/mono/mini/exceptions-s390x.c @@ -474,27 +474,17 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, unwind_info = mono_jinfo_get_unwind_info (ji, &unwind_info_len); - if (*lmf && ((*lmf) != jit_tls->first_lmf) && - (MONO_CONTEXT_GET_SP (ctx) >= (gpointer)(*lmf)->ebp)) { - /* remove any unused lmf */ - *lmf = (*lmf)->previous_lmf; - } - address = (char *)ip - (char *)ji->code_start; memcpy(®s, &ctx->uc_mcontext.gregs, sizeof(regs)); mono_unwind_frame (unwind_info, unwind_info_len, ji->code_start, - (guint8 *) ji->code_start + ji->code_size, - ip, regs, 16, save_locations, - MONO_MAX_IREGS, &cfa); + (guint8 *) ji->code_start + ji->code_size, + ip, NULL, regs, 16, save_locations, + MONO_MAX_IREGS, &cfa); memcpy (&new_ctx->uc_mcontext.gregs, ®s, sizeof(regs)); MONO_CONTEXT_SET_IP(new_ctx, regs[14] - 2); MONO_CONTEXT_SET_BP(new_ctx, cfa); - if (*lmf && (MONO_CONTEXT_GET_SP (ctx) >= (gpointer)(*lmf)->ebp)) { - /* remove any unused lmf */ - *lmf = (*lmf)->previous_lmf; - } return TRUE; } else if (*lmf) { diff --git a/mono/mini/exceptions-sparc.c b/mono/mini/exceptions-sparc.c index 20d2f0face..3ebe2e7a29 100644 --- a/mono/mini/exceptions-sparc.c +++ b/mono/mini/exceptions-sparc.c @@ -350,11 +350,6 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, if (ji != NULL) { frame->type = FRAME_TYPE_MANAGED; - if (*lmf && (MONO_CONTEXT_GET_BP (ctx) >= (gpointer)(*lmf)->ebp)) { - /* remove any unused lmf */ - *lmf = (*lmf)->previous_lmf; - } - /* Restore ip and sp from the saved register window */ window = MONO_SPARC_WINDOW_ADDR (ctx->sp); new_ctx->ip = window [sparc_i7 - 16]; diff --git a/mono/mini/exceptions-x86.c b/mono/mini/exceptions-x86.c index aa10aaad59..d335d7ea5c 100644 --- a/mono/mini/exceptions-x86.c +++ b/mono/mini/exceptions-x86.c @@ -9,16 +9,11 @@ #include -#if _WIN32_WINNT < 0x0501 -/* Required for Vectored Exception Handling. */ -#undef _WIN32_WINNT -#define _WIN32_WINNT 0x0501 -#endif /* _WIN32_WINNT < 0x0501 */ - #include #include #include +#include #include #include #include @@ -47,7 +42,6 @@ static MonoW32ExceptionHandler segv_handler; LPTOP_LEVEL_EXCEPTION_FILTER mono_old_win_toplevel_exception_filter; gpointer mono_win_vectored_exception_handle; -extern gboolean mono_win_chained_exception_needs_run; extern int (*gUnhandledExceptionHandler)(EXCEPTION_POINTERS*); #ifndef PROCESS_CALLBACK_FILTER_ENABLED @@ -95,13 +89,14 @@ mono_win32_get_handle_stackoverflow (void) x86_mov_reg_reg (code, X86_EDI, X86_ESP, 4); /* use the new freed stack from sigcontext */ + /* XXX replace usage of struct sigcontext with MonoContext so we can use MONO_STRUCT_OFFSET */ x86_mov_reg_membase (code, X86_ESP, X86_EBX, G_STRUCT_OFFSET (struct sigcontext, esp), 4); /* get the current domain */ x86_call_code (code, mono_domain_get); /* get stack overflow exception from domain object */ - x86_mov_reg_membase (code, X86_EAX, X86_EAX, G_STRUCT_OFFSET (MonoDomain, stack_overflow_ex), 4); + x86_mov_reg_membase (code, X86_EAX, X86_EAX, MONO_STRUCT_OFFSET (MonoDomain, stack_overflow_ex), 4); /* call mono_arch_handle_exception (sctx, stack_overflow_exception_obj) */ x86_push_reg (code, X86_EAX); @@ -196,8 +191,13 @@ LONG CALLBACK seh_vectored_exception_handler(EXCEPTION_POINTERS* ep) CONTEXT* ctx; struct sigcontext* sctx; LONG res; + MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id); - mono_win_chained_exception_needs_run = FALSE; + /* If the thread is not managed by the runtime return early */ + if (!jit_tls) + return EXCEPTION_CONTINUE_SEARCH; + + jit_tls->mono_win_chained_exception_needs_run = FALSE; res = EXCEPTION_CONTINUE_EXECUTION; er = ep->ExceptionRecord; @@ -234,10 +234,11 @@ LONG CALLBACK seh_vectored_exception_handler(EXCEPTION_POINTERS* ep) W32_SEH_HANDLE_EX(fpe); break; default: + jit_tls->mono_win_chained_exception_needs_run = TRUE; break; } - if (mono_win_chained_exception_needs_run) { + if (jit_tls->mono_win_chained_exception_needs_run) { /* Don't copy context back if we chained exception * as the handler may have modfied the EXCEPTION_POINTERS * directly. We don't pass sigcontext to chained handlers. @@ -321,16 +322,16 @@ mono_arch_get_restore_context (MonoTrampInfo **info, gboolean aot) x86_mov_reg_membase (code, X86_EAX, X86_ESP, 4, 4); /* restore EBX */ - x86_mov_reg_membase (code, X86_EBX, X86_EAX, G_STRUCT_OFFSET (MonoContext, ebx), 4); + x86_mov_reg_membase (code, X86_EBX, X86_EAX, MONO_STRUCT_OFFSET (MonoContext, ebx), 4); /* restore EDI */ - x86_mov_reg_membase (code, X86_EDI, X86_EAX, G_STRUCT_OFFSET (MonoContext, edi), 4); + x86_mov_reg_membase (code, X86_EDI, X86_EAX, MONO_STRUCT_OFFSET (MonoContext, edi), 4); /* restore ESI */ - x86_mov_reg_membase (code, X86_ESI, X86_EAX, G_STRUCT_OFFSET (MonoContext, esi), 4); + x86_mov_reg_membase (code, X86_ESI, X86_EAX, MONO_STRUCT_OFFSET (MonoContext, esi), 4); /* restore EDX */ - x86_mov_reg_membase (code, X86_EDX, X86_EAX, G_STRUCT_OFFSET (MonoContext, edx), 4); + x86_mov_reg_membase (code, X86_EDX, X86_EAX, MONO_STRUCT_OFFSET (MonoContext, edx), 4); /* * The context resides on the stack, in the stack frame of the @@ -342,24 +343,24 @@ mono_arch_get_restore_context (MonoTrampInfo **info, gboolean aot) */ /* load ESP into EBP */ - x86_mov_reg_membase (code, X86_EBP, X86_EAX, G_STRUCT_OFFSET (MonoContext, esp), 4); + x86_mov_reg_membase (code, X86_EBP, X86_EAX, MONO_STRUCT_OFFSET (MonoContext, esp), 4); /* load return address into ECX */ - x86_mov_reg_membase (code, X86_ECX, X86_EAX, G_STRUCT_OFFSET (MonoContext, eip), 4); + x86_mov_reg_membase (code, X86_ECX, X86_EAX, MONO_STRUCT_OFFSET (MonoContext, eip), 4); /* save the return addr to the restored stack - 4 */ x86_mov_membase_reg (code, X86_EBP, -4, X86_ECX, 4); /* load EBP into ECX */ - x86_mov_reg_membase (code, X86_ECX, X86_EAX, G_STRUCT_OFFSET (MonoContext, ebp), 4); + x86_mov_reg_membase (code, X86_ECX, X86_EAX, MONO_STRUCT_OFFSET (MonoContext, ebp), 4); /* save EBP to the restored stack - 8 */ x86_mov_membase_reg (code, X86_EBP, -8, X86_ECX, 4); /* load EAX into ECX */ - x86_mov_reg_membase (code, X86_ECX, X86_EAX, G_STRUCT_OFFSET (MonoContext, eax), 4); + x86_mov_reg_membase (code, X86_ECX, X86_EAX, MONO_STRUCT_OFFSET (MonoContext, eax), 4); /* save EAX to the restored stack - 12 */ x86_mov_membase_reg (code, X86_EBP, -12, X86_ECX, 4); /* restore ECX */ - x86_mov_reg_membase (code, X86_ECX, X86_EAX, G_STRUCT_OFFSET (MonoContext, ecx), 4); + x86_mov_reg_membase (code, X86_ECX, X86_EAX, MONO_STRUCT_OFFSET (MonoContext, ecx), 4); /* restore ESP - 12 */ x86_lea_membase (code, X86_ESP, X86_EBP, -12); @@ -418,11 +419,11 @@ mono_arch_get_call_filter (MonoTrampInfo **info, gboolean aot) x86_push_reg (code, X86_EBP); /* set new EBP */ - x86_mov_reg_membase (code, X86_EBP, X86_EAX, G_STRUCT_OFFSET (MonoContext, ebp), 4); + x86_mov_reg_membase (code, X86_EBP, X86_EAX, MONO_STRUCT_OFFSET (MonoContext, ebp), 4); /* restore registers used by global register allocation (EBX & ESI) */ - x86_mov_reg_membase (code, X86_EBX, X86_EAX, G_STRUCT_OFFSET (MonoContext, ebx), 4); - x86_mov_reg_membase (code, X86_ESI, X86_EAX, G_STRUCT_OFFSET (MonoContext, esi), 4); - x86_mov_reg_membase (code, X86_EDI, X86_EAX, G_STRUCT_OFFSET (MonoContext, edi), 4); + x86_mov_reg_membase (code, X86_EBX, X86_EAX, MONO_STRUCT_OFFSET (MonoContext, ebx), 4); + x86_mov_reg_membase (code, X86_ESI, X86_EAX, MONO_STRUCT_OFFSET (MonoContext, esi), 4); + x86_mov_reg_membase (code, X86_EDI, X86_EAX, MONO_STRUCT_OFFSET (MonoContext, edi), 4); /* align stack and save ESP */ x86_mov_reg_reg (code, X86_EDX, X86_ESP, 4); @@ -815,7 +816,7 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, mono_unwind_frame (unwind_info, unwind_info_len, ji->code_start, (guint8*)ji->code_start + ji->code_size, - ip, regs, MONO_MAX_IREGS + 1, + ip, NULL, regs, MONO_MAX_IREGS + 1, save_locations, MONO_MAX_IREGS, &cfa); new_ctx->eax = regs [X86_EAX]; @@ -834,21 +835,8 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, /* Adjust IP */ new_ctx->eip --; - if (*lmf && ((*lmf) != jit_tls->first_lmf)) { - gboolean is_tramp = ((guint32)((*lmf)->previous_lmf) & 1); - gpointer lmf_esp; - - if (is_tramp) - /* lmf->esp is only set in trampoline frames */ - lmf_esp = (gpointer)(*lmf)->esp; - else - /* In non-trampoline frames, ebp is the frame pointer */ - lmf_esp = (gpointer)(*lmf)->ebp; - if (MONO_CONTEXT_GET_SP (ctx) >= lmf_esp) - /* remove any unused lmf */ - *lmf = (gpointer)(((gsize)(*lmf)->previous_lmf) & ~3); - } +#ifndef MONO_X86_NO_PUSHES /* Pop arguments off the stack */ if (ji->has_arch_eh_info) { int stack_size; @@ -868,6 +856,7 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, #endif } } +#endif return TRUE; } else if (*lmf) { @@ -1219,26 +1208,26 @@ mono_tasklets_arch_restore (void) x86_mov_reg_membase (code, X86_EAX, X86_ESP, 8, 4); /* setup the copy of the stack */ - x86_mov_reg_membase (code, X86_ECX, X86_EDX, G_STRUCT_OFFSET (MonoContinuation, stack_used_size), 4); + x86_mov_reg_membase (code, X86_ECX, X86_EDX, MONO_STRUCT_OFFSET (MonoContinuation, stack_used_size), 4); x86_shift_reg_imm (code, X86_SHR, X86_ECX, 2); x86_cld (code); - x86_mov_reg_membase (code, X86_ESI, X86_EDX, G_STRUCT_OFFSET (MonoContinuation, saved_stack), 4); - x86_mov_reg_membase (code, X86_EDI, X86_EDX, G_STRUCT_OFFSET (MonoContinuation, return_sp), 4); + x86_mov_reg_membase (code, X86_ESI, X86_EDX, MONO_STRUCT_OFFSET (MonoContinuation, saved_stack), 4); + x86_mov_reg_membase (code, X86_EDI, X86_EDX, MONO_STRUCT_OFFSET (MonoContinuation, return_sp), 4); x86_prefix (code, X86_REP_PREFIX); x86_movsl (code); /* now restore the registers from the LMF */ - x86_mov_reg_membase (code, X86_ECX, X86_EDX, G_STRUCT_OFFSET (MonoContinuation, lmf), 4); - x86_mov_reg_membase (code, X86_EBX, X86_ECX, G_STRUCT_OFFSET (MonoLMF, ebx), 4); - x86_mov_reg_membase (code, X86_EBP, X86_ECX, G_STRUCT_OFFSET (MonoLMF, ebp), 4); - x86_mov_reg_membase (code, X86_ESI, X86_ECX, G_STRUCT_OFFSET (MonoLMF, esi), 4); - x86_mov_reg_membase (code, X86_EDI, X86_ECX, G_STRUCT_OFFSET (MonoLMF, edi), 4); + x86_mov_reg_membase (code, X86_ECX, X86_EDX, MONO_STRUCT_OFFSET (MonoContinuation, lmf), 4); + x86_mov_reg_membase (code, X86_EBX, X86_ECX, MONO_STRUCT_OFFSET (MonoLMF, ebx), 4); + x86_mov_reg_membase (code, X86_EBP, X86_ECX, MONO_STRUCT_OFFSET (MonoLMF, ebp), 4); + x86_mov_reg_membase (code, X86_ESI, X86_ECX, MONO_STRUCT_OFFSET (MonoLMF, esi), 4); + x86_mov_reg_membase (code, X86_EDI, X86_ECX, MONO_STRUCT_OFFSET (MonoLMF, edi), 4); /* restore the lmf chain */ /*x86_mov_reg_membase (code, X86_ECX, X86_ESP, 12, 4); x86_mov_membase_reg (code, X86_ECX, 0, X86_EDX, 4);*/ - x86_jump_membase (code, X86_EDX, G_STRUCT_OFFSET (MonoContinuation, return_ip)); + x86_jump_membase (code, X86_EDX, MONO_STRUCT_OFFSET (MonoContinuation, return_ip)); g_assert ((code - start) <= 48); saved = start; return (MonoContinuationRestore)saved; diff --git a/mono/mini/gshared.cs b/mono/mini/gshared.cs index fe65826ce4..342dec7060 100644 --- a/mono/mini/gshared.cs +++ b/mono/mini/gshared.cs @@ -40,6 +40,12 @@ class GFoo3 { // The tests use arrays to pass/receive values to keep the calling convention of the methods stable, which is a current limitation of the runtime support for gsharedvt. // +// +// Interfaces are used to prevent the AOT compiler from discovering instantiations, thus forcing the usage of the gsharedvt +// versions of methods. Unused vtype type arguments are used to test gsharedvt methods with ref type arguments, i.e. +// when calling foo as foo, the gsharedvt version is used, but with a ref type argument. +// + // FIXME: Add mixed ref/noref tests, i.e. Dictionary #if MOBILE @@ -221,6 +227,9 @@ public class Tests res = iface.Unbox (AnEnum.One, 0, AnEnum.Two); if (res != AnEnum.Two) return 2; + int res2 = iface.Unbox (0, AnEnum.One, AnEnum.Two); + if (res2 != 1) + return 3; return 0; } @@ -1019,6 +1028,7 @@ public class Tests return action(null, state); } + [Category ("!FULLAOT")] public static int test_0_delegate_wrappers () { Func, Pair> del1 = delegate (object o, Pair p) { return p; }; Func, Pair> del2 = delegate (object o, Pair p) { return p; }; @@ -1459,6 +1469,42 @@ public class Tests var c = new ReadOnlyCollection (arr); return c.Contains (AnEnum.Two) == false ? 0 : 1; } + + interface IFaceCallPatching { + bool caller (); + } + + class CallPatching2 { + T t; + public object o; + + [MethodImplAttribute (MethodImplOptions.NoInlining)] + public bool callee () { + return (string)o == "ABC"; + } + } + + class CallPatching : IFaceCallPatching { + public bool caller () { + var c = new CallPatching2 (); + c.o = "ABC"; + return c.callee (); + } + } + + // + // This tests that generic calls made from gsharedvt methods are not patched normally. + // If they are, the first call to 'caller' would patch in the gshared version of + // 'callee', causing the second call to fail because the gshared version of callee + // wouldn't work with CallPatching2 since it has a different object layout. + // + public static int test_0_call_patching () { + IFaceCallPatching c = new CallPatching (); + c.caller (); + if (!c.caller ()) + return 1; + return 0; + } } // #13191 diff --git a/mono/mini/helpers.c b/mono/mini/helpers.c index 43bd17e2fa..4c0950163f 100644 --- a/mono/mini/helpers.c +++ b/mono/mini/helpers.c @@ -214,8 +214,14 @@ mono_disassemble_code (MonoCompile *cfg, guint8 *code, int size, char *id) #else #if defined(sparc) && !defined(__GNUC__) #define DIS_CMD "dis" -#elif defined(__i386__) || defined(__x86_64__) +#elif defined(TARGET_X86) #define DIS_CMD "objdump -l -d" +#elif defined(TARGET_AMD64) + #if defined(HOST_WIN32) + #define DIS_CMD "x86_64-w64-mingw32-objdump.exe -M x86-64 -d" + #else + #define DIS_CMD "objdump -l -d" + #endif #else #define DIS_CMD "objdump -d" #endif @@ -281,7 +287,7 @@ mono_disassemble_code (MonoCompile *cfg, guint8 *code, int size, char *id) unused = system (cmd); g_free (cmd); #endif - + cmd = g_strdup_printf (ARCH_PREFIX DIS_CMD " %s %s", objdump_args, o_file); unused = system (cmd); g_free (cmd); diff --git a/mono/mini/image-writer.c b/mono/mini/image-writer.c index 62b2b3525a..13c055bd1e 100644 --- a/mono/mini/image-writer.c +++ b/mono/mini/image-writer.c @@ -125,7 +125,7 @@ #define USE_ELF_WRITER 1 #endif -#if defined(TARGET_ARM) && !defined(TARGET_MACH) +#if defined(TARGET_ARM) && !defined(TARGET_MACH) && !defined(HOST_WIN32) #define USE_ELF_WRITER 1 #endif diff --git a/mono/mini/ir-emit.h b/mono/mini/ir-emit.h index 9ba92bf376..c208c2a4b1 100644 --- a/mono/mini/ir-emit.h +++ b/mono/mini/ir-emit.h @@ -933,15 +933,15 @@ static int ccount = 0; if (!(cfg->opt & MONO_OPT_ABCREM)) { \ MONO_EMIT_NULL_CHECK (cfg, array_reg); \ if (COMPILE_LLVM (cfg)) \ - MONO_EMIT_DEFAULT_BOUNDS_CHECK ((cfg), (array_reg), G_STRUCT_OFFSET (array_type, array_length_field), (index_reg), TRUE); \ + MONO_EMIT_DEFAULT_BOUNDS_CHECK ((cfg), (array_reg), MONO_STRUCT_OFFSET (array_type, array_length_field), (index_reg), TRUE); \ else \ - MONO_ARCH_EMIT_BOUNDS_CHECK ((cfg), (array_reg), G_STRUCT_OFFSET (array_type, array_length_field), (index_reg)); \ + MONO_ARCH_EMIT_BOUNDS_CHECK ((cfg), (array_reg), MONO_STRUCT_OFFSET (array_type, array_length_field), (index_reg)); \ } else { \ MonoInst *ins; \ MONO_INST_NEW ((cfg), ins, OP_BOUNDS_CHECK); \ ins->sreg1 = array_reg; \ ins->sreg2 = index_reg; \ - ins->inst_imm = G_STRUCT_OFFSET (array_type, array_length_field); \ + ins->inst_imm = MONO_STRUCT_OFFSET (array_type, array_length_field); \ ins->flags |= MONO_INST_FAULT; \ MONO_ADD_INS ((cfg)->cbb, ins); \ (cfg)->flags |= MONO_CFG_HAS_ARRAY_ACCESS; \ diff --git a/mono/mini/jit-icalls.c b/mono/mini/jit-icalls.c index 45c7689a58..8c7c00c832 100644 --- a/mono/mini/jit-icalls.c +++ b/mono/mini/jit-icalls.c @@ -1061,6 +1061,7 @@ MonoObject* mono_object_castclass_unbox (MonoObject *obj, MonoClass *klass) { MonoJitTlsData *jit_tls = NULL; + MonoClass *oklass; if (mini_get_debug_options ()->better_cast_details) { jit_tls = mono_native_tls_get_value (mono_jit_tls_id); @@ -1070,13 +1071,14 @@ mono_object_castclass_unbox (MonoObject *obj, MonoClass *klass) if (!obj) return NULL; - if (klass->enumtype && obj->vtable->klass == klass->element_class) + oklass = obj->vtable->klass; + if ((klass->enumtype && oklass == klass->element_class) || (oklass->enumtype && klass == oklass->element_class)) return obj; if (mono_object_isinst (obj, klass)) return obj; if (mini_get_debug_options ()->better_cast_details) { - jit_tls->class_cast_from = obj->vtable->klass; + jit_tls->class_cast_from = oklass; jit_tls->class_cast_to = klass; } diff --git a/mono/mini/main.c b/mono/mini/main.c index 84c6f39c06..784179c644 100644 --- a/mono/mini/main.c +++ b/mono/mini/main.c @@ -19,7 +19,7 @@ mono_main_with_options (int argc, char *argv []) GPtrArray *array = g_ptr_array_new (); GString *buffer = g_string_new (""); const char *p; - int i; + unsigned i; gboolean in_quotes = FALSE; char quote_char = '\0'; diff --git a/mono/mini/method-to-ir.c.REMOVED.git-id b/mono/mini/method-to-ir.c.REMOVED.git-id index 587b51940e..555e94ad1e 100644 --- a/mono/mini/method-to-ir.c.REMOVED.git-id +++ b/mono/mini/method-to-ir.c.REMOVED.git-id @@ -1 +1 @@ -4a9c33d29539581bfa3fe405320247a4801af2aa \ No newline at end of file +7edaa066775ac56963e50395e88bc0272ae55aec \ No newline at end of file diff --git a/mono/mini/mini-amd64.c.REMOVED.git-id b/mono/mini/mini-amd64.c.REMOVED.git-id index e7e1b62537..8b3e6307e3 100644 --- a/mono/mini/mini-amd64.c.REMOVED.git-id +++ b/mono/mini/mini-amd64.c.REMOVED.git-id @@ -1 +1 @@ -b5fed14d8d22f584ac059dfff08b2e0dff1a9586 \ No newline at end of file +a09d3d79064ddfde150db0a3557ccb684057d273 \ No newline at end of file diff --git a/mono/mini/mini-amd64.h b/mono/mini/mini-amd64.h index 9c1c7ca15a..fbe9910b62 100644 --- a/mono/mini/mini-amd64.h +++ b/mono/mini/mini-amd64.h @@ -167,9 +167,6 @@ struct MonoLMF { * If the third lowest bit is set, then this is a MonoLMFTramp structure. */ gpointer previous_lmf; -#ifdef HOST_WIN32 - gpointer lmf_addr; -#endif #if defined(__default_codegen__) || defined(HOST_WIN32) guint64 rip; #elif defined(__native_client_codegen__) @@ -177,17 +174,8 @@ struct MonoLMF { /* this allows the structure to match for 32-bit compilers. */ guint64 rip __attribute__ ((aligned(8))); #endif - guint64 rbx; guint64 rbp; guint64 rsp; - guint64 r12; - guint64 r13; - guint64 r14; - guint64 r15; -#ifdef HOST_WIN32 - guint64 rdi; - guint64 rsi; -#endif }; /* LMF structure used by the JIT trampolines */ @@ -202,6 +190,7 @@ typedef struct MonoCompileArch { gint32 reg_save_area_offset; gint32 stack_alloc_size; gint32 sp_fp_offset; + guint32 saved_iregs; gboolean omit_fp, omit_fp_computed, no_pushes; gpointer cinfo; gint32 async_point_count; @@ -214,6 +203,28 @@ typedef struct MonoCompileArch { gpointer lmf_var; } MonoCompileArch; + + +#ifdef HOST_WIN32 +#define PARAM_REGS 4 +#else +#define PARAM_REGS 6 +#endif + +/* Structure used by the sequence points in AOTed code */ +typedef struct { + gpointer ss_trigger_page; + gpointer bp_trigger_page; + gpointer bp_addrs [MONO_ZERO_LEN_ARRAY]; +} SeqPointInfo; + +typedef struct { + mgreg_t regs [PARAM_REGS]; + mgreg_t res; + guint8 *ret; +} DynCallArgs; + + #define MONO_CONTEXT_SET_LLVM_EXC_REG(ctx, exc) do { (ctx)->rax = (gsize)exc; } while (0) #define MONO_ARCH_INIT_TOP_LMF_ENTRY(lmf) @@ -345,11 +356,7 @@ typedef struct MonoCompileArch { #define MONO_ARCH_ENABLE_MONO_LMF_VAR 1 #define MONO_ARCH_HAVE_INVALIDATE_METHOD 1 #define MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE 1 -#define MONO_ARCH_HAVE_ATOMIC_ADD 1 -#define MONO_ARCH_HAVE_ATOMIC_EXCHANGE 1 -#define MONO_ARCH_HAVE_ATOMIC_CAS 1 #define MONO_ARCH_HAVE_FULL_AOT_TRAMPOLINES 1 -#define MONO_ARCH_HAVE_IMT 1 #define MONO_ARCH_HAVE_TLS_GET (mono_amd64_have_tls_get ()) #define MONO_ARCH_IMT_REG AMD64_R10 #define MONO_ARCH_IMT_SCRATCH_REG AMD64_R11 diff --git a/mono/mini/mini-arm.c.REMOVED.git-id b/mono/mini/mini-arm.c.REMOVED.git-id index ede77a5ae5..8a8c0e8a61 100644 --- a/mono/mini/mini-arm.c.REMOVED.git-id +++ b/mono/mini/mini-arm.c.REMOVED.git-id @@ -1 +1 @@ -6895e1fb3a1eb78a5a8623292272b9695812297f \ No newline at end of file +eff7174271e83652930b6e7c3fdc9e8a5c6f6b32 \ No newline at end of file diff --git a/mono/mini/mini-arm.h b/mono/mini/mini-arm.h index cba8a33a74..7c3fd9ad04 100644 --- a/mono/mini/mini-arm.h +++ b/mono/mini/mini-arm.h @@ -124,6 +124,17 @@ * reproduceable results for benchmarks */ #define MONO_ARCH_CODE_ALIGNMENT 32 +/* Argument marshallings for calls between gsharedvt and normal code */ +typedef enum { + GSHAREDVT_ARG_NONE = 0, + GSHAREDVT_ARG_BYVAL_TO_BYREF = 1, + GSHAREDVT_ARG_BYREF_TO_BYVAL = 2, + GSHAREDVT_ARG_BYREF_TO_BYVAL_I1 = 3, + GSHAREDVT_ARG_BYREF_TO_BYVAL_I2 = 4, + GSHAREDVT_ARG_BYREF_TO_BYVAL_U1 = 5, + GSHAREDVT_ARG_BYREF_TO_BYVAL_U2 = 6 +} GSharedVtArgMarshal; + /* Return value marshalling for calls between gsharedvt and normal code */ typedef enum { GSHAREDVT_RET_NONE = 0, @@ -156,6 +167,23 @@ typedef struct { int map [MONO_ZERO_LEN_ARRAY]; } GSharedVtCallInfo; +/* Structure used by the sequence points in AOTed code */ +typedef struct { + gpointer ss_trigger_page; + gpointer bp_trigger_page; + guint8* bp_addrs [MONO_ZERO_LEN_ARRAY]; +} SeqPointInfo; + + +#define PARAM_REGS 4 +#define DYN_CALL_STACK_ARGS 6 + +typedef struct { + mgreg_t regs [PARAM_REGS + DYN_CALL_STACK_ARGS]; + mgreg_t res, res2; + guint8 *ret; +} DynCallArgs; + void arm_patch (guchar *code, const guchar *target); guint8* mono_arm_emit_load_imm (guint8 *code, int dreg, guint32 val); int mono_arm_is_rotated_imm8 (guint32 val, gint *rot_amount); @@ -235,7 +263,6 @@ typedef struct MonoCompileArch { #define ARM_NUM_REG_FPARGS 0 #define MONO_ARCH_HAVE_FULL_AOT_TRAMPOLINES 1 -#define MONO_ARCH_HAVE_IMT 1 #define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS 1 #define MONO_ARCH_AOT_SUPPORTED 1 @@ -246,7 +273,10 @@ typedef struct MonoCompileArch { #define MONO_ARCH_DYN_CALL_SUPPORTED 1 #define MONO_ARCH_DYN_CALL_PARAM_AREA 24 +#ifndef MONO_CROSS_COMPILE #define MONO_ARCH_SOFT_DEBUG_SUPPORTED 1 +#endif + #define MONO_ARCH_HAVE_EXCEPTIONS_INIT 1 #define MONO_ARCH_HAVE_GET_TRAMPOLINES 1 #define MONO_ARCH_HAVE_CONTEXT_SET_INT_REG 1 @@ -263,10 +293,6 @@ typedef struct MonoCompileArch { #define MONO_ARCH_HAVE_OP_TAIL_CALL 1 #endif #define MONO_ARCH_HAVE_DUMMY_INIT 1 -#define MONO_ARCH_HAVE_OPCODE_SUPPORTED 1 -#define MONO_ARCH_HAVE_ATOMIC_EXCHANGE 1 -#define MONO_ARCH_HAVE_ATOMIC_CAS 1 -#define MONO_ARCH_HAVE_ATOMIC_ADD 1 #if defined(__native_client__) #undef MONO_ARCH_SOFT_DEBUG_SUPPORTED diff --git a/mono/mini/mini-codegen.c b/mono/mini/mini-codegen.c index 6e5bf2f858..66eb8fcdcf 100644 --- a/mono/mini/mini-codegen.c +++ b/mono/mini/mini-codegen.c @@ -1452,6 +1452,8 @@ mono_local_regalloc (MonoCompile *cfg, MonoBasicBlock *bb) if (k != j) sreg_masks [k] &= ~ (regmask (dest_sreg)); } + /* See below */ + dreg_mask &= ~ (regmask (dest_sreg)); } else { val = rs->vassign [sreg]; if (val == -1) { @@ -1471,7 +1473,7 @@ mono_local_regalloc (MonoCompile *cfg, MonoBasicBlock *bb) sreg_masks [k] &= ~ (regmask (dest_sreg)); } /* - * Prevent the dreg from being allocate to dest_sreg + * Prevent the dreg from being allocated to dest_sreg * too, since it could force sreg1 to be allocated to * the same reg on x86. */ diff --git a/mono/mini/mini-cross-helpers.c b/mono/mini/mini-cross-helpers.c new file mode 100644 index 0000000000..dede99f3ee --- /dev/null +++ b/mono/mini/mini-cross-helpers.c @@ -0,0 +1,13 @@ +#include "config.h" + +#ifdef ENABLE_EXTENSION_MODULE +#include "../../../mono-extensions/mono/mini/mini-cross-helpers.c" +#else + +void mono_cross_helpers_run (void); + +void +mono_cross_helpers_run (void) +{ +} +#endif diff --git a/mono/mini/mini-exceptions.c b/mono/mini/mini-exceptions.c index 221082759f..7659466cd2 100644 --- a/mono/mini/mini-exceptions.c +++ b/mono/mini/mini-exceptions.c @@ -217,6 +217,14 @@ find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, MonoJitInfo *res, Mo if (!err) return (gpointer)-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)); + } + /* Convert between the new and the old APIs */ switch (frame.type) { case FRAME_TYPE_MANAGED: @@ -369,6 +377,14 @@ mono_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls, if (!err) return FALSE; + 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)); + } + if (frame->ji && !frame->ji->async) method = jinfo_get_method (frame->ji); @@ -1800,7 +1816,7 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume, mono_profiler_exception_clause_handler (method, ei->flags, i); jit_tls->orig_ex_ctx_set = FALSE; MONO_CONTEXT_SET_IP (ctx, ei->handler_start); - *(mono_get_lmf_addr ()) = lmf; + mono_set_lmf (lmf); #ifndef DISABLE_PERFCOUNTERS mono_perfcounters->exceptions_depth += frame_count; #endif @@ -1828,7 +1844,7 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume, #ifndef DISABLE_PERFCOUNTERS mono_perfcounters->exceptions_finallys++; #endif - *(mono_get_lmf_addr ()) = lmf; + mono_set_lmf (lmf); if (ji->from_llvm) { /* * LLVM compiled finally handlers follow the design @@ -2221,6 +2237,8 @@ print_stack_frame_to_string (StackFrameInfo *frame, MonoContext *ctx, gpointer d return FALSE; } +#ifndef MONO_CROSS_COMPILE + static gboolean handling_sigsegv = FALSE; /* @@ -2248,7 +2266,7 @@ mono_handle_native_sigsegv (int signal, void *ctx) ; #else while (1) { - sleep (0); + sleep (1); } #endif } @@ -2344,6 +2362,16 @@ mono_handle_native_sigsegv (int signal, void *ctx) } } +#else + +void +mono_handle_native_sigsegv (int signal, void *ctx) +{ + g_assert_not_reached (); +} + +#endif /* !MONO_CROSS_COMPILE */ + static void mono_print_thread_dump_internal (void *sigctx, MonoContext *start_ctx) { @@ -2352,7 +2380,10 @@ mono_print_thread_dump_internal (void *sigctx, MonoContext *start_ctx) MonoContext ctx; #endif GString* text = g_string_new (0); - char *name, *wapi_desc; + char *name; +#ifndef HOST_WIN32 + char *wapi_desc; +#endif GError *error = NULL; if (thread->name) { @@ -2728,5 +2759,6 @@ mono_jinfo_get_unwind_info (MonoJitInfo *ji, guint32 *unwind_info_len) if (ji->from_aot) return mono_aot_get_unwind_info (ji, unwind_info_len); else - return mono_get_cached_unwind_info (ji->used_regs, unwind_info_len); + /* The upper 16 bits of ji->unwind_info might contain the epilog offset */ + return mono_get_cached_unwind_info (ji->unwind_info & 0xffff, unwind_info_len); } diff --git a/mono/mini/mini-gc.c b/mono/mini/mini-gc.c index 5589d99eab..8ca1eebfe5 100644 --- a/mono/mini/mini-gc.c +++ b/mono/mini/mini-gc.c @@ -15,15 +15,10 @@ //#if 0 #if defined(MONO_ARCH_GC_MAPS_SUPPORTED) +#include #include #include -#if SIZEOF_VOID_P == 4 -typedef guint32 mword; -#else -typedef guint64 mword; -#endif - #define SIZEOF_SLOT ((int)sizeof (mgreg_t)) #define GC_BITS_PER_WORD (sizeof (mword) * 8) @@ -598,7 +593,9 @@ thread_suspend_func (gpointer user_data, void *sigctx, MonoContext *ctx) if (tls->tid != GetCurrentThreadId ()) { /* Happens on osx because threads are not suspended using signals */ +#ifndef TARGET_WIN32 gboolean res; +#endif g_assert (tls->info); #ifdef TARGET_WIN32 @@ -1106,7 +1103,7 @@ conservative_pass (TlsData *tls, guint8 *stack_start, guint8 *stack_end) * pass. */ static void -precise_pass (TlsData *tls, guint8 *stack_start, guint8 *stack_end) +precise_pass (TlsData *tls, guint8 *stack_start, guint8 *stack_end, void *gc_data) { int findex, i; FrameInfo *fi; @@ -1144,7 +1141,7 @@ precise_pass (TlsData *tls, guint8 *stack_start, guint8 *stack_end) MonoObject *obj = *ptr; if (obj) { DEBUG (fprintf (logfile, "\tref %s0x%x(fp)=%p: %p ->", (guint8*)ptr >= (guint8*)fi->fp ? "" : "-", ABS ((int)((gssize)ptr - (gssize)fi->fp)), ptr, obj)); - *ptr = mono_gc_scan_object (obj); + *ptr = mono_gc_scan_object (obj, gc_data); DEBUG (fprintf (logfile, " %p.\n", *ptr)); } else { DEBUG (fprintf (logfile, "\tref %s0x%x(fp)=%p: %p.\n", (guint8*)ptr >= (guint8*)fi->fp ? "" : "-", ABS ((int)((gssize)ptr - (gssize)fi->fp)), ptr, obj)); @@ -1185,7 +1182,7 @@ precise_pass (TlsData *tls, guint8 *stack_start, guint8 *stack_end) if (obj) { DEBUG (fprintf (logfile, "\treg %s saved at %p: %p ->", mono_arch_regname (fi->regs [i]), ptr, obj)); - *ptr = mono_gc_scan_object (obj); + *ptr = mono_gc_scan_object (obj, gc_data); DEBUG (fprintf (logfile, " %p.\n", *ptr)); } else { DEBUG (fprintf (logfile, "\treg %s saved at %p: %p\n", mono_arch_regname (fi->regs [i]), ptr, obj)); @@ -1213,7 +1210,7 @@ precise_pass (TlsData *tls, guint8 *stack_start, guint8 *stack_end) * structure filled up by thread_suspend_func. */ static void -thread_mark_func (gpointer user_data, guint8 *stack_start, guint8 *stack_end, gboolean precise) +thread_mark_func (gpointer user_data, guint8 *stack_start, guint8 *stack_end, gboolean precise, void *gc_data) { TlsData *tls = user_data; @@ -1224,7 +1221,7 @@ thread_mark_func (gpointer user_data, guint8 *stack_start, guint8 *stack_end, gb if (!precise) conservative_pass (tls, stack_start, stack_end); else - precise_pass (tls, stack_start, stack_end); + precise_pass (tls, stack_start, stack_end, gc_data); } #ifndef DISABLE_JIT @@ -1869,7 +1866,11 @@ sp_offset_to_fp_offset (MonoCompile *cfg, int sp_offset) #elif defined(TARGET_X86) /* The offset is computed from the sp at the start of the call sequence */ g_assert (cfg->frame_reg == X86_EBP); +#ifdef MONO_X86_NO_PUSHES + return (- cfg->arch.sp_fp_offset + sp_offset); +#else return (- cfg->arch.sp_fp_offset - sp_offset); +#endif #else NOT_IMPLEMENTED; return -1; @@ -2056,7 +2057,11 @@ compute_frame_size (MonoCompile *cfg) #ifdef TARGET_AMD64 min_offset = MIN (min_offset, -cfg->arch.sp_fp_offset); #elif defined(TARGET_X86) +#ifdef MONO_X86_NO_PUSHES + min_offset = MIN (min_offset, -cfg->arch.sp_fp_offset); +#else min_offset = MIN (min_offset, - (cfg->arch.sp_fp_offset + cfg->arch.param_area_size)); +#endif #elif defined(TARGET_ARM) // FIXME: #elif defined(TARGET_s390X) diff --git a/mono/mini/mini-generic-sharing.c b/mono/mini/mini-generic-sharing.c index ab9245f26a..4c42fd9a75 100644 --- a/mono/mini/mini-generic-sharing.c +++ b/mono/mini/mini-generic-sharing.c @@ -1343,9 +1343,6 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti if (virtual) { /* Same as in mono_emit_method_call_full () */ -#ifndef MONO_ARCH_HAVE_IMT - NOT_IMPLEMENTED; -#endif if ((method->klass->parent == mono_defaults.multicastdelegate_class) && (!strcmp (method->name, "Invoke"))) { /* See mono_emit_method_call_full () */ /* The gsharedvt trampoline will recognize this constant */ @@ -2689,7 +2686,9 @@ mini_method_get_rgctx (MonoMethod *m) gboolean mini_type_is_vtype (MonoCompile *cfg, MonoType *t) { - return MONO_TYPE_ISSTRUCT (t) || mini_is_gsharedvt_variable_type (cfg, t); + t = mini_native_type_replace_type (t); + + return MONO_TYPE_ISSTRUCT (t) || mini_is_gsharedvt_variable_type (cfg, t); } gboolean diff --git a/mono/mini/mini-ia64.c.REMOVED.git-id b/mono/mini/mini-ia64.c.REMOVED.git-id index 8b7074b8dc..9c472cd7cd 100644 --- a/mono/mini/mini-ia64.c.REMOVED.git-id +++ b/mono/mini/mini-ia64.c.REMOVED.git-id @@ -1 +1 @@ -17cc1f9f2f7f50c8ce62031fde85e2ef3bc19bfb \ No newline at end of file +7d74ad8f45f34aead1f502d2d46f48a2d6006a8d \ No newline at end of file diff --git a/mono/mini/mini-ia64.h b/mono/mini/mini-ia64.h index 4d4f1df443..d419bc26c7 100644 --- a/mono/mini/mini-ia64.h +++ b/mono/mini/mini-ia64.h @@ -114,8 +114,6 @@ unw_dyn_region_info_t* mono_ia64_create_unwind_region (Ia64CodegenState *code); #define MONO_ARCH_HAVE_INVALIDATE_METHOD 1 #define MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE 1 #define MONO_ARCH_HAVE_SAVE_UNWIND_INFO 1 -#define MONO_ARCH_HAVE_ATOMIC_EXCHANGE 1 -#define MONO_ARCH_HAVE_IMT 1 #define MONO_ARCH_HAVE_GENERALIZED_IMT_THUNK 1 #define MONO_ARCH_THIS_AS_FIRST_ARG 1 diff --git a/mono/mini/mini-llvm-cpp.cpp b/mono/mini/mini-llvm-cpp.cpp index 1f4775368c..032059d931 100644 --- a/mono/mini/mini-llvm-cpp.cpp +++ b/mono/mini/mini-llvm-cpp.cpp @@ -21,12 +21,6 @@ // #include "config.h" -//undef those as llvm defines them on its own config.h as well. -#undef PACKAGE_BUGREPORT -#undef PACKAGE_NAME -#undef PACKAGE_STRING -#undef PACKAGE_TARNAME -#undef PACKAGE_VERSION #include diff --git a/mono/mini/mini-llvm.c.REMOVED.git-id b/mono/mini/mini-llvm.c.REMOVED.git-id index 6804da7713..3e3c8bc022 100644 --- a/mono/mini/mini-llvm.c.REMOVED.git-id +++ b/mono/mini/mini-llvm.c.REMOVED.git-id @@ -1 +1 @@ -d09863f709b43646dfa5df388408e604d40d7f7a \ No newline at end of file +df6de20bab48786bcf4caed9ec1b139896289f9c \ No newline at end of file diff --git a/mono/mini/mini-mips.c.REMOVED.git-id b/mono/mini/mini-mips.c.REMOVED.git-id index af817243f9..f84877b3d4 100644 --- a/mono/mini/mini-mips.c.REMOVED.git-id +++ b/mono/mini/mini-mips.c.REMOVED.git-id @@ -1 +1 @@ -235fd33a449b15e2c2d8b4e2f8c0f2f900d8871b \ No newline at end of file +cc32f05f72828cf9f1a6a06fcded6d33be8a6bfe \ No newline at end of file diff --git a/mono/mini/mini-mips.h b/mono/mini/mini-mips.h index 7476469c27..c94f7c898f 100644 --- a/mono/mini/mini-mips.h +++ b/mono/mini/mini-mips.h @@ -257,7 +257,6 @@ typedef struct MonoCompileArch { #define MIPS_LAST_FPARG_REG mips_f19 #endif -#define MONO_ARCH_HAVE_IMT 1 #define MONO_ARCH_IMT_REG mips_t0 #define MONO_ARCH_VTABLE_REG mips_a0 diff --git a/mono/mini/mini-ops.h b/mono/mini/mini-ops.h index b1a31ee16d..e667a4c08f 100644 --- a/mono/mini/mini-ops.h +++ b/mono/mini/mini-ops.h @@ -847,32 +847,36 @@ MINI_OP(OP_XMOVE, "xmove", XREG, XREG, NONE) MINI_OP(OP_XZERO, "xzero", XREG, NONE, NONE) MINI_OP(OP_XPHI, "xphi", XREG, NONE, NONE) -/* Atomic specific - - Note, OP_ATOMIC_ADD_IMM_NEW_I4 and - OP_ATOMIC_ADD_NEW_I4 returns the new - value compared to OP_ATOMIC_ADD_I4 that - returns the old value. - - OP_ATOMIC_ADD_NEW_I4 is used by - Interlocked::Increment and Interlocked:Decrement - and atomic_add_i4 by Interlocked::Add +/* + * These are used for efficient implementation of the + * methods on the System.Threading.Interlocked class + * on architectures that support it. This is checked + * via mono_arch_opcode_supported (). + * + * Note that while the 32-bit variants are used on + * both 32-bit and 64-bit systems, the 64-bit variants + * are only used if the system is 64-bit. If that is + * not the case, the fallback code in the runtime is + * used instead. This is done because decomposing the + * 64-bit variants to instructions operating on 32-bit + * registers is very complicated on some architectures. + * + * The memory_barrier instruction translates to a full + * acquire/release barrier. Such a memory barrier is + * implied at the beginning and end of all other atomic + * operations, such that they ensure sequential + * consistency. + * + * All of these return the new value at the given + * memory location after performing the operation. */ MINI_OP(OP_ATOMIC_ADD_I4, "atomic_add_i4", IREG, IREG, IREG) -MINI_OP(OP_ATOMIC_ADD_NEW_I4, "atomic_add_new_i4", IREG, IREG, IREG) -MINI_OP(OP_ATOMIC_ADD_IMM_I4, "atomic_add_imm_i4", IREG, IREG, NONE) -MINI_OP(OP_ATOMIC_ADD_IMM_NEW_I4, "atomic_add_imm_new_i4", IREG, IREG, NONE) -MINI_OP(OP_ATOMIC_EXCHANGE_I4, "atomic_exchange_i4", IREG, IREG, IREG) - MINI_OP(OP_ATOMIC_ADD_I8, "atomic_add_i8", IREG, IREG, IREG) -MINI_OP(OP_ATOMIC_ADD_NEW_I8, "atomic_add_new_i8", IREG, IREG, IREG) -MINI_OP(OP_ATOMIC_ADD_IMM_I8, "atomic_add_imm_i8", IREG, IREG, NONE) -MINI_OP(OP_ATOMIC_ADD_IMM_NEW_I8, "atomic_add_imm_new_i8", IREG, IREG, NONE) +MINI_OP(OP_ATOMIC_EXCHANGE_I4, "atomic_exchange_i4", IREG, IREG, IREG) MINI_OP(OP_ATOMIC_EXCHANGE_I8, "atomic_exchange_i8", IREG, IREG, IREG) -MINI_OP(OP_MEMORY_BARRIER, "memory_barrier", NONE, NONE, NONE) - MINI_OP3(OP_ATOMIC_CAS_I4, "atomic_cas_i4", IREG, IREG, IREG, IREG) MINI_OP3(OP_ATOMIC_CAS_I8, "atomic_cas_i8", IREG, IREG, IREG, IREG) +MINI_OP(OP_MEMORY_BARRIER, "memory_barrier", NONE, NONE, NONE) /* Conditional move opcodes. * Must be in the same order as the matching CEE_B... opcodes @@ -1077,6 +1081,9 @@ MINI_OP(OP_S390_ISUB_OVF_UN, "s390_int_sub_ovf_un", IREG, IREG, IREG) #endif #if defined(__ia64__) +MINI_OP(OP_ATOMIC_ADD_IMM_I4, "atomic_add_imm_i4", IREG, IREG, NONE) +MINI_OP(OP_ATOMIC_ADD_IMM_I8, "atomic_add_imm_i8", IREG, IREG, NONE) + MINI_OP(OP_IA64_LOAD, "ia64_load", NONE, NONE, NONE) MINI_OP(OP_IA64_LOADI1, "ia64_loadi1", NONE, NONE, NONE) MINI_OP(OP_IA64_LOADU1, "ia64_loadu1", NONE, NONE, NONE) diff --git a/mono/mini/mini-posix.c b/mono/mini/mini-posix.c index 67f5725de6..d26b4af4e9 100644 --- a/mono/mini/mini-posix.c +++ b/mono/mini/mini-posix.c @@ -296,6 +296,7 @@ SIG_HANDLER_FUNC (static, sigusr1_signal_handler) #define FULL_STAT_PROFILER_BACKTRACE 0 #endif +#ifdef SIGPROF #if defined(__ia64__) || defined(__sparc__) || defined(sparc) || defined(__s390__) || defined(s390) SIG_HANDLER_FUNC (static, sigprof_signal_handler) @@ -384,6 +385,7 @@ SIG_HANDLER_FUNC (static, sigprof_signal_handler) mono_chain_signal (SIG_HANDLER_PARAMS); } +#endif #endif SIG_HANDLER_FUNC (static, sigquit_signal_handler) diff --git a/mono/mini/mini-ppc.c.REMOVED.git-id b/mono/mini/mini-ppc.c.REMOVED.git-id index 47d3e58800..95a1ca840e 100644 --- a/mono/mini/mini-ppc.c.REMOVED.git-id +++ b/mono/mini/mini-ppc.c.REMOVED.git-id @@ -1 +1 @@ -69a1d3d78aa16d9558fff6e6d915d9a95f816ec0 \ No newline at end of file +d3ebe5de2aaa8b786a9fa893aec1b7834216f458 \ No newline at end of file diff --git a/mono/mini/mini-ppc.h b/mono/mini/mini-ppc.h index 13b6adb537..dcc1c5fae2 100644 --- a/mono/mini/mini-ppc.h +++ b/mono/mini/mini-ppc.h @@ -68,7 +68,6 @@ typedef struct MonoCompileArch { #ifdef __mono_ppc64__ #define MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS #define MONO_ARCH_NO_EMULATE_LONG_MUL_OPTS -#define MONO_ARCH_HAVE_ATOMIC_ADD 1 #define PPC_USES_FUNCTION_DESCRIPTOR #ifndef __mono_ilp32__ @@ -95,7 +94,6 @@ typedef struct MonoCompileArch { #define MONO_ARCH_EMULATE_LCONV_TO_R8_UN 1 #define MONO_ARCH_EMULATE_FREM 1 #define MONO_ARCH_BIGMUL_INTRINS 1 -#define MONO_ARCH_HAVE_ATOMIC_CAS 1 /* Parameters used by the register allocator */ #define MONO_ARCH_CALLEE_REGS ((0xff << ppc_r3) | (1 << ppc_r11) | (1 << ppc_r12)) @@ -171,7 +169,6 @@ typedef struct MonoCompileArch { #endif /* HAVE_WORKING_SIGALTSTACK */ #define MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE -#define MONO_ARCH_HAVE_IMT 1 #define MONO_ARCH_IMT_REG ppc_r12 #define MONO_ARCH_VTABLE_REG ppc_r12 diff --git a/mono/mini/mini-s390x.c.REMOVED.git-id b/mono/mini/mini-s390x.c.REMOVED.git-id index cab62a85fe..c4c08861f1 100644 --- a/mono/mini/mini-s390x.c.REMOVED.git-id +++ b/mono/mini/mini-s390x.c.REMOVED.git-id @@ -1 +1 @@ -5374adc8b029f1c637417f777d1560339a3186e2 \ No newline at end of file +96c054d4c5793eaab0ffc94a5d3305d0e2a94d84 \ No newline at end of file diff --git a/mono/mini/mini-s390x.h b/mono/mini/mini-s390x.h index a5be8f0108..50b74c51fd 100644 --- a/mono/mini/mini-s390x.h +++ b/mono/mini/mini-s390x.h @@ -14,29 +14,6 @@ /* Parameters used by the register allocator */ /*-------------------------------------------*/ -#define S390_LONG(loc, opy, op, r, ix, br, off) \ - if (mono_hwcap_s390x_has_ld) { \ - if (s390_is_imm20(off)) { \ - s390_##opy (loc, r, ix, br, off); \ - } else { \ - s390_basr (code, s390_r13, 0); \ - s390_j (code, 6); \ - s390_llong(code, off); \ - s390_lg (code, s390_r13, 0, s390_r13, 4); \ - s390_##op (code, r, s390_r13, br, 0); \ - } \ - } else { \ - if (s390_is_uimm12(off)) { \ - s390_##op (loc, r, ix, br, off); \ - } else { \ - s390_basr (code, s390_r13, 0); \ - s390_j (code, 6); \ - s390_llong(code, off); \ - s390_lg (code, s390_r13, 0, s390_r13, 4); \ - s390_##op (code, r, s390_r13, br, 0); \ - } \ - } - struct MonoLMF { gpointer previous_lmf; gpointer lmf_addr; @@ -62,58 +39,15 @@ typedef struct void *return_address; } MonoS390StackFrame; -typedef struct -{ - char n3:1; // N3 instructions present - char zArch:1; // z/Architecture mode installed - char zAct:1; // z/Architecture mode active - char date:1; // DATE enhancement facility - char idte1:1; // IDTE present (PST) - char idte2:1; // IDTE present (REG) - char asnlx:1; // ASN and LX reuse facility - char stfle:1; // STFLE installed - char zDATe:1; // Enhanced DAT in z mode - char srstat:1; // Sense running status facility - char cSSKE:1; // Conditional SSKE facility - char topo:1; // COnfiguration topology facility - char xTrans2:1; // Extended translation facility 2 - char msgSec:1; // Message security facility - char longDsp:1; // Long displacement facility - char hiPerfLD:1; // High performance long displacement facility - char hfpMAS:1; // HFP multiply-and-add/subtrace facility - char xImm:1; // Extended immediate facility - char xTrans3:1; // Extended translation facility 3 - char hfpUnX:1; // HFP unnormalized extension facility - char etf2:1; // ETF2-enhancement facility - char stckf:1; // Store-clock-fast facility - char parse:1; // Parsing enhancement facility - char mvcos:1; // MVCOS facility - char todSteer:1; // TOD-clock steering facility - char etf3:1; // ETF3-enhancement facility - char xCPUtm:1; // Extract CPU time facility - char csst:1; // Compare-swap-and-store facility - char csst2:1; // Compare-swap-and-store facility 2 - char giX:1; // General instructions extension facility - char exX:1; // Execute extensions facility - char ibm:1; // IBM internal use - char fps:1; // Floating point support enhancement - char dfp:1; // Decimal floating point facility - char hiDFP:1; // High Performance DFP facility - char pfpo:1; // PFPO instruction facility -} __attribute__((aligned(8))) facilityList_t; - // #define MONO_ARCH_SIGSEGV_ON_ALTSTACK 1 #define MONO_ARCH_EMULATE_LCONV_TO_R8_UN 1 #define MONO_ARCH_NO_EMULATE_LONG_MUL_OPTS 1 #define MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS 1 #define MONO_ARCH_HAVE_IS_INT_OVERFLOW 1 #define MONO_ARCH_NEED_DIV_CHECK 1 -#define MONO_ARCH_HAVE_ATOMIC_ADD 1 -#define MONO_ARCH_HAVE_ATOMIC_EXCHANGE 1 #define MONO_ARCH_SIGNAL_STACK_SIZE 256*1024 #define MONO_ARCH_HAVE_DECOMPOSE_OPTS 1 #define MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE 1 -#define MONO_ARCH_HAVE_IMT 1 #define MONO_ARCH_HAVE_TLS_GET 1 #define MONO_ARCH_ENABLE_MONO_LMF_VAR 1 #define MONO_ARCH_IMT_REG s390_r9 @@ -128,6 +62,8 @@ typedef struct #define MONO_ARCH_GC_MAPS_SUPPORTED 1 #define MONO_ARCH_GSHARED_SUPPORTED 1 #define MONO_ARCH_MONITOR_ENTER_ADJUSTMENT 1 +#define MONO_ARCH_HAVE_HANDLER_BLOCK_GUARD 1 +#define MONO_ARCH_HAVE_INVALIDATE_METHOD 1 #define S390_STACK_ALIGNMENT 8 #define S390_FIRST_ARG_REG s390_r2 diff --git a/mono/mini/mini-sparc.c.REMOVED.git-id b/mono/mini/mini-sparc.c.REMOVED.git-id index 7e57399663..e18c0405f8 100644 --- a/mono/mini/mini-sparc.c.REMOVED.git-id +++ b/mono/mini/mini-sparc.c.REMOVED.git-id @@ -1 +1 @@ -ec65fb5c6b9abf2b5f4d6d986f1f0995b5842a57 \ No newline at end of file +3b95fd970336c9f187ef0e05f7f563b96acc9190 \ No newline at end of file diff --git a/mono/mini/mini-sparc.h b/mono/mini/mini-sparc.h index f2b3b41d79..4b94778455 100644 --- a/mono/mini/mini-sparc.h +++ b/mono/mini/mini-sparc.h @@ -102,7 +102,6 @@ typedef struct MonoCompileArch { #define MONO_ARCH_EMULATE_LCONV_TO_R8_UN 1 #define MONO_ARCH_EMULATE_FREM 1 #define MONO_ARCH_NEED_DIV_CHECK 1 -#define MONO_ARCH_HAVE_IMT 1 #define MONO_ARCH_IMT_REG sparc_g1 #define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS 1 #define MONO_ARCH_HAVE_TLS_INIT 1 diff --git a/mono/mini/mini-trampolines.c b/mono/mini/mini-trampolines.c index 6e56ed5d2a..5de69085b6 100644 --- a/mono/mini/mini-trampolines.c +++ b/mono/mini/mini-trampolines.c @@ -22,9 +22,9 @@ */ guint8* mono_trampoline_code [MONO_TRAMPOLINE_NUM]; -static GHashTable *class_init_hash_addr = NULL; -static GHashTable *rgctx_lazy_fetch_trampoline_hash = NULL; -static GHashTable *rgctx_lazy_fetch_trampoline_hash_addr = NULL; +static GHashTable *class_init_hash_addr; +static GHashTable *rgctx_lazy_fetch_trampoline_hash; +static GHashTable *rgctx_lazy_fetch_trampoline_hash_addr; static guint32 trampoline_calls, jit_trampolines, unbox_trampolines, static_rgctx_trampolines; #define mono_trampolines_lock() EnterCriticalSection (&trampolines_mutex) @@ -138,8 +138,6 @@ mono_create_static_rgctx_trampoline (MonoMethod *m, gpointer addr) } #endif -#ifdef MONO_ARCH_HAVE_IMT - /* * Either IMPL_METHOD or AOT_ADDR will be set on return. */ @@ -243,7 +241,6 @@ __attribute__ ((noinline)) } } } -#endif /* * This is a super-ugly hack to fix bug #616463. @@ -406,7 +403,6 @@ common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, guint8* tram orig_vtable_slot = vtable_slot; vtable_slot_to_patch = vtable_slot; -#ifdef MONO_ARCH_HAVE_IMT /* IMT call */ if (vt && (gpointer)vtable_slot < (gpointer)vt) { MonoMethod *impl_method = NULL; @@ -464,7 +460,6 @@ common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, guint8* tram m = impl_method; } } -#endif /* * The virtual check is needed because is_generic_method_definition (m) could @@ -484,9 +479,7 @@ common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, guint8* tram else g_assert (!m->klass->generic_container); -#ifdef MONO_ARCH_HAVE_IMT generic_virtual = mono_arch_find_imt_method (regs, code); -#endif if (generic_virtual) { g_assert (generic_virtual->is_inflated); context.method_inst = ((MonoMethodInflated*)generic_virtual)->context.method_inst; @@ -524,7 +517,6 @@ common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, guint8* tram g_assert_not_reached (); #endif } else { -#ifdef MONO_ARCH_HAVE_IMT MonoObject *this_argument = mono_arch_get_this_arg_from_call (regs, code); vt = this_argument->vtable; @@ -537,9 +529,6 @@ common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, guint8* tram mono_class_setup_supertypes (this_argument->vtable->klass); klass = this_argument->vtable->klass->supertypes [m->klass->idepth - 1]; } -#else - NOT_IMPLEMENTED; -#endif } g_assert (vtable_slot || klass); @@ -816,11 +805,9 @@ mono_generic_virtual_remoting_trampoline (mgreg_t *regs, guint8 *code, MonoMetho else g_assert (!m->klass->generic_container); -#ifdef MONO_ARCH_HAVE_IMT imt_method = mono_arch_find_imt_method (regs, code); if (imt_method->is_inflated) context.method_inst = ((MonoMethodInflated*)imt_method)->context.method_inst; -#endif m = mono_class_inflate_generic_method (declaring, &context); m = mono_marshal_get_remoting_invoke_with_check (m); @@ -981,24 +968,14 @@ mono_monitor_exit_trampoline (mgreg_t *regs, guint8 *code, MonoObject *obj, guin #ifdef MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE -typedef struct { - MonoMethod *invoke; - gpointer impl_this; - gpointer impl_nothis; - MonoMethod *method; - MonoMethodSignature *invoke_sig; - MonoMethodSignature *sig; - gboolean need_rgctx_tramp; -} DelegateTrampInfo; - /* * Precompute data to speed up mono_delegate_trampoline (). * METHOD might be NULL. */ -static gpointer +static MonoDelegateTrampInfo* create_delegate_trampoline_data (MonoDomain *domain, MonoClass *klass, MonoMethod *method) { - DelegateTrampInfo *tramp_data; + MonoDelegateTrampInfo *tramp_data; MonoMethod *invoke; MonoError err; @@ -1006,7 +983,7 @@ create_delegate_trampoline_data (MonoDomain *domain, MonoClass *klass, MonoMetho invoke = mono_get_delegate_invoke (klass); g_assert (invoke); - tramp_data = mono_domain_alloc (domain, sizeof (DelegateTrampInfo)); + tramp_data = mono_domain_alloc (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); @@ -1039,7 +1016,7 @@ mono_delegate_trampoline (mgreg_t *regs, guint8 *code, gpointer *arg, guint8* tr gboolean need_rgctx_tramp = FALSE; gboolean need_unbox_tramp = FALSE; gboolean enable_caching = TRUE; - DelegateTrampInfo *tramp_info = (DelegateTrampInfo*)arg; + MonoDelegateTrampInfo *tramp_info = (MonoDelegateTrampInfo*)arg; MonoMethod *invoke = tramp_info->invoke; guint8 *impl_this = tramp_info->impl_this; guint8 *impl_nothis = tramp_info->impl_nothis; @@ -1161,6 +1138,9 @@ mono_delegate_trampoline (mgreg_t *regs, guint8 *code, gpointer *arg, guint8* tr delegate->method_ptr = mono_create_static_rgctx_trampoline (method, delegate->method_ptr); } + /* Necessary for !code condition to fallback to slow path */ + code = NULL; + multicast = ((MonoMulticastDelegate*)delegate)->prev != NULL; if (!multicast && !callvirt) { if (method && (method->flags & METHOD_ATTRIBUTE_STATIC) && mono_method_signature (method)->param_count == mono_method_signature (invoke)->param_count + 1) @@ -1168,18 +1148,20 @@ mono_delegate_trampoline (mgreg_t *regs, guint8 *code, gpointer *arg, guint8* tr code = impl_this; else code = delegate->target ? impl_this : impl_nothis; - - if (code) { - delegate->invoke_impl = mono_get_addr_from_ftnptr (code); - return code; - } } - /* The general, unoptimized case */ - m = mono_marshal_get_delegate_invoke (invoke, delegate); - code = mono_compile_method (m); - code = mini_add_method_trampoline (NULL, m, code, mono_method_needs_static_rgctx_invoke (m, FALSE), FALSE); + if (!code) { + /* The general, unoptimized case */ + m = mono_marshal_get_delegate_invoke (invoke, delegate); + code = mono_compile_method (m); + code = mini_add_method_trampoline (NULL, m, code, mono_method_needs_static_rgctx_invoke (m, FALSE), FALSE); + } + delegate->invoke_impl = mono_get_addr_from_ftnptr (code); + if (enable_caching && !callvirt && tramp_info->method) { + tramp_info->method_ptr = delegate->method_ptr; + tramp_info->invoke_impl = delegate->invoke_impl; + } return code; } @@ -1540,30 +1522,29 @@ mono_create_jit_trampoline_from_token (MonoImage *image, guint32 token) /* - * mono_create_delegate_trampoline_with_method: + * mono_create_delegate_trampoline_info: * * Create a delegate trampoline for the KLASS+METHOD pair. */ -gpointer -mono_create_delegate_trampoline_with_method (MonoDomain *domain, MonoClass *klass, MonoMethod *method) +MonoDelegateTrampInfo* +mono_create_delegate_trampoline_info (MonoDomain *domain, MonoClass *klass, MonoMethod *method) { #ifdef MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE - gpointer ptr; - guint32 code_size = 0; - gpointer tramp_info; + MonoDelegateTrampInfo *tramp_info; MonoClassMethodPair pair, *dpair; + guint32 code_size = 0; pair.klass = klass; pair.method = method; mono_domain_lock (domain); - ptr = g_hash_table_lookup (domain_jit_info (domain)->delegate_trampoline_hash, &pair); + tramp_info = g_hash_table_lookup (domain_jit_info (domain)->delegate_trampoline_hash, &pair); mono_domain_unlock (domain); - if (ptr) - return ptr; + if (tramp_info) + return tramp_info; tramp_info = create_delegate_trampoline_data (domain, klass, method); - ptr = mono_create_specific_trampoline (tramp_info, MONO_TRAMPOLINE_DELEGATE, domain, &code_size); + 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)); @@ -1571,10 +1552,10 @@ mono_create_delegate_trampoline_with_method (MonoDomain *domain, MonoClass *klas /* store trampoline address */ mono_domain_lock (domain); - g_hash_table_insert (domain_jit_info (domain)->delegate_trampoline_hash, dpair, ptr); + g_hash_table_insert (domain_jit_info (domain)->delegate_trampoline_hash, dpair, tramp_info); mono_domain_unlock (domain); - return ptr; + return tramp_info; #else return NULL; #endif @@ -1583,7 +1564,11 @@ mono_create_delegate_trampoline_with_method (MonoDomain *domain, MonoClass *klas gpointer mono_create_delegate_trampoline (MonoDomain *domain, MonoClass *klass) { - return mono_create_delegate_trampoline_with_method (domain, klass, NULL); +#ifdef MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE + return mono_create_delegate_trampoline_info (domain, klass, NULL)->invoke_impl; +#else + return NULL; +#endif } gpointer diff --git a/mono/mini/mini-unwind.h b/mono/mini/mini-unwind.h index 6b6ba7ad2f..a2c9f49805 100644 --- a/mono/mini/mini-unwind.h +++ b/mono/mini/mini-unwind.h @@ -60,6 +60,13 @@ #define DW_CFA_lo_user 0x1c #define DW_CFA_hi_user 0x3f +/* + * Mono extension, advance loc to a location stored outside the unwind info. + * This is required to make the unwind descriptors sharable, since otherwise each one would contain + * an advance_loc with a different offset just before the unwind ops for the epilog. + */ +#define DW_CFA_mono_advance_loc DW_CFA_lo_user + /* Represents one unwind instruction */ typedef struct { guint8 op; /* One of DW_CFA_... */ @@ -84,6 +91,16 @@ typedef struct { #define mono_emit_unwind_op_same_value(cfg,ip,reg) mono_emit_unwind_op (cfg, (ip) - (cfg)->native_code, DW_CFA_same_value, (reg), 0) /* Reg is saved at cfa+offset */ #define mono_emit_unwind_op_offset(cfg,ip,reg,offset) mono_emit_unwind_op (cfg, (ip) - (cfg)->native_code, DW_CFA_offset, (reg), (offset)) +/* Save the unwind state into an implicit stack */ +#define mono_emit_unwind_op_remember_state(cfg,ip) mono_emit_unwind_op (cfg, (ip) - (cfg)->native_code, DW_CFA_remember_state, 0, 0) +/* Restore the unwind state from the state stack */ +#define mono_emit_unwind_op_restore_state(cfg,ip) mono_emit_unwind_op (cfg, (ip) - (cfg)->native_code, DW_CFA_restore_state, 0, 0) +/* + * Mark the current location as a location stored outside the unwind info, which will be passed + * explicitly to mono_unwind_frame () in the MARK_LOCATIONS argument. This allows the unwind info + * to be shared among multiple methods. + */ +#define mono_emit_unwind_op_mark_loc(cfg,ip,n) mono_emit_unwind_op (cfg, (ip) - (cfg)->native_code, DW_CFA_mono_advance_loc, 0, (n)) /* Similar macros usable when a cfg is not available, like for trampolines */ #define mono_add_unwind_op_def_cfa(op_list,code,buf,reg,offset) do { (op_list) = g_slist_append ((op_list), mono_create_unwind_op ((code) - (buf), DW_CFA_def_cfa, (reg), (offset))); } while (0) @@ -127,7 +144,8 @@ mono_unwind_ops_encode (GSList *unwind_ops, guint32 *out_len) MONO_INTERNAL; void mono_unwind_frame (guint8 *unwind_info, guint32 unwind_info_len, - guint8 *start_ip, guint8 *end_ip, guint8 *ip, mgreg_t *regs, int nregs, + guint8 *start_ip, guint8 *end_ip, guint8 *ip, guint8 **mark_locations, + mgreg_t *regs, int nregs, mgreg_t **save_locations, int save_locations_len, guint8 **out_cfa) MONO_INTERNAL; diff --git a/mono/mini/mini-windows.c b/mono/mini/mini-windows.c index bb71ec4819..c43b1d0102 100644 --- a/mono/mini/mini-windows.c +++ b/mono/mini/mini-windows.c @@ -50,8 +50,6 @@ #include "jit-icalls.h" -gboolean mono_win_chained_exception_needs_run; - void mono_runtime_install_handlers (void) { @@ -83,7 +81,8 @@ mono_runtime_cleanup_handlers (void) gboolean SIG_HANDLER_SIGNATURE (mono_chain_signal) { - mono_win_chained_exception_needs_run = TRUE; + MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id); + jit_tls->mono_win_chained_exception_needs_run = TRUE; return TRUE; } diff --git a/mono/mini/mini-x86.c.REMOVED.git-id b/mono/mini/mini-x86.c.REMOVED.git-id index fbcd51bf38..cf06372a3e 100644 --- a/mono/mini/mini-x86.c.REMOVED.git-id +++ b/mono/mini/mini-x86.c.REMOVED.git-id @@ -1 +1 @@ -02a6d1daa781c7916d546236bdc4ad61452d0368 \ No newline at end of file +08637dbb8e1cad77848ae3c430340771b13ebf01 \ No newline at end of file diff --git a/mono/mini/mini-x86.h b/mono/mini/mini-x86.h index 995686bf94..e342054fce 100644 --- a/mono/mini/mini-x86.h +++ b/mono/mini/mini-x86.h @@ -74,6 +74,8 @@ struct sigcontext { #endif /* HAVE_WORKING_SIGALTSTACK */ #endif /* !HOST_WIN32 */ +/* #define MONO_X86_NO_PUSHES 1 */ + #define MONO_ARCH_SUPPORT_TASKLETS 1 #ifndef DISABLE_SIMD @@ -167,6 +169,7 @@ struct MonoLMF { typedef struct { gboolean need_stack_frame_inited; gboolean need_stack_frame; + gboolean no_pushes; int sp_fp_offset, param_area_size; } MonoCompileArch; @@ -206,12 +209,11 @@ typedef struct { #define MONO_ARCH_HAVE_IS_INT_OVERFLOW 1 #define MONO_ARCH_HAVE_INVALIDATE_METHOD 1 #define MONO_ARCH_NEED_GOT_VAR 1 +#ifndef HOST_WIN32 +/* X86 uses jit_tls->lmf (See emit_push_lmf ()) */ #define MONO_ARCH_ENABLE_MONO_LMF_VAR 1 +#endif #define MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE 1 -#define MONO_ARCH_HAVE_ATOMIC_ADD 1 -#define MONO_ARCH_HAVE_ATOMIC_EXCHANGE 1 -#define MONO_ARCH_HAVE_ATOMIC_CAS 1 -#define MONO_ARCH_HAVE_IMT 1 #define MONO_ARCH_HAVE_TLS_GET (mono_x86_have_tls_get ()) #define MONO_ARCH_IMT_REG X86_EDX #define MONO_ARCH_VTABLE_REG X86_EDX diff --git a/mono/mini/mini.c.REMOVED.git-id b/mono/mini/mini.c.REMOVED.git-id index e5b6fbb37f..7e58fe003d 100644 --- a/mono/mini/mini.c.REMOVED.git-id +++ b/mono/mini/mini.c.REMOVED.git-id @@ -1 +1 @@ -035f975c9f80430359e947c8c006f77b01df0f1f \ No newline at end of file +dd31c02d7a6db4954b9a979ebde01717f648748a \ No newline at end of file diff --git a/mono/mini/mini.h.REMOVED.git-id b/mono/mini/mini.h.REMOVED.git-id index 0cff243888..5b99018da2 100644 --- a/mono/mini/mini.h.REMOVED.git-id +++ b/mono/mini/mini.h.REMOVED.git-id @@ -1 +1 @@ -ff3d5537ad28b22cb4718acd8357fe1f20a0effe \ No newline at end of file +a15cbfa5e72262754a5f4614d473a1b886e61c12 \ No newline at end of file diff --git a/mono/mini/objects.cs b/mono/mini/objects.cs index 40c79e6280..0e8ea1a4d7 100644 --- a/mono/mini/objects.cs +++ b/mono/mini/objects.cs @@ -1625,6 +1625,20 @@ ncells ) { [MethodImplAttribute (MethodImplOptions.NoInlining)] static void t_14217_inner (BugStruct bug) { } + + [StructLayout(LayoutKind.Sequential)] + public struct EmptyStruct { + } + + class EmptyClass { + public static EmptyStruct s; + } + + // #20349 + static int test_0_empty_struct_as_static () { + var s = EmptyClass.s; + return 0; + } } #if MOBILE diff --git a/mono/mini/simd-intrinsics.c b/mono/mini/simd-intrinsics.c index ff737bbe93..2fb8f0709a 100644 --- a/mono/mini/simd-intrinsics.c +++ b/mono/mini/simd-intrinsics.c @@ -13,6 +13,7 @@ #include "mini.h" #include "ir-emit.h" #include "mono/utils/bsearch.h" +#include /* General notes on SIMD intrinsics @@ -1569,7 +1570,7 @@ mono_emit_vector_ldelema (MonoCompile *cfg, MonoType *array_type, MonoInst *arr, MONO_EMIT_NEW_BIALU_IMM (cfg, OP_MUL_IMM, mult_reg, index2_reg, size); MONO_EMIT_NEW_BIALU (cfg, OP_PADD, add_reg, array_reg, mult_reg); - NEW_BIALU_IMM (cfg, ins, OP_PADD_IMM, add_reg, add_reg, G_STRUCT_OFFSET (MonoArray, vector)); + NEW_BIALU_IMM (cfg, ins, OP_PADD_IMM, add_reg, add_reg, MONO_STRUCT_OFFSET (MonoArray, vector)); ins->type = STACK_PTR; MONO_ADD_INS (cfg->cbb, ins); diff --git a/mono/mini/ssa.c b/mono/mini/ssa.c index 023d277800..801826b96e 100644 --- a/mono/mini/ssa.c +++ b/mono/mini/ssa.c @@ -1424,7 +1424,7 @@ mono_ssa_loop_invariant_code_motion (MonoCompile *cfg) else sreg = -1; if (sreg != -1) { - MonoInst *tins; + MonoInst *tins, *var; skip = FALSE; for (tins = ins->prev; tins; tins = tins->prev) { @@ -1439,6 +1439,9 @@ mono_ssa_loop_invariant_code_motion (MonoCompile *cfg) } if (skip) continue; + var = get_vreg_to_inst (cfg, sreg); + if (var && (var->flags & (MONO_INST_VOLATILE|MONO_INST_INDIRECT))) + continue; ins->sreg1 = sreg; } diff --git a/mono/mini/ssapre.c b/mono/mini/ssapre.c index a6499d13d5..692eedfacc 100644 --- a/mono/mini/ssapre.c +++ b/mono/mini/ssapre.c @@ -651,7 +651,7 @@ add_expression_to_tree (MonoSsapreExpression *tree, MonoSsapreExpression *expres } #if (MONO_APPLY_SSAPRE_TO_SINGLE_EXPRESSION) -static char *mono_ssapre_expression_name = NULL; +static char *mono_ssapre_expression_name; static gboolean check_ssapre_expression_name (MonoSsapreWorkArea *area, MonoSsapreExpressionDescription *expression_description) { if (area->expression_is_handled_father) { diff --git a/mono/mini/tasklets.c b/mono/mini/tasklets.c index 6766c26a69..9ab067a76b 100644 --- a/mono/mini/tasklets.c +++ b/mono/mini/tasklets.c @@ -8,7 +8,7 @@ #if defined(MONO_SUPPORT_TASKLETS) /* keepalive_stacks could be a per-stack var to avoid locking overhead */ -static MonoGHashTable *keepalive_stacks = NULL; +static MonoGHashTable *keepalive_stacks; static CRITICAL_SECTION tasklets_mutex; #define tasklets_lock() EnterCriticalSection(&tasklets_mutex) #define tasklets_unlock() LeaveCriticalSection(&tasklets_mutex) diff --git a/mono/mini/tramp-amd64.c b/mono/mini/tramp-amd64.c index 69f4fb6597..50d57970fe 100644 --- a/mono/mini/tramp-amd64.c +++ b/mono/mini/tramp-amd64.c @@ -13,6 +13,7 @@ #include #include +#include #include #include #include @@ -585,17 +586,17 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf amd64_mov_reg_membase (code, AMD64_R11, AMD64_RBP, 8, sizeof(gpointer)); else amd64_mov_reg_imm (code, AMD64_R11, 0); - amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, rip), AMD64_R11, sizeof(mgreg_t)); + amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + MONO_STRUCT_OFFSET (MonoLMF, rip), AMD64_R11, sizeof(mgreg_t)); /* Save fp */ amd64_mov_reg_membase (code, AMD64_R11, AMD64_RSP, framesize, sizeof(mgreg_t)); - amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, rbp), AMD64_R11, sizeof(mgreg_t)); + amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + MONO_STRUCT_OFFSET (MonoLMF, rbp), AMD64_R11, sizeof(mgreg_t)); /* Save sp */ amd64_mov_reg_reg (code, AMD64_R11, AMD64_RSP, sizeof(mgreg_t)); amd64_alu_reg_imm (code, X86_ADD, AMD64_R11, framesize + 16); - amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, rsp), AMD64_R11, sizeof(mgreg_t)); + amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + MONO_STRUCT_OFFSET (MonoLMF, rsp), AMD64_R11, sizeof(mgreg_t)); /* Save pointer to registers */ amd64_lea_membase (code, AMD64_R11, AMD64_RBP, saved_regs_offset); - amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMFTramp, regs), AMD64_R11, sizeof(mgreg_t)); + amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + MONO_STRUCT_OFFSET (MonoLMFTramp, regs), AMD64_R11, sizeof(mgreg_t)); if (aot) { code = mono_arch_emit_load_aotconst (buf, code, &ji, MONO_PATCH_INFO_JIT_ICALL_ADDR, "mono_get_lmf_addr"); @@ -605,13 +606,13 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf amd64_call_reg (code, AMD64_R11); /* Save lmf_addr */ - amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMFTramp, lmf_addr), AMD64_RAX, sizeof(gpointer)); + amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + MONO_STRUCT_OFFSET (MonoLMFTramp, lmf_addr), AMD64_RAX, sizeof(gpointer)); /* Save previous_lmf */ /* Set the lowest bit to signal that this LMF has the ip field set */ /* Set the third lowest bit to signal that this is a MonoLMFTramp structure */ amd64_mov_reg_membase (code, AMD64_R11, AMD64_RAX, 0, sizeof(gpointer)); amd64_alu_reg_imm_size (code, X86_ADD, AMD64_R11, 0x5, sizeof(gpointer)); - amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, previous_lmf), AMD64_R11, sizeof(gpointer)); + amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + MONO_STRUCT_OFFSET (MonoLMF, previous_lmf), AMD64_R11, sizeof(gpointer)); /* Set new lmf */ amd64_lea_membase (code, AMD64_R11, AMD64_RBP, lmf_offset); amd64_mov_membase_reg (code, AMD64_RAX, 0, AMD64_R11, sizeof(gpointer)); @@ -658,9 +659,9 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf amd64_mov_reg_membase (code, AMD64_RAX, AMD64_RBP, res_offset, sizeof(mgreg_t)); /* Restore LMF */ - amd64_mov_reg_membase (code, AMD64_RCX, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, previous_lmf), sizeof(gpointer)); + amd64_mov_reg_membase (code, AMD64_RCX, AMD64_RBP, lmf_offset + MONO_STRUCT_OFFSET (MonoLMF, previous_lmf), sizeof(gpointer)); amd64_alu_reg_imm_size (code, X86_SUB, AMD64_RCX, 0x5, sizeof(gpointer)); - amd64_mov_reg_membase (code, AMD64_R11, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMFTramp, lmf_addr), sizeof(gpointer)); + amd64_mov_reg_membase (code, AMD64_R11, AMD64_RBP, lmf_offset + MONO_STRUCT_OFFSET (MonoLMFTramp, lmf_addr), sizeof(gpointer)); amd64_mov_membase_reg (code, AMD64_R11, 0, AMD64_RCX, sizeof(gpointer)); /* @@ -833,7 +834,7 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info amd64_mov_reg_reg (code, AMD64_RAX, AMD64_ARG_REG1, 8); } else { /* load rgctx ptr from vtable */ - amd64_mov_reg_membase (code, AMD64_RAX, AMD64_ARG_REG1, G_STRUCT_OFFSET (MonoVTable, runtime_generic_context), sizeof(gpointer)); + amd64_mov_reg_membase (code, AMD64_RAX, AMD64_ARG_REG1, MONO_STRUCT_OFFSET (MonoVTable, runtime_generic_context), sizeof(gpointer)); /* is the rgctx ptr null? */ amd64_test_reg_reg (code, AMD64_RAX, AMD64_RAX); /* if yes, jump to actual trampoline */ @@ -981,7 +982,7 @@ mono_arch_create_monitor_enter_trampoline (MonoTrampInfo **info, gboolean aot) amd64_branch8 (code, X86_CC_Z, -1, 1); /* load obj->synchronization to RCX */ - amd64_mov_reg_membase (code, AMD64_RCX, AMD64_RDI, G_STRUCT_OFFSET (MonoObject, synchronisation), 8); + amd64_mov_reg_membase (code, AMD64_RCX, AMD64_RDI, MONO_STRUCT_OFFSET (MonoObject, synchronisation), 8); if (mono_gc_is_moving ()) { /*if bit zero is set it's a thin hash*/ @@ -1003,7 +1004,7 @@ mono_arch_create_monitor_enter_trampoline (MonoTrampInfo **info, gboolean aot) /* load MonoInternalThread* into RDX */ code = mono_amd64_emit_tls_get (code, AMD64_RDX, mono_thread_get_tls_offset ()); /* load TID into RDX */ - amd64_mov_reg_membase (code, AMD64_RDX, AMD64_RDX, G_STRUCT_OFFSET (MonoInternalThread, tid), 8); + amd64_mov_reg_membase (code, AMD64_RDX, AMD64_RDX, MONO_STRUCT_OFFSET (MonoInternalThread, tid), 8); /* is synchronization->owner null? */ amd64_alu_membase_imm_size (code, X86_CMP, AMD64_RCX, owner_offset, 0, 8); @@ -1106,7 +1107,7 @@ mono_arch_create_monitor_exit_trampoline (MonoTrampInfo **info, gboolean aot) amd64_branch8 (code, X86_CC_Z, -1, 1); /* load obj->synchronization to RCX */ - amd64_mov_reg_membase (code, AMD64_RCX, AMD64_RDI, G_STRUCT_OFFSET (MonoObject, synchronisation), 8); + amd64_mov_reg_membase (code, AMD64_RCX, AMD64_RDI, MONO_STRUCT_OFFSET (MonoObject, synchronisation), 8); if (mono_gc_is_moving ()) { /*if bit zero is set it's a thin hash*/ @@ -1129,7 +1130,7 @@ mono_arch_create_monitor_exit_trampoline (MonoTrampInfo **info, gboolean aot) /* load MonoInternalThread* into RDX */ code = mono_amd64_emit_tls_get (code, AMD64_RDX, mono_thread_get_tls_offset ()); /* load TID into RDX */ - amd64_mov_reg_membase (code, AMD64_RDX, AMD64_RDX, G_STRUCT_OFFSET (MonoInternalThread, tid), 8); + amd64_mov_reg_membase (code, AMD64_RDX, AMD64_RDX, MONO_STRUCT_OFFSET (MonoInternalThread, tid), 8); /* is synchronization->owner == TID */ amd64_alu_membase_reg_size (code, X86_CMP, AMD64_RCX, owner_offset, AMD64_RDX, 8); /* if no, jump to actual trampoline */ @@ -1228,7 +1229,7 @@ mono_arch_create_handler_block_trampoline (MonoTrampInfo **info, gboolean aot) if (mono_get_jit_tls_offset () != -1) { code = mono_amd64_emit_tls_get (code, AMD64_RDI, mono_get_jit_tls_offset ()); - amd64_mov_reg_membase (code, AMD64_RDI, AMD64_RDI, G_STRUCT_OFFSET (MonoJitTlsData, handler_block_return_address), 8); + amd64_mov_reg_membase (code, AMD64_RDI, AMD64_RDI, MONO_STRUCT_OFFSET (MonoJitTlsData, handler_block_return_address), 8); /* Simulate a call */ amd64_push_reg (code, AMD64_RAX); amd64_jump_code (code, tramp); diff --git a/mono/mini/tramp-arm.c b/mono/mini/tramp-arm.c index 9810f48f79..bb500a7c0f 100644 --- a/mono/mini/tramp-arm.c +++ b/mono/mini/tramp-arm.c @@ -12,6 +12,7 @@ #include #include +#include #include #include #include @@ -296,33 +297,33 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf */ /* r0 is the result from mono_get_lmf_addr () */ - ARM_STR_IMM (code, ARMREG_R0, ARMREG_V1, G_STRUCT_OFFSET (MonoLMF, lmf_addr)); + ARM_STR_IMM (code, ARMREG_R0, ARMREG_V1, MONO_STRUCT_OFFSET (MonoLMF, lmf_addr)); /* new_lmf->previous_lmf = *lmf_addr */ - ARM_LDR_IMM (code, ARMREG_R2, ARMREG_R0, G_STRUCT_OFFSET (MonoLMF, previous_lmf)); - ARM_STR_IMM (code, ARMREG_R2, ARMREG_V1, G_STRUCT_OFFSET (MonoLMF, previous_lmf)); + ARM_LDR_IMM (code, ARMREG_R2, ARMREG_R0, MONO_STRUCT_OFFSET (MonoLMF, previous_lmf)); + ARM_STR_IMM (code, ARMREG_R2, ARMREG_V1, MONO_STRUCT_OFFSET (MonoLMF, previous_lmf)); /* *(lmf_addr) = r1 */ - ARM_STR_IMM (code, ARMREG_V1, ARMREG_R0, G_STRUCT_OFFSET (MonoLMF, previous_lmf)); + ARM_STR_IMM (code, ARMREG_V1, ARMREG_R0, MONO_STRUCT_OFFSET (MonoLMF, previous_lmf)); /* save method info (it's in v2) */ if ((tramp_type == MONO_TRAMPOLINE_JIT) || (tramp_type == MONO_TRAMPOLINE_JUMP)) - ARM_STR_IMM (code, ARMREG_V2, ARMREG_V1, G_STRUCT_OFFSET (MonoLMF, method)); + ARM_STR_IMM (code, ARMREG_V2, ARMREG_V1, MONO_STRUCT_OFFSET (MonoLMF, method)); else { ARM_MOV_REG_IMM8 (code, ARMREG_R2, 0); - ARM_STR_IMM (code, ARMREG_R2, ARMREG_V1, G_STRUCT_OFFSET (MonoLMF, method)); + ARM_STR_IMM (code, ARMREG_R2, ARMREG_V1, MONO_STRUCT_OFFSET (MonoLMF, method)); } /* save caller SP */ code = mono_arm_emit_load_imm (code, ARMREG_R2, cfa_offset); ARM_ADD_REG_REG (code, ARMREG_R2, ARMREG_SP, ARMREG_R2); - ARM_STR_IMM (code, ARMREG_R2, ARMREG_V1, G_STRUCT_OFFSET (MonoLMF, sp)); + ARM_STR_IMM (code, ARMREG_R2, ARMREG_V1, MONO_STRUCT_OFFSET (MonoLMF, sp)); /* save caller FP */ - ARM_LDR_IMM (code, ARMREG_R2, ARMREG_V1, (G_STRUCT_OFFSET (MonoLMF, iregs) + ARMREG_FP*4)); - ARM_STR_IMM (code, ARMREG_R2, ARMREG_V1, G_STRUCT_OFFSET (MonoLMF, fp)); + ARM_LDR_IMM (code, ARMREG_R2, ARMREG_V1, (MONO_STRUCT_OFFSET (MonoLMF, iregs) + ARMREG_FP*4)); + ARM_STR_IMM (code, ARMREG_R2, ARMREG_V1, MONO_STRUCT_OFFSET (MonoLMF, fp)); /* save the IP (caller ip) */ if (tramp_type == MONO_TRAMPOLINE_JUMP) { ARM_MOV_REG_IMM8 (code, ARMREG_R2, 0); } else { - ARM_LDR_IMM (code, ARMREG_R2, ARMREG_V1, (G_STRUCT_OFFSET (MonoLMF, iregs) + 13*4)); + ARM_LDR_IMM (code, ARMREG_R2, ARMREG_V1, (MONO_STRUCT_OFFSET (MonoLMF, iregs) + 13*4)); } - ARM_STR_IMM (code, ARMREG_R2, ARMREG_V1, G_STRUCT_OFFSET (MonoLMF, ip)); + ARM_STR_IMM (code, ARMREG_R2, ARMREG_V1, MONO_STRUCT_OFFSET (MonoLMF, ip)); /* Save VFP registers. */ if (mono_arm_is_hard_float ()) { @@ -331,7 +332,7 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf * it's easier than attempting to store them on the stack since * this trampoline code is pretty messy. */ - ARM_ADD_REG_IMM8 (code, ARMREG_R0, ARMREG_V1, G_STRUCT_OFFSET (MonoLMF, fregs)); + ARM_ADD_REG_IMM8 (code, ARMREG_R0, ARMREG_V1, MONO_STRUCT_OFFSET (MonoLMF, fregs)); ARM_FSTMD (code, ARM_VFP_D0, 8, ARMREG_R0); } @@ -339,7 +340,7 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf * Now we're ready to call xxx_trampoline (). */ /* Arg 1: the saved registers */ - ARM_ADD_REG_IMM (code, ARMREG_R0, ARMREG_V1, G_STRUCT_OFFSET (MonoLMF, iregs), 0); + ARM_ADD_REG_IMM (code, ARMREG_R0, ARMREG_V1, MONO_STRUCT_OFFSET (MonoLMF, iregs), 0); /* Arg 2: code (next address to the instruction that called us) */ if (tramp_type == MONO_TRAMPOLINE_JUMP) { @@ -378,7 +379,7 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf * clobbered). This way we can just restore all the regs in one inst * and branch to IP. */ - ARM_STR_IMM (code, ARMREG_R0, ARMREG_V1, G_STRUCT_OFFSET (MonoLMF, iregs) + (ARMREG_R12 * sizeof (mgreg_t))); + ARM_STR_IMM (code, ARMREG_R0, ARMREG_V1, MONO_STRUCT_OFFSET (MonoLMF, iregs) + (ARMREG_R12 * sizeof (mgreg_t))); /* Check for thread interruption */ /* This is not perf critical code so no need to check the interrupt flag */ @@ -413,15 +414,15 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf * the same state as before we executed. */ /* ip = previous_lmf */ - ARM_LDR_IMM (code, ARMREG_IP, ARMREG_V1, G_STRUCT_OFFSET (MonoLMF, previous_lmf)); + ARM_LDR_IMM (code, ARMREG_IP, ARMREG_V1, MONO_STRUCT_OFFSET (MonoLMF, previous_lmf)); /* lr = lmf_addr */ - ARM_LDR_IMM (code, ARMREG_LR, ARMREG_V1, G_STRUCT_OFFSET (MonoLMF, lmf_addr)); + ARM_LDR_IMM (code, ARMREG_LR, ARMREG_V1, MONO_STRUCT_OFFSET (MonoLMF, lmf_addr)); /* *(lmf_addr) = previous_lmf */ - ARM_STR_IMM (code, ARMREG_IP, ARMREG_LR, G_STRUCT_OFFSET (MonoLMF, previous_lmf)); + ARM_STR_IMM (code, ARMREG_IP, ARMREG_LR, MONO_STRUCT_OFFSET (MonoLMF, previous_lmf)); /* Restore VFP registers. */ if (mono_arm_is_hard_float ()) { - ARM_ADD_REG_IMM8 (code, ARMREG_R0, ARMREG_V1, G_STRUCT_OFFSET (MonoLMF, fregs)); + ARM_ADD_REG_IMM8 (code, ARMREG_R0, ARMREG_V1, MONO_STRUCT_OFFSET (MonoLMF, fregs)); ARM_FLDMD (code, ARM_VFP_D0, 8, ARMREG_R0); } @@ -703,8 +704,8 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info ARM_MOV_REG_REG (code, ARMREG_R1, ARMREG_R0); } else { /* load rgctx ptr from vtable */ - g_assert (arm_is_imm12 (G_STRUCT_OFFSET (MonoVTable, runtime_generic_context))); - ARM_LDR_IMM (code, ARMREG_R1, ARMREG_R0, G_STRUCT_OFFSET (MonoVTable, runtime_generic_context)); + g_assert (arm_is_imm12 (MONO_STRUCT_OFFSET (MonoVTable, runtime_generic_context))); + ARM_LDR_IMM (code, ARMREG_R1, ARMREG_R0, MONO_STRUCT_OFFSET (MonoVTable, runtime_generic_context)); /* is the rgctx ptr null? */ ARM_CMP_REG_IMM (code, ARMREG_R1, 0, 0); /* if yes, jump to actual trampoline */ diff --git a/mono/mini/tramp-mips.c b/mono/mini/tramp-mips.c index d7b598537d..9b80527ae7 100644 --- a/mono/mini/tramp-mips.c +++ b/mono/mini/tramp-mips.c @@ -16,6 +16,7 @@ #include #include +#include #include #include #include @@ -408,8 +409,8 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info mips_move (code, mips_a1, mips_a0); } else { /* load rgctx ptr from vtable */ - g_assert (mips_is_imm16 (G_STRUCT_OFFSET (MonoVTable, runtime_generic_context))); - mips_lw (code, mips_a1, mips_a0, G_STRUCT_OFFSET (MonoVTable, runtime_generic_context)); + g_assert (mips_is_imm16 (MONO_STRUCT_OFFSET (MonoVTable, runtime_generic_context))); + mips_lw (code, mips_a1, mips_a0, MONO_STRUCT_OFFSET (MonoVTable, runtime_generic_context)); /* is the rgctx ptr null? */ /* if yes, jump to actual trampoline */ rgctx_null_jumps [njumps ++] = code; diff --git a/mono/mini/tramp-ppc.c b/mono/mini/tramp-ppc.c index aec06abc14..6fac1a1bcb 100644 --- a/mono/mini/tramp-ppc.c +++ b/mono/mini/tramp-ppc.c @@ -14,6 +14,7 @@ #include #include +#include #include #include #include @@ -545,7 +546,7 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info ppc_mr (code, ppc_r4, PPC_FIRST_ARG_REG); } else { /* load rgctx ptr from vtable */ - ppc_ldptr (code, ppc_r4, G_STRUCT_OFFSET (MonoVTable, runtime_generic_context), PPC_FIRST_ARG_REG); + ppc_ldptr (code, ppc_r4, MONO_STRUCT_OFFSET (MonoVTable, runtime_generic_context), PPC_FIRST_ARG_REG); /* is the rgctx ptr null? */ ppc_compare_reg_imm (code, 0, ppc_r4, 0); /* if yes, jump to actual trampoline */ diff --git a/mono/mini/tramp-s390x.c b/mono/mini/tramp-s390x.c index 8f2875afdf..fa664e12e1 100644 --- a/mono/mini/tramp-s390x.c +++ b/mono/mini/tramp-s390x.c @@ -46,6 +46,7 @@ #include #include +#include #include #include #include @@ -53,6 +54,7 @@ #include "mini.h" #include "mini-s390x.h" +#include "support-s390x.h" /*========================= End of Includes ========================*/ @@ -99,10 +101,7 @@ mono_arch_get_unbox_trampoline (MonoMethod *method, gpointer addr) start = code = mono_domain_code_reserve (domain, 28); - s390_basr (code, s390_r1, 0); - s390_j (code, 6); - s390_llong(code, addr); - s390_lg (code, s390_r1, 0, s390_r1, 4); + S390_SET (code, s390_r1, addr); s390_aghi (code, this_pos, sizeof(MonoObject)); s390_br (code, s390_r1); @@ -129,27 +128,20 @@ mono_arch_patch_callsite (guint8 *method_start, guint8 *orig_code, guint8 *addr) gint32 displace; unsigned short opcode; - opcode = *((unsigned short *) (orig_code - 6)); - if (opcode == 0xc0e5) { + opcode = *((unsigned short *) (orig_code - 2)); + if (opcode == 0x0dee) { + /* This should be a 'iihf/iilf' sequence */ + S390_EMIT_CALL((orig_code - 14), addr); + mono_arch_flush_icache (orig_code - 14, 12); + } else { +fprintf(stderr, "%p %02x %02x %02x %02x\n", +&orig_code[-14], orig_code[-12], orig_code[-11], orig_code[-6], orig_code[-5]); +fflush(stderr); /* This is the 'brasl' instruction */ orig_code -= 4; displace = ((gssize) addr - (gssize) (orig_code - 2)) / 2; s390_patch_rel (orig_code, displace); mono_arch_flush_icache (orig_code, 4); - } else { - /* This should be a 'lg %r14,4(%r13)' then a 'basr r14, r14' instruction */ - g_assert (orig_code [-8] == 0xe3); - g_assert (orig_code [-7] == 0xe0); - g_assert (orig_code [-6] == 0xd0); - g_assert (orig_code [-5] == 0x04); - g_assert (orig_code [-4] == 0x00); - g_assert (orig_code [-3] == 0x04); - opcode = *((unsigned short*) (orig_code - 2)); - g_assert (opcode == 0x0dee); - - /* The call address is stored in the 8 bytes preceeding the basr instruction */ - s390_patch_addr(orig_code - 16, (gssize)addr); - mono_arch_flush_icache (orig_code - 16, 8); } } @@ -231,7 +223,7 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf { char *tramp_name; guint8 *buf, *tramp, *code; - int i, offset, lmfOffset; + int i, offset, lmfOffset, has_caller; GSList *unwind_ops = NULL; MonoJumpInfo *ji = NULL; @@ -242,6 +234,12 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf code = buf = mono_global_codeman_reserve(512); + if ((tramp_type == MONO_TRAMPOLINE_JUMP) || + (tramp_type == MONO_TRAMPOLINE_HANDLER_BLOCK_GUARD)) + has_caller = 0; + else + has_caller = 1; + /*----------------------------------------------------------- STEP 0: First create a non-standard function prologue with a stack size big enough to save our registers. @@ -268,10 +266,7 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf method. ----------------------------------------------------------*/ - s390_basr (buf, s390_r13, 0); - s390_j (buf, 6); - s390_llong(buf, mono_get_lmf_addr); - s390_lg (buf, s390_r1, 0, s390_r13, 4); + S390_SET (buf, s390_r1, mono_get_lmf_addr); s390_basr (buf, s390_r14, s390_r1); /*---------------------------------------------------------------*/ @@ -321,11 +316,10 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf /*---------------------------------------------------------------*/ /* save the current IP */ /*---------------------------------------------------------------*/ - if (tramp_type == MONO_TRAMPOLINE_JUMP) { - s390_lghi (buf, s390_r1, 0); - } else { + if (has_caller) { s390_lg (buf, s390_r1, 0, s390_r1, S390_RET_ADDR_OFFSET); - // s390_la (buf, s390_r1, 0, s390_r1, 0); + } else { + s390_lghi (buf, s390_r1, 0); } s390_stg (buf, s390_r1, 0, s390_r13, G_STRUCT_OFFSET(MonoLMF, eip)); @@ -351,10 +345,10 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf s390_la (buf, s390_r2, 0, STK_BASE, CREATE_STACK_SIZE); /* Arg 2: code (next address to the instruction that called us) */ - if (tramp_type == MONO_TRAMPOLINE_JUMP) { - s390_lghi (buf, s390_r3, 0); - } else { + if (has_caller) { s390_lg (buf, s390_r3, 0, s390_r11, S390_RET_ADDR_OFFSET); + } else { + s390_lghi (buf, s390_r3, 0); } /* Arg 3: Trampoline argument */ @@ -366,11 +360,8 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf /* Arg 4: trampoline address. Ignore for now */ /* Calculate call address and call the C trampoline. Return value will be in r2 */ - s390_basr (buf, s390_r13, 0); - s390_j (buf, 6); tramp = (guint8*)mono_get_trampoline_func (tramp_type); - s390_llong (buf, tramp); - s390_lg (buf, s390_r1, 0, s390_r13, 4); + S390_SET (buf, s390_r1, tramp); s390_basr (buf, s390_r14, s390_r1); /* OK, code address is now on r2. Move it to r1, so that we @@ -426,6 +417,28 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf /*========================= End of Function ========================*/ +/*------------------------------------------------------------------*/ +/* */ +/* Name - mono_arch_invalidate_method */ +/* */ +/* Function - */ +/* */ +/*------------------------------------------------------------------*/ + +void +mono_arch_invalidate_method (MonoJitInfo *ji, void *func, gpointer func_arg) +{ + /* FIXME: This is not thread safe */ + guint8 *code = ji->code_start; + + S390_SET (code, s390_r1, func); + S390_SET (code, s390_r2, func_arg); + s390_br (code, s390_r1); + +} + +/*========================= End of Function ========================*/ + /*------------------------------------------------------------------*/ /* */ /* Name - mono_arch_create_specific_trampoline */ @@ -449,10 +462,7 @@ mono_arch_create_specific_trampoline (gpointer arg1, MonoTrampolineType tramp_ty /*----------------------------------------------------------*/ code = buf = mono_domain_code_reserve (domain, SPECIFIC_TRAMPOLINE_SIZE); - s390_basr (buf, s390_r1, 0); - s390_j (buf, 6); - s390_llong(buf, arg1); - s390_lg (buf, s390_r1, 0, s390_r1, 4); + S390_SET (buf, s390_r1, arg1); displace = (tramp - buf) / 2; s390_jg (buf, displace); @@ -524,7 +534,7 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info s390_lgr (code, s390_r1, s390_r2); } else { /* load rgctx ptr from vtable */ - s390_lg (code, s390_r1, 0, s390_r2, G_STRUCT_OFFSET(MonoVTable, runtime_generic_context)); + s390_lg (code, s390_r1, 0, s390_r2, MONO_STRUCT_OFFSET(MonoVTable, runtime_generic_context)); /* is the rgctx ptr null? */ s390_ltgr (code, s390_r1, s390_r1); /* if yes, jump to actual trampoline */ @@ -615,10 +625,7 @@ mono_arch_get_static_rgctx_trampoline (MonoMethod *m, start = code = mono_domain_code_reserve (domain, buf_len); - s390_basr (code, s390_r1, 0); - s390_j (code, 6); - s390_llong(code, mrgctx); - s390_lg (code, MONO_ARCH_RGCTX_REG, 0, s390_r1, 4); + S390_SET (code, MONO_ARCH_RGCTX_REG, mrgctx); displace = ((uintptr_t) addr - (uintptr_t) code) / 2; s390_jg (code, displace); g_assert ((code - start) < buf_len); @@ -630,6 +637,80 @@ mono_arch_get_static_rgctx_trampoline (MonoMethod *m, /*========================= End of Function ========================*/ +/*------------------------------------------------------------------*/ +/* */ +/* Name - handler_block_trampoline_helper */ +/* */ +/* Function - */ +/* */ +/*------------------------------------------------------------------*/ + +static void +handler_block_trampoline_helper (gpointer *ptr) +{ + MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id); + *ptr = jit_tls->handler_block_return_address; +} + +/*========================= End of Function ========================*/ + +/*------------------------------------------------------------------*/ +/* */ +/* Name - mono_arch_create_handler_block_trampoline */ +/* */ +/* Function - */ +/* */ +/*------------------------------------------------------------------*/ + +gpointer +mono_arch_create_handler_block_trampoline (MonoTrampInfo **info, gboolean aot) +{ + guint8 *tramp = mono_get_trampoline_code (MONO_TRAMPOLINE_HANDLER_BLOCK_GUARD); + guint8 *code, *buf; + int tramp_size = 64; + MonoJumpInfo *ji = NULL; + GSList *unwind_ops = NULL; + + g_assert (!aot); + + code = buf = mono_global_codeman_reserve (tramp_size); + + /* + * This trampoline restore the call chain of the handler block + * then jumps into the code that deals with it. + */ + + if (mono_get_jit_tls_offset () != -1) { + s390_ear (code, s390_r1, 0); + s390_sllg (code, s390_r1, s390_r1, 0, 32); + s390_ear (code, s390_r1, 1); + S390_SET (code, s390_r14, mono_get_jit_tls_offset()); + s390_lg (code, s390_r14, s390_r1, 0, G_STRUCT_OFFSET(MonoJitTlsData, handler_block_return_address)); + /* + * Simulate a call + */ + S390_SET (code, s390_r1, tramp); + s390_br (code, s390_r1); + } else { + /* + * Slow path uses a C helper + */ + S390_SET (code, s390_r2, tramp); + S390_SET (code, s390_r1, handler_block_trampoline_helper); + s390_br (code, s390_r1); + } + + mono_arch_flush_icache (buf, code - buf); + g_assert (code - buf <= tramp_size); + + if (info) + *info = mono_tramp_info_create ("handler_block_trampoline", buf, code - buf, ji, unwind_ops); + + return buf; +} + +/*========================= End of Function ========================*/ + /*------------------------------------------------------------------*/ /* */ /* Name - mono_arch_create_generic_class_init_trampoline */ @@ -645,7 +726,6 @@ mono_arch_create_generic_class_init_trampoline (MonoTrampInfo **info, gboolean a guint8 *code, *buf; static int byte_offset = -1; static guint8 bitmask; - guint8 *jump; gint32 displace; int tramp_size; GSList *unwind_ops = NULL; diff --git a/mono/mini/tramp-x86.c b/mono/mini/tramp-x86.c index 5d9f17dff5..e86e061eb7 100644 --- a/mono/mini/tramp-x86.c +++ b/mono/mini/tramp-x86.c @@ -10,6 +10,7 @@ #include #include +#include #include #include #include @@ -25,6 +26,8 @@ #include "mini.h" #include "mini-x86.h" +#define ALIGN_TO(val,align) ((((guint64)val) + ((align) - 1)) & ~((align) - 1)) + /* * mono_arch_get_unbox_trampoline: * @m: method pointer @@ -297,9 +300,9 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf { char *tramp_name; guint8 *buf, *code, *tramp; - int pushed_args, pushed_args_caller_saved; GSList *unwind_ops = NULL; MonoJumpInfo *ji = NULL; + int i, offset, frame_size, regarray_offset, lmf_offset, caller_ip_offset, arg_offset; unwind_ops = mono_arch_get_cie_program (); @@ -310,65 +313,75 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf * the ret address is at: esp + (pushed_args + 1) * sizeof (gpointer) */ - /* Put all registers into an array on the stack - * If this code is changed, make sure to update the offset value in - * mono_arch_get_this_arg_from_call () in mini-x86.c. - */ - x86_push_reg (code, X86_EDI); - x86_push_reg (code, X86_ESI); + // FIXME: Unwind info + + /* Compute frame offsets relative to the frame pointer %ebp */ + arg_offset = sizeof (mgreg_t); + caller_ip_offset = 2 * sizeof (mgreg_t); + offset = 0; + offset += sizeof (MonoLMF); + lmf_offset = -offset; + offset += X86_NREG * sizeof (mgreg_t); + regarray_offset = -offset; + /* Argument area */ + offset += 4 * sizeof (mgreg_t); + frame_size = ALIGN_TO (offset, MONO_ARCH_FRAME_ALIGNMENT); + + /* Allocate frame */ x86_push_reg (code, X86_EBP); - x86_push_reg (code, X86_ESP); - x86_push_reg (code, X86_EBX); - x86_push_reg (code, X86_EDX); - x86_push_reg (code, X86_ECX); - x86_push_reg (code, X86_EAX); + x86_mov_reg_reg (code, X86_EBP, X86_ESP, sizeof (mgreg_t)); + /* There are three words on the stack, adding + 4 aligns the stack to 16, which is needed on osx */ + x86_alu_reg_imm (code, X86_SUB, X86_ESP, frame_size + sizeof (mgreg_t)); - pushed_args_caller_saved = pushed_args = 8; + /* Save all registers */ + for (i = X86_EAX; i <= X86_EDI; ++i) { + int reg = i; - /* Align stack on apple */ - x86_alu_reg_imm (code, X86_SUB, X86_ESP, 4); + if (i == X86_EBP) { + /* Save original ebp */ + /* EAX is already saved */ + x86_mov_reg_membase (code, X86_EAX, X86_EBP, 0, sizeof (mgreg_t)); + reg = X86_EAX; + } else if (i == X86_ESP) { + /* Save original esp */ + /* EAX is already saved */ + x86_mov_reg_reg (code, X86_EAX, X86_EBP, sizeof (mgreg_t)); + /* Saved ebp + trampoline arg + return addr */ + x86_alu_reg_imm (code, X86_ADD, X86_EAX, 3 * sizeof (mgreg_t)); + reg = X86_EAX; + } + x86_mov_membase_reg (code, X86_EBP, regarray_offset + (i * sizeof (mgreg_t)), reg, sizeof (mgreg_t)); + } - pushed_args ++; - - /* save LMF begin */ - - /* save the IP (caller ip) */ - if (tramp_type == MONO_TRAMPOLINE_JUMP) - x86_push_imm (code, 0); - else - x86_push_membase (code, X86_ESP, (pushed_args + 1) * sizeof (gpointer)); - - pushed_args++; - - x86_push_reg (code, X86_EBP); - x86_push_reg (code, X86_ESI); - x86_push_reg (code, X86_EDI); - x86_push_reg (code, X86_EBX); - - pushed_args += 4; - - /* save ESP */ - x86_push_reg (code, X86_ESP); - /* Adjust ESP so it points to the previous frame */ - x86_alu_membase_imm (code, X86_ADD, X86_ESP, 0, (pushed_args + 2) * 4); - - pushed_args ++; - - /* save method info */ - if ((tramp_type == MONO_TRAMPOLINE_JIT) || (tramp_type == MONO_TRAMPOLINE_JUMP)) - x86_push_membase (code, X86_ESP, pushed_args * sizeof (gpointer)); - else - x86_push_imm (code, 0); - - pushed_args++; - - /* On apple, the stack is correctly aligned to 16 bytes because pushed_args is - * 16 and there is the extra trampoline arg + the return ip pushed by call - * FIXME: Note that if an exception happens while some args are pushed - * on the stack, the stack will be misaligned. - */ - g_assert (pushed_args == 16); + /* Setup LMF */ + /* eip */ + if (tramp_type == MONO_TRAMPOLINE_JUMP) { + x86_mov_membase_imm (code, X86_EBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, eip), 0, sizeof (mgreg_t)); + } else { + x86_mov_reg_membase (code, X86_EAX, X86_EBP, caller_ip_offset, sizeof (mgreg_t)); + x86_mov_membase_reg (code, X86_EBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, eip), X86_EAX, sizeof (mgreg_t)); + } + /* method */ + if ((tramp_type == MONO_TRAMPOLINE_JIT) || (tramp_type == MONO_TRAMPOLINE_JUMP)) { + x86_mov_reg_membase (code, X86_EAX, X86_EBP, arg_offset, sizeof (mgreg_t)); + x86_mov_membase_reg (code, X86_EBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, method), X86_EAX, sizeof (mgreg_t)); + } else { + x86_mov_membase_imm (code, X86_EBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, method), 0, sizeof (mgreg_t)); + } + /* esp */ + x86_mov_reg_membase (code, X86_EAX, X86_EBP, regarray_offset + (X86_ESP * sizeof (mgreg_t)), sizeof (mgreg_t)); + x86_mov_membase_reg (code, X86_EBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, esp), X86_EAX, sizeof (mgreg_t)); + /* callee save registers */ + x86_mov_reg_membase (code, X86_EAX, X86_EBP, regarray_offset + (X86_EBX * sizeof (mgreg_t)), sizeof (mgreg_t)); + x86_mov_membase_reg (code, X86_EBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, ebx), X86_EAX, sizeof (mgreg_t)); + x86_mov_reg_membase (code, X86_EAX, X86_EBP, regarray_offset + (X86_EDI * sizeof (mgreg_t)), sizeof (mgreg_t)); + x86_mov_membase_reg (code, X86_EBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, edi), X86_EAX, sizeof (mgreg_t)); + x86_mov_reg_membase (code, X86_EAX, X86_EBP, regarray_offset + (X86_ESI * sizeof (mgreg_t)), sizeof (mgreg_t)); + x86_mov_membase_reg (code, X86_EBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, esi), X86_EAX, sizeof (mgreg_t)); + x86_mov_reg_membase (code, X86_EAX, X86_EBP, regarray_offset + (X86_EBP * sizeof (mgreg_t)), sizeof (mgreg_t)); + x86_mov_membase_reg (code, X86_EBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, ebp), X86_EAX, sizeof (mgreg_t)); + /* Push LMF */ /* get the address of lmf for the current thread */ if (aot) { code = mono_arch_emit_load_aotconst (buf, code, &ji, MONO_PATCH_INFO_JIT_ICALL_ADDR, "mono_get_lmf_addr"); @@ -376,42 +389,36 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf } else { x86_call_code (code, mono_get_lmf_addr); } - /* push lmf */ - x86_push_reg (code, X86_EAX); - /* push *lfm (previous_lmf) */ - x86_push_membase (code, X86_EAX, 0); + /* lmf->lmf_addr = lmf_addr (%eax) */ + x86_mov_membase_reg (code, X86_EBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, lmf_addr), X86_EAX, sizeof (mgreg_t)); + /* lmf->previous_lmf = *(lmf_addr) */ + x86_mov_reg_membase (code, X86_ECX, X86_EAX, 0, sizeof (mgreg_t)); /* Signal to mono_arch_find_jit_info () that this is a trampoline frame */ - x86_alu_membase_imm (code, X86_ADD, X86_ESP, 0, 1); - /* *(lmf) = ESP */ - x86_mov_membase_reg (code, X86_EAX, 0, X86_ESP, 4); - /* save LFM end */ + x86_alu_reg_imm (code, X86_ADD, X86_ECX, 1); + x86_mov_membase_reg (code, X86_EBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, previous_lmf), X86_ECX, sizeof (mgreg_t)); + /* *lmf_addr = lmf */ + x86_lea_membase (code, X86_ECX, X86_EBP, lmf_offset); + x86_mov_membase_reg (code, X86_EAX, 0, X86_ECX, sizeof (mgreg_t)); - pushed_args += 2; - - /* starting the call sequence */ - - /* FIXME: Push the trampoline address */ - x86_push_imm (code, 0); - - pushed_args++; - - /* push the method info */ - x86_push_membase (code, X86_ESP, pushed_args * sizeof (gpointer)); - - pushed_args++; - - /* push the return address onto the stack */ - if (tramp_type == MONO_TRAMPOLINE_JUMP) - x86_push_imm (code, 0); - else - x86_push_membase (code, X86_ESP, (pushed_args + 1) * sizeof (gpointer)); - pushed_args++; - /* push the address of the register array */ - x86_lea_membase (code, X86_EAX, X86_ESP, (pushed_args - 8) * sizeof (gpointer)); - x86_push_reg (code, X86_EAX); - - pushed_args++; + /* Call trampoline function */ + /* Arg 1 - registers */ + x86_lea_membase (code, X86_EAX, X86_EBP, regarray_offset); + x86_mov_membase_reg (code, X86_ESP, (0 * sizeof (mgreg_t)), X86_EAX, sizeof (mgreg_t)); + /* Arg2 - calling code */ + if (tramp_type == MONO_TRAMPOLINE_JUMP) { + x86_mov_membase_imm (code, X86_ESP, (1 * sizeof (mgreg_t)), 0, sizeof (mgreg_t)); + } else { + x86_mov_reg_membase (code, X86_EAX, X86_EBP, caller_ip_offset, sizeof (mgreg_t)); + x86_mov_membase_reg (code, X86_ESP, (1 * sizeof (mgreg_t)), X86_EAX, sizeof (mgreg_t)); + } + /* Arg3 - trampoline argument */ + x86_mov_reg_membase (code, X86_EAX, X86_EBP, arg_offset, sizeof (mgreg_t)); + x86_mov_membase_reg (code, X86_ESP, (2 * sizeof (mgreg_t)), X86_EAX, sizeof (mgreg_t)); + /* Arg4 - trampoline address */ + // FIXME: + x86_mov_membase_imm (code, X86_ESP, (3 * sizeof (mgreg_t)), 0, sizeof (mgreg_t)); + // FIXME: #ifdef __APPLE__ /* check the stack is aligned after the ret ip is pushed */ /*x86_mov_reg_reg (buf, X86_EDX, X86_ESP, 4); @@ -421,8 +428,6 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf x86_breakpoint (buf);*/ #endif - mono_add_unwind_op_def_cfa (unwind_ops, code, buf, X86_ESP, ((pushed_args + 2) * 4)); - if (aot) { char *icall_name = g_strdup_printf ("trampoline_func_%d", tramp_type); code = mono_arch_emit_load_aotconst (buf, code, &ji, MONO_PATCH_INFO_JIT_ICALL_ADDR, icall_name); @@ -432,96 +437,53 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf x86_call_code (code, tramp); } - x86_alu_reg_imm (code, X86_ADD, X86_ESP, 4*4); + /* + * Overwrite the trampoline argument with the address we need to jump to, + * to free %eax. + */ + x86_mov_membase_reg (code, X86_EBP, arg_offset, X86_EAX, 4); - pushed_args -= 4; - - /* Check for thread interruption */ - /* This is not perf critical code so no need to check the interrupt flag */ - /* Align the stack on osx */ - x86_alu_reg_imm (code, X86_SUB, X86_ESP, 3 * 4); - x86_push_reg (code, X86_EAX); + /* Check for interruptions */ if (aot) { code = mono_arch_emit_load_aotconst (buf, code, &ji, MONO_PATCH_INFO_JIT_ICALL_ADDR, "mono_thread_force_interruption_checkpoint"); x86_call_reg (code, X86_EAX); } else { x86_call_code (code, (guint8*)mono_thread_force_interruption_checkpoint); } - x86_pop_reg (code, X86_EAX); - x86_alu_reg_imm (code, X86_ADD, X86_ESP, 3 * 4); /* Restore LMF */ + x86_mov_reg_membase (code, X86_EAX, X86_EBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, lmf_addr), sizeof (mgreg_t)); + x86_mov_reg_membase (code, X86_ECX, X86_EBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, previous_lmf), sizeof (mgreg_t)); + x86_alu_reg_imm (code, X86_SUB, X86_ECX, 1); + x86_mov_membase_reg (code, X86_EAX, 0, X86_ECX, sizeof (mgreg_t)); - /* ebx = previous_lmf */ - x86_pop_reg (code, X86_EBX); - pushed_args--; - x86_alu_reg_imm (code, X86_SUB, X86_EBX, 1); - - /* edi = lmf */ - x86_pop_reg (code, X86_EDI); - pushed_args--; - - /* *(lmf) = previous_lmf */ - x86_mov_membase_reg (code, X86_EDI, 0, X86_EBX, 4); - - /* discard method info */ - x86_pop_reg (code, X86_ESI); - pushed_args--; - - /* discard ESP */ - x86_pop_reg (code, X86_ESI); - pushed_args--; - - /* restore caller saved regs */ - x86_pop_reg (code, X86_EBX); - x86_pop_reg (code, X86_EDI); - x86_pop_reg (code, X86_ESI); - x86_pop_reg (code, X86_EBP); - - pushed_args -= 4; - - /* discard save IP */ - x86_alu_reg_imm (code, X86_ADD, X86_ESP, 4); - pushed_args--; - - /* restore LMF end */ - - if (!MONO_TRAMPOLINE_TYPE_MUST_RETURN (tramp_type)) { - /* - * Overwrite the method ptr with the address we need to jump to, - * to free %eax. - */ - x86_mov_membase_reg (code, X86_ESP, pushed_args * sizeof (gpointer), X86_EAX, 4); + /* Restore registers */ + for (i = X86_EAX; i <= X86_EDI; ++i) { + if (i == X86_ESP || i == X86_EBP) + continue; + if (i == X86_EAX && !((tramp_type == MONO_TRAMPOLINE_RESTORE_STACK_PROT) || (tramp_type == MONO_TRAMPOLINE_AOT_PLT))) + continue; + x86_mov_reg_membase (code, i, X86_EBP, regarray_offset + (i * 4), 4); } - /* Restore caller saved registers */ - x86_mov_reg_membase (code, X86_ECX, X86_ESP, (pushed_args - pushed_args_caller_saved + X86_ECX) * 4, 4); - x86_mov_reg_membase (code, X86_EDX, X86_ESP, (pushed_args - pushed_args_caller_saved + X86_EDX) * 4, 4); - if ((tramp_type == MONO_TRAMPOLINE_RESTORE_STACK_PROT) || (tramp_type == MONO_TRAMPOLINE_AOT_PLT)) - x86_mov_reg_membase (code, X86_EAX, X86_ESP, (pushed_args - pushed_args_caller_saved + X86_EAX) * 4, 4); + /* Restore frame */ + x86_leave (code); - if (!MONO_TRAMPOLINE_TYPE_MUST_RETURN (tramp_type)) { - /* Pop saved reg array + stack align */ - x86_alu_reg_imm (code, X86_ADD, X86_ESP, 9 * 4); - pushed_args -= 9; - g_assert (pushed_args == 0); - } else { - /* Pop saved reg array + stack align + method ptr */ - x86_alu_reg_imm (code, X86_ADD, X86_ESP, 10 * 4); - pushed_args -= 10; - - /* We've popped one more stack item than we've pushed (the - method ptr argument), so we must end up at -1. */ - g_assert (pushed_args == -1); - } - - /*block guard trampolines are called with the stack aligned but must exit with the stack unaligned. */ - if (tramp_type == MONO_TRAMPOLINE_HANDLER_BLOCK_GUARD) { - x86_pop_reg (code, X86_EAX); - x86_alu_reg_imm (code, X86_ADD, X86_ESP, 0x8); - x86_jump_reg (code, X86_EAX); - } else { + if (MONO_TRAMPOLINE_TYPE_MUST_RETURN (tramp_type)) { + /* Load the value returned by the trampoline */ + x86_mov_reg_membase (code, X86_EAX, X86_ESP, 0, 4); + /* The trampoline returns normally, pop the trampoline argument */ + x86_alu_reg_imm (code, X86_ADD, X86_ESP, 4); x86_ret (code); + } else { + /* The trampoline argument is at the top of the stack, and it contains the address we need to branch to */ + if (tramp_type == MONO_TRAMPOLINE_HANDLER_BLOCK_GUARD) { + x86_pop_reg (code, X86_EAX); + x86_alu_reg_imm (code, X86_ADD, X86_ESP, 0x8); + x86_jump_reg (code, X86_EAX); + } else { + x86_ret (code); + } } nacl_global_codeman_validate (&buf, 256, &code); @@ -622,7 +584,7 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info x86_mov_reg_membase (code, X86_EAX, X86_ESP, 4, 4); if (!mrgctx) { /* load rgctx ptr from vtable */ - x86_mov_reg_membase (code, X86_EAX, X86_EAX, G_STRUCT_OFFSET (MonoVTable, runtime_generic_context), 4); + x86_mov_reg_membase (code, X86_EAX, X86_EAX, MONO_STRUCT_OFFSET (MonoVTable, runtime_generic_context), 4); /* is the rgctx ptr null? */ x86_test_reg_reg (code, X86_EAX, X86_EAX); /* if yes, jump to actual trampoline */ @@ -834,7 +796,7 @@ mono_arch_create_monitor_enter_trampoline (MonoTrampInfo **info, gboolean aot) x86_branch8 (code, X86_CC_Z, -1, 1); /* load obj->synchronization to ECX */ - x86_mov_reg_membase (code, X86_ECX, X86_EAX, G_STRUCT_OFFSET (MonoObject, synchronisation), 4); + x86_mov_reg_membase (code, X86_ECX, X86_EAX, MONO_STRUCT_OFFSET (MonoObject, synchronisation), 4); if (mono_gc_is_moving ()) { /*if bit zero is set it's a thin hash*/ @@ -865,7 +827,7 @@ mono_arch_create_monitor_enter_trampoline (MonoTrampInfo **info, gboolean aot) code = mono_x86_emit_tls_get (code, X86_EDX, mono_thread_get_tls_offset ()); } /* load TID into EDX */ - x86_mov_reg_membase (code, X86_EDX, X86_EDX, G_STRUCT_OFFSET (MonoInternalThread, tid), 4); + x86_mov_reg_membase (code, X86_EDX, X86_EDX, MONO_STRUCT_OFFSET (MonoInternalThread, tid), 4); /* is synchronization->owner null? */ x86_alu_membase_imm (code, X86_CMP, X86_ECX, owner_offset, 0); @@ -975,7 +937,7 @@ mono_arch_create_monitor_exit_trampoline (MonoTrampInfo **info, gboolean aot) x86_branch8 (code, X86_CC_Z, -1, 1); /* load obj->synchronization to ECX */ - x86_mov_reg_membase (code, X86_ECX, X86_EAX, G_STRUCT_OFFSET (MonoObject, synchronisation), 4); + x86_mov_reg_membase (code, X86_ECX, X86_EAX, MONO_STRUCT_OFFSET (MonoObject, synchronisation), 4); if (mono_gc_is_moving ()) { /*if bit zero is set it's a thin hash*/ @@ -1006,7 +968,7 @@ mono_arch_create_monitor_exit_trampoline (MonoTrampInfo **info, gboolean aot) code = mono_x86_emit_tls_get (code, X86_EDX, mono_thread_get_tls_offset ()); } /* load TID into EDX */ - x86_mov_reg_membase (code, X86_EDX, X86_EDX, G_STRUCT_OFFSET (MonoInternalThread, tid), 4); + x86_mov_reg_membase (code, X86_EDX, X86_EDX, MONO_STRUCT_OFFSET (MonoInternalThread, tid), 4); /* is synchronization->owner == TID */ x86_alu_membase_reg (code, X86_CMP, X86_ECX, owner_offset, X86_EDX); /* if no, jump to actual trampoline */ @@ -1121,7 +1083,7 @@ mono_arch_create_handler_block_trampoline (MonoTrampInfo **info, gboolean aot) if (mono_get_jit_tls_offset () != -1) { code = mono_x86_emit_tls_get (code, X86_EAX, mono_get_jit_tls_offset ()); - x86_mov_reg_membase (code, X86_EAX, X86_EAX, G_STRUCT_OFFSET (MonoJitTlsData, handler_block_return_address), 4); + x86_mov_reg_membase (code, X86_EAX, X86_EAX, MONO_STRUCT_OFFSET (MonoJitTlsData, handler_block_return_address), 4); } else { /*Slow path uses a c helper*/ x86_call_code (code, handler_block_trampoline_helper); diff --git a/mono/mini/unwind.c b/mono/mini/unwind.c index 8a7d46eae4..a993350aef 100644 --- a/mono/mini/unwind.c +++ b/mono/mini/unwind.c @@ -307,10 +307,23 @@ mono_print_unwind_info (guint8 *unwind_info, int unwind_info_len) offset = decode_sleb128 (p, &p) * DWARF_DATA_ALIGN; printf ("CFA: [%x] offset_extended_sf: %s at cfa-0x%x\n", pos, mono_arch_regname (mono_dwarf_reg_to_hw_reg (reg)), -offset); break; + case DW_CFA_same_value: + reg = decode_uleb128 (p, &p); + printf ("CFA: [%x] same_value: %s\n", pos, mono_arch_regname (mono_dwarf_reg_to_hw_reg (reg))); + break; case DW_CFA_advance_loc4: pos += read32 (p); p += 4; break; + case DW_CFA_remember_state: + printf ("CFA: [%x] remember_state\n", pos); + break; + case DW_CFA_restore_state: + printf ("CFA: [%x] restore_state\n", pos); + break; + case DW_CFA_mono_advance_loc: + printf ("CFA: [%x] mono_advance_loc\n", pos); + break; default: g_assert_not_reached (); } @@ -348,9 +361,31 @@ mono_unwind_ops_encode (GSList *unwind_ops, guint32 *out_len) /* Convert the register from the hw encoding to the dwarf encoding */ reg = mono_hw_reg_to_dwarf_reg (op->reg); + if (op->op == DW_CFA_mono_advance_loc) { + /* This advances loc to its location */ + loc = op->when; + } + /* Emit an advance_loc if neccesary */ while (op->when > loc) { - if (op->when - loc < 32) { + if (op->when - loc > 65536) { + *p ++ = DW_CFA_advance_loc4; + *(guint32*)p = (guint32)(op->when - loc); + g_assert (read32 (p) == (guint32)(op->when - loc)); + p += 4; + loc = op->when; + } else if (op->when - loc > 256) { + *p ++ = DW_CFA_advance_loc2; + *(guint16*)p = (guint16)(op->when - loc); + g_assert (read16 (p) == (guint32)(op->when - loc)); + p += 2; + loc = op->when; + } else if (op->when - loc >= 32) { + *p ++ = DW_CFA_advance_loc1; + *(guint8*)p = (guint8)(op->when - loc); + p += 1; + loc = op->when; + } else if (op->when - loc < 32) { *p ++ = DW_CFA_advance_loc | (op->when - loc); loc = op->when; } else { @@ -373,6 +408,10 @@ mono_unwind_ops_encode (GSList *unwind_ops, guint32 *out_len) *p ++ = op->op; encode_uleb128 (reg, p, &p); break; + case DW_CFA_same_value: + *p ++ = op->op; + encode_uleb128 (reg, p, &p); + break; case DW_CFA_offset: if (reg > 63) { *p ++ = DW_CFA_offset_extended_sf; @@ -383,6 +422,15 @@ mono_unwind_ops_encode (GSList *unwind_ops, guint32 *out_len) encode_uleb128 (op->val / DWARF_DATA_ALIGN, p, &p); } break; + case DW_CFA_remember_state: + case DW_CFA_restore_state: + *p ++ = op->op; + break; + case DW_CFA_mono_advance_loc: + /* Only one location is supported */ + g_assert (op->val == 0); + *p ++ = op->op; + break; default: g_assert_not_reached (); break; @@ -416,6 +464,12 @@ print_dwarf_state (int cfa_reg, int cfa_offset, int ip, int nregs, Loc *location printf ("\n"); } +typedef struct { + Loc locations [NUM_REGS]; + guint8 reg_saved [NUM_REGS]; + int cfa_reg, cfa_offset; +} UnwindState; + /* * Given the state of the current frame as stored in REGS, execute the unwind * operations in unwind_info until the location counter reaches POS. The result is @@ -423,11 +477,13 @@ print_dwarf_state (int cfa_reg, int cfa_offset, int ip, int nregs, Loc *location * If SAVE_LOCATIONS is non-NULL, it should point to an array of size SAVE_LOCATIONS_LEN. * On return, the nth entry will point to the address of the stack slot where register * N was saved, or NULL, if it was not saved by this frame. + * MARK_LOCATIONS should contain the locations marked by mono_emit_unwind_op_mark_loc (), if any. * This function is signal safe. */ void mono_unwind_frame (guint8 *unwind_info, guint32 unwind_info_len, - guint8 *start_ip, guint8 *end_ip, guint8 *ip, mgreg_t *regs, int nregs, + guint8 *start_ip, guint8 *end_ip, guint8 *ip, guint8 **mark_locations, + mgreg_t *regs, int nregs, mgreg_t **save_locations, int save_locations_len, guint8 **out_cfa) { @@ -436,6 +492,8 @@ mono_unwind_frame (guint8 *unwind_info, guint32 unwind_info_len, int i, pos, reg, cfa_reg, cfa_offset, offset; guint8 *p; guint8 *cfa_val; + UnwindState state_stack [1]; + int state_stack_pos; memset (reg_saved, 0, sizeof (reg_saved)); @@ -443,6 +501,7 @@ mono_unwind_frame (guint8 *unwind_info, guint32 unwind_info_len, pos = 0; cfa_reg = -1; cfa_offset = -1; + state_stack_pos = 0; while (pos <= ip - start_ip && p < unwind_info + unwind_info_len) { int op = *p & 0xc0; @@ -489,10 +548,42 @@ mono_unwind_frame (guint8 *unwind_info, guint32 unwind_info_len, locations [reg].loc_type = LOC_OFFSET; locations [reg].offset = offset * DWARF_DATA_ALIGN; break; + case DW_CFA_same_value: + reg = decode_uleb128 (p, &p); + locations [reg].loc_type = LOC_SAME; + break; + case DW_CFA_advance_loc1: + pos += *p; + p += 1; + break; + case DW_CFA_advance_loc2: + pos += read16 (p); + p += 2; + break; case DW_CFA_advance_loc4: pos += read32 (p); p += 4; break; + case DW_CFA_remember_state: + g_assert (state_stack_pos == 0); + memcpy (&state_stack [0].locations, &locations, sizeof (locations)); + memcpy (&state_stack [0].reg_saved, ®_saved, sizeof (reg_saved)); + state_stack [0].cfa_reg = cfa_reg; + state_stack [0].cfa_offset = cfa_offset; + state_stack_pos ++; + break; + case DW_CFA_restore_state: + g_assert (state_stack_pos == 1); + state_stack_pos --; + memcpy (&locations, &state_stack [0].locations, sizeof (locations)); + memcpy (®_saved, &state_stack [0].reg_saved, sizeof (reg_saved)); + cfa_reg = state_stack [0].cfa_reg; + cfa_offset = state_stack [0].cfa_offset; + break; + case DW_CFA_mono_advance_loc: + g_assert (mark_locations [0]); + pos = mark_locations [0] - start_ip; + break; default: g_assert_not_reached (); } @@ -555,7 +646,7 @@ mono_unwind_cleanup (void) * A copy is made of the unwind info. * This function is useful for two reasons: * - many methods have the same unwind info - * - MonoJitInfo->used_regs is an int so it can't store the pointer to the unwind info + * - MonoJitInfo->unwind_info is an int so it can't store the pointer to the unwind info */ guint32 mono_cache_unwind_info (guint8 *unwind_info, guint32 unwind_info_len) diff --git a/mono/mini/version.h b/mono/mini/version.h index c0a67bae21..0a67b3a0be 100644 --- a/mono/mini/version.h +++ b/mono/mini/version.h @@ -1 +1 @@ -#define FULL_VERSION "(detached/f540f8a" +#define FULL_VERSION "(detached/45d0ba1" diff --git a/mono/monograph/Makefile.in b/mono/monograph/Makefile.in index e9555ad026..42070f8617 100644 --- a/mono/monograph/Makefile.in +++ b/mono/monograph/Makefile.in @@ -225,6 +225,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -233,6 +234,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -299,6 +301,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -348,6 +351,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/mono/profiler/Makefile.in b/mono/profiler/Makefile.in index fe9f84f801..f22c9b576d 100644 --- a/mono/profiler/Makefile.in +++ b/mono/profiler/Makefile.in @@ -289,6 +289,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -297,6 +298,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -363,6 +365,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -412,6 +415,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/mono/profiler/decode.c b/mono/profiler/decode.c index eea1dbf5db..2a674e579a 100644 --- a/mono/profiler/decode.c +++ b/mono/profiler/decode.c @@ -20,6 +20,7 @@ #if defined (HAVE_SYS_ZLIB) #include #endif +#include #include #include #include @@ -457,9 +458,12 @@ dump_counters (void) } } else if (counters_sort_mode == COUNTERS_SORT_TIME) { for (ctimestamp = counters_timestamps; ctimestamp; ctimestamp = ctimestamp->next) { - fprintf (outfile, "\t%lld:%02lld:%02lld:%02lld.%03lld:\n", ctimestamp->value / 1000 / 60 / 60 / 24 % 1000, - ctimestamp->value / 1000 / 60 / 60 % 24, ctimestamp->value / 1000 / 60 % 60, - ctimestamp->value / 1000 % 60, ctimestamp->value % 1000); + fprintf (outfile, "\t%llu:%02llu:%02llu:%02llu.%03llu:\n", + (unsigned long long) (ctimestamp->value / 1000 / 60 / 60 / 24 % 1000), + (unsigned long long) (ctimestamp->value / 1000 / 60 / 60 % 24), + (unsigned long long) (ctimestamp->value / 1000 / 60 % 60), + (unsigned long long) (ctimestamp->value / 1000 % 60), + (unsigned long long) (ctimestamp->value % 1000)); for (csection = ctimestamp->sections; csection; csection = csection->next) { fprintf (outfile, "\t\t%s:\n", section_name (csection->value)); @@ -485,9 +489,12 @@ dump_counters (void) counter->name, type_name (counter->type), unit_name (counter->unit), variance_name (counter->variance)); for (cvalue = counter->values; cvalue; cvalue = cvalue->next) { - snprintf (strtimestamp, sizeof (strtimestamp), "%lld:%02lld:%02lld:%02lld.%03lld", cvalue->timestamp / 1000 / 60 / 60 / 24 % 1000, - cvalue->timestamp / 1000 / 60 / 60 % 24, cvalue->timestamp / 1000 / 60 % 60, - cvalue->timestamp / 1000 % 60, cvalue->timestamp % 1000); + snprintf (strtimestamp, sizeof (strtimestamp), "%llu:%02llu:%02llu:%02llu.%03llu", + (unsigned long long) (cvalue->timestamp / 1000 / 60 / 60 / 24 % 1000), + (unsigned long long) (cvalue->timestamp / 1000 / 60 / 60 % 24), + (unsigned long long) (cvalue->timestamp / 1000 / 60 % 60), + (unsigned long long) (cvalue->timestamp / 1000 % 60), + (unsigned long long) (cvalue->timestamp % 1000)); dump_counters_value (counter, "\t\t\t%s", strtimestamp, cvalue->buffer); } @@ -852,9 +859,9 @@ static void print_usym (UnmanagedSymbol* um) { if (um->parent) - fprintf (outfile, "\t%6d %6.2f %-36s in %s\n", um->sample_hits, um->sample_hits*100.0/num_stat_samples, um->name, um->parent->name); + fprintf (outfile, "\t%6zd %6.2f %-36s in %s\n", um->sample_hits, um->sample_hits*100.0/num_stat_samples, um->name, um->parent->name); else - fprintf (outfile, "\t%6d %6.2f %s\n", um->sample_hits, um->sample_hits*100.0/num_stat_samples, um->name); + fprintf (outfile, "\t%6zd %6.2f %s\n", um->sample_hits, um->sample_hits*100.0/num_stat_samples, um->name); } static int @@ -1333,7 +1340,7 @@ heap_shot_mark_objects (HeapShot *hs) fprintf (outfile, "object %p (%s) unmarked\n", (void*)hs->objects_hash [i], hs->objects_hash [i]->hklass->klass->name); } } - fprintf (outfile, "Total unmarked: %d/%d\n", num_unmarked, hs->objects_count); + fprintf (outfile, "Total unmarked: %zd/%zd\n", num_unmarked, hs->objects_count); free (marks); } @@ -1426,7 +1433,7 @@ typedef struct _ThreadContext ThreadContext; typedef struct { FILE *file; #if defined (HAVE_SYS_ZLIB) - gzFile *gzfile; + gzFile gzfile; #endif unsigned char *buf; int size; @@ -1840,7 +1847,7 @@ tracked_creation (uintptr_t obj, ClassDesc *cd, uint64_t size, BackTrace *bt, ui for (i = 0; i < num_tracked_objects; ++i) { if (tracked_objects [i] != obj) continue; - fprintf (outfile, "Object %p created (%s, %llu bytes) at %.3f secs.\n", (void*)obj, cd->name, size, (timestamp - startup_time)/1000000000.0); + fprintf (outfile, "Object %p created (%s, %llu bytes) at %.3f secs.\n", (void*)obj, cd->name, (unsigned long long) size, (timestamp - startup_time)/1000000000.0); if (bt && bt->count) { int k; for (k = 0; k < bt->count; ++k) @@ -1929,7 +1936,7 @@ decode_buffer (ProfContext *ctx) thread_id = read_int64 (p + 32); method_base = read_int64 (p + 40); if (debug) - fprintf (outfile, "buf: thread:%x, len: %d, time: %llu, file offset: %llu\n", thread_id, len, time_base, file_offset); + fprintf (outfile, "buf: thread:%zx, len: %d, time: %llu, file offset: %llu\n", thread_id, len, (unsigned long long) time_base, (unsigned long long) file_offset); thread = load_thread (ctx, thread_id); if (!load_data (ctx, len)) return 0; @@ -1956,7 +1963,7 @@ decode_buffer (ProfContext *ctx) if (subtype == TYPE_GC_RESIZE) { uint64_t new_size = decode_uleb128 (p, &p); if (debug) - fprintf (outfile, "gc heap resized to %llu\n", new_size); + fprintf (outfile, "gc heap resized to %llu\n", (unsigned long long) new_size); gc_resizes++; if (new_size > max_heap_size) max_heap_size = new_size; @@ -1964,7 +1971,7 @@ decode_buffer (ProfContext *ctx) uint64_t ev = decode_uleb128 (p, &p); int gen = decode_uleb128 (p, &p); if (debug) - fprintf (outfile, "gc event for gen%d: %s at %llu (thread: 0x%x)\n", gen, gc_event_name (ev), time_base, thread->thread_id); + fprintf (outfile, "gc event for gen%d: %s at %llu (thread: 0x%zx)\n", gen, gc_event_name (ev), (unsigned long long) time_base, thread->thread_id); if (gen > 2) { fprintf (outfile, "incorrect gc gen: %d\n", gen); break; @@ -2033,7 +2040,7 @@ decode_buffer (ProfContext *ctx) return 0; } if (debug) - fprintf (outfile, "loaded class %p (%s in %p) at %llu\n", (void*)(ptr_base + ptrdiff), p, (void*)(ptr_base + imptrdiff), time_base); + fprintf (outfile, "loaded class %p (%s in %p) at %llu\n", (void*)(ptr_base + ptrdiff), p, (void*)(ptr_base + imptrdiff), (unsigned long long) time_base); if (!error) add_class (ptr_base + ptrdiff, (char*)p); while (*p) p++; @@ -2045,7 +2052,7 @@ decode_buffer (ProfContext *ctx) return 0; } if (debug) - fprintf (outfile, "loaded image %p (%s) at %llu\n", (void*)(ptr_base + ptrdiff), p, time_base); + fprintf (outfile, "loaded image %p (%s) at %llu\n", (void*)(ptr_base + ptrdiff), p, (unsigned long long) time_base); if (!error) add_image (ptr_base + ptrdiff, (char*)p); while (*p) p++; @@ -2080,7 +2087,7 @@ decode_buffer (ProfContext *ctx) LOG_TIME (time_base, tdiff); time_base += tdiff; if (debug) - fprintf (outfile, "alloced object %p, size %llu (%s) at %llu\n", (void*)OBJ_ADDR (objdiff), len, lookup_class (ptr_base + ptrdiff)->name, time_base); + fprintf (outfile, "alloced object %p, size %llu (%s) at %llu\n", (void*)OBJ_ADDR (objdiff), (unsigned long long) len, lookup_class (ptr_base + ptrdiff)->name, (unsigned long long) time_base); if (has_bt) { num_bt = 8; frames = decode_bt (sframes, &num_bt, p, &p, ptr_base); @@ -2149,13 +2156,13 @@ decode_buffer (ProfContext *ctx) case TYPE_HEAP: { int subtype = *p & 0xf0; if (subtype == TYPE_HEAP_OBJECT) { - HeapObjectDesc *ho; + HeapObjectDesc *ho = NULL; int i; intptr_t objdiff = decode_sleb128 (p + 1, &p); intptr_t ptrdiff = decode_sleb128 (p, &p); uint64_t size = decode_uleb128 (p, &p); uintptr_t num = decode_uleb128 (p, &p); - uintptr_t ref_offset; + uintptr_t ref_offset = 0; uintptr_t last_obj_offset = 0; ClassDesc *cd = lookup_class (ptr_base + ptrdiff); if (size) { @@ -2182,10 +2189,10 @@ decode_buffer (ProfContext *ctx) track_obj_reference (OBJ_ADDR (obj1diff), OBJ_ADDR (objdiff), cd); } if (debug && size) - fprintf (outfile, "traced object %p, size %llu (%s), refs: %d\n", (void*)OBJ_ADDR (objdiff), size, cd->name, num); + fprintf (outfile, "traced object %p, size %llu (%s), refs: %zd\n", (void*)OBJ_ADDR (objdiff), (unsigned long long) size, cd->name, num); } else if (subtype == TYPE_HEAP_ROOT) { uintptr_t num = decode_uleb128 (p + 1, &p); - uintptr_t gc_num = decode_uleb128 (p, &p); + uintptr_t gc_num G_GNUC_UNUSED = decode_uleb128 (p, &p); int i; for (i = 0; i < num; ++i) { intptr_t objdiff = decode_sleb128 (p, &p); @@ -2389,7 +2396,7 @@ decode_buffer (ProfContext *ctx) /* un unmanaged binary loaded in memory */ uint64_t tdiff = decode_uleb128 (p + 1, &p); uintptr_t addr = decode_sleb128 (p, &p); - uint64_t offset = decode_uleb128 (p, &p); + uint64_t offset G_GNUC_UNUSED = decode_uleb128 (p, &p); uintptr_t size = decode_uleb128 (p, &p); char *name; LOG_TIME (time_base, tdiff); @@ -2487,7 +2494,7 @@ decode_buffer (ProfContext *ctx) break; } default: - fprintf (outfile, "unhandled profiler event: 0x%x at file offset: %llu + %d (len: %d\n)\n", *p, file_offset, p - ctx->buf, len); + fprintf (outfile, "unhandled profiler event: 0x%x at file offset: %llu + %lld (len: %d\n)\n", *p, (unsigned long long) file_offset, (long long) (p - ctx->buf), len); exit (1); } } @@ -2591,7 +2598,7 @@ dump_traces (TraceDesc *traces, const char *desc) bt = traces->traces [j].bt; if (!bt->count) continue; - fprintf (outfile, "\t%llu %s from:\n", traces->traces [j].count, desc); + fprintf (outfile, "\t%llu %s from:\n", (unsigned long long) traces->traces [j].count, desc); for (k = 0; k < bt->count; ++k) fprintf (outfile, "\t\t%s\n", bt->methods [k]->name); } @@ -2612,12 +2619,12 @@ dump_exceptions (void) { int i; fprintf (outfile, "\nException summary\n"); - fprintf (outfile, "\tThrows: %llu\n", throw_count); + fprintf (outfile, "\tThrows: %llu\n", (unsigned long long) throw_count); dump_traces (&exc_traces, "throws"); for (i = 0; i <= MONO_EXCEPTION_CLAUSE_FAULT; ++i) { if (!clause_summary [i]) continue; - fprintf (outfile, "\tExecuted %s clauses: %llu\n", clause_name (i), clause_summary [i]); + fprintf (outfile, "\tExecuted %s clauses: %llu\n", clause_name (i), (unsigned long long) clause_summary [i]); } } @@ -2657,9 +2664,9 @@ dump_monitors (void) mdesc->wait_time/1000000000.0, mdesc->max_wait_time/1000000000.0, mdesc->wait_time/1000000000.0/mdesc->contentions); dump_traces (&mdesc->traces, "contentions"); } - fprintf (outfile, "\tLock contentions: %llu\n", monitor_contention); - fprintf (outfile, "\tLock acquired: %llu\n", monitor_acquired); - fprintf (outfile, "\tLock failures: %llu\n", monitor_failed); + fprintf (outfile, "\tLock contentions: %llu\n", (unsigned long long) monitor_contention); + fprintf (outfile, "\tLock acquired: %llu\n", (unsigned long long) monitor_acquired); + fprintf (outfile, "\tLock failures: %llu\n", (unsigned long long) monitor_failed); } static void @@ -2668,20 +2675,25 @@ dump_gcs (void) int i; fprintf (outfile, "\nGC summary\n"); fprintf (outfile, "\tGC resizes: %d\n", gc_resizes); - fprintf (outfile, "\tMax heap size: %llu\n", max_heap_size); - fprintf (outfile, "\tObject moves: %llu\n", gc_object_moves); + fprintf (outfile, "\tMax heap size: %llu\n", (unsigned long long) max_heap_size); + fprintf (outfile, "\tObject moves: %llu\n", (unsigned long long) gc_object_moves); for (i = 0; i < 3; ++i) { if (!gc_info [i].count) continue; fprintf (outfile, "\tGen%d collections: %d, max time: %lluus, total time: %lluus, average: %lluus\n", - i, gc_info [i].count, gc_info [i].max_time / 1000, gc_info [i].total_time / 1000, - gc_info [i].total_time / gc_info [i].count / 1000); + i, gc_info [i].count, + (unsigned long long) (gc_info [i].max_time / 1000), + (unsigned long long) (gc_info [i].total_time / 1000), + (unsigned long long) (gc_info [i].total_time / gc_info [i].count / 1000)); } for (i = 0; i < 3; ++i) { if (!handle_info [i].max_live) continue; fprintf (outfile, "\tGC handles %s: created: %llu, destroyed: %llu, max: %llu\n", - get_handle_name (i), handle_info [i].created, handle_info [i].destroyed, handle_info [i].max_live); + get_handle_name (i), + (unsigned long long) (handle_info [i].created), + (unsigned long long) (handle_info [i].destroyed), + (unsigned long long) (handle_info [i].max_live)); dump_traces (&handle_info [i].traces, "created"); } } @@ -2735,11 +2747,15 @@ dump_allocations (void) fprintf (outfile, "\nAllocation summary\n"); fprintf (outfile, "%10s %10s %8s Type name\n", "Bytes", "Count", "Average"); } - fprintf (outfile, "%10llu %10d %8llu %s\n", cd->alloc_size, cd->allocs, cd->alloc_size / cd->allocs, cd->name); + fprintf (outfile, "%10llu %10zd %8llu %s\n", + (unsigned long long) (cd->alloc_size), + cd->allocs, + (unsigned long long) (cd->alloc_size / cd->allocs), + cd->name); dump_traces (&cd->traces, "bytes"); } if (allocs) - fprintf (outfile, "Total memory allocated: %llu bytes in %d objects\n", size, allocs); + fprintf (outfile, "Total memory allocated: %llu bytes in %zd objects\n", (unsigned long long) size, allocs); } enum { @@ -2825,11 +2841,15 @@ dump_methods (void) fprintf (outfile, "\nMethod call summary\n"); fprintf (outfile, "%8s %8s %10s Method name\n", "Total(ms)", "Self(ms)", "Calls"); } - fprintf (outfile, "%8llu %8llu %10llu %s\n", msecs, smsecs, cd->calls, cd->name); + fprintf (outfile, "%8llu %8llu %10llu %s\n", + (unsigned long long) (msecs), + (unsigned long long) (smsecs), + (unsigned long long) (cd->calls), + cd->name); dump_traces (&cd->traces, "calls"); } if (calls) - fprintf (outfile, "Total calls: %llu\n", calls); + fprintf (outfile, "Total calls: %llu\n", (unsigned long long) calls); } static int @@ -2874,7 +2894,9 @@ dump_rev_claases (HeapClassRevRef *revs, int count) return; for (j = 0; j < count; ++j) { HeapClassDesc *cd = revs [j].klass; - fprintf (outfile, "\t\t%llu references from: %s\n", revs [j].count, cd->klass->name); + fprintf (outfile, "\t\t%llu references from: %s\n", + (unsigned long long) (revs [j].count), + cd->klass->name); } } @@ -2898,8 +2920,12 @@ heap_shot_summary (HeapShot *hs, int hs_num, HeapShot *last_hs) } hs->sorted = sorted; qsort (sorted, ccount, sizeof (void*), compare_heap_class); - fprintf (outfile, "\n\tHeap shot %d at %.3f secs: size: %llu, object count: %llu, class count: %d, roots: %d\n", - hs_num, (hs->timestamp - startup_time)/1000000000.0, size, count, ccount, hs->num_roots); + fprintf (outfile, "\n\tHeap shot %d at %.3f secs: size: %llu, object count: %llu, class count: %d, roots: %zd\n", + hs_num, + (hs->timestamp - startup_time)/1000000000.0, + (unsigned long long) (size), + (unsigned long long) (count), + ccount, hs->num_roots); if (!verbose && ccount > 30) ccount = 30; fprintf (outfile, "\t%10s %10s %8s Class name\n", "Bytes", "Count", "Average"); @@ -2910,11 +2936,15 @@ heap_shot_summary (HeapShot *hs, int hs_num, HeapShot *last_hs) cd = sorted [i]; if (last_hs) ocd = heap_class_lookup (last_hs, cd->klass); - fprintf (outfile, "\t%10llu %10llu %8llu %s", cd->total_size, cd->count, cd->total_size / cd->count, cd->klass->name); + fprintf (outfile, "\t%10llu %10llu %8llu %s", + (unsigned long long) (cd->total_size), + (unsigned long long) (cd->count), + (unsigned long long) (cd->total_size / cd->count), + cd->klass->name); if (ocd) { int64_t bdiff = cd->total_size - ocd->total_size; int64_t cdiff = cd->count - ocd->count; - fprintf (outfile, " (bytes: %+lld, count: %+lld)\n", bdiff, cdiff); + fprintf (outfile, " (bytes: %+lld, count: %+lld)\n", (long long) bdiff, (long long) cdiff); } else { fprintf (outfile, "\n"); } @@ -2929,7 +2959,7 @@ heap_shot_summary (HeapShot *hs, int hs_num, HeapShot *last_hs) assert (cd->rev_count == k); qsort (rev_sorted, cd->rev_count, sizeof (HeapClassRevRef), compare_rev_class); if (cd->root_references) - fprintf (outfile, "\t\t%d root references (%d pinning)\n", cd->root_references, cd->pinned_references); + fprintf (outfile, "\t\t%zd root references (%zd pinning)\n", cd->root_references, cd->pinned_references); dump_rev_claases (rev_sorted, cd->rev_count); free (rev_sorted); } diff --git a/mono/profiler/proflog.c b/mono/profiler/proflog.c index 438c0ec380..f5ca7472a1 100644 --- a/mono/profiler/proflog.c +++ b/mono/profiler/proflog.c @@ -66,8 +66,7 @@ #include #endif -/* the architecture needs a memory fence */ -#if defined(__linux__) && (defined(__i386__) || defined(__x86_64__) || defined(__arm__)) +#if defined(__linux__) #include #include #include "perf_event.h" @@ -354,7 +353,12 @@ struct _LogBuffer { unsigned char buf [1]; }; -#define ENTER_LOG(lb,str) if ((lb)->locked) {write(2, str, strlen(str)); write(2, "\n", 1);return;} else {(lb)->locked++;} +static inline void +ign_res (int G_GNUC_UNUSED unused, ...) +{ +} + +#define ENTER_LOG(lb,str) if ((lb)->locked) {ign_res (write(2, str, strlen(str))); ign_res (write(2, "\n", 1));return;} else {(lb)->locked++;} #define EXIT_LOG(lb) (lb)->locked--; typedef struct _StatBuffer StatBuffer; @@ -379,7 +383,7 @@ struct _MonoProfiler { StatBuffer *stat_buffers; FILE* file; #if defined (HAVE_SYS_ZLIB) - gzFile *gzfile; + gzFile gzfile; #endif uint64_t startup_time; int pipe_output; @@ -1233,7 +1237,7 @@ mono_sample_hit (MonoProfiler *profiler, unsigned char *ip, void *context) char buf [256]; snprintf (buf, sizeof (buf), "hit at %p in thread %p after %llu ms\n", ip, (void*)thread_id (), (unsigned long long int)elapsed/100); len = strlen (buf); - write (2, buf, len); + ign_res (write (2, buf, len)); } sbuf = profiler->stat_buffers; if (!sbuf) @@ -1251,22 +1255,22 @@ mono_sample_hit (MonoProfiler *profiler, unsigned char *ip, void *context) do { oldsb = profiler->stat_buffers; sbuf->next = oldsb; - foundsb = InterlockedCompareExchangePointer ((volatile void**)&profiler->stat_buffers, sbuf, oldsb); + foundsb = InterlockedCompareExchangePointer ((void * volatile*)&profiler->stat_buffers, sbuf, oldsb); } while (foundsb != oldsb); if (do_debug) - write (2, "overflow\n", 9); + ign_res (write (2, "overflow\n", 9)); /* notify the helper thread */ if (sbuf->next->next) { char c = 0; - write (profiler->pipes [1], &c, 1); + ign_res (write (profiler->pipes [1], &c, 1)); if (do_debug) - write (2, "notify\n", 7); + ign_res (write (2, "notify\n", 7)); } } do { old_data = sbuf->data; new_data = old_data + 4 + bt_data.count * 3; - data = InterlockedCompareExchangePointer ((volatile void**)&sbuf->data, new_data, old_data); + data = InterlockedCompareExchangePointer ((void * volatile*)&sbuf->data, new_data, old_data); } while (data != old_data); if (old_data >= sbuf->data_end) return; /* lost event */ @@ -1334,6 +1338,7 @@ add_code_pointer (uintptr_t ip) num_code_pages += add_code_page (code_pages, size_code_pages, ip & CPAGE_MASK); } +#if defined(HAVE_DL_ITERATE_PHDR) && defined(ELFMAG0) static void dump_ubin (const char *filename, uintptr_t load_addr, uint64_t offset, uintptr_t size) { @@ -1351,6 +1356,7 @@ dump_ubin (const char *filename, uintptr_t load_addr, uint64_t offset, uintptr_t memcpy (logbuffer->data, filename, len); logbuffer->data += len; } +#endif static void dump_usym (const char *name, uintptr_t value, uintptr_t size) @@ -2089,7 +2095,7 @@ log_shutdown (MonoProfiler *prof) if (prof->command_port) { char c = 1; void *res; - write (prof->pipes [1], &c, 1); + ign_res (write (prof->pipes [1], &c, 1)); pthread_join (prof->helper_thread, &res); } #endif diff --git a/mono/profiler/utils.c b/mono/profiler/utils.c index 8bf57a72f7..9266dee403 100644 --- a/mono/profiler/utils.c +++ b/mono/profiler/utils.c @@ -275,7 +275,7 @@ alloc_buffer (int size) return ptr; #else ptr = mmap (NULL, size, PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_PRIVATE, -1, 0); - if (ptr == (void*)-1) + if (ptr == MAP_FAILED) return NULL; return ptr; #endif diff --git a/mono/tests/Makefile.am b/mono/tests/Makefile.am index 097788b710..80c8f7e536 100644 --- a/mono/tests/Makefile.am +++ b/mono/tests/Makefile.am @@ -43,6 +43,7 @@ STRESS_TESTS_SRC= \ monitor-stress.cs \ thread-stress.cs \ gc-stress.cs \ + gc-graystack-stress.cs \ exit-stress.cs \ process-stress.cs \ assembly-load-stress.cs @@ -398,7 +399,6 @@ BASE_TEST_CS_SRC= \ allow-synchronous-major.cs \ unload-appdomain-on-shutdown.cs \ block_guard_restore_aligment_on_exit.cs \ - finally_block_ending_in_dead_bb.cs \ thread_static_gc_layout.cs \ sleep.cs @@ -406,19 +406,20 @@ TEST_CS_SRC_DIST= \ $(BASE_TEST_CS_SRC) \ async-exc-compilation.cs \ filter-stack.cs \ - finally_guard.cs + finally_guard.cs \ + finally_block_ending_in_dead_bb.cs TEST_CS_SRC_GEN = \ runtime-invoke.gen.cs \ imt_big_iface_test.cs if AMD64 -TEST_CS_SRC = $(BASE_TEST_CS_SRC) $(TEST_CS_SRC_GEN) async-exc-compilation.cs finally_guard.cs +TEST_CS_SRC = $(BASE_TEST_CS_SRC) $(TEST_CS_SRC_GEN) async-exc-compilation.cs finally_guard.cs finally_block_ending_in_dead_bb.cs # #651684 PLATFORM_DISABLED_TESTS = finally_guard.exe else if X86 -TEST_CS_SRC = $(BASE_TEST_CS_SRC) $(TEST_CS_SRC_GEN) async-exc-compilation.cs finally_guard.cs +TEST_CS_SRC = $(BASE_TEST_CS_SRC) $(TEST_CS_SRC_GEN) async-exc-compilation.cs finally_guard.cs finally_block_ending_in_dead_bb.cs else TEST_CS_SRC = $(BASE_TEST_CS_SRC) $(TEST_CS_SRC_GEN) endif @@ -434,7 +435,7 @@ endif if X86 if HOST_WIN32 -PLATFORM_DISABLED_TESTS=async-exc-compilation.exe finally_guard.exe +PLATFORM_DISABLED_TESTS=async-exc-compilation.exe finally_guard.exe finally_block_ending_in_dead_bb.exe endif endif @@ -469,6 +470,7 @@ PLATFORM_DISABLED_TESTS= abort-stress-1.exe \ bug-70561.exe \ finalizer-abort.exe \ finally_guard.exe \ + finally_block_ending_in_dead_bb.exe \ main-returns-abort-resetabort.exe \ main-returns-background-abort-resetabort.exe \ thread6.exe \ @@ -563,7 +565,8 @@ DISABLED_TESTS_WRENCH= \ assemblyresolve_event3.exe \ delegate2.exe \ finally_guard.exe \ - gc-altstack.exe + gc-altstack.exe \ + generic-xdomain.2.exe AOT_DISABLED_TESTS=constraints-load.exe @@ -926,6 +929,7 @@ SGEN_TESTS = \ sgen-cementing-stress.exe \ sgen-case-23400.exe \ sgen-new-threads-dont-join-stw.exe \ + gc-graystack-stress.exe \ bug-17590.exe SGEN_CONFIGURATIONS = \ @@ -1247,7 +1251,7 @@ GSHARED_TESTS = \ generic-sealed-virtual.2.exe generic-system-arrays.2.exe \ generic-stack-traces.2.exe generic-stack-traces2.2.exe \ bug-472600.2.exe bug-473482.2.exe bug-473999.2.exe \ - bug-479763.2.exe generic-xdomain.2.exe \ + bug-479763.2.exe \ generic-type-load-exception.2.exe bug-616463.exe \ bug-1147.exe diff --git a/mono/tests/Makefile.in b/mono/tests/Makefile.in index 936de70d40..0d536b9ae6 100644 --- a/mono/tests/Makefile.in +++ b/mono/tests/Makefile.in @@ -269,6 +269,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -277,6 +278,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -343,6 +345,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -392,6 +395,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ @@ -453,6 +457,7 @@ STRESS_TESTS_SRC = \ monitor-stress.cs \ thread-stress.cs \ gc-stress.cs \ + gc-graystack-stress.cs \ exit-stress.cs \ process-stress.cs \ assembly-load-stress.cs @@ -809,7 +814,6 @@ BASE_TEST_CS_SRC = \ allow-synchronous-major.cs \ unload-appdomain-on-shutdown.cs \ block_guard_restore_aligment_on_exit.cs \ - finally_block_ending_in_dead_bb.cs \ thread_static_gc_layout.cs \ sleep.cs @@ -817,7 +821,8 @@ TEST_CS_SRC_DIST = \ $(BASE_TEST_CS_SRC) \ async-exc-compilation.cs \ filter-stack.cs \ - finally_guard.cs + finally_guard.cs \ + finally_block_ending_in_dead_bb.cs TEST_CS_SRC_GEN = \ runtime-invoke.gen.cs \ @@ -828,17 +833,21 @@ TEST_CS_SRC_GEN = \ @AMD64_FALSE@@X86_TRUE@TEST_CS_SRC = $(BASE_TEST_CS_SRC) \ @AMD64_FALSE@@X86_TRUE@ $(TEST_CS_SRC_GEN) \ @AMD64_FALSE@@X86_TRUE@ async-exc-compilation.cs \ -@AMD64_FALSE@@X86_TRUE@ finally_guard.cs $(am__append_1) +@AMD64_FALSE@@X86_TRUE@ finally_guard.cs \ +@AMD64_FALSE@@X86_TRUE@ finally_block_ending_in_dead_bb.cs \ +@AMD64_FALSE@@X86_TRUE@ $(am__append_1) @AMD64_TRUE@TEST_CS_SRC = $(BASE_TEST_CS_SRC) $(TEST_CS_SRC_GEN) \ @AMD64_TRUE@ async-exc-compilation.cs finally_guard.cs \ -@AMD64_TRUE@ $(am__append_1) +@AMD64_TRUE@ finally_block_ending_in_dead_bb.cs $(am__append_1) # #651684 @AMD64_TRUE@PLATFORM_DISABLED_TESTS = finally_guard.exe \ @AMD64_TRUE@ $(am__append_2) @ARM_TRUE@PLATFORM_DISABLED_TESTS = filter-stack.exe $(am__append_2) @HOST_WIN32_TRUE@@X86_TRUE@PLATFORM_DISABLED_TESTS = \ @HOST_WIN32_TRUE@@X86_TRUE@ async-exc-compilation.exe \ -@HOST_WIN32_TRUE@@X86_TRUE@ finally_guard.exe $(am__append_2) +@HOST_WIN32_TRUE@@X86_TRUE@ finally_guard.exe \ +@HOST_WIN32_TRUE@@X86_TRUE@ finally_block_ending_in_dead_bb.exe \ +@HOST_WIN32_TRUE@@X86_TRUE@ $(am__append_2) # bug #319249 @IA64_TRUE@PLATFORM_DISABLED_TESTS = exception17.exe winx64structs.exe \ @IA64_TRUE@ $(am__append_2) @@ -871,6 +880,7 @@ TEST_CS_SRC_GEN = \ @NACL_CODEGEN_TRUE@ async-exc-compilation.exe bug-561239.exe \ @NACL_CODEGEN_TRUE@ bug-70561.exe finalizer-abort.exe \ @NACL_CODEGEN_TRUE@ finally_guard.exe \ +@NACL_CODEGEN_TRUE@ finally_block_ending_in_dead_bb.exe \ @NACL_CODEGEN_TRUE@ main-returns-abort-resetabort.exe \ @NACL_CODEGEN_TRUE@ main-returns-background-abort-resetabort.exe \ @NACL_CODEGEN_TRUE@ thread6.exe threadpool-exceptions5.exe \ @@ -924,7 +934,8 @@ DISABLED_TESTS_WRENCH = \ assemblyresolve_event3.exe \ delegate2.exe \ finally_guard.exe \ - gc-altstack.exe + gc-altstack.exe \ + generic-xdomain.2.exe AOT_DISABLED_TESTS = constraints-load.exe @@ -1060,6 +1071,7 @@ SGEN_TESTS = \ sgen-cementing-stress.exe \ sgen-case-23400.exe \ sgen-new-threads-dont-join-stw.exe \ + gc-graystack-stress.exe \ bug-17590.exe SGEN_CONFIGURATIONS = \ @@ -1112,7 +1124,7 @@ GSHARED_TESTS = \ generic-sealed-virtual.2.exe generic-system-arrays.2.exe \ generic-stack-traces.2.exe generic-stack-traces2.2.exe \ bug-472600.2.exe bug-473482.2.exe bug-473999.2.exe \ - bug-479763.2.exe generic-xdomain.2.exe \ + bug-479763.2.exe \ generic-type-load-exception.2.exe bug-616463.exe \ bug-1147.exe diff --git a/mono/tests/assemblyresolve/Makefile.in b/mono/tests/assemblyresolve/Makefile.in index 2e0dbc1086..1a12268485 100644 --- a/mono/tests/assemblyresolve/Makefile.in +++ b/mono/tests/assemblyresolve/Makefile.in @@ -161,6 +161,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -169,6 +170,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -235,6 +237,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -284,6 +287,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/mono/tests/cas/Makefile.in b/mono/tests/cas/Makefile.in index 8370d66aa0..a72dc896ca 100644 --- a/mono/tests/cas/Makefile.in +++ b/mono/tests/cas/Makefile.in @@ -221,6 +221,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -229,6 +230,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -295,6 +297,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -344,6 +347,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/mono/tests/cas/assembly/Makefile.in b/mono/tests/cas/assembly/Makefile.in index fafecc35e6..d59f56872b 100644 --- a/mono/tests/cas/assembly/Makefile.in +++ b/mono/tests/cas/assembly/Makefile.in @@ -161,6 +161,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -169,6 +170,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -235,6 +237,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -284,6 +287,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/mono/tests/cas/demand/Makefile.in b/mono/tests/cas/demand/Makefile.in index 9849a49320..43e84860f4 100644 --- a/mono/tests/cas/demand/Makefile.in +++ b/mono/tests/cas/demand/Makefile.in @@ -161,6 +161,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -169,6 +170,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -235,6 +237,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -284,6 +287,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/mono/tests/cas/inheritance/Makefile.in b/mono/tests/cas/inheritance/Makefile.in index d68a81d817..7458c9e876 100644 --- a/mono/tests/cas/inheritance/Makefile.in +++ b/mono/tests/cas/inheritance/Makefile.in @@ -161,6 +161,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -169,6 +170,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -235,6 +237,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -284,6 +287,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/mono/tests/cas/linkdemand/Makefile.in b/mono/tests/cas/linkdemand/Makefile.in index 18cd52ac81..8c2b58c129 100644 --- a/mono/tests/cas/linkdemand/Makefile.in +++ b/mono/tests/cas/linkdemand/Makefile.in @@ -161,6 +161,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -169,6 +170,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -235,6 +237,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -284,6 +287,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/mono/tests/cas/threads/Makefile.in b/mono/tests/cas/threads/Makefile.in index 9a8890953d..fa9e7da93b 100644 --- a/mono/tests/cas/threads/Makefile.in +++ b/mono/tests/cas/threads/Makefile.in @@ -161,6 +161,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -169,6 +170,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -235,6 +237,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -284,6 +287,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/mono/tests/finalizer-exception.cs b/mono/tests/finalizer-exception.cs index 29489ad494..0e48d9081c 100644 --- a/mono/tests/finalizer-exception.cs +++ b/mono/tests/finalizer-exception.cs @@ -30,7 +30,9 @@ public class FinalizerException { Environment.Exit (0); }; - MakeException (1024); + var t = new Thread (delegate () { MakeException (1024); }); + t.Start (); + t.Join (); GC.Collect (); GC.WaitForPendingFinalizers (); diff --git a/mono/tests/finalizer-wait.cs b/mono/tests/finalizer-wait.cs index 9b9bf2dc3d..dde31cbc34 100644 --- a/mono/tests/finalizer-wait.cs +++ b/mono/tests/finalizer-wait.cs @@ -6,35 +6,25 @@ class P { static public int count = 0; ~P () { - T.finalized = true; - Thread.Sleep (1000); // Console.WriteLine ("finalizer done"); count++; } } class T { - - static public bool finalized = false; - - static void makeP () { - P p = new P (); - p = null; - } - static int Main () { - var t = new Thread (makeP); - t.Start (); - t.Join (); + for (int i = 0; i < 1000; ++i) { + var t = new Thread (() => { + P p = new P (); + }); + t.Start (); + t.Join (); - GC.Collect (); - while (!finalized) { - Thread.Sleep (100); + GC.Collect (); + GC.WaitForPendingFinalizers (); + if (P.count != i + 1) + return 1; } - GC.WaitForPendingFinalizers (); - - if (P.count == 0) - return 1; return 0; } } diff --git a/mono/tests/gc-descriptors/Makefile.am b/mono/tests/gc-descriptors/Makefile.am index 4daa22ba80..54eca51ef5 100755 --- a/mono/tests/gc-descriptors/Makefile.am +++ b/mono/tests/gc-descriptors/Makefile.am @@ -10,7 +10,7 @@ descriptor-tests.exe : descriptor-tests.cs $(MCS) -Warn:0 descriptor-tests.cs descriptor-tests.cs : descriptor-tests-driver.cs descriptor-tests-prefix.cs gen-descriptor-tests.py - -cp $^ . + if [ "$(srcdir)" != "$(builddir)" ]; then cp $^ .; fi $(srcdir)/gen-descriptor-tests.py >descriptor-tests.cs EXTRA_DIST = descriptor-tests-driver.cs descriptor-tests-prefix.cs gen-descriptor-tests.py diff --git a/mono/tests/gc-descriptors/Makefile.in b/mono/tests/gc-descriptors/Makefile.in index 477a6d1e92..3e17ebda3b 100644 --- a/mono/tests/gc-descriptors/Makefile.in +++ b/mono/tests/gc-descriptors/Makefile.in @@ -161,6 +161,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -169,6 +170,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -235,6 +237,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -284,6 +287,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ @@ -522,7 +526,7 @@ descriptor-tests.exe : descriptor-tests.cs $(MCS) -Warn:0 descriptor-tests.cs descriptor-tests.cs : descriptor-tests-driver.cs descriptor-tests-prefix.cs gen-descriptor-tests.py - -cp $^ . + if [ "$(srcdir)" != "$(builddir)" ]; then cp $^ .; fi $(srcdir)/gen-descriptor-tests.py >descriptor-tests.cs .DELETE_ON_ERROR: diff --git a/mono/tests/gc-graystack-stress.cs b/mono/tests/gc-graystack-stress.cs new file mode 100644 index 0000000000..7d711d9a25 --- /dev/null +++ b/mono/tests/gc-graystack-stress.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; + +class Program { + + class Node { + Node child; + Node sibling; + + public Node (int depth) : this (depth, null) {} + + public Node (int depth, Node sibling) { + if (depth > 0) + this.child = new Node (depth - 1); + + this.sibling = sibling; + } + + public override String ToString () { + return String.Format ("Node[child={0},sibling={1}]", this.child, this.sibling); + } + } + + /** + * Usage : width [depth [collections]] + * - width : trigger the overflow + * - depth : modify the cost difference of the overflow + * - collections : # of collections to perform + */ + public static void Main (String[] args) { + int width = 125; + if (args.Length > 0) + width = Math.Max (width, Int32.Parse (args [0])); + + int depth = 10000; + if (args.Length > 1) + depth = Math.Max (depth, Int32.Parse (args [1])); + + int collections = 100; + if (args.Length > 2) + collections = Math.Max (collections, Int32.Parse (args [2])); + + Node sibling = null; + + for (int i = 0; i < width; i++) { + sibling = new Node(depth, sibling); + if (i > 0 && i % 10 == 0) + Console.Write ("+"); + } + + for (int i = 0; i < collections; i++) { + GC.Collect(); + if (i > 0 && i % 10 == 0) + Console.Write ("."); + } + Console.WriteLine (); + } +} diff --git a/mono/tests/marshal2.cs b/mono/tests/marshal2.cs index a4d02ab143..8a0d43f3a3 100644 --- a/mono/tests/marshal2.cs +++ b/mono/tests/marshal2.cs @@ -3,6 +3,7 @@ // using System; +using System.Text; using System.Runtime.InteropServices; public class Tests { @@ -37,6 +38,12 @@ public class Tests { [MarshalAs (UnmanagedType.ByValArray, SizeConst=2)] public char[] a2; } + [StructLayout (LayoutKind.Sequential, CharSet=CharSet.Ansi)] + public struct ByValTStrStruct { + [MarshalAs (UnmanagedType.ByValTStr, SizeConst=4)] public string s1; + public int i; + } + [StructLayout (LayoutKind.Sequential, CharSet=CharSet.Unicode)] public struct ByValWStrStruct { [MarshalAs (UnmanagedType.ByValTStr, SizeConst=4)] public string s1; @@ -184,6 +191,44 @@ public class Tests { public string Field3; } + public static int test_0_byvaltstr () { + ByValTStrStruct s = new ByValTStrStruct (); + + IntPtr p2 = Marshal.AllocHGlobal (Marshal.SizeOf (typeof (ByValTStrStruct))); + Marshal.StructureToPtr(s, p2, false); + + /* Check that the ByValTStr is initialized correctly */ + for (int i = 0; i < 4; ++i) + if (Marshal.ReadByte (p2, i) != 0) + return 31; + + s.s1 = "ABCD"; + s.i = 55; + + Marshal.StructureToPtr(s, p2, false); + + ByValTStrStruct s2 = (ByValTStrStruct)Marshal.PtrToStructure (p2, typeof (ByValTStrStruct)); + + /* The fourth char is lost because of null-termination */ + if (s2.s1 != "ABC") + return 32; + + if (s2.i != 55) + return 33; + + // Check that decoding also respects the size, even when there is no null terminator + byte[] data = Encoding.ASCII.GetBytes ("ABCDXXXX"); + int size = Marshal.SizeOf (typeof (ByValTStrStruct)); + IntPtr buffer = Marshal.AllocHGlobal (size); + Marshal.Copy (data, 0, buffer, size); + + s2 = (ByValTStrStruct)Marshal.PtrToStructure (buffer, typeof (ByValTStrStruct)); + if (s2.s1 != "ABC") + return 34; + + return 0; + } + public static int test_0_byvaltstr_unicode () { ByValWStrStruct s = new ByValWStrStruct (); diff --git a/mono/tests/marshal7.cs b/mono/tests/marshal7.cs index 02cfbbd40a..640f4a04d7 100644 --- a/mono/tests/marshal7.cs +++ b/mono/tests/marshal7.cs @@ -218,9 +218,9 @@ public class Test if (Marshal.SizeOf (typeof (TestStruct10)) != 12) return 16; } else { - if (Marshal.SizeOf (typeof (TestStruct8)) != 16) + if (Marshal.SizeOf (typeof (TestStruct8)) != 16 && Marshal.SizeOf (typeof (TestStruct8)) != 12) return 14; - if (Marshal.SizeOf (typeof (TestStruct10)) != 16) + if (Marshal.SizeOf (typeof (TestStruct10)) != 16 && Marshal.SizeOf (typeof (TestStruct10)) != 12) return 16; } if (Marshal.SizeOf (typeof (TestStruct9)) != 12) diff --git a/mono/tests/stress-runner.pl b/mono/tests/stress-runner.pl index 0e193c307e..24d5b9db8d 100755 --- a/mono/tests/stress-runner.pl +++ b/mono/tests/stress-runner.pl @@ -65,6 +65,13 @@ my %tests = ( 'arg-knob' => 0, # loops 'ratio' => 20, }, + 'gc-graystack-stress' => { + 'program' => 'gc-graystack-stress.exe', + # width, depth, collections + 'args' => [125, 10000, 100], + 'arg-knob' => 2, # loops + 'ratio' => 10, + }, 'thread-stress' => { 'program' => 'thread-stress.exe', # loops diff --git a/mono/unit-tests/Makefile.am b/mono/unit-tests/Makefile.am index 70ba8ab3a5..e7f2ddb10b 100644 --- a/mono/unit-tests/Makefile.am +++ b/mono/unit-tests/Makefile.am @@ -11,6 +11,7 @@ endif if !CROSS_COMPILE if !HOST_WIN32 if SUPPORT_BOEHM +if !PLATFORM_LINUX test_sgen_qsort_SOURCES = test-sgen-qsort.c test_sgen_qsort_CFLAGS = $(TEST_CFLAGS) @@ -27,10 +28,16 @@ test_mono_linked_list_set_CFLAGS = $(TEST_CFLAGS) test_mono_linked_list_set_LDADD = $(TEST_LDADD) test_mono_linked_list_set_LDFLAGS = $(TEST_LDFLAGS) -noinst_PROGRAMS = test-sgen-qsort test-gc-memfuncs test-mono-linked-list-set +test_conc_hashtable_SOURCES = test-conc-hashtable.c +test_conc_hashtable_CFLAGS = $(TEST_CFLAGS) +test_conc_hashtable_LDADD = $(TEST_LDADD) +test_conc_hashtable_LDFLAGS = $(TEST_LDFLAGS) -TESTS = test-sgen-qsort test-gc-memfuncs test-mono-linked-list-set +noinst_PROGRAMS = test-sgen-qsort test-gc-memfuncs test-mono-linked-list-set test-conc-hashtable +TESTS = test-sgen-qsort test-gc-memfuncs test-mono-linked-list-set test-conc-hashtable + +endif !PLATFORM_LINUX endif SUPPORT_BOEHM endif !HOST_WIN32 endif !CROSS_COMPILE diff --git a/mono/unit-tests/Makefile.in b/mono/unit-tests/Makefile.in index 1ce1840d76..6adef1d595 100644 --- a/mono/unit-tests/Makefile.in +++ b/mono/unit-tests/Makefile.in @@ -79,12 +79,14 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ -@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@SUPPORT_BOEHM_TRUE@noinst_PROGRAMS = test-sgen-qsort$(EXEEXT) \ -@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@SUPPORT_BOEHM_TRUE@ test-gc-memfuncs$(EXEEXT) \ -@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@SUPPORT_BOEHM_TRUE@ test-mono-linked-list-set$(EXEEXT) -@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@SUPPORT_BOEHM_TRUE@TESTS = test-sgen-qsort$(EXEEXT) \ -@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@SUPPORT_BOEHM_TRUE@ test-gc-memfuncs$(EXEEXT) \ -@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@SUPPORT_BOEHM_TRUE@ test-mono-linked-list-set$(EXEEXT) +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@noinst_PROGRAMS = test-sgen-qsort$(EXEEXT) \ +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@ test-gc-memfuncs$(EXEEXT) \ +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@ test-mono-linked-list-set$(EXEEXT) \ +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@ test-conc-hashtable$(EXEEXT) +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@TESTS = test-sgen-qsort$(EXEEXT) \ +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@ test-gc-memfuncs$(EXEEXT) \ +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@ test-mono-linked-list-set$(EXEEXT) \ +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@ test-conc-hashtable$(EXEEXT) subdir = mono/unit-tests DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ @@ -105,37 +107,45 @@ CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) -am__test_gc_memfuncs_SOURCES_DIST = test-gc-memfuncs.c -@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@SUPPORT_BOEHM_TRUE@am_test_gc_memfuncs_OBJECTS = test_gc_memfuncs-test-gc-memfuncs.$(OBJEXT) -test_gc_memfuncs_OBJECTS = $(am_test_gc_memfuncs_OBJECTS) +am__test_conc_hashtable_SOURCES_DIST = test-conc-hashtable.c +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@am_test_conc_hashtable_OBJECTS = test_conc_hashtable-test-conc-hashtable.$(OBJEXT) +test_conc_hashtable_OBJECTS = $(am_test_conc_hashtable_OBJECTS) am__DEPENDENCIES_1 = am__DEPENDENCIES_2 = ../metadata/libmonoruntimesgen.la \ ../io-layer/libwapi.la ../utils/libmonoutils.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) -@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@SUPPORT_BOEHM_TRUE@test_gc_memfuncs_DEPENDENCIES = $(am__DEPENDENCIES_2) +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@test_conc_hashtable_DEPENDENCIES = $(am__DEPENDENCIES_2) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = +test_conc_hashtable_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(test_conc_hashtable_CFLAGS) $(CFLAGS) \ + $(test_conc_hashtable_LDFLAGS) $(LDFLAGS) -o $@ +am__test_gc_memfuncs_SOURCES_DIST = test-gc-memfuncs.c +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@am_test_gc_memfuncs_OBJECTS = test_gc_memfuncs-test-gc-memfuncs.$(OBJEXT) +test_gc_memfuncs_OBJECTS = $(am_test_gc_memfuncs_OBJECTS) +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@test_gc_memfuncs_DEPENDENCIES = $(am__DEPENDENCIES_2) test_gc_memfuncs_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(test_gc_memfuncs_CFLAGS) $(CFLAGS) \ $(test_gc_memfuncs_LDFLAGS) $(LDFLAGS) -o $@ am__test_mono_linked_list_set_SOURCES_DIST = \ test-mono-linked-list-set.c -@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@SUPPORT_BOEHM_TRUE@am_test_mono_linked_list_set_OBJECTS = test_mono_linked_list_set-test-mono-linked-list-set.$(OBJEXT) +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@am_test_mono_linked_list_set_OBJECTS = test_mono_linked_list_set-test-mono-linked-list-set.$(OBJEXT) test_mono_linked_list_set_OBJECTS = \ $(am_test_mono_linked_list_set_OBJECTS) -@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@SUPPORT_BOEHM_TRUE@test_mono_linked_list_set_DEPENDENCIES = $(am__DEPENDENCIES_2) +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@test_mono_linked_list_set_DEPENDENCIES = $(am__DEPENDENCIES_2) test_mono_linked_list_set_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(test_mono_linked_list_set_CFLAGS) $(CFLAGS) \ $(test_mono_linked_list_set_LDFLAGS) $(LDFLAGS) -o $@ am__test_sgen_qsort_SOURCES_DIST = test-sgen-qsort.c -@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@SUPPORT_BOEHM_TRUE@am_test_sgen_qsort_OBJECTS = test_sgen_qsort-test-sgen-qsort.$(OBJEXT) +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@am_test_sgen_qsort_OBJECTS = test_sgen_qsort-test-sgen-qsort.$(OBJEXT) test_sgen_qsort_OBJECTS = $(am_test_sgen_qsort_OBJECTS) -@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@SUPPORT_BOEHM_TRUE@test_sgen_qsort_DEPENDENCIES = $(am__DEPENDENCIES_2) +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@test_sgen_qsort_DEPENDENCIES = $(am__DEPENDENCIES_2) test_sgen_qsort_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(test_sgen_qsort_CFLAGS) $(CFLAGS) $(test_sgen_qsort_LDFLAGS) \ @@ -170,10 +180,11 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = -SOURCES = $(test_gc_memfuncs_SOURCES) \ +SOURCES = $(test_conc_hashtable_SOURCES) $(test_gc_memfuncs_SOURCES) \ $(test_mono_linked_list_set_SOURCES) \ $(test_sgen_qsort_SOURCES) -DIST_SOURCES = $(am__test_gc_memfuncs_SOURCES_DIST) \ +DIST_SOURCES = $(am__test_conc_hashtable_SOURCES_DIST) \ + $(am__test_gc_memfuncs_SOURCES_DIST) \ $(am__test_mono_linked_list_set_SOURCES_DIST) \ $(am__test_sgen_qsort_SOURCES_DIST) am__can_run_installinfo = \ @@ -449,6 +460,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -457,6 +469,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -523,6 +536,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -572,6 +586,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ @@ -611,18 +626,22 @@ TEST_LDADD = ../metadata/libmonoruntimesgen.la ../io-layer/libwapi.la ../utils/l $(LIBGC_LIBS) $(GLIB_LIBS) -lm $(LIBICONV) @PLATFORM_DARWIN_TRUE@TEST_LDFLAGS = -framework CoreFoundation -framework Foundation -@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@SUPPORT_BOEHM_TRUE@test_sgen_qsort_SOURCES = test-sgen-qsort.c -@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@SUPPORT_BOEHM_TRUE@test_sgen_qsort_CFLAGS = $(TEST_CFLAGS) -@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@SUPPORT_BOEHM_TRUE@test_sgen_qsort_LDADD = $(TEST_LDADD) -@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@SUPPORT_BOEHM_TRUE@test_sgen_qsort_LDFLAGS = $(TEST_LDFLAGS) -@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@SUPPORT_BOEHM_TRUE@test_gc_memfuncs_SOURCES = test-gc-memfuncs.c -@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@SUPPORT_BOEHM_TRUE@test_gc_memfuncs_CFLAGS = $(TEST_CFLAGS) -@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@SUPPORT_BOEHM_TRUE@test_gc_memfuncs_LDADD = $(TEST_LDADD) -@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@SUPPORT_BOEHM_TRUE@test_gc_memfuncs_LDFLAGS = $(TEST_LDFLAGS) -@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@SUPPORT_BOEHM_TRUE@test_mono_linked_list_set_SOURCES = test-mono-linked-list-set.c -@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@SUPPORT_BOEHM_TRUE@test_mono_linked_list_set_CFLAGS = $(TEST_CFLAGS) -@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@SUPPORT_BOEHM_TRUE@test_mono_linked_list_set_LDADD = $(TEST_LDADD) -@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@SUPPORT_BOEHM_TRUE@test_mono_linked_list_set_LDFLAGS = $(TEST_LDFLAGS) +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@test_sgen_qsort_SOURCES = test-sgen-qsort.c +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@test_sgen_qsort_CFLAGS = $(TEST_CFLAGS) +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@test_sgen_qsort_LDADD = $(TEST_LDADD) +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@test_sgen_qsort_LDFLAGS = $(TEST_LDFLAGS) +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@test_gc_memfuncs_SOURCES = test-gc-memfuncs.c +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@test_gc_memfuncs_CFLAGS = $(TEST_CFLAGS) +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@test_gc_memfuncs_LDADD = $(TEST_LDADD) +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@test_gc_memfuncs_LDFLAGS = $(TEST_LDFLAGS) +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@test_mono_linked_list_set_SOURCES = test-mono-linked-list-set.c +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@test_mono_linked_list_set_CFLAGS = $(TEST_CFLAGS) +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@test_mono_linked_list_set_LDADD = $(TEST_LDADD) +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@test_mono_linked_list_set_LDFLAGS = $(TEST_LDFLAGS) +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@test_conc_hashtable_SOURCES = test-conc-hashtable.c +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@test_conc_hashtable_CFLAGS = $(TEST_CFLAGS) +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@test_conc_hashtable_LDADD = $(TEST_LDADD) +@CROSS_COMPILE_FALSE@@HOST_WIN32_FALSE@@PLATFORM_LINUX_FALSE@@SUPPORT_BOEHM_TRUE@test_conc_hashtable_LDFLAGS = $(TEST_LDFLAGS) all: all-am .SUFFIXES: @@ -667,6 +686,10 @@ clean-noinstPROGRAMS: echo " rm -f" $$list; \ rm -f $$list +test-conc-hashtable$(EXEEXT): $(test_conc_hashtable_OBJECTS) $(test_conc_hashtable_DEPENDENCIES) $(EXTRA_test_conc_hashtable_DEPENDENCIES) + @rm -f test-conc-hashtable$(EXEEXT) + $(AM_V_CCLD)$(test_conc_hashtable_LINK) $(test_conc_hashtable_OBJECTS) $(test_conc_hashtable_LDADD) $(LIBS) + test-gc-memfuncs$(EXEEXT): $(test_gc_memfuncs_OBJECTS) $(test_gc_memfuncs_DEPENDENCIES) $(EXTRA_test_gc_memfuncs_DEPENDENCIES) @rm -f test-gc-memfuncs$(EXEEXT) $(AM_V_CCLD)$(test_gc_memfuncs_LINK) $(test_gc_memfuncs_OBJECTS) $(test_gc_memfuncs_LDADD) $(LIBS) @@ -685,6 +708,7 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_conc_hashtable-test-conc-hashtable.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_gc_memfuncs-test-gc-memfuncs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_mono_linked_list_set-test-mono-linked-list-set.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_sgen_qsort-test-sgen-qsort.Po@am__quote@ @@ -713,6 +737,20 @@ distclean-compile: @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< +test_conc_hashtable-test-conc-hashtable.o: test-conc-hashtable.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_conc_hashtable_CFLAGS) $(CFLAGS) -MT test_conc_hashtable-test-conc-hashtable.o -MD -MP -MF $(DEPDIR)/test_conc_hashtable-test-conc-hashtable.Tpo -c -o test_conc_hashtable-test-conc-hashtable.o `test -f 'test-conc-hashtable.c' || echo '$(srcdir)/'`test-conc-hashtable.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_conc_hashtable-test-conc-hashtable.Tpo $(DEPDIR)/test_conc_hashtable-test-conc-hashtable.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-conc-hashtable.c' object='test_conc_hashtable-test-conc-hashtable.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_conc_hashtable_CFLAGS) $(CFLAGS) -c -o test_conc_hashtable-test-conc-hashtable.o `test -f 'test-conc-hashtable.c' || echo '$(srcdir)/'`test-conc-hashtable.c + +test_conc_hashtable-test-conc-hashtable.obj: test-conc-hashtable.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_conc_hashtable_CFLAGS) $(CFLAGS) -MT test_conc_hashtable-test-conc-hashtable.obj -MD -MP -MF $(DEPDIR)/test_conc_hashtable-test-conc-hashtable.Tpo -c -o test_conc_hashtable-test-conc-hashtable.obj `if test -f 'test-conc-hashtable.c'; then $(CYGPATH_W) 'test-conc-hashtable.c'; else $(CYGPATH_W) '$(srcdir)/test-conc-hashtable.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_conc_hashtable-test-conc-hashtable.Tpo $(DEPDIR)/test_conc_hashtable-test-conc-hashtable.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-conc-hashtable.c' object='test_conc_hashtable-test-conc-hashtable.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_conc_hashtable_CFLAGS) $(CFLAGS) -c -o test_conc_hashtable-test-conc-hashtable.obj `if test -f 'test-conc-hashtable.c'; then $(CYGPATH_W) 'test-conc-hashtable.c'; else $(CYGPATH_W) '$(srcdir)/test-conc-hashtable.c'; fi` + test_gc_memfuncs-test-gc-memfuncs.o: test-gc-memfuncs.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_gc_memfuncs_CFLAGS) $(CFLAGS) -MT test_gc_memfuncs-test-gc-memfuncs.o -MD -MP -MF $(DEPDIR)/test_gc_memfuncs-test-gc-memfuncs.Tpo -c -o test_gc_memfuncs-test-gc-memfuncs.o `test -f 'test-gc-memfuncs.c' || echo '$(srcdir)/'`test-gc-memfuncs.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_gc_memfuncs-test-gc-memfuncs.Tpo $(DEPDIR)/test_gc_memfuncs-test-gc-memfuncs.Po @@ -975,6 +1013,13 @@ test-mono-linked-list-set.log: test-mono-linked-list-set$(EXEEXT) --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) +test-conc-hashtable.log: test-conc-hashtable$(EXEEXT) + @p='test-conc-hashtable$(EXEEXT)'; \ + b='test-conc-hashtable'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ diff --git a/mono/unit-tests/test-conc-hashtable.c b/mono/unit-tests/test-conc-hashtable.c new file mode 100644 index 0000000000..ed09d593b6 --- /dev/null +++ b/mono/unit-tests/test-conc-hashtable.c @@ -0,0 +1,324 @@ +/* + * test-conc-hashtable.c: Unit test for the concurrent hashtable. + * + * Copyright (C) 2014 Xamarin Inc + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License 2.0 as published by the Free Software Foundation; + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License 2.0 along with this library; if not, write to the Free + * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "config.h" + +#include "utils/mono-threads.h" +#include "utils/mono-conc-hashtable.h" + +#include +#include +#include +#include + +#include + +static int +single_writer_single_reader (void) +{ + mono_mutex_t mutex; + MonoConcurrentHashTable *h; + int res = 0; + + mono_mutex_init (&mutex); + h = mono_conc_hashtable_new (&mutex, NULL, NULL); + mono_conc_hashtable_insert (h, GUINT_TO_POINTER (10), GUINT_TO_POINTER (20)); + mono_conc_hashtable_insert (h, GUINT_TO_POINTER (30), GUINT_TO_POINTER (40)); + mono_conc_hashtable_insert (h, GUINT_TO_POINTER (50), GUINT_TO_POINTER (60)); + mono_conc_hashtable_insert (h, GUINT_TO_POINTER (2), GUINT_TO_POINTER (3)); + + if (mono_conc_hashtable_lookup (h, GUINT_TO_POINTER (30)) != GUINT_TO_POINTER (40)) + res = 1; + if (mono_conc_hashtable_lookup (h, GUINT_TO_POINTER (10)) != GUINT_TO_POINTER (20)) + res = 2; + if (mono_conc_hashtable_lookup (h, GUINT_TO_POINTER (2)) != GUINT_TO_POINTER (3)) + res = 3; + if (mono_conc_hashtable_lookup (h, GUINT_TO_POINTER (50)) != GUINT_TO_POINTER (60)) + res = 4; + + mono_conc_hashtable_destroy (h); + mono_mutex_destroy (&mutex); + if (res) + printf ("SERIAL TEST FAILED %d\n", res); + return res; +} + +static MonoConcurrentHashTable *hash; + +static void* +pw_sr_thread (void *arg) +{ + int i, idx = 1000 * GPOINTER_TO_INT (arg); + mono_thread_info_attach ((gpointer)&arg); + + for (i = 0; i < 1000; ++i) + mono_conc_hashtable_insert (hash, GINT_TO_POINTER (i + idx), GINT_TO_POINTER (i + 1)); + return NULL; +} + +static int +parallel_writer_single_reader (void) +{ + pthread_t a,b,c; + mono_mutex_t mutex; + int i, j, res = 0; + + mono_mutex_init (&mutex); + hash = mono_conc_hashtable_new (&mutex, NULL, NULL); + + pthread_create (&a, NULL, pw_sr_thread, GINT_TO_POINTER (1)); + pthread_create (&b, NULL, pw_sr_thread, GINT_TO_POINTER (2)); + pthread_create (&c, NULL, pw_sr_thread, GINT_TO_POINTER (3)); + + pthread_join (a, NULL); + pthread_join (b, NULL); + pthread_join (c, NULL); + + for (i = 0; i < 1000; ++i) { + for (j = 1; j < 4; ++j) { + if (mono_conc_hashtable_lookup (hash, GINT_TO_POINTER (j * 1000 + i)) != GINT_TO_POINTER (i + 1)) { + res = j + 1; + goto done; + } + } + } + +done: + mono_conc_hashtable_destroy (hash); + mono_mutex_destroy (&mutex); + if (res) + printf ("PAR_WRITER_SINGLE_READER TEST FAILED %d\n", res); + return res; +} + + +static void* +pr_sw_thread (void *arg) +{ + int i = 0, idx = 100 * GPOINTER_TO_INT (arg); + mono_thread_info_attach ((gpointer)&arg); + + while (i < 100) { + gpointer res = mono_conc_hashtable_lookup (hash, GINT_TO_POINTER (i + idx + 1)); + if (!res) + continue; + if (res != GINT_TO_POINTER ((i + idx) * 2 + 1)) + return GINT_TO_POINTER (i); + ++i; + } + return NULL; +} + +static int +single_writer_parallel_reader (void) +{ + pthread_t a,b,c; + mono_mutex_t mutex; + gpointer ra, rb, rc; + int i, res = 0; + ra = rb = rc = GINT_TO_POINTER (1); + + mono_mutex_init (&mutex); + hash = mono_conc_hashtable_new (&mutex, NULL, NULL); + + pthread_create (&a, NULL, pr_sw_thread, GINT_TO_POINTER (0)); + pthread_create (&b, NULL, pr_sw_thread, GINT_TO_POINTER (1)); + pthread_create (&c, NULL, pr_sw_thread, GINT_TO_POINTER (2)); + + for (i = 0; i < 100; ++i) { + mono_conc_hashtable_insert (hash, GINT_TO_POINTER (i + 0 + 1), GINT_TO_POINTER ((i + 0) * 2 + 1)); + mono_conc_hashtable_insert (hash, GINT_TO_POINTER (i + 100 + 1), GINT_TO_POINTER ((i + 100) * 2 + 1)); + mono_conc_hashtable_insert (hash, GINT_TO_POINTER (i + 200 + 1), GINT_TO_POINTER ((i + 200) * 2 + 1)); + } + + pthread_join (a, &ra); + pthread_join (b, &rb); + pthread_join (c, &rc); + res = GPOINTER_TO_INT (ra) + GPOINTER_TO_INT (rb) + GPOINTER_TO_INT (rc); + + mono_conc_hashtable_destroy (hash); + mono_mutex_destroy (&mutex); + if (res) + printf ("SINGLE_WRITER_PAR_READER TEST FAILED %d\n", res); + return res; +} + +int running = 1; + +static void* +pw_pr_r_thread (void *arg) +{ + int key, val, i; + mono_thread_info_attach ((gpointer)&arg); + + /* i will not be incremented as long as running is set to 1, this guarantee that + we loop over all the keys at least once after the writer threads have finished */ + for (i = 0; i < 2; i += 1 - running) { + for (key = 1; key < 3 * 1000 + 1; key++) { + val = GPOINTER_TO_INT (mono_conc_hashtable_lookup (hash, GINT_TO_POINTER (key))); + + if (!val) + continue; + if (key != val) + return GINT_TO_POINTER (key); + } + } + return NULL; +} + +static void* +pw_pr_w_add_thread (void *arg) +{ + int i, idx = 1000 * GPOINTER_TO_INT (arg); + + mono_thread_info_attach ((gpointer)&arg); + + for (i = idx; i < idx + 1000; i++) + mono_conc_hashtable_insert (hash, GINT_TO_POINTER (i + 1), GINT_TO_POINTER (i + 1)); + return NULL; +} + +static void* +pw_pr_w_del_thread (void *arg) +{ + int i, idx = 1000 * GPOINTER_TO_INT (arg); + + mono_thread_info_attach ((gpointer)&arg); + + for (i = idx; i < idx + 1000; i++) + mono_conc_hashtable_remove (hash, GINT_TO_POINTER (i + 1)); + return NULL; +} + +static int +parallel_writer_parallel_reader (void) +{ + pthread_t wa, wb, wc, ra, rb, rc; + mono_mutex_t mutex; + gpointer a, b, c; + int res = 0, i; + + srand(time(NULL)); + + mono_mutex_init (&mutex); + hash = mono_conc_hashtable_new (&mutex, NULL, NULL); + + for (i = 0; i < 2; i++) { + running = 1; + + pthread_create (&ra, NULL, pw_pr_r_thread, NULL); + pthread_create (&rb, NULL, pw_pr_r_thread, NULL); + pthread_create (&rc, NULL, pw_pr_r_thread, NULL); + + switch (i) { + case 0: + pthread_create (&wa, NULL, pw_pr_w_add_thread, GINT_TO_POINTER (0)); + pthread_create (&wb, NULL, pw_pr_w_add_thread, GINT_TO_POINTER (1)); + pthread_create (&wc, NULL, pw_pr_w_add_thread, GINT_TO_POINTER (2)); + break; + case 1: + pthread_create (&wa, NULL, pw_pr_w_del_thread, GINT_TO_POINTER (0)); + pthread_create (&wb, NULL, pw_pr_w_del_thread, GINT_TO_POINTER (1)); + pthread_create (&wc, NULL, pw_pr_w_del_thread, GINT_TO_POINTER (2)); + break; + } + + pthread_join (wa, NULL); + pthread_join (wb, NULL); + pthread_join (wc, NULL); + + running = 0; + + pthread_join (ra, &a); + pthread_join (rb, &b); + pthread_join (rc, &c); + + res += GPOINTER_TO_INT (a) + GPOINTER_TO_INT (b) + GPOINTER_TO_INT (c); + } + + if (res) + printf ("PAR_WRITER_PAR_READER TEST FAILED %d %d %d\n", GPOINTER_TO_INT (a), GPOINTER_TO_INT (b), GPOINTER_TO_INT (c)); + + mono_conc_hashtable_destroy (hash); + mono_mutex_destroy (&mutex); + + return res; +} + +static void +benchmark_conc (void) +{ + mono_mutex_t mutex; + MonoConcurrentHashTable *h; + int i, j; + + mono_mutex_init (&mutex); + h = mono_conc_hashtable_new (&mutex, NULL, NULL); + + for (i = 1; i < 10 * 1000; ++i) + mono_conc_hashtable_insert (h, GUINT_TO_POINTER (i), GUINT_TO_POINTER (i)); + + + for (j = 0; j < 100000; ++j) + for (i = 1; i < 10 * 105; ++i) + mono_conc_hashtable_lookup (h, GUINT_TO_POINTER (i)); + + mono_conc_hashtable_destroy (h); + mono_mutex_destroy (&mutex); + +} + +static void +benchmark_glib (void) +{ + GHashTable *h; + int i, j; + + h = g_hash_table_new (NULL, NULL); + + for (i = 1; i < 10 * 1000; ++i) + g_hash_table_insert (h, GUINT_TO_POINTER (i), GUINT_TO_POINTER (i)); + + + for (j = 0; j < 100000; ++j) + for (i = 1; i < 10 * 105; ++i) + g_hash_table_lookup (h, GUINT_TO_POINTER (i)); + + g_hash_table_destroy (h); +} + +int +main (void) +{ + MonoThreadInfoCallbacks cb = { NULL }; + int res = 0; + + mono_threads_init (&cb, sizeof (MonoThreadInfo)); + mono_thread_info_attach ((gpointer)&cb); + + // benchmark_conc (); + // benchmark_glib (); + + res += single_writer_single_reader (); + res += parallel_writer_single_reader (); + res += single_writer_parallel_reader (); + res += parallel_writer_parallel_reader (); + + return res; +} \ No newline at end of file diff --git a/mono/unit-tests/test-gc-memfuncs.c b/mono/unit-tests/test-gc-memfuncs.c index a8ccf8833c..37c6c26d14 100644 --- a/mono/unit-tests/test-gc-memfuncs.c +++ b/mono/unit-tests/test-gc-memfuncs.c @@ -59,7 +59,7 @@ main (void) memcpy (reference, random_mem, POOL_SIZE); memcpy (playground, random_mem, POOL_SIZE); - bzero (reference + START_OFFSET + offset, size); + memset (reference + START_OFFSET + offset, 0, size); mono_gc_bzero_atomic (playground + START_OFFSET + offset, size); assert (!memcmp (reference, playground, POOL_SIZE)); diff --git a/mono/utils/Makefile.am b/mono/utils/Makefile.am index 881888fcce..801a177746 100644 --- a/mono/utils/Makefile.am +++ b/mono/utils/Makefile.am @@ -110,7 +110,9 @@ monoutils_sources = \ mono-hwcap.c \ bsearch.h \ bsearch.c \ - mono-signal-handler.h + mono-signal-handler.h \ + mono-conc-hashtable.h \ + mono-conc-hashtable.c arch_sources = diff --git a/mono/utils/Makefile.in b/mono/utils/Makefile.in index 49573ab3e4..1749d330e5 100644 --- a/mono/utils/Makefile.in +++ b/mono/utils/Makefile.in @@ -145,7 +145,8 @@ am__libmonoutils_la_SOURCES_DIST = mono-md5.c mono-sha1.c \ mono-threads-windows.c mono-threads.h mono-tls.h mono-tls.c \ linux_magic.h mono-memory-model.h atomic.h atomic.c \ mono-hwcap.h mono-hwcap.c bsearch.h bsearch.c \ - mono-signal-handler.h mach-support-x86.c mach-support-amd64.c \ + mono-signal-handler.h mono-conc-hashtable.h \ + mono-conc-hashtable.c mach-support-x86.c mach-support-amd64.c \ mach-support-arm.c mach-support-unknown.c mono-hwcap-x86.c \ mono-hwcap-x86.h mono-hwcap-arm.c mono-hwcap-arm.h \ mono-hwcap-arm64.c mono-hwcap-arm64.h mono-hwcap-mips.c \ @@ -165,7 +166,7 @@ am__objects_1 = mono-md5.lo mono-sha1.lo mono-logger.lo \ mono-linked-list-set.lo mono-threads.lo mono-threads-posix.lo \ mono-threads-mach.lo mono-threads-mach-helper.lo \ mono-threads-windows.lo mono-tls.lo atomic.lo mono-hwcap.lo \ - bsearch.lo + bsearch.lo mono-conc-hashtable.lo @CROSS_COMPILE_FALSE@@X86_TRUE@am__objects_2 = mach-support-x86.lo @AMD64_TRUE@@CROSS_COMPILE_FALSE@am__objects_3 = \ @AMD64_TRUE@@CROSS_COMPILE_FALSE@ mach-support-amd64.lo @@ -325,6 +326,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -333,6 +335,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -399,6 +402,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -448,6 +452,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ @@ -583,7 +588,9 @@ monoutils_sources = \ mono-hwcap.c \ bsearch.h \ bsearch.c \ - mono-signal-handler.h + mono-signal-handler.h \ + mono-conc-hashtable.h \ + mono-conc-hashtable.c arch_sources = $(am__append_1) $(am__append_2) $(am__append_3) \ $(am__append_4) $(am__append_5) $(am__append_6) \ @@ -670,6 +677,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mach-support-x86.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mach-support.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mono-codeman.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mono-conc-hashtable.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mono-context.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mono-counters.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mono-dl.Plo@am__quote@ diff --git a/mono/utils/atomic.c b/mono/utils/atomic.c index 7cd884e61d..9ab8746f29 100755 --- a/mono/utils/atomic.c +++ b/mono/utils/atomic.c @@ -12,12 +12,13 @@ #include #include +#include #if defined (WAPI_NO_ATOMIC_ASM) || defined (BROKEN_64BIT_ATOMICS_INTRINSIC) #include -static pthread_mutex_t spin = PTHREAD_MUTEX_INITIALIZER; +static pthread_mutex_t spin G_GNUC_UNUSED = PTHREAD_MUTEX_INITIALIZER; #define NEED_64BIT_CMPXCHG_FALLBACK @@ -25,21 +26,12 @@ static pthread_mutex_t spin = PTHREAD_MUTEX_INITIALIZER; #ifdef WAPI_NO_ATOMIC_ASM -static mono_once_t spin_once=MONO_ONCE_INIT; - -static void spin_init(void) -{ - g_warning("Using non-atomic functions! Expect race conditions when using process-shared handles!"); -} - gint32 InterlockedCompareExchange(volatile gint32 *dest, gint32 exch, gint32 comp) { gint32 old; int ret; - mono_once(&spin_once, spin_init); - pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock, (void *)&spin); ret = pthread_mutex_lock(&spin); @@ -64,8 +56,6 @@ gpointer InterlockedCompareExchangePointer(volatile gpointer *dest, gpointer old; int ret; - mono_once(&spin_once, spin_init); - pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock, (void *)&spin); ret = pthread_mutex_lock(&spin); @@ -89,8 +79,6 @@ gint32 InterlockedAdd(volatile gint32 *dest, gint32 add) gint32 ret; int thr_ret; - mono_once(&spin_once, spin_init); - pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock, (void *)&spin); thr_ret = pthread_mutex_lock(&spin); @@ -112,8 +100,6 @@ gint64 InterlockedAdd64(volatile gint64 *dest, gint64 add) gint64 ret; int thr_ret; - mono_once(&spin_once, spin_init); - pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock, (void *)&spin); thr_ret = pthread_mutex_lock(&spin); @@ -135,8 +121,6 @@ gint32 InterlockedIncrement(volatile gint32 *dest) gint32 ret; int thr_ret; - mono_once(&spin_once, spin_init); - pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock, (void *)&spin); thr_ret = pthread_mutex_lock(&spin); @@ -158,8 +142,6 @@ gint64 InterlockedIncrement64(volatile gint64 *dest) gint64 ret; int thr_ret; - mono_once(&spin_once, spin_init); - pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock, (void *)&spin); thr_ret = pthread_mutex_lock(&spin); @@ -181,8 +163,6 @@ gint32 InterlockedDecrement(volatile gint32 *dest) gint32 ret; int thr_ret; - mono_once(&spin_once, spin_init); - pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock, (void *)&spin); thr_ret = pthread_mutex_lock(&spin); @@ -204,8 +184,6 @@ gint64 InterlockedDecrement64(volatile gint64 *dest) gint64 ret; int thr_ret; - mono_once(&spin_once, spin_init); - pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock, (void *)&spin); thr_ret = pthread_mutex_lock(&spin); @@ -227,8 +205,6 @@ gint32 InterlockedExchange(volatile gint32 *dest, gint32 exch) gint32 ret; int thr_ret; - mono_once(&spin_once, spin_init); - pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock, (void *)&spin); thr_ret = pthread_mutex_lock(&spin); @@ -250,8 +226,6 @@ gint64 InterlockedExchange64(volatile gint64 *dest, gint64 exch) gint64 ret; int thr_ret; - mono_once(&spin_once, spin_init); - pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock, (void *)&spin); thr_ret = pthread_mutex_lock(&spin); @@ -273,8 +247,6 @@ gpointer InterlockedExchangePointer(volatile gpointer *dest, gpointer exch) gpointer ret; int thr_ret; - mono_once(&spin_once, spin_init); - pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock, (void *)&spin); thr_ret = pthread_mutex_lock(&spin); @@ -296,8 +268,6 @@ gint32 InterlockedExchangeAdd(volatile gint32 *dest, gint32 add) gint32 ret; int thr_ret; - mono_once(&spin_once, spin_init); - pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock, (void *)&spin); thr_ret = pthread_mutex_lock(&spin); @@ -319,8 +289,6 @@ gint64 InterlockedExchangeAdd64(volatile gint64 *dest, gint64 add) gint64 ret; int thr_ret; - mono_once(&spin_once, spin_init); - pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock, (void *)&spin); thr_ret = pthread_mutex_lock(&spin); @@ -342,8 +310,6 @@ gint8 InterlockedRead8(volatile gint8 *src) gint8 ret; int thr_ret; - mono_once(&spin_once, spin_init); - pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock, (void *)&spin); thr_ret = pthread_mutex_lock(&spin); @@ -364,8 +330,6 @@ gint16 InterlockedRead16(volatile gint16 *src) gint16 ret; int thr_ret; - mono_once(&spin_once, spin_init); - pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock, (void *)&spin); thr_ret = pthread_mutex_lock(&spin); @@ -386,8 +350,6 @@ gint32 InterlockedRead(volatile gint32 *src) gint32 ret; int thr_ret; - mono_once(&spin_once, spin_init); - pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock, (void *)&spin); thr_ret = pthread_mutex_lock(&spin); @@ -408,8 +370,6 @@ gint64 InterlockedRead64(volatile gint64 *src) gint64 ret; int thr_ret; - mono_once(&spin_once, spin_init); - pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock, (void *)&spin); thr_ret = pthread_mutex_lock(&spin); @@ -430,8 +390,6 @@ gpointer InterlockedReadPointer(volatile gpointer *src) gpointer ret; int thr_ret; - mono_once(&spin_once, spin_init); - pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock, (void *)&spin); thr_ret = pthread_mutex_lock(&spin); @@ -451,8 +409,6 @@ void InterlockedWrite(volatile gint8 *dst, gint8 val) { int thr_ret; - mono_once(&spin_once, spin_init); - pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock, (void *)&spin); thr_ret = pthread_mutex_lock(&spin); @@ -470,8 +426,6 @@ void InterlockedWrite16(volatile gint16 *dst, gint16 val) { int thr_ret; - mono_once(&spin_once, spin_init); - pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock, (void *)&spin); thr_ret = pthread_mutex_lock(&spin); @@ -489,8 +443,6 @@ void InterlockedWrite(volatile gint32 *dst, gint32 val) { int thr_ret; - mono_once(&spin_once, spin_init); - pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock, (void *)&spin); thr_ret = pthread_mutex_lock(&spin); @@ -508,8 +460,6 @@ void InterlockedWrite64(volatile gint64 *dst, gint64 val) { int thr_ret; - mono_once(&spin_once, spin_init); - pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock, (void *)&spin); thr_ret = pthread_mutex_lock(&spin); @@ -527,8 +477,6 @@ void InterlockedWritePointer(volatile gpointer *dst, gpointer val) { int thr_ret; - mono_once(&spin_once, spin_init); - pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock, (void *)&spin); thr_ret = pthread_mutex_lock(&spin); @@ -568,15 +516,24 @@ gint64 InterlockedCompareExchange64(volatile gint64 *dest, gint64 exch, gint64 comp) { gint64 old; + int ret; + + pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock, + (void *)&spin); + ret = pthread_mutex_lock(&spin); + g_assert (ret == 0); + + old= *dest; + if(old==comp) { + *dest=exch; + } + + ret = pthread_mutex_unlock(&spin); + g_assert (ret == 0); + + pthread_cleanup_pop (0); - pthread_mutex_lock (&spin); - - old = *dest; - if(old == comp) - *dest = exch; - - pthread_mutex_unlock (&spin); - return old; + return(old); } #endif diff --git a/mono/utils/atomic.h b/mono/utils/atomic.h index c1a1a94b47..306800cfe1 100755 --- a/mono/utils/atomic.h +++ b/mono/utils/atomic.h @@ -108,13 +108,19 @@ static inline gint64 InterlockedAdd64(volatile gint64 *dest, gint64 add) #endif #endif +#ifdef HOST_WIN32 +#define TO_INTERLOCKED_ARGP(ptr) ((volatile LONG*)(ptr)) +#else +#define TO_INTERLOCKED_ARGP(ptr) (ptr) +#endif + /* And now for some dirty hacks... The Windows API doesn't * provide any useful primitives for this (other than getting * into architecture-specific madness), so use CAS. */ static inline gint32 InterlockedRead(volatile gint32 *src) { - return InterlockedCompareExchange (src, 0, 0); + return InterlockedCompareExchange (TO_INTERLOCKED_ARGP (src), 0, 0); } static inline gint64 InterlockedRead64(volatile gint64 *src) @@ -129,7 +135,7 @@ static inline gpointer InterlockedReadPointer(volatile gpointer *src) static inline void InterlockedWrite(volatile gint32 *dst, gint32 val) { - InterlockedExchange (dst, val); + InterlockedExchange (TO_INTERLOCKED_ARGP (dst), val); } static inline void InterlockedWrite64(volatile gint64 *dst, gint64 val) diff --git a/mono/utils/lock-free-alloc.c b/mono/utils/lock-free-alloc.c index 1e5cad6498..4befb3b86a 100644 --- a/mono/utils/lock-free-alloc.c +++ b/mono/utils/lock-free-alloc.c @@ -127,7 +127,7 @@ struct _MonoLockFreeAllocDescriptor { #define SB_HEADER_SIZE 16 #define SB_USABLE_SIZE (SB_SIZE - SB_HEADER_SIZE) -#define SB_HEADER_FOR_ADDR(a) ((gpointer)((gulong)(a) & ~(gulong)(SB_SIZE-1))) +#define SB_HEADER_FOR_ADDR(a) ((gpointer)((size_t)(a) & ~(size_t)(SB_SIZE-1))) #define DESCRIPTOR_FOR_ADDR(a) (*(Descriptor**)SB_HEADER_FOR_ADDR (a)) /* Taken from SGen */ diff --git a/mono/utils/mono-codeman.c b/mono/utils/mono-codeman.c index abdcda6997..c8f7468253 100644 --- a/mono/utils/mono-codeman.c +++ b/mono/utils/mono-codeman.c @@ -28,9 +28,9 @@ #endif static uintptr_t code_memory_used = 0; -static gulong dynamic_code_alloc_count; -static gulong dynamic_code_bytes_count; -static gulong dynamic_code_frees_count; +static size_t dynamic_code_alloc_count; +static size_t dynamic_code_bytes_count; +static size_t dynamic_code_frees_count; /* * AMD64 processors maintain icache coherency only for pages which are diff --git a/mono/utils/mono-compiler.h b/mono/utils/mono-compiler.h index 22623d074f..c1d0e27a49 100644 --- a/mono/utils/mono-compiler.h +++ b/mono/utils/mono-compiler.h @@ -214,6 +214,9 @@ #define __func__ __FUNCTION__ +#include +typedef SSIZE_T ssize_t; + #endif /* _MSC_VER */ #if !defined(_MSC_VER) && !defined(PLATFORM_SOLARIS) && !defined(_WIN32) && !defined(__CYGWIN__) && !defined(MONOTOUCH) && HAVE_VISIBILITY_HIDDEN diff --git a/mono/utils/mono-conc-hashtable.c b/mono/utils/mono-conc-hashtable.c new file mode 100644 index 0000000000..7c4637f81c --- /dev/null +++ b/mono/utils/mono-conc-hashtable.c @@ -0,0 +1,371 @@ +/* + * mono-conc-hashtable.h: A mostly concurrent hashtable + * + * Author: + * Rodrigo Kumpera (kumpera@gmail.com) + * + * (C) 2014 Xamarin + */ + +#include "mono-conc-hashtable.h" +#include + +/* Configuration knobs. */ + +#define INITIAL_SIZE 32 +#define LOAD_FACTOR 0.75f +#define TOMBSTONE ((gpointer)(ssize_t)-1) + +typedef struct { + gpointer key; + gpointer value; +} key_value_pair; + +typedef struct { + int table_size; + key_value_pair *kvs; +} conc_table; + +struct _MonoConcurrentHashTable { + volatile conc_table *table; /* goes to HP0 */ + GHashFunc hash_func; + GEqualFunc equal_func; + mono_mutex_t *mutex; + int element_count; + int overflow_count; + GDestroyNotify key_destroy_func; + GDestroyNotify value_destroy_func; +}; + +static conc_table* +conc_table_new (int size) +{ + conc_table *res = g_new (conc_table, 1); + res->table_size = size; + res->kvs = g_new0 (key_value_pair, size); + return res; +} + +static void +conc_table_free (gpointer ptr) +{ + conc_table *table = ptr; + g_free (table->kvs); + g_free (table); +} + +static void +conc_table_lf_free (conc_table *table) +{ + mono_thread_hazardous_free_or_queue (table, conc_table_free, TRUE, FALSE); +} + + +/* +A common problem with power of two hashtables is that it leads of bad clustering when dealing +with aligned numbers. + +The solution here is to mix the bits from two primes plus the hash itself, it produces a better spread +than just the numbers. +*/ + +static MONO_ALWAYS_INLINE int +mix_hash (int hash) +{ + return ((hash * 215497) >> 16) ^ (hash * 1823231) + hash; +} + +static MONO_ALWAYS_INLINE void +insert_one_local (conc_table *table, GHashFunc hash_func, gpointer key, gpointer value) +{ + key_value_pair *kvs = table->kvs; + int table_mask = table->table_size - 1; + int hash = mix_hash (hash_func (key)); + int i = hash & table_mask; + + while (table->kvs [i].key) + i = (i + 1) & table_mask; + + kvs [i].key = key; + kvs [i].value = value; +} + +/* LOCKING: Must be called holding hash_table->mutex */ +static void +expand_table (MonoConcurrentHashTable *hash_table) +{ + conc_table *old_table = (conc_table*)hash_table->table; + conc_table *new_table = conc_table_new (old_table->table_size * 2); + key_value_pair *kvs = old_table->kvs; + int i; + + for (i = 0; i < old_table->table_size; ++i) { + if (kvs [i].key && kvs [i].key != TOMBSTONE) + insert_one_local (new_table, hash_table->hash_func, kvs [i].key, kvs [i].value); + } + mono_memory_barrier (); + hash_table->table = new_table; + hash_table->overflow_count = (int)(new_table->table_size * LOAD_FACTOR); + conc_table_lf_free (old_table); +} + + +MonoConcurrentHashTable* +mono_conc_hashtable_new (mono_mutex_t *mutex, GHashFunc hash_func, GEqualFunc key_equal_func) +{ + MonoConcurrentHashTable *res = g_new0 (MonoConcurrentHashTable, 1); + res->mutex = mutex; + res->hash_func = hash_func ? hash_func : g_direct_hash; + res->equal_func = key_equal_func; + // res->equal_func = g_direct_equal; + res->table = conc_table_new (INITIAL_SIZE); + res->element_count = 0; + res->overflow_count = (int)(INITIAL_SIZE * LOAD_FACTOR); + return res; +} + +MonoConcurrentHashTable* +mono_conc_hashtable_new_full (mono_mutex_t *mutex, GHashFunc hash_func, GEqualFunc key_equal_func, GDestroyNotify key_destroy_func, GDestroyNotify value_destroy_func) +{ + MonoConcurrentHashTable *res = mono_conc_hashtable_new (mutex, hash_func, key_equal_func); + res->key_destroy_func = key_destroy_func; + res->value_destroy_func = value_destroy_func; + return res; +} + + +void +mono_conc_hashtable_destroy (MonoConcurrentHashTable *hash_table) +{ + if (hash_table->key_destroy_func || hash_table->value_destroy_func) { + int i; + conc_table *table = (conc_table*)hash_table->table; + key_value_pair *kvs = table->kvs; + + for (i = 0; i < table->table_size; ++i) { + if (kvs [i].key && kvs [i].key != TOMBSTONE) { + if (hash_table->key_destroy_func) + (hash_table->key_destroy_func) (kvs [i].key); + if (hash_table->value_destroy_func) + (hash_table->value_destroy_func) (kvs [i].value); + } + } + } + conc_table_free ((gpointer)hash_table->table); + g_free (hash_table); +} + +gpointer +mono_conc_hashtable_lookup (MonoConcurrentHashTable *hash_table, gpointer key) +{ + MonoThreadHazardPointers* hp; + conc_table *table; + int hash, i, table_mask; + key_value_pair *kvs; + hash = mix_hash (hash_table->hash_func (key)); + hp = mono_hazard_pointer_get (); + +retry: + table = get_hazardous_pointer ((gpointer volatile*)&hash_table->table, hp, 0); + table_mask = table->table_size - 1; + kvs = table->kvs; + i = hash & table_mask; + + if (G_LIKELY (!hash_table->equal_func)) { + while (kvs [i].key) { + if (key == kvs [i].key) { + gpointer value; + /* The read of keys must happen before the read of values */ + mono_memory_barrier (); + value = kvs [i].value; + /* FIXME check for NULL if we add suppport for removal */ + mono_hazard_pointer_clear (hp, 0); + return value; + } + i = (i + 1) & table_mask; + } + } else { + GEqualFunc equal = hash_table->equal_func; + + while (kvs [i].key) { + if (kvs [i].key != TOMBSTONE && equal (key, kvs [i].key)) { + gpointer value; + /* The read of keys must happen before the read of values */ + mono_memory_barrier (); + value = kvs [i].value; + + /* We just read a value been deleted, try again. */ + if (G_UNLIKELY (!value)) + goto retry; + + mono_hazard_pointer_clear (hp, 0); + return value; + } + i = (i + 1) & table_mask; + } + } + + /* The table might have expanded and the value is now on the newer table */ + mono_memory_barrier (); + if (hash_table->table != table) + goto retry; + + mono_hazard_pointer_clear (hp, 0); + return NULL; +} + +/** + * mono_conc_hashtable_remove + * + * @Returns the old value if key is already present or null + */ +gpointer +mono_conc_hashtable_remove (MonoConcurrentHashTable *hash_table, gpointer key) +{ + conc_table *table; + key_value_pair *kvs; + int hash, i, table_mask; + + g_assert (key != NULL && key != TOMBSTONE); + + hash = mix_hash (hash_table->hash_func (key)); + mono_mutex_lock (hash_table->mutex); + + table = (conc_table*)hash_table->table; + kvs = table->kvs; + table_mask = table->table_size - 1; + i = hash & table_mask; + + if (!hash_table->equal_func) { + for (;;) { + if (!kvs [i].key) { + mono_mutex_unlock (hash_table->mutex); + return NULL; /*key not found*/ + } + + if (key == kvs [i].key) { + gpointer value = kvs [i].value; + kvs [i].value = NULL; + mono_memory_barrier (); + kvs [i].key = TOMBSTONE; + + mono_mutex_unlock (hash_table->mutex); + if (hash_table->key_destroy_func != NULL) + (*hash_table->key_destroy_func) (key); + if (hash_table->value_destroy_func != NULL) + (*hash_table->value_destroy_func) (value); + + return value; + } + i = (i + 1) & table_mask; + } + } else { + GEqualFunc equal = hash_table->equal_func; + for (;;) { + if (!kvs [i].key) { + mono_mutex_unlock (hash_table->mutex); + return NULL; /*key not found*/ + } + + if (kvs [i].key != TOMBSTONE && equal (key, kvs [i].key)) { + gpointer old_key = kvs [i].key; + gpointer value = kvs [i].value; + kvs [i].value = NULL; + mono_memory_barrier (); + kvs [i].key = TOMBSTONE; + + mono_mutex_unlock (hash_table->mutex); + if (hash_table->key_destroy_func != NULL) + (*hash_table->key_destroy_func) (old_key); + if (hash_table->value_destroy_func != NULL) + (*hash_table->value_destroy_func) (value); + return value; + } + + i = (i + 1) & table_mask; + } + } +} +/** + * mono_conc_hashtable_insert + * + * @Returns the old value if key is already present or null + */ +gpointer +mono_conc_hashtable_insert (MonoConcurrentHashTable *hash_table, gpointer key, gpointer value) +{ + conc_table *table; + key_value_pair *kvs; + int hash, i, table_mask; + + g_assert (key != NULL && key != TOMBSTONE); + g_assert (value != NULL); + + hash = mix_hash (hash_table->hash_func (key)); + mono_mutex_lock (hash_table->mutex); + + if (hash_table->element_count >= hash_table->overflow_count) + expand_table (hash_table); + + table = (conc_table*)hash_table->table; + kvs = table->kvs; + table_mask = table->table_size - 1; + i = hash & table_mask; + + if (!hash_table->equal_func) { + for (;;) { + if (!kvs [i].key || kvs [i].key == TOMBSTONE) { + kvs [i].value = value; + /* The write to values must happen after the write to keys */ + mono_memory_barrier (); + kvs [i].key = key; + ++hash_table->element_count; + mono_mutex_unlock (hash_table->mutex); + return NULL; + } + if (key == kvs [i].key) { + gpointer value = kvs [i].value; + mono_mutex_unlock (hash_table->mutex); + return value; + } + i = (i + 1) & table_mask; + } + } else { + GEqualFunc equal = hash_table->equal_func; + for (;;) { + if (!kvs [i].key || kvs [i].key == TOMBSTONE) { + kvs [i].value = value; + /* The write to values must happen after the write to keys */ + mono_memory_barrier (); + kvs [i].key = key; + ++hash_table->element_count; + mono_mutex_unlock (hash_table->mutex); + return NULL; + } + if (equal (key, kvs [i].key)) { + gpointer value = kvs [i].value; + mono_mutex_unlock (hash_table->mutex); + return value; + } + i = (i + 1) & table_mask; + } + } +} + + + + + + + + + + + + + + + + + + diff --git a/mono/utils/mono-conc-hashtable.h b/mono/utils/mono-conc-hashtable.h new file mode 100644 index 0000000000..65792bc54c --- /dev/null +++ b/mono/utils/mono-conc-hashtable.h @@ -0,0 +1,27 @@ +/* + * mono-conc-hashtable.h: A mostly concurrent hashtable + * + * Author: + * Rodrigo Kumpera (kumpera@gmail.com) + * + * (C) 2014 Xamarin + */ + +#ifndef __MONO_CONCURRENT_HASHTABLE_H__ +#define __MONO_CONCURRENT_HASHTABLE_H__ + +#include +#include +#include + +typedef struct _MonoConcurrentHashTable MonoConcurrentHashTable; + +MonoConcurrentHashTable* mono_conc_hashtable_new (mono_mutex_t *mutex, GHashFunc hash_func, GEqualFunc key_equal_func) MONO_INTERNAL; +MonoConcurrentHashTable* mono_conc_hashtable_new_full (mono_mutex_t *mutex, GHashFunc hash_func, GEqualFunc key_equal_func, GDestroyNotify key_destroy_func, GDestroyNotify value_destroy_func) MONO_INTERNAL; +void mono_conc_hashtable_destroy (MonoConcurrentHashTable *hash_table) MONO_INTERNAL; +gpointer mono_conc_hashtable_lookup (MonoConcurrentHashTable *hash_table, gpointer key) MONO_INTERNAL; +gpointer mono_conc_hashtable_insert (MonoConcurrentHashTable *hash_table, gpointer key, gpointer value) MONO_INTERNAL; +gpointer mono_conc_hashtable_remove (MonoConcurrentHashTable *hash_table, gpointer key) MONO_INTERNAL; + +#endif + diff --git a/mono/utils/mono-context.h b/mono/utils/mono-context.h index 258199018b..11254802fc 100755 --- a/mono/utils/mono-context.h +++ b/mono/utils/mono-context.h @@ -180,7 +180,12 @@ typedef struct { #define MONO_CONTEXT_GET_BP(ctx) ((gpointer)((ctx)->rbp)) #define MONO_CONTEXT_GET_SP(ctx) ((gpointer)((ctx)->rsp)) -#if defined(__native_client__) +#if defined (HOST_WIN32) && !defined(__GNUC__) +/* msvc doesn't support inline assembly, so have to use a separate .asm file */ +extern void mono_context_get_current (void *); +#define MONO_CONTEXT_GET_CURRENT(ctx) do { mono_context_get_current((void*)&(ctx)); } while (0) + +#elif defined(__native_client__) #define MONO_CONTEXT_GET_CURRENT(ctx) \ __asm__ __volatile__( \ "movq $0x0, %%nacl:0x00(%%r15, %0, 1)\n" \ diff --git a/mono/utils/mono-counters.c b/mono/utils/mono-counters.c index 2f642bb3ec..8ab20140cd 100644 --- a/mono/utils/mono-counters.c +++ b/mono/utils/mono-counters.c @@ -250,10 +250,10 @@ dump_counter (MonoCounter *counter, FILE *outfile) { if ((counter->type & MONO_COUNTER_UNIT_MASK) == MONO_COUNTER_TIME) fprintf (outfile, ENTRY_FMT "%.2f ms\n", counter->name, (double)(*(gint64*)buffer) / 10000.0); else - fprintf (outfile, ENTRY_FMT "%lld\n", counter->name, *(gint64*)buffer); + fprintf (outfile, ENTRY_FMT "%lld\n", counter->name, *(long long *)buffer); break; case MONO_COUNTER_ULONG: - fprintf (outfile, ENTRY_FMT "%llu\n", counter->name, *(guint64*)buffer); + fprintf (outfile, ENTRY_FMT "%llu\n", counter->name, *(unsigned long long *)buffer); break; case MONO_COUNTER_WORD: fprintf (outfile, ENTRY_FMT "%zd\n", counter->name, *(gssize*)buffer); diff --git a/mono/utils/mono-error.h b/mono/utils/mono-error.h index 5652432adb..1da46d6f24 100644 --- a/mono/utils/mono-error.h +++ b/mono/utils/mono-error.h @@ -33,7 +33,7 @@ enum { }; /*Keep in sync with MonoErrorInternal*/ -typedef struct { +typedef struct _MonoError { unsigned short error_code; unsigned short hidden_0; /*DON'T TOUCH */ diff --git a/mono/utils/mono-hwcap-s390x.c b/mono/utils/mono-hwcap-s390x.c index d2f2bc5a4a..d5c9d254c3 100644 --- a/mono/utils/mono-hwcap-s390x.c +++ b/mono/utils/mono-hwcap-s390x.c @@ -19,48 +19,21 @@ */ #include "mono/utils/mono-hwcap-s390x.h" - #include -gboolean mono_hwcap_s390x_has_ld = FALSE; - -static void -catch_sigill (int sig_no, siginfo_t *info, gpointer act) -{ - mono_hwcap_s390x_has_ld = FALSE; -} +facilityList_t facs; void mono_hwcap_arch_init (void) { - mono_hwcap_s390x_has_ld = TRUE; + int lFacs = sizeof(facs) / 8; - struct sigaction sa, *old_sa; - - /* Determine if we have a long displacement facility - * by executing the STY instruction. If it fails, we - * catch the SIGILL and assume the answer is no. - */ - sa.sa_sigaction = catch_sigill; - sigemptyset (&sa.sa_mask); - sa.sa_flags = SA_SIGINFO; - - sigaction (SIGILL, &sa, old_sa); - - __asm__ __volatile__ ( - "LGHI\t0,1\n\t" - "LA\t1,%0\n\t" - ".byte\t0xe3,0x00,0x10,0x00,0x00,0x50\n\t" - : "=m" (mono_hwcap_s390x_has_ld) - : - : "0", "1" - ); - - sigaction (SIGILL, old_sa, NULL); + __asm__ (" lgfr 0,%1\n" + " .insn s,0xb2b00000,%0\n" + : "=m" (facs) : "r" (lFacs) : "0", "cc"); } void mono_hwcap_print (FILE *f) { - g_fprintf (f, "mono_hwcap_s390x_has_ld = %i\n", mono_hwcap_s390x_has_ld); } diff --git a/mono/utils/mono-hwcap-s390x.h b/mono/utils/mono-hwcap-s390x.h index 24c76a2854..313aca8bcb 100644 --- a/mono/utils/mono-hwcap-s390x.h +++ b/mono/utils/mono-hwcap-s390x.h @@ -3,6 +3,84 @@ #include "mono/utils/mono-hwcap.h" -extern gboolean mono_hwcap_s390x_has_ld; +typedef struct +{ + char n3:1; // N3 instructions present + char zArch:1; // z/Architecture mode installed + char zAct:1; // z/Architecture mode active + char date:1; // DAT enhancement facility + char idte1:1; // IDTE present (PST) + char idte2:1; // IDTE present (REG) + char asnlx:1; // ASN and LX reuse facility + char stfle:1; // STFLE installed + char zDATe:1; // Enhanced DAT in z mode + char srstat:1; // Sense running status facility + char cSSKE:1; // Conditional SSKE facility + char topo:1; // Configuration topology facility + char rv1:1; // Reserved + char xTrans2:1; // Extended translation facility 2 + char msgSec:1; // Message security facility + char longDsp:1; // Long displacement facility + char hiPerfLD:1; // High performance long displacement facility + char hfpMAS:1; // HFP multiply-and-add/subtrace facility + char xImm:1; // Extended immediate facility + char xTrans3:1; // Extended translation facility 3 + char hfpUnX:1; // HFP unnormalized extension facility + char etf2:1; // ETF2-enhancement facility + char stckf:1; // Store-clock-fast facility + char parse:1; // Parsing enhancement facility + char mvcos:1; // MVCOS facility + char todSteer:1; // TOD-clock steering facility + char etf3:1; // ETF3-enhancement facility + char xCPUtm:1; // Extract CPU time facility + char csst:1; // Compare-swap-and-store facility + char csst2:1; // Compare-swap-and-store facility 2 + char giX:1; // General instructions extension facility + char exX:1; // Execute extensions facility + char em:1; // Enhanced monitor + char rv2:1; // Reserved + char spp:1; // Set program parameters + char fps:1; // Floating point support enhancement + char dfp:1; // Decimal floating point facility + char hiDFP:1; // High Performance DFP facility + char pfpo:1; // PFPO instruction facility + char doclpkia:1; // DO/Fast BCR/CL/PK/IA + char rv3:1; // Reserved + char cmpsce:1; // CMPSC enhancement + char dfpzc:1; // DFP zoned-conversion + char eh:1; // Execution hint + char lt:1; // Load and trap + char mi:1; // Miscellaneous instruction enhancements + char pa:1; // Processor assist + char cx:1; // Constrained transactional execution + char ltlb:1; // Local TLB clearing + char ia2:1; // Interlocked access 2 + char rv4:1; // Reserved; + char rv5:1; // Reserved; + char rv6:1; // Reserved; + char rv7:1; // Reserved; + char rv8:1; // Reserved; + char rv9:1; // Reserved; + char rva:1; // Reserved; + char rvb:1; // Reserved; + char rvc:1; // Reserved; + char rvd:1; // Reserved; + char rve:1; // Reserved; + char rvf:1; // Reserved; + char rvg:1; // Reserved; + char rb:1; // RRB multiple + char cmc:1; // CPU measurement counter + char cms:1; // CPU measurement sampling + char rvh:4; // Reserved + char tx:1; // Transactional execution + char rvi:1; // Reserved + char axsi:1; // Access exception/store indication + char m3:1; // Message security extension 3 + char m4:1; // Message security extension 4 + char ed2:1; // Enhanced DAT 2 + int64_t end[0]; // End on a double word +} __attribute__((aligned(8))) facilityList_t; + +extern facilityList_t facs; #endif /* __MONO_UTILS_HWCAP_S390X_H__ */ diff --git a/mono/utils/mono-linked-list-set.c b/mono/utils/mono-linked-list-set.c index 3536d25d84..b7391962ea 100644 --- a/mono/utils/mono-linked-list-set.c +++ b/mono/utils/mono-linked-list-set.c @@ -188,7 +188,7 @@ mono_lls_remove (MonoLinkedListSet *list, MonoThreadHazardPointers *hp, MonoLink continue; /* The second CAS must happen before the first. */ mono_memory_write_barrier (); - if (InterlockedCompareExchangePointer ((volatile gpointer*)prev, next, cur) == cur) { + if (InterlockedCompareExchangePointer ((volatile gpointer*)prev, mono_lls_pointer_unmask (next), cur) == cur) { /* The CAS must happen before the hazard pointer clear. */ mono_memory_write_barrier (); mono_hazard_pointer_clear (hp, 1); diff --git a/mono/utils/mono-mmap.c b/mono/utils/mono-mmap.c index fe8a98079f..60ef156b15 100644 --- a/mono/utils/mono-mmap.c +++ b/mono/utils/mono-mmap.c @@ -65,8 +65,8 @@ malloc_shared_area (int pid) static char* aligned_address (char *mem, size_t size, size_t alignment) { - char *aligned = (char*)((gulong)(mem + (alignment - 1)) & ~(alignment - 1)); - g_assert (aligned >= mem && aligned + size <= mem + size + alignment && !((gulong)aligned & (alignment - 1))); + char *aligned = (char*)((size_t)(mem + (alignment - 1)) & ~(alignment - 1)); + g_assert (aligned >= mem && aligned + size <= mem + size + alignment && !((size_t)aligned & (alignment - 1))); return aligned; } @@ -308,13 +308,13 @@ mono_valloc (void *addr, size_t length, int flags) mflags |= MAP_PRIVATE; ptr = mmap (addr, length, prot, mflags, -1, 0); - if (ptr == (void*)-1) { + if (ptr == MAP_FAILED) { int fd = open ("/dev/zero", O_RDONLY); if (fd != -1) { ptr = mmap (addr, length, prot, mflags, fd, 0); close (fd); } - if (ptr == (void*)-1) + if (ptr == MAP_FAILED) return NULL; } return ptr; @@ -368,7 +368,7 @@ mono_file_map (size_t length, int flags, int fd, guint64 offset, void **ret_hand mflags |= MAP_32BIT; ptr = mmap (0, length, prot, mflags, fd, offset); - if (ptr == (void*)-1) + if (ptr == MAP_FAILED) return NULL; *ret_handle = (void*)length; return ptr; @@ -483,6 +483,8 @@ mono_mprotect (void *addr, size_t length, int flags) } #endif // HAVE_MMAP +#if defined(HAVE_SHM_OPEN) && !defined (DISABLE_SHARED_PERFCOUNTERS) + static int use_shared_area; static gboolean @@ -497,8 +499,6 @@ shared_area_disabled (void) return use_shared_area == -1; } -#if defined(HAVE_SHM_OPEN) && !defined (DISABLE_SHARED_PERFCOUNTERS) - static int mono_shared_area_instances_slow (void **array, int count, gboolean cleanup) { diff --git a/mono/utils/mono-poll.h b/mono/utils/mono-poll.h index 835c36795a..bedef4c886 100644 --- a/mono/utils/mono-poll.h +++ b/mono/utils/mono-poll.h @@ -13,7 +13,11 @@ #endif #ifdef HAVE_POLL +#ifdef HAVE_POLL_H +#include +#elif defined(HAVE_SYS_POLL_H) #include +#endif #define MONO_POLLIN POLLIN #define MONO_POLLPRI POLLPRI diff --git a/mono/utils/mono-proclib.c b/mono/utils/mono-proclib.c index 7971cb09cf..3f032f9d22 100644 --- a/mono/utils/mono-proclib.c +++ b/mono/utils/mono-proclib.c @@ -408,11 +408,17 @@ get_pid_status_item (int pid, const char *item, MonoProcessError *error, int mul struct task_basic_info t_info; mach_msg_type_number_t th_count = TASK_BASIC_INFO_COUNT; - if (task_for_pid (mach_task_self (), pid, &task) != KERN_SUCCESS) - RET_ERROR (MONO_PROCESS_ERROR_NOT_FOUND); + if (pid == getpid ()) { + /* task_for_pid () doesn't work on ios, even for the current process */ + task = mach_task_self (); + } else { + if (task_for_pid (mach_task_self (), pid, &task) != KERN_SUCCESS) + RET_ERROR (MONO_PROCESS_ERROR_NOT_FOUND); + } if (task_info (task, TASK_BASIC_INFO, (task_info_t)&t_info, &th_count) != KERN_SUCCESS) { - mach_port_deallocate (mach_task_self (), task); + if (pid != getpid ()) + mach_port_deallocate (mach_task_self (), task); RET_ERROR (MONO_PROCESS_ERROR_OTHER); } @@ -425,7 +431,8 @@ get_pid_status_item (int pid, const char *item, MonoProcessError *error, int mul else ret = 0; - mach_port_deallocate (mach_task_self (), task); + if (pid != getpid ()) + mach_port_deallocate (mach_task_self (), task); return ret; #else diff --git a/mono/utils/mono-threads-windows.c b/mono/utils/mono-threads-windows.c index 605ebf58a7..2ab2e6596e 100644 --- a/mono/utils/mono-threads-windows.c +++ b/mono/utils/mono-threads-windows.c @@ -40,19 +40,19 @@ mono_threads_core_needs_abort_syscall (void) void mono_threads_core_self_suspend (MonoThreadInfo *info) { - g_assert (0); + g_assert_not_reached (); } gboolean mono_threads_core_suspend (MonoThreadInfo *info) { - g_assert (0); + g_assert_not_reached (); } gboolean mono_threads_core_resume (MonoThreadInfo *info) { - g_assert (0); + g_assert_not_reached (); } void @@ -190,6 +190,7 @@ __readfsdword (unsigned long offset) void mono_threads_core_get_stack_bounds (guint8 **staddr, size_t *stsize) { + MEMORY_BASIC_INFORMATION meminfo; #ifdef TARGET_AMD64 /* win7 apis */ NT_TIB* tib = (NT_TIB*)NtCurrentTeb(); @@ -201,9 +202,17 @@ mono_threads_core_get_stack_bounds (guint8 **staddr, size_t *stsize) guint8 *stackTop = (guint8*)*(int*)((char*)tib + 4); guint8 *stackBottom = (guint8*)*(int*)((char*)tib + 8); #endif + /* + Windows stacks are expanded on demand, one page at time. The TIB reports + only the currently allocated amount. + VirtualQuery will return the actual limit for the bottom, which is what we want. + */ + if (VirtualQuery (&meminfo, &meminfo, sizeof (meminfo)) == sizeof (meminfo)) + stackBottom = MIN (stackBottom, (guint8*)meminfo.AllocationBase); *staddr = stackBottom; *stsize = stackTop - stackBottom; + } gboolean diff --git a/mono/utils/mono-threads.c b/mono/utils/mono-threads.c index dad8850711..0258e2aa28 100644 --- a/mono/utils/mono-threads.c +++ b/mono/utils/mono-threads.c @@ -38,7 +38,7 @@ when it is in fact not. */ static MonoSemType global_suspend_semaphore; -static int thread_info_size; +static size_t thread_info_size; static MonoThreadInfoCallbacks threads_callbacks; static MonoThreadInfoRuntimeCallbacks runtime_callbacks; static MonoNativeTlsKey thread_info_key, small_id_key; @@ -741,7 +741,7 @@ mono_threads_create_thread (LPTHREAD_START_ROUTINE start, gpointer arg, guint32 void mono_thread_info_get_stack_bounds (guint8 **staddr, size_t *stsize) { - return mono_threads_core_get_stack_bounds (staddr, stsize); + mono_threads_core_get_stack_bounds (staddr, stsize); } gboolean diff --git a/mono/utils/mono-threads.h b/mono/utils/mono-threads.h index 457a268ad1..dbd25a8f77 100644 --- a/mono/utils/mono-threads.h +++ b/mono/utils/mono-threads.h @@ -28,7 +28,7 @@ typedef HANDLE MonoNativeThreadHandle; /* unused */ typedef DWORD mono_native_thread_return_t; #define MONO_NATIVE_THREAD_ID_TO_UINT(tid) (tid) -#define MONO_UINT_TO_NATIVE_THREAD_ID(tid) (tid) +#define MONO_UINT_TO_NATIVE_THREAD_ID(tid) ((MonoNativeThreadId)(tid)) #else diff --git a/msvc/Makefile.in b/msvc/Makefile.in index 5e25460252..fe798970f3 100644 --- a/msvc/Makefile.in +++ b/msvc/Makefile.in @@ -161,6 +161,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -169,6 +170,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -235,6 +237,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -284,6 +287,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/msvc/libmono.vcxproj b/msvc/libmono.vcxproj index 73d376b45b..26b243f2b6 100644 --- a/msvc/libmono.vcxproj +++ b/msvc/libmono.vcxproj @@ -414,9 +414,9 @@ false - libgc.lib;libmonoruntime.lib;libmonoutils.lib;eglib.lib;%(AdditionalDependencies) + libgc.lib;libmonoruntimesgen.lib;libmonoutils.lib;eglib.lib;%(AdditionalDependencies) $(Platform)\lib;%(AdditionalLibraryDirectories) - monosgen.def + monosgen64.def true $(Platform)\lib\$(TargetName).lib MachineX64 @@ -565,9 +565,9 @@ false - libgc.lib;libmonoruntime.lib;libmonoutils.lib;eglib.lib;%(AdditionalDependencies) + libgc.lib;libmonoruntimesgen.lib;libmonoutils.lib;eglib.lib;%(AdditionalDependencies) $(Platform)\lib;%(AdditionalLibraryDirectories) - monosgen.def + monosgen64.def $(Platform)\lib\$(TargetName).lib MachineX64 true diff --git a/msvc/libmonoruntime.vcxproj b/msvc/libmonoruntime.vcxproj index 2e012508f1..3635bdae2d 100644 --- a/msvc/libmonoruntime.vcxproj +++ b/msvc/libmonoruntime.vcxproj @@ -1,5 +1,5 @@  - + Debug_SGen @@ -103,7 +103,9 @@ + + @@ -112,6 +114,7 @@ + @@ -122,6 +125,7 @@ + @@ -379,7 +383,8 @@ Level3 Disabled WIN32;$(SGEN_DEFINES);_DEBUG;_LIB;%(PreprocessorDefinitions) - $(top_srcdir);$(top_srcdir)/mono;$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE) + false + $(top_srcdir);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);$(top_srcdir)\mono Windows diff --git a/msvc/libmonoutils.vcxproj b/msvc/libmonoutils.vcxproj index b52f26a552..b760ab7697 100644 --- a/msvc/libmonoutils.vcxproj +++ b/msvc/libmonoutils.vcxproj @@ -128,6 +128,11 @@ + + + Document + + {8FC2B0C8-51AD-49DF-851F-5D01A77A75E4} Win32Proj @@ -160,6 +165,7 @@ + @@ -214,7 +220,7 @@ Level3 Disabled WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) - $(top_srcdir);$(top_srcdir)/mono;$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE) + $(top_srcdir);$(top_srcdir)/eglib/src;$(top_srcdir)/mono;$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE) Windows @@ -223,6 +229,9 @@ winsetup.bat + + X64 + @@ -268,5 +277,6 @@ + \ No newline at end of file diff --git a/msvc/mono.def b/msvc/mono.def index 6a1f0d49d5..61d1779c33 100644 --- a/msvc/mono.def +++ b/msvc/mono.def @@ -243,6 +243,7 @@ mono_domain_has_type_resolve mono_domain_is_unloading mono_domain_owns_vtable_slot mono_domain_set +mono_domain_set_config mono_domain_set_internal mono_domain_try_type_resolve mono_domain_try_unload diff --git a/msvc/mono.props b/msvc/mono.props index b8f3c4fd16..7fe3206e24 100644 --- a/msvc/mono.props +++ b/msvc/mono.props @@ -1,9 +1,9 @@  - $(MSBuildProjectDirectory)/.. - $(top_srcdir)/libgc/include - $(top_srcdir)/eglib/src + $(MSBuildProjectDirectory)\.. + $(top_srcdir)\libgc\include + $(top_srcdir)\eglib\src HAVE_BOEHM_GC;HAVE_GC_H;USE_INCLUDED_LIBGC;HAVE_GC_GCJ_MALLOC;HAVE_GC_ENABLE HAVE_SGEN_GC;HAVE_MOVING_COLLECTOR;HAVE_WRITE_BARRIERS diff --git a/po/Makefile.in b/po/Makefile.in index de880720bd..fb439f9ea7 100644 --- a/po/Makefile.in +++ b/po/Makefile.in @@ -221,6 +221,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -229,6 +230,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -295,6 +297,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -344,6 +347,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/po/mcs/de.gmo b/po/mcs/de.gmo index e146fd3b675667b47bcd1f3156749b1cb4ec664d..7e8562c4233d01cd1a71702aaea428c67ae367aa 100644 GIT binary patch delta 709 zcmXZZODIH97{Kvw%$PC5cn*0D(=bdPxy($)`^_XWYAle2Vr8K`c9@lo1&iCr0!v9L zHFio_v!hs%vXHVK}w;v(kbIyR$@O?ZuA{J~Xhwup4$DfZ$!)}WSZyf=*=k+|p#)Q0C+f^X(1oq=C&SRm?*l+^}h_A2`ZE42$>rf>cK|lM;Jc9-%wy_W|QNw#2 z#5B9HK89_?aa5UJU;sZbhJJ_0F4bGda$;A8kw6eV#C^DkbEpn>hb`pHH zIDrw;@5VzM!Y5RjS7#Ze9Y$5LEo{UibX}e!1Qcm-HYlwv48h5zQV){gFc+h zq2mGi@DnT0ooi&&gQ_C4s48%bMfi;B0N*%^^?4%gxPwu=LG_-S|EDsa!(}{ii9@K^ y-zlr~M9P9mbd$Nuss5L0R8oA&QS+uXX?J)`j+S~Y=+VNhAuSn558L%K*VixKSxR;Q delta 833 zcmXxiPe>F|9KiA4?wYkrrs-0pP2 zK!~U$qzD8FBwR5<41M4D)yp&te>JVmIEwF?^1bxP=ZTw+9Iy;uP^F_TZi!!TLEg z8@+@{@{3Prkbza~#1A-x-|#ecMuYp;aFlonhj9bVj>9pLBRGmPSjHz*aUHveukH*s zavLq;dsxQTI7NO*P}k#V<5OJ0D|nRcU&JLG$FDezz0E-d6q*u0LQ}a-OydvaCtWSU zyg}?BK9AO!-+M2U(IhLzDZL5M~&AQHfkaXRLJg zL}sM+J(i8;&eW$b%rf`?RL^xPzPjNktMvYjQmEX*oMtJ@BrIva!kFi{wM0A;`Umxi Bch3L- diff --git a/po/mcs/de.po b/po/mcs/de.po index 1c011e2c12..a587f1309d 100644 --- a/po/mcs/de.po +++ b/po/mcs/de.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: http://www.mono-project.com/Bugs\n" -"POT-Creation-Date: 2014-08-12 18:27+0100\n" +"POT-Creation-Date: 2014-09-04 08:50+0100\n" "PO-Revision-Date: 2008-09-26 15:14+0100\n" "Last-Translator: Daniel Nauck \n" "Language-Team: http://www.mono-project.de\n" @@ -30,7 +30,7 @@ msgid "" "mismatch" msgstr "" -#: mcs/mcs/anonymous.cs:1054 mcs/mcs/ecore.cs:5492 +#: mcs/mcs/anonymous.cs:1054 mcs/mcs/ecore.cs:5515 #, csharp-format msgid "Delegate `{0}' does not take `{1}' arguments" msgstr "" @@ -71,23 +71,23 @@ msgid "" "context" msgstr "" -#: mcs/mcs/anonymous.cs:1363 +#: mcs/mcs/anonymous.cs:1378 #, csharp-format msgid "" "Local variable or parameter `{0}' cannot have their address taken and be " "used inside an anonymous method, lambda expression or query expression" msgstr "" -#: mcs/mcs/anonymous.cs:1383 +#: mcs/mcs/anonymous.cs:1398 #, fuzzy, csharp-format msgid "Cannot convert async {0} to delegate type `{1}'" msgstr "Kann Typ `{0}'<...> nicht finden" -#: mcs/mcs/anonymous.cs:1693 +#: mcs/mcs/anonymous.cs:1708 msgid "An expression tree cannot contain an anonymous method expression" msgstr "" -#: mcs/mcs/anonymous.cs:1995 +#: mcs/mcs/anonymous.cs:2023 #, csharp-format msgid "" "`{0}': An anonymous type cannot have multiple properties with the same name" @@ -102,20 +102,20 @@ msgstr "" msgid "An expression tree cannot contain named argument" msgstr "" -#: mcs/mcs/argument.cs:363 +#: mcs/mcs/argument.cs:373 #, csharp-format msgid "" "The method group `{0}' cannot be used as an argument of dynamic operation. " "Consider using parentheses to invoke the method" msgstr "" -#: mcs/mcs/argument.cs:367 +#: mcs/mcs/argument.cs:377 msgid "" "An anonymous method or lambda expression cannot be used as an argument of " "dynamic operation. Consider using a cast" msgstr "" -#: mcs/mcs/argument.cs:370 +#: mcs/mcs/argument.cs:380 #, csharp-format msgid "" "An expression of type `{0}' cannot be used as an argument of dynamic " @@ -126,59 +126,76 @@ msgstr "" msgid "An expression tree cannot contain an assignment operator" msgstr "" -#: mcs/mcs/assign.cs:779 +#: mcs/mcs/assign.cs:780 #, csharp-format msgid "Cannot assign to `{0}' because it is a `{1}'" msgstr "" -#: mcs/mcs/assembly.cs:286 +#: mcs/mcs/assembly.cs:210 +msgid "" +"Executables cannot be satellite assemblies. Remove the attribute or keep it " +"empty" +msgstr "" + +#: mcs/mcs/assembly.cs:234 +#, csharp-format +msgid "" +"The specified version string `{0}' does not conform to the required format - " +"major[.minor[.build[.revision]]]" +msgstr "" + +#: mcs/mcs/assembly.cs:287 msgid "Invalid type specified as an argument for TypeForwardedTo attribute" msgstr "" -#: mcs/mcs/assembly.cs:294 +#: mcs/mcs/assembly.cs:295 #, csharp-format msgid "A duplicate type forward of type `{0}'" msgstr "" -#: mcs/mcs/assembly.cs:303 +#: mcs/mcs/assembly.cs:304 #, fuzzy, csharp-format msgid "Cannot forward type `{0}' because it is defined in this assembly" msgstr "" "NULL kann nicht in `{0}' konvertiert werden, da dies ein Werttyp ist, der " "nicht auf NULL festgelegt werden kann" -#: mcs/mcs/assembly.cs:309 +#: mcs/mcs/assembly.cs:310 #, fuzzy, csharp-format msgid "Cannot forward type `{0}' because it is a nested type" msgstr "" "NULL kann nicht in `{0}' konvertiert werden, da dies ein Werttyp ist, der " "nicht auf NULL festgelegt werden kann" -#: mcs/mcs/assembly.cs:338 +#: mcs/mcs/assembly.cs:327 +msgid "Friend assembly reference cannot have `null' value" +msgstr "" + +#: mcs/mcs/assembly.cs:344 #, csharp-format msgid "" "Friend assembly reference `{0}' is invalid. InternalsVisibleTo declarations " "cannot have a version, culture or processor architecture specified" msgstr "" -#: mcs/mcs/assembly.cs:346 +#: mcs/mcs/assembly.cs:352 #, csharp-format msgid "" "Friend assembly reference `{0}' is invalid. Strong named assemblies must " "specify a public key in their InternalsVisibleTo declarations" msgstr "" -#: mcs/mcs/assembly.cs:397 +#: mcs/mcs/assembly.cs:403 #, csharp-format msgid "Referenced assembly `{0}' does not have a strong name" msgstr "" -#: mcs/mcs/assembly.cs:403 +#: mcs/mcs/assembly.cs:409 #, csharp-format msgid "Referenced assembly `{0}' has different culture setting of `{1}'" msgstr "" -#: mcs/mcs/assembly.cs:418 +#: mcs/mcs/assembly.cs:424 #, csharp-format msgid "" "Friend access was granted to `{0}', but the output assembly is named `{1}'. " @@ -186,156 +203,145 @@ msgid "" "it" msgstr "" -#: mcs/mcs/assembly.cs:432 +#: mcs/mcs/assembly.cs:438 msgid "" "Could not sign the assembly. ECMA key can only be used to delay-sign " "assemblies" msgstr "" -#: mcs/mcs/assembly.cs:686 +#: mcs/mcs/assembly.cs:692 msgid "" "Added modules must be marked with the CLSCompliant attribute to match the " "assembly" msgstr "" -#: mcs/mcs/assembly.cs:721 mcs/mcs/assembly.cs:736 +#: mcs/mcs/assembly.cs:727 mcs/mcs/assembly.cs:742 #, csharp-format msgid "" "Option `{0}' overrides attribute `{1}' given in a source file or added module" msgstr "" -#: mcs/mcs/assembly.cs:771 +#: mcs/mcs/assembly.cs:777 msgid "Delay signing was requested but no key file was given" msgstr "" -#: mcs/mcs/assembly.cs:792 +#: mcs/mcs/assembly.cs:798 msgid "Cannot link resource file when building a module" msgstr "" -#: mcs/mcs/assembly.cs:797 +#: mcs/mcs/assembly.cs:803 #, fuzzy, csharp-format msgid "Error reading resource file `{0}'" msgstr "Fehler beim erstellen der XML-Dokumentationsdatei `{0}' (`{1}')" -#: mcs/mcs/assembly.cs:867 +#: mcs/mcs/assembly.cs:873 msgid "Could not write to file `" msgstr "" -#: mcs/mcs/assembly.cs:911 +#: mcs/mcs/assembly.cs:917 msgid "Cannot specify -main if building a module or library" msgstr "" -#: mcs/mcs/assembly.cs:937 +#: mcs/mcs/assembly.cs:943 #, csharp-format msgid "Could not find `{0}' specified for Main method" msgstr "" -#: mcs/mcs/assembly.cs:943 +#: mcs/mcs/assembly.cs:949 #, fuzzy, csharp-format msgid "`{0}' specified for Main method must be a valid class or struct" msgstr "`{0}': Erweiterungsmethoden müssen statisch sein" -#: mcs/mcs/assembly.cs:947 +#: mcs/mcs/assembly.cs:953 #, csharp-format msgid "`{0}' does not have a suitable static Main method" msgstr "" -#: mcs/mcs/assembly.cs:950 +#: mcs/mcs/assembly.cs:956 #, csharp-format msgid "" "Program `{0}' does not contain a static `Main' method suitable for an entry " "point" msgstr "" -#: mcs/mcs/assembly.cs:969 +#: mcs/mcs/assembly.cs:975 msgid "Error during assembly signing. " msgstr "" -#: mcs/mcs/assembly.cs:1154 +#: mcs/mcs/assembly.cs:1160 #, csharp-format msgid "Metadata file `{0}' could not be found" msgstr "" -#: mcs/mcs/assembly.cs:1159 +#: mcs/mcs/assembly.cs:1165 #, csharp-format msgid "Metadata file `{0}' does not contain valid metadata" msgstr "" -#: mcs/mcs/assembly.cs:1165 +#: mcs/mcs/assembly.cs:1171 #, csharp-format msgid "" "Referenced assembly file `{0}' is a module. Consider using `-addmodule' " "option to add the module" msgstr "" -#: mcs/mcs/assembly.cs:1172 +#: mcs/mcs/assembly.cs:1178 #, csharp-format msgid "" "Added module file `{0}' is an assembly. Consider using `-r' option to " "reference the file" msgstr "" -#: mcs/mcs/async.cs:78 -msgid "The `await' operator cannot be used in the body of a finally clause" -msgstr "" - -#: mcs/mcs/async.cs:83 +#: mcs/mcs/async.cs:79 #, fuzzy msgid "The `await' operator cannot be used in the body of a lock statement" msgstr "" "Die `new()'-Einschränkung kann nicht mit der `struct'-Einschränkung genutzt " "werden" -#: mcs/mcs/async.cs:88 +#: mcs/mcs/async.cs:84 #, fuzzy msgid "The `await' operator cannot be used in an unsafe context" msgstr "" "Die `new()'-Einschränkung kann nicht mit der `struct'-Einschränkung genutzt " "werden" -#: mcs/mcs/async.cs:164 +#: mcs/mcs/async.cs:160 #, csharp-format msgid "" "Cannot await void method `{0}'. Consider changing method return type to " "`Task'" msgstr "" -#: mcs/mcs/async.cs:167 +#: mcs/mcs/async.cs:163 #, csharp-format msgid "Cannot await `{0}' expression" msgstr "" -#: mcs/mcs/async.cs:315 +#: mcs/mcs/async.cs:311 #, csharp-format msgid "" "The awaiter type `{0}' must have suitable IsCompleted and GetResult members" msgstr "" -#: mcs/mcs/async.cs:323 +#: mcs/mcs/async.cs:319 msgid "" "The `await' operator may only be used in a query expression within the first " "collection expression of the initial `from' clause or within the collection " "expression of a `join' clause" msgstr "" -#: mcs/mcs/async.cs:328 -#, fuzzy -msgid "The `await' operator cannot be used in a catch clause" -msgstr "" -"Die `new()'-Einschränkung kann nicht mit der `struct'-Einschränkung genutzt " -"werden" - -#: mcs/mcs/async.cs:360 +#: mcs/mcs/async.cs:352 #, csharp-format msgid "The `await' operand type `{0}' must have suitable GetAwaiter method" msgstr "" -#: mcs/mcs/async.cs:376 +#: mcs/mcs/async.cs:368 #, fuzzy, csharp-format msgid "The awaiter type `{0}' must implement interface `{1}'" msgstr "`{0}' implementiert den Schnittstellenmember `{1}' nicht" -#: mcs/mcs/async.cs:658 +#: mcs/mcs/async.cs:667 msgid "" "Cannot find compiler required types for asynchronous functions support. Are " "you targeting the wrong framework version?" @@ -374,56 +380,86 @@ msgstr "" msgid "Do not use `{0}' directly. Use `dynamic' keyword instead" msgstr "" -#: mcs/mcs/attribute.cs:267 +#: mcs/mcs/attribute.cs:263 #, csharp-format msgid "Error during emitting `{0}' attribute. The reason is `{1}'" msgstr "" -#: mcs/mcs/attribute.cs:327 +#: mcs/mcs/attribute.cs:269 +#, csharp-format +msgid "Invalid value for argument to `{0}' attribute" +msgstr "" + +#: mcs/mcs/attribute.cs:275 +#, csharp-format +msgid "" +"Security attribute `{0}' is not valid on this declaration type. Security " +"attributes are only valid on assembly, type and method declarations" +msgstr "" + +#: mcs/mcs/attribute.cs:330 #, csharp-format msgid "" "`{0}' is ambiguous between `{1}' and `{2}'. Use either `@{0}' or `{0}" "Attribute'" msgstr "" -#: mcs/mcs/attribute.cs:353 mcs/mcs/attribute.cs:364 +#: mcs/mcs/attribute.cs:356 mcs/mcs/attribute.cs:367 #, csharp-format msgid "`{0}': is not an attribute class" msgstr "" -#: mcs/mcs/attribute.cs:473 +#: mcs/mcs/attribute.cs:476 #, csharp-format msgid "Cannot apply attribute class `{0}' because it is abstract" msgstr "" -#: mcs/mcs/attribute.cs:544 +#: mcs/mcs/attribute.cs:547 #, csharp-format msgid "Duplicate named attribute `{0}' argument" msgstr "" -#: mcs/mcs/attribute.cs:1003 +#: mcs/mcs/attribute.cs:860 +#, csharp-format +msgid "Security attribute `{0}' has an invalid SecurityAction value `{1}'" +msgstr "" + +#: mcs/mcs/attribute.cs:867 +#, csharp-format +msgid "" +"SecurityAction value `{0}' is invalid for security attributes applied to an " +"assembly" +msgstr "" + +#: mcs/mcs/attribute.cs:871 +#, csharp-format +msgid "" +"SecurityAction value `{0}' is invalid for security attributes applied to a " +"type or a method" +msgstr "" + +#: mcs/mcs/attribute.cs:1018 #, csharp-format msgid "" "The attribute `{0}' is not valid on this declaration type. It is valid on " "`{1}' declarations only" msgstr "" -#: mcs/mcs/attribute.cs:1025 +#: mcs/mcs/attribute.cs:1040 #, csharp-format msgid "The argument to the `{0}' attribute must be a valid identifier" msgstr "" -#: mcs/mcs/attribute.cs:1039 -#, csharp-format -msgid "Invalid value for argument to `{0}' attribute" +#: mcs/mcs/attribute.cs:1059 +msgid "Unmanaged type `ByValArray' is only valid for fields" msgstr "" -#: mcs/mcs/attribute.cs:1307 +#: mcs/mcs/attribute.cs:1320 #, csharp-format msgid "The attribute `{0}' cannot be applied multiple times" msgstr "" -#: mcs/mcs/attribute.cs:1613 +#: mcs/mcs/attribute.cs:1626 #, csharp-format msgid "`{0}' is obsolete: `{1}'" msgstr "`{0}' ist veraltet: `{1}'" @@ -434,114 +470,114 @@ msgid "" "`struct', `interface', or `void' keyword" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:1535 mcs/mcs/cs-tokenizer.cs:1598 +#: mcs/mcs/cs-tokenizer.cs:1553 mcs/mcs/cs-tokenizer.cs:1616 msgid "Invalid number" msgstr "Ungültige Zahl" -#: mcs/mcs/cs-tokenizer.cs:1813 +#: mcs/mcs/cs-tokenizer.cs:1831 #, csharp-format msgid "Unrecognized escape sequence `\\{0}'" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:1832 +#: mcs/mcs/cs-tokenizer.cs:1850 msgid "Unrecognized escape sequence" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:2097 +#: mcs/mcs/cs-tokenizer.cs:2115 msgid "Filename, single-line comment or end-of-line expected" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:2145 +#: mcs/mcs/cs-tokenizer.cs:2163 #, fuzzy msgid "Missing identifier to pre-processor directive" msgstr "Ungültige Präprozessor Direktive" -#: mcs/mcs/cs-tokenizer.cs:2155 mcs/mcs/cs-tokenizer.cs:2159 +#: mcs/mcs/cs-tokenizer.cs:2173 mcs/mcs/cs-tokenizer.cs:2177 #, csharp-format msgid "Identifier expected: {0}" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:2667 +#: mcs/mcs/cs-tokenizer.cs:2685 #, fuzzy msgid "Integral constant is too large" msgstr "Numerische Konstante ist zu lang" -#: mcs/mcs/cs-tokenizer.cs:2672 +#: mcs/mcs/cs-tokenizer.cs:2690 msgid "Invalid preprocessor directive" msgstr "Ungültige Präprozessor Direktive" -#: mcs/mcs/cs-tokenizer.cs:2679 +#: mcs/mcs/cs-tokenizer.cs:2697 #, csharp-format msgid "Unexpected processor directive ({0})" msgstr "Unerwartete Prozessor Direktive ({0})" -#: mcs/mcs/cs-tokenizer.cs:2685 +#: mcs/mcs/cs-tokenizer.cs:2703 msgid "" "Cannot define or undefine preprocessor symbols after first token in file" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:2691 +#: mcs/mcs/cs-tokenizer.cs:2709 msgid "" "Preprocessor directives must appear as the first non-whitespace character on " "a line" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:2696 +#: mcs/mcs/cs-tokenizer.cs:2714 msgid "Single-line comment or end-of-line expected" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:2741 mcs/mcs/cs-tokenizer.cs:3780 +#: mcs/mcs/cs-tokenizer.cs:2759 mcs/mcs/cs-tokenizer.cs:3798 msgid "Expected `#endif' directive" msgstr "`#endif' Direktive erwartet" -#: mcs/mcs/cs-tokenizer.cs:2774 mcs/mcs/cs-tokenizer.cs:2795 -#: mcs/mcs/cs-tokenizer.cs:2826 mcs/mcs/cs-tokenizer.cs:3778 +#: mcs/mcs/cs-tokenizer.cs:2792 mcs/mcs/cs-tokenizer.cs:2813 +#: mcs/mcs/cs-tokenizer.cs:2844 mcs/mcs/cs-tokenizer.cs:3796 msgid "#endregion directive expected" msgstr "`#endregion' Direktive erwartet" -#: mcs/mcs/cs-tokenizer.cs:2875 +#: mcs/mcs/cs-tokenizer.cs:2893 msgid "Wrong preprocessor directive" msgstr "Falsche Präprozessor Direktive" -#: mcs/mcs/cs-tokenizer.cs:2887 +#: mcs/mcs/cs-tokenizer.cs:2905 #, csharp-format msgid "#error: '{0}'" msgstr "#Fehler: '{0}'" -#: mcs/mcs/cs-tokenizer.cs:2905 +#: mcs/mcs/cs-tokenizer.cs:2923 msgid "The line number specified for #line directive is missing or invalid" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:2967 mcs/mcs/cs-tokenizer.cs:3619 +#: mcs/mcs/cs-tokenizer.cs:2985 mcs/mcs/cs-tokenizer.cs:3637 msgid "Newline in constant" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:2994 +#: mcs/mcs/cs-tokenizer.cs:3012 msgid "Unterminated string literal" msgstr "Nicht beendetes Zeichenfolgeliteral" -#: mcs/mcs/cs-tokenizer.cs:3071 +#: mcs/mcs/cs-tokenizer.cs:3089 msgid "Identifier too long (limit is 512 chars)" msgstr "Der Bezeichner ist zu lang. (Maximal 512 Zeichen)" -#: mcs/mcs/cs-tokenizer.cs:3457 +#: mcs/mcs/cs-tokenizer.cs:3475 msgid "End-of-file found, '*/' expected" msgstr "Dateiende gefunden. `*/' erwartet." -#: mcs/mcs/cs-tokenizer.cs:3568 +#: mcs/mcs/cs-tokenizer.cs:3586 msgid "Keyword, identifier, or string expected after verbatim specifier: @" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:3589 +#: mcs/mcs/cs-tokenizer.cs:3607 #, fuzzy, csharp-format msgid "Unexpected character `{0}'" msgstr "`{0}' erwartet" -#: mcs/mcs/cs-tokenizer.cs:3614 +#: mcs/mcs/cs-tokenizer.cs:3632 msgid "Empty character literal" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:3635 +#: mcs/mcs/cs-tokenizer.cs:3653 msgid "Too many characters in character literal" msgstr "" @@ -549,7 +585,7 @@ msgstr "" msgid "The operation overflows at compile time in checked mode" msgstr "" -#: mcs/mcs/cfold.cs:329 mcs/mcs/expression.cs:4178 +#: mcs/mcs/cfold.cs:329 mcs/mcs/expression.cs:4195 #, csharp-format msgid "Operator `{0}' is ambiguous on operands of type `{1}' and `{2}'" msgstr "" @@ -591,438 +627,452 @@ msgid "" "declaration of this type exists" msgstr "" -#: mcs/mcs/class.cs:759 +#: mcs/mcs/class.cs:764 #, csharp-format msgid "" "`{0}': explicit interface declaration can only be declared in a class or " "struct" msgstr "" -#: mcs/mcs/class.cs:814 +#: mcs/mcs/class.cs:819 #, csharp-format msgid "Duplicate type parameter `{0}'" msgstr "" -#: mcs/mcs/class.cs:816 -#, csharp-format -msgid "" -"Primary constructor of type `{0}' has parameter of same name as type " -"parameter `{1}'" -msgstr "" - -#: mcs/mcs/class.cs:820 +#: mcs/mcs/class.cs:822 #, csharp-format msgid "The type `{0}' already contains a definition for `{1}'" msgstr "" -#: mcs/mcs/class.cs:897 +#: mcs/mcs/class.cs:914 msgid "" "Cannot specify the `DefaultMember' attribute on type containing an indexer" msgstr "" -#: mcs/mcs/class.cs:902 +#: mcs/mcs/class.cs:919 msgid "The RequiredAttribute attribute is not permitted on C# types" msgstr "" -#: mcs/mcs/class.cs:1142 -#, csharp-format -msgid "Class `{0}' cannot derive from the dynamic type" -msgstr "" - #: mcs/mcs/class.cs:1159 #, csharp-format +msgid "Class `{0}' cannot derive from the dynamic type" +msgstr "" + +#: mcs/mcs/class.cs:1176 +#, csharp-format msgid "`{0}' is already listed in interface list" msgstr "" -#: mcs/mcs/class.cs:1167 +#: mcs/mcs/class.cs:1184 #, csharp-format msgid "" "Inconsistent accessibility: base interface `{0}' is less accessible than " "interface `{1}'" msgstr "" -#: mcs/mcs/class.cs:1173 +#: mcs/mcs/class.cs:1190 #, csharp-format msgid "Type `{0}' in interface list is not an interface" msgstr "" -#: mcs/mcs/class.cs:1175 +#: mcs/mcs/class.cs:1192 #, csharp-format msgid "`{0}': Classes cannot have multiple base classes (`{1}' and `{2}')" msgstr "" -#: mcs/mcs/class.cs:1178 +#: mcs/mcs/class.cs:1195 #, csharp-format msgid "`{0}': Base class `{1}' must be specified as first" msgstr "" -#: mcs/mcs/class.cs:1239 +#: mcs/mcs/class.cs:1256 #, csharp-format msgid "" "The operator `{0}' requires a matching operator `{1}' to also be defined" msgstr "" -#: mcs/mcs/class.cs:1494 +#: mcs/mcs/class.cs:1511 #, csharp-format msgid "Partial declarations of `{0}' must not specify different base classes" msgstr "" -#: mcs/mcs/class.cs:1529 +#: mcs/mcs/class.cs:1546 msgid "" "Only one part of a partial type can declare primary constructor parameters" msgstr "" -#: mcs/mcs/class.cs:1546 +#: mcs/mcs/class.cs:1563 #, csharp-format msgid "" "Inherited interface `{0}' causes a cycle in the interface hierarchy of `{1}'" msgstr "" -#: mcs/mcs/class.cs:1553 +#: mcs/mcs/class.cs:1570 #, csharp-format msgid "Circular base class dependency involving `{0}' and `{1}'" msgstr "" -#: mcs/mcs/class.cs:1870 +#: mcs/mcs/class.cs:1580 +#, fuzzy +msgid "Implemented interfaces cannot have arguments" +msgstr "`{0}': Instanzfeldinitialisierungen können nicht in Strukturen sein" + +#: mcs/mcs/class.cs:1909 #, fuzzy, csharp-format msgid "`{0}': cannot implement a dynamic interface `{1}'" msgstr "`{0}' implementiert den Schnittstellenmember `{1}' nicht" -#: mcs/mcs/class.cs:1885 +#: mcs/mcs/class.cs:1924 #, csharp-format msgid "" "`{0}' cannot implement both `{1}' and `{2}' because they may unify for some " "type parameter substitutions" msgstr "" -#: mcs/mcs/class.cs:1909 +#: mcs/mcs/class.cs:1948 #, csharp-format msgid "" "A generic type cannot derive from `{0}' because it is an attribute class" msgstr "" -#: mcs/mcs/class.cs:2013 +#: mcs/mcs/class.cs:2052 msgid "" "Two indexers have different names; the IndexerName attribute must be used " "with the same name on every indexer within a type" msgstr "" -#: mcs/mcs/class.cs:2271 +#: mcs/mcs/class.cs:2310 #, csharp-format msgid "A static member `{0}' cannot be marked as override, virtual or abstract" msgstr "" -#: mcs/mcs/class.cs:2278 +#: mcs/mcs/class.cs:2317 #, csharp-format msgid "A member `{0}' marked as override cannot be marked as new or virtual" msgstr "" -#: mcs/mcs/class.cs:2290 +#: mcs/mcs/class.cs:2329 #, csharp-format msgid "`{0}' cannot be both extern and abstract" msgstr "" -#: mcs/mcs/class.cs:2295 +#: mcs/mcs/class.cs:2334 #, csharp-format msgid "`{0}' cannot be both abstract and sealed" msgstr "`{0}' Eine Klasse kann nicht gleichzeitig statisch und versiegelt sein" -#: mcs/mcs/class.cs:2300 +#: mcs/mcs/class.cs:2339 #, csharp-format msgid "The abstract method `{0}' cannot be marked virtual" msgstr "" -#: mcs/mcs/class.cs:2306 +#: mcs/mcs/class.cs:2345 #, csharp-format msgid "`{0}' is abstract but it is declared in the non-abstract class `{1}'" msgstr "" -#: mcs/mcs/class.cs:2314 +#: mcs/mcs/class.cs:2353 #, csharp-format msgid "`{0}': virtual or abstract members cannot be private" msgstr "" -#: mcs/mcs/class.cs:2321 +#: mcs/mcs/class.cs:2360 #, csharp-format msgid "`{0}' cannot be sealed because it is not an override" msgstr "" -#: mcs/mcs/class.cs:2370 +#: mcs/mcs/class.cs:2409 #, csharp-format msgid "`{0}': containing type does not implement interface `{1}'" msgstr "" -#: mcs/mcs/class.cs:2567 +#: mcs/mcs/class.cs:2606 #, csharp-format msgid "Type parameter `{0}' has same name as containing type, or method" msgstr "" -#: mcs/mcs/class.cs:2573 +#: mcs/mcs/class.cs:2614 +#, csharp-format +msgid "`{0}': member names cannot be the same as their enclosing type" +msgstr "" + +#: mcs/mcs/class.cs:2689 #, csharp-format msgid "" "Primary constructor of type `{0}' has parameter of same name as containing " "type" msgstr "" -#: mcs/mcs/class.cs:2581 +#: mcs/mcs/class.cs:2697 #, csharp-format -msgid "`{0}': member names cannot be the same as their enclosing type" +msgid "" +"Primary constructor of type `{0}' has parameter of same name as type " +"parameter `{1}'" msgstr "" -#: mcs/mcs/class.cs:2717 +#: mcs/mcs/class.cs:2763 msgid "" "The class System.Object cannot have a base class or implement an interface." msgstr "" -#: mcs/mcs/class.cs:2726 +#: mcs/mcs/class.cs:2772 #, csharp-format msgid "Attribute `{0}' is only valid on classes derived from System.Attribute" msgstr "" -#: mcs/mcs/class.cs:2731 +#: mcs/mcs/class.cs:2777 msgid "" "Attribute `System.Diagnostics.ConditionalAttribute' is only valid on methods " "or attribute classes" msgstr "" -#: mcs/mcs/class.cs:2760 +#: mcs/mcs/class.cs:2806 #, csharp-format msgid "`{0}': an abstract class cannot be sealed or static" msgstr "`{0}': Eine abstrakte Klasse darf nicht versiegelt oder statisch sein" -#: mcs/mcs/class.cs:2764 +#: mcs/mcs/class.cs:2810 #, csharp-format msgid "`{0}': a class cannot be both static and sealed" msgstr "" -#: mcs/mcs/class.cs:2769 +#: mcs/mcs/class.cs:2815 #, fuzzy, csharp-format msgid "`{0}': Static classes cannot have primary constructor" msgstr "`{0}': Statische Klassen können keinen Destruktor enthalten" -#: mcs/mcs/class.cs:2775 +#: mcs/mcs/class.cs:2821 #, csharp-format msgid "`{0}': Static classes cannot contain user-defined operators" msgstr "" "`{0}': Statische Klassen können keine benutzerdefinierten Operatoren " "beinhalten" -#: mcs/mcs/class.cs:2780 +#: mcs/mcs/class.cs:2826 #, csharp-format msgid "`{0}': Static classes cannot contain destructor" msgstr "`{0}': Statische Klassen können keinen Destruktor enthalten" -#: mcs/mcs/class.cs:2785 +#: mcs/mcs/class.cs:2831 #, csharp-format msgid "`{0}': cannot declare indexers in a static class" msgstr "" -#: mcs/mcs/class.cs:2793 +#: mcs/mcs/class.cs:2839 #, csharp-format msgid "`{0}': Static classes cannot have instance constructors" msgstr "" -#: mcs/mcs/class.cs:2797 +#: mcs/mcs/class.cs:2843 #, csharp-format msgid "`{0}': cannot declare instance members in a static class" msgstr "" -#: mcs/mcs/class.cs:2839 +#: mcs/mcs/class.cs:2885 #, fuzzy, csharp-format msgid "`{0}': Cannot derive from type parameter `{1}'" msgstr "`{0}' implementiert den Schnittstellenmember `{1}' nicht" -#: mcs/mcs/class.cs:2843 +#: mcs/mcs/class.cs:2889 #, csharp-format msgid "`{0}': Cannot derive from static class `{1}'" msgstr "" -#: mcs/mcs/class.cs:2847 +#: mcs/mcs/class.cs:2893 #, csharp-format msgid "`{0}': cannot derive from sealed type `{1}'" msgstr "" -#: mcs/mcs/class.cs:2850 +#: mcs/mcs/class.cs:2896 #, csharp-format msgid "" "Static class `{0}' cannot derive from type `{1}'. Static classes must derive " "from object" msgstr "" -#: mcs/mcs/class.cs:2861 +#: mcs/mcs/class.cs:2907 #, csharp-format msgid "`{0}' cannot derive from special class `{1}'" msgstr "" -#: mcs/mcs/class.cs:2871 +#: mcs/mcs/class.cs:2917 #, csharp-format msgid "" "Inconsistent accessibility: base class `{0}' is less accessible than class " "`{1}'" msgstr "" -#: mcs/mcs/class.cs:2879 +#: mcs/mcs/class.cs:2925 #, csharp-format msgid "Static class `{0}' cannot implement interfaces" msgstr "" -#: mcs/mcs/class.cs:2990 mcs/mcs/class.cs:3004 +#: mcs/mcs/class.cs:3036 mcs/mcs/class.cs:3050 #, csharp-format msgid "Struct member `{0}' of type `{1}' causes a cycle in the struct layout" msgstr "" -#: mcs/mcs/class.cs:3094 -#, csharp-format -msgid "`{0}': Structs cannot have instance field initializers" -msgstr "`{0}': Instanzfeldinitialisierungen können nicht in Strukturen sein" +#: mcs/mcs/class.cs:3154 +#, fuzzy, csharp-format +msgid "" +"`{0}': Structs without explicit constructors cannot contain members with " +"initializers" +msgstr "`{0}': Statische Klassen können keinen Destruktor enthalten" -#: mcs/mcs/class.cs:3282 +#: mcs/mcs/class.cs:3343 #, csharp-format msgid "Do not override `{0}'. Use destructor syntax instead" msgstr "" -#: mcs/mcs/class.cs:3285 +#: mcs/mcs/class.cs:3346 #, csharp-format msgid "`{0}' is marked as an override but no suitable {1} found to override" msgstr "" -#: mcs/mcs/class.cs:3291 +#: mcs/mcs/class.cs:3352 #, csharp-format msgid "`{0}': cannot override because `{1}' is not an event" msgstr "" -#: mcs/mcs/class.cs:3294 +#: mcs/mcs/class.cs:3355 #, csharp-format msgid "`{0}': cannot override because `{1}' is not a property" msgstr "" -#: mcs/mcs/class.cs:3297 +#: mcs/mcs/class.cs:3358 #, csharp-format msgid "`{0}': cannot override because `{1}' is not a method" msgstr "" -#: mcs/mcs/class.cs:3316 +#: mcs/mcs/class.cs:3377 #, csharp-format msgid "" "`{0}' cannot override inherited members `{1}' and `{2}' because they have " "the same signature when used in type `{3}'" msgstr "" -#: mcs/mcs/class.cs:3369 mcs/mcs/field.cs:203 +#: mcs/mcs/class.cs:3430 mcs/mcs/field.cs:203 #, csharp-format msgid "`{0}' hides inherited abstract member `{1}'" msgstr "" -#: mcs/mcs/class.cs:3393 +#: mcs/mcs/class.cs:3454 #, csharp-format msgid "" "`{0}': cannot override inherited member `{1}' because it is not marked " "virtual, abstract or override" msgstr "" -#: mcs/mcs/class.cs:3401 +#: mcs/mcs/class.cs:3462 #, csharp-format msgid "`{0}': cannot override inherited member `{1}' because it is sealed" msgstr "" -#: mcs/mcs/class.cs:3410 +#: mcs/mcs/class.cs:3471 #, csharp-format msgid "`{0}': type must be `{1}' to match overridden member `{2}'" msgstr "" -#: mcs/mcs/class.cs:3413 +#: mcs/mcs/class.cs:3474 #, csharp-format msgid "`{0}': return type must be `{1}' to match overridden member `{2}'" msgstr "" -#: mcs/mcs/class.cs:3481 +#: mcs/mcs/class.cs:3542 #, csharp-format msgid "A partial method `{0}' cannot explicitly implement an interface" msgstr "" -#: mcs/mcs/class.cs:3487 +#: mcs/mcs/class.cs:3548 #, csharp-format msgid "The type `{0}' in explicit interface declaration is not an interface" msgstr "" -#: mcs/mcs/class.cs:3522 +#: mcs/mcs/class.cs:3583 #, csharp-format msgid "" "Inconsistent accessibility: parameter type `{0}' is less accessible than " "indexer `{1}'" msgstr "" -#: mcs/mcs/class.cs:3526 +#: mcs/mcs/class.cs:3587 #, csharp-format msgid "" "Inconsistent accessibility: parameter type `{0}' is less accessible than " "operator `{1}'" msgstr "" -#: mcs/mcs/class.cs:3530 +#: mcs/mcs/class.cs:3591 #, csharp-format msgid "" "Inconsistent accessibility: parameter type `{0}' is less accessible than " "method `{1}'" msgstr "" -#: mcs/mcs/class.cs:3590 +#: mcs/mcs/class.cs:3651 #, csharp-format msgid "" "`{0}': cannot change access modifiers when overriding `{1}' inherited member " "`{2}'" msgstr "" -#: mcs/mcs/class.cs:3599 +#: mcs/mcs/class.cs:3660 #, fuzzy, csharp-format msgid "`{0}': static types cannot be used as return types" msgstr "" "`{0}': Statische Klassen können keine benutzerdefinierten Operatoren " "beinhalten" -#: mcs/mcs/class.cs:3660 +#: mcs/mcs/class.cs:3721 #, csharp-format msgid "" "`{0}': Cannot specify constraints for overrides and explicit interface " "implementation methods" msgstr "" -#: mcs/mcs/class.cs:3724 +#: mcs/mcs/class.cs:3785 #, csharp-format msgid "New virtual member `{0}' is declared in a sealed class `{1}'" msgstr "" -#: mcs/mcs/class.cs:3739 +#: mcs/mcs/class.cs:3800 msgid "Inconsistent accessibility: property type `" msgstr "" -#: mcs/mcs/class.cs:3744 +#: mcs/mcs/class.cs:3805 msgid "Inconsistent accessibility: indexer return type `" msgstr "" -#: mcs/mcs/class.cs:3750 mcs/mcs/class.cs:3755 mcs/mcs/delegate.cs:171 +#: mcs/mcs/class.cs:3811 mcs/mcs/class.cs:3816 mcs/mcs/delegate.cs:171 msgid "Inconsistent accessibility: return type `" msgstr "" -#: mcs/mcs/class.cs:3760 +#: mcs/mcs/class.cs:3821 +#, csharp-format +msgid "" +"Inconsistent accessibility: event type `{0}' is less accessible than event " +"`{1}'" +msgstr "" + +#: mcs/mcs/class.cs:3825 msgid "Inconsistent accessibility: field type `" msgstr "" -#: mcs/mcs/class.cs:3772 +#: mcs/mcs/class.cs:3837 #, csharp-format msgid "" "Parameters or local variables of type `{0}' cannot be declared in async " "methods or iterators" msgstr "" -#: mcs/mcs/class.cs:3776 +#: mcs/mcs/class.cs:3841 #, csharp-format msgid "" "Local variables of type `{0}' cannot be used inside anonymous methods, " "lambda expressions or query expressions" msgstr "" -#: mcs/mcs/class.cs:3780 +#: mcs/mcs/class.cs:3845 #, csharp-format msgid "Field or property cannot be of type `{0}'" msgstr "" @@ -1055,7 +1105,7 @@ msgid "" "to override)" msgstr "" -#: mcs/mcs/convert.cs:1196 +#: mcs/mcs/convert.cs:1221 #, csharp-format msgid "" "Ambiguous user defined operators `{0}' and `{1}' when converting from `{2}' " @@ -1111,51 +1161,51 @@ msgid "" "delegate `{1}'" msgstr "" -#: mcs/mcs/delegate.cs:517 +#: mcs/mcs/delegate.cs:518 #, csharp-format msgid "" "Cannot create delegate from method `{0}' because it is a member of System." "Nullable type" msgstr "" -#: mcs/mcs/delegate.cs:530 +#: mcs/mcs/delegate.cs:531 #, csharp-format msgid "" "Extension method `{0}' of value type `{1}' cannot be used to create delegates" msgstr "" -#: mcs/mcs/delegate.cs:548 +#: mcs/mcs/delegate.cs:549 #, csharp-format msgid "Cannot create delegate from partial method declaration `{0}'" msgstr "" -#: mcs/mcs/delegate.cs:551 +#: mcs/mcs/delegate.cs:552 #, csharp-format msgid "" "Cannot create delegate with `{0}' because it has a Conditional attribute" msgstr "" -#: mcs/mcs/delegate.cs:599 +#: mcs/mcs/delegate.cs:600 #, csharp-format msgid "" "A method or delegate `{0} {1}' parameters and return type must be same as " "delegate `{2} {3}' parameters and return type" msgstr "" -#: mcs/mcs/delegate.cs:606 +#: mcs/mcs/delegate.cs:607 #, csharp-format msgid "" "A method or delegate `{0}' parameters do not match delegate `{1}' parameters" msgstr "" -#: mcs/mcs/delegate.cs:611 +#: mcs/mcs/delegate.cs:612 #, csharp-format msgid "" "A method or delegate `{0} {1}' return type does not match delegate `{2} {3}' " "return type" msgstr "" -#: mcs/mcs/delegate.cs:787 +#: mcs/mcs/delegate.cs:788 msgid "Method name expected" msgstr "Methodennamen erwartet" @@ -1256,50 +1306,57 @@ msgstr "" msgid "The operation in question is undefined on void pointers" msgstr "" -#: mcs/mcs/ecore.cs:473 mcs/mcs/statement.cs:3824 mcs/mcs/statement.cs:3826 +#: mcs/mcs/ecore.cs:473 mcs/mcs/statement.cs:3919 mcs/mcs/statement.cs:3921 #, csharp-format msgid "Internal compiler error: {0}" msgstr "" -#: mcs/mcs/ecore.cs:535 mcs/mcs/expression.cs:7074 mcs/mcs/expression.cs:7082 +#: mcs/mcs/ecore.cs:535 mcs/mcs/expression.cs:7113 mcs/mcs/expression.cs:7121 msgid "A constant value is expected" msgstr "" -#: mcs/mcs/ecore.cs:546 +#: mcs/mcs/ecore.cs:547 msgid "" "An attribute argument must be a constant expression, typeof expression or " "array creation expression" msgstr "" -#: mcs/mcs/ecore.cs:726 +#: mcs/mcs/ecore.cs:550 +#, csharp-format +msgid "" +"Attribute constructor parameter has type `{0}', which is not a valid " +"attribute parameter type" +msgstr "" + +#: mcs/mcs/ecore.cs:732 #, csharp-format msgid "The class `{0}' has no constructors defined" msgstr "" -#: mcs/mcs/ecore.cs:924 +#: mcs/mcs/ecore.cs:930 #, csharp-format msgid "The `{0}' operator cannot be applied to operand of type `{1}'" msgstr "" -#: mcs/mcs/ecore.cs:930 +#: mcs/mcs/ecore.cs:936 msgid "An expression tree cannot contain an unsafe pointer operation" msgstr "" -#: mcs/mcs/ecore.cs:1012 +#: mcs/mcs/ecore.cs:1018 #, csharp-format msgid "`{0}' is a `{1}' but a `{2}' was expected" msgstr "" -#: mcs/mcs/ecore.cs:1045 +#: mcs/mcs/ecore.cs:1051 #, csharp-format msgid "Expression denotes a `{0}', where a `{1}' was expected" msgstr "" -#: mcs/mcs/ecore.cs:1055 +#: mcs/mcs/ecore.cs:1061 msgid "Pointers and fixed size buffers may only be used in an unsafe context" msgstr "" -#: mcs/mcs/ecore.cs:2616 +#: mcs/mcs/ecore.cs:2622 #, fuzzy, csharp-format msgid "" "Dynamic keyword requires `{0}' to be defined. Are you missing System.Core." @@ -1308,40 +1365,33 @@ msgstr "" "Der Typ oder Namespacename `{0}' konnte nicht gefunden werden. Fehlt eine " "using-Direktive oder ein Assemblyverweis?" -#: mcs/mcs/ecore.cs:2692 +#: mcs/mcs/ecore.cs:2698 #, csharp-format msgid "" "A local variable `{0}' cannot be used before it is declared. Consider " "renaming the local variable when it hides the member `{1}'" msgstr "" -#: mcs/mcs/ecore.cs:2707 mcs/mcs/ecore.cs:2750 +#: mcs/mcs/ecore.cs:2713 mcs/mcs/ecore.cs:2756 #, csharp-format msgid "`{0}' conflicts with a declaration in a child block" msgstr "" -#: mcs/mcs/ecore.cs:2759 +#: mcs/mcs/ecore.cs:2774 #, csharp-format msgid "A local variable `{0}' cannot be used before it is declared" msgstr "" -#: mcs/mcs/ecore.cs:2788 -#, csharp-format -msgid "" -"Primary constructor parameter `{0}' is not available in this context when " -"using ref or out modifier" -msgstr "" - -#: mcs/mcs/ecore.cs:2827 +#: mcs/mcs/ecore.cs:2831 #, csharp-format msgid "The name `{0}' does not exist in the current context" msgstr "" -#: mcs/mcs/ecore.cs:2923 +#: mcs/mcs/ecore.cs:2927 msgid "System.Void cannot be used from C#. Consider using `void'" msgstr "" -#: mcs/mcs/ecore.cs:3086 +#: mcs/mcs/ecore.cs:3090 #, fuzzy, csharp-format msgid "" "The type or namespace name `{0}' could not be found in the global namespace. " @@ -1350,7 +1400,7 @@ msgstr "" "Der Typ oder Namespacename `{0}' konnte im globalen Namesapce nicht gefunden " "werden. Fehlt ein Assemblyverweis?" -#: mcs/mcs/ecore.cs:3090 +#: mcs/mcs/ecore.cs:3094 #, fuzzy, csharp-format msgid "" "The type or namespace name `{0}' does not exist in the namespace `{1}'. Are " @@ -1359,128 +1409,128 @@ msgstr "" "Der Typ oder Namespacename `{0}' existiert nicht im Namespace `{1}'. Fehlt " "ein Assemblyverweis?" -#: mcs/mcs/ecore.cs:3330 +#: mcs/mcs/ecore.cs:3334 #, csharp-format msgid "Cannot call an abstract base member `{0}'" msgstr "" -#: mcs/mcs/ecore.cs:3337 +#: mcs/mcs/ecore.cs:3341 #, csharp-format msgid "" "Cannot access protected member `{0}' via a qualifier of type `{1}'. The " "qualifier must be of type `{2}' or derived from it" msgstr "" -#: mcs/mcs/ecore.cs:3362 +#: mcs/mcs/ecore.cs:3366 #, csharp-format msgid "" "Fields of static readonly field `{0}' cannot be assigned to (except in a " "static constructor or a variable initializer)" msgstr "" -#: mcs/mcs/ecore.cs:3365 +#: mcs/mcs/ecore.cs:3369 #, csharp-format msgid "" "Members of readonly field `{0}' cannot be modified (except in a constructor " "or a variable initializer)" msgstr "" -#: mcs/mcs/ecore.cs:3374 +#: mcs/mcs/ecore.cs:3378 #, csharp-format msgid "" "Members of value type `{0}' cannot be assigned using a property `{1}' object " "initializer" msgstr "" -#: mcs/mcs/ecore.cs:3378 +#: mcs/mcs/ecore.cs:3382 #, csharp-format msgid "" "Cannot modify a value type return value of `{0}'. Consider storing the value " "in a temporary variable" msgstr "" -#: mcs/mcs/ecore.cs:3391 +#: mcs/mcs/ecore.cs:3395 #, fuzzy, csharp-format msgid "Cannot assign to members of `{0}' because it is a `{1}'" msgstr "" "NULL kann nicht in `{0}' konvertiert werden, da dies ein Werttyp ist, der " "nicht auf NULL festgelegt werden kann" -#: mcs/mcs/ecore.cs:3417 +#: mcs/mcs/ecore.cs:3421 #, csharp-format msgid "" "Static member `{0}' cannot be accessed with an instance reference, qualify " "it with a type name instead" msgstr "" -#: mcs/mcs/ecore.cs:3432 +#: mcs/mcs/ecore.cs:3436 #, csharp-format msgid "" "A field initializer cannot reference the nonstatic field, method, or " "property `{0}'" msgstr "" -#: mcs/mcs/ecore.cs:3438 +#: mcs/mcs/ecore.cs:3442 msgid "Constructor initializer cannot access primary constructor parameters" msgstr "" -#: mcs/mcs/ecore.cs:3440 +#: mcs/mcs/ecore.cs:3444 #, csharp-format msgid "" "An object reference is required to access primary constructor parameter `{0}'" msgstr "" -#: mcs/mcs/ecore.cs:3445 +#: mcs/mcs/ecore.cs:3449 #, csharp-format msgid "An object reference is required to access non-static member `{0}'" msgstr "" -#: mcs/mcs/ecore.cs:3456 +#: mcs/mcs/ecore.cs:3460 #, csharp-format msgid "" "Cannot access a nonstatic member of outer type `{0}' via nested type `{1}'" msgstr "" -#: mcs/mcs/ecore.cs:3484 +#: mcs/mcs/ecore.cs:3488 msgid "Cannot modify the result of an unboxing conversion" msgstr "Das Ergebnis einer Unboxing-Konvertierung kann nicht geändert werden" -#: mcs/mcs/ecore.cs:3662 +#: mcs/mcs/ecore.cs:3666 #, csharp-format msgid "" "Type `{0}' does not contain a member `{1}' and the best extension method " "overload `{2}' has some invalid arguments" msgstr "" -#: mcs/mcs/ecore.cs:3667 +#: mcs/mcs/ecore.cs:3671 #, csharp-format msgid "Extension method instance type `{0}' cannot be converted to `{1}'" msgstr "" -#: mcs/mcs/ecore.cs:3815 +#: mcs/mcs/ecore.cs:3819 msgid "An expression tree cannot contain an expression with method group" msgstr "" -#: mcs/mcs/ecore.cs:3821 +#: mcs/mcs/ecore.cs:3825 msgid "" "Partial methods with only a defining declaration or removed conditional " "methods cannot be used in an expression tree" msgstr "" -#: mcs/mcs/ecore.cs:3853 +#: mcs/mcs/ecore.cs:3857 #, csharp-format msgid "" "Cannot convert method group `{0}' to non-delegate type `{1}'. Consider using " "parentheses to invoke the method" msgstr "" -#: mcs/mcs/ecore.cs:4584 +#: mcs/mcs/ecore.cs:4596 #, csharp-format msgid "" "The type `{0}' does not contain a constructor that takes `{1}' arguments" msgstr "" -#: mcs/mcs/ecore.cs:5274 +#: mcs/mcs/ecore.cs:5297 #, csharp-format msgid "" "Type `{0}' does not contain a member `{1}' and the best extension method " @@ -1488,202 +1538,202 @@ msgid "" "without the extension method syntax" msgstr "" -#: mcs/mcs/ecore.cs:5313 +#: mcs/mcs/ecore.cs:5336 #, csharp-format msgid "" "The call is ambiguous between the following methods or properties: `{0}' and " "`{1}'" msgstr "" -#: mcs/mcs/ecore.cs:5376 +#: mcs/mcs/ecore.cs:5399 #, csharp-format msgid "" "The best overloaded collection initalizer method `{0}' cannot have `ref' or " "`out' modifier" msgstr "" -#: mcs/mcs/ecore.cs:5380 +#: mcs/mcs/ecore.cs:5403 #, csharp-format msgid "" "The best overloaded collection initalizer method `{0}' has some invalid " "arguments" msgstr "" -#: mcs/mcs/ecore.cs:5383 +#: mcs/mcs/ecore.cs:5406 #, csharp-format msgid "Delegate `{0}' has some invalid arguments" msgstr "" -#: mcs/mcs/ecore.cs:5387 +#: mcs/mcs/ecore.cs:5410 #, csharp-format msgid "The best overloaded method match for `{0}' has some invalid arguments" msgstr "" -#: mcs/mcs/ecore.cs:5396 +#: mcs/mcs/ecore.cs:5419 #, csharp-format msgid "" "Argument `#{0}' does not require `{1}' modifier. Consider removing `{1}' " "modifier" msgstr "" -#: mcs/mcs/ecore.cs:5399 +#: mcs/mcs/ecore.cs:5422 #, csharp-format msgid "Argument `#{0}' is missing `{1}' modifier" msgstr "" -#: mcs/mcs/ecore.cs:5416 +#: mcs/mcs/ecore.cs:5439 #, csharp-format msgid "Argument `#{0}' cannot convert `{1}' expression to type `{2}'" msgstr "" -#: mcs/mcs/ecore.cs:5468 +#: mcs/mcs/ecore.cs:5491 #, csharp-format msgid "" "The type arguments for method `{0}' cannot be inferred from the usage. Try " "specifying the type arguments explicitly" msgstr "" -#: mcs/mcs/ecore.cs:5497 +#: mcs/mcs/ecore.cs:5520 #, csharp-format msgid "No overload for method `{0}' takes `{1}' arguments" msgstr "" -#: mcs/mcs/ecore.cs:5586 +#: mcs/mcs/ecore.cs:5613 #, csharp-format msgid "The delegate `{0}' does not contain a parameter named `{1}'" msgstr "" -#: mcs/mcs/ecore.cs:5591 +#: mcs/mcs/ecore.cs:5618 #, csharp-format msgid "" "The best overloaded method match for `{0}' does not contain a parameter " "named `{1}'" msgstr "" -#: mcs/mcs/ecore.cs:5601 +#: mcs/mcs/ecore.cs:5628 #, csharp-format msgid "" "Named argument `{0}' cannot be used for a parameter which has positional " "argument specified" msgstr "" -#: mcs/mcs/ecore.cs:5940 +#: mcs/mcs/ecore.cs:5967 msgid "" "You cannot use fixed size buffers contained in unfixed expressions. Try " "using the fixed statement" msgstr "" -#: mcs/mcs/ecore.cs:5945 +#: mcs/mcs/ecore.cs:5972 #, csharp-format msgid "`{0}': Fixed size buffers can only be accessed through locals or fields" msgstr "" -#: mcs/mcs/ecore.cs:6019 +#: mcs/mcs/ecore.cs:6046 #, csharp-format msgid "" "A static readonly field `{0}' cannot be passed ref or out (except in a " "static constructor)" msgstr "" -#: mcs/mcs/ecore.cs:6022 +#: mcs/mcs/ecore.cs:6049 #, csharp-format msgid "" "A readonly field `{0}' cannot be passed ref or out (except in a constructor)" msgstr "" -#: mcs/mcs/ecore.cs:6036 +#: mcs/mcs/ecore.cs:6063 #, csharp-format msgid "" "Fields of static readonly field `{0}' cannot be passed ref or out (except in " "a static constructor)" msgstr "" -#: mcs/mcs/ecore.cs:6039 +#: mcs/mcs/ecore.cs:6066 #, csharp-format msgid "" "Members of readonly field `{0}' cannot be passed ref or out (except in a " "constructor)" msgstr "" -#: mcs/mcs/ecore.cs:6046 +#: mcs/mcs/ecore.cs:6073 #, csharp-format msgid "" "A static readonly field `{0}' cannot be assigned to (except in a static " "constructor or a variable initializer)" msgstr "" -#: mcs/mcs/ecore.cs:6049 +#: mcs/mcs/ecore.cs:6076 #, csharp-format msgid "" "A readonly field `{0}' cannot be assigned to (except in a constructor or a " "variable initializer)" msgstr "" -#: mcs/mcs/ecore.cs:6113 +#: mcs/mcs/ecore.cs:6140 #, fuzzy, csharp-format msgid "Use of possibly unassigned field `{0}'" msgstr "Verwendung eines möglicherweise nicht zugewiesenen Feldes `" -#: mcs/mcs/ecore.cs:6470 +#: mcs/mcs/ecore.cs:6502 #, fuzzy, csharp-format msgid "Property or event `{0}' is not supported by the C# language" msgstr "" "Die Eigenschaft `{0}' wird von der C# Sprache nicht unterstützt. Rufen Sie " "die `{1}'-Accessormethode direkt auf." -#: mcs/mcs/ecore.cs:6666 +#: mcs/mcs/ecore.cs:6698 #, csharp-format msgid "A range variable `{0}' may not be passes as `ref' or `out' parameter" msgstr "" -#: mcs/mcs/ecore.cs:6741 +#: mcs/mcs/ecore.cs:6773 #, csharp-format msgid "" "The property or indexer `{0}' cannot be used in this context because it " "lacks the `get' accessor" msgstr "" -#: mcs/mcs/ecore.cs:6748 +#: mcs/mcs/ecore.cs:6780 #, csharp-format msgid "" "The property or indexer `{0}' cannot be used in this context because the get " "accessor is inaccessible" msgstr "" -#: mcs/mcs/ecore.cs:6767 +#: mcs/mcs/ecore.cs:6799 #, csharp-format msgid "Property or indexer `{0}' cannot be assigned to (it is read-only)" msgstr "" -#: mcs/mcs/ecore.cs:6775 +#: mcs/mcs/ecore.cs:6807 #, csharp-format msgid "" "The property or indexer `{0}' cannot be used in this context because the set " "accessor is inaccessible" msgstr "" -#: mcs/mcs/ecore.cs:6943 +#: mcs/mcs/ecore.cs:6975 #, csharp-format msgid "" "The event `{0}' can only appear on the left hand side of `+=' or `-=' " "operator" msgstr "" -#: mcs/mcs/ecore.cs:6947 +#: mcs/mcs/ecore.cs:6979 #, csharp-format msgid "" "The event `{0}' can only appear on the left hand side of += or -= when used " "outside of the type `{1}'" msgstr "" -#: mcs/mcs/ecore.cs:7119 +#: mcs/mcs/ecore.cs:7151 #, csharp-format msgid "" "An implicitly typed local variable declaration cannot be initialized with " "`{0}'" msgstr "" -#: mcs/mcs/ecore.cs:7133 +#: mcs/mcs/ecore.cs:7165 msgid "" "The contextual keyword `var' may only appear within a local variable " "declaration" @@ -1705,294 +1755,301 @@ msgstr "" msgid "Type byte, sbyte, short, ushort, int, uint, long or ulong expected" msgstr "Typ byte, sbyte, short, ushort, int, uint, long oder ulong erwartet" -#: mcs/mcs/eval.cs:587 +#: mcs/mcs/eval.cs:628 msgid "Detection Parsing Error" msgstr "" -#: mcs/mcs/expression.cs:605 +#: mcs/mcs/expression.cs:608 #, csharp-format msgid "Operator `{0}' is ambiguous on an operand of type `{1}'" msgstr "" -#: mcs/mcs/expression.cs:699 +#: mcs/mcs/expression.cs:702 msgid "Cannot take the address of the given expression" msgstr "" -#: mcs/mcs/expression.cs:722 +#: mcs/mcs/expression.cs:725 msgid "" "You can only take the address of unfixed expression inside of a fixed " "statement initializer" msgstr "" -#: mcs/mcs/expression.cs:966 +#: mcs/mcs/expression.cs:969 msgid "The * or -> operator must be applied to a pointer" msgstr "" -#: mcs/mcs/expression.cs:1189 +#: mcs/mcs/expression.cs:1192 msgid "" "The operand of an increment or decrement operator must be a variable, " "property or indexer" msgstr "" -#: mcs/mcs/expression.cs:1432 +#: mcs/mcs/expression.cs:1435 #, csharp-format -msgid "The `{0}' operator cannot be applied to an operand of a static type" +msgid "The second operand of `is' or `as' operator cannot be static type `{0}'" msgstr "" -#: mcs/mcs/expression.cs:1437 +#: mcs/mcs/expression.cs:1441 #, csharp-format msgid "The `{0}' operator cannot be applied to an operand of pointer type" msgstr "" -#: mcs/mcs/expression.cs:1443 +#: mcs/mcs/expression.cs:1447 #, csharp-format msgid "" -"The `{0}' operator cannot be applied to a lambda expression or anonymous " -"method" +"The `{0}' operator cannot be applied to a lambda expression, anonymous " +"method, or method group" msgstr "" -#: mcs/mcs/expression.cs:1735 +#: mcs/mcs/expression.cs:1747 #, csharp-format msgid "" "The `as' operator cannot be used with a non-reference type parameter `{0}'. " "Consider adding `class' or a reference type constraint" msgstr "" -#: mcs/mcs/expression.cs:1739 +#: mcs/mcs/expression.cs:1751 #, csharp-format msgid "The `as' operator cannot be used with a non-nullable value type `{0}'" msgstr "" -#: mcs/mcs/expression.cs:1773 +#: mcs/mcs/expression.cs:1785 #, csharp-format msgid "Cannot convert type `{0}' to `{1}' via a built-in conversion" msgstr "" -#: mcs/mcs/expression.cs:1814 +#: mcs/mcs/expression.cs:1826 #, csharp-format msgid "Cannot convert to static type `{0}'" msgstr "" -#: mcs/mcs/expression.cs:1924 +#: mcs/mcs/expression.cs:1936 msgid "" "The `default value' operator cannot be applied to an operand of a static type" msgstr "" -#: mcs/mcs/expression.cs:2601 +#: mcs/mcs/expression.cs:2613 #, csharp-format msgid "Operator `{0}' cannot be applied to operands of type `{1}' and `{2}'" msgstr "" -#: mcs/mcs/expression.cs:3396 +#: mcs/mcs/expression.cs:3408 msgid "To cast a negative value, you must enclose the value in parentheses" msgstr "" -#: mcs/mcs/expression.cs:5067 +#: mcs/mcs/expression.cs:3501 +#, csharp-format +msgid "" +"Expression must be implicitly convertible to Boolean or its type `{0}' must " +"define operator `{1}'" +msgstr "" + +#: mcs/mcs/expression.cs:5084 #, csharp-format msgid "" "A user-defined operator `{0}' must have each parameter type and return type " "of the same type in order to be applicable as a short circuit operator" msgstr "" -#: mcs/mcs/expression.cs:5077 +#: mcs/mcs/expression.cs:5094 #, csharp-format msgid "" "The type `{0}' must have operator `true' and operator `false' defined when " "`{1}' is used as a short circuit operator" msgstr "" -#: mcs/mcs/expression.cs:5452 +#: mcs/mcs/expression.cs:5469 #, csharp-format msgid "" "Type of conditional expression cannot be determined as `{0}' and `{1}' " "convert implicitly to each other" msgstr "" -#: mcs/mcs/expression.cs:5464 +#: mcs/mcs/expression.cs:5481 #, csharp-format msgid "" "Type of conditional expression cannot be determined because there is no " "implicit conversion between `{0}' and `{1}'" msgstr "" -#: mcs/mcs/expression.cs:5796 +#: mcs/mcs/expression.cs:5813 #, fuzzy, csharp-format msgid "Use of unassigned local variable `{0}'" msgstr "Verwendung der nicht zugewiesenen lokalen Variable `" -#: mcs/mcs/expression.cs:5816 +#: mcs/mcs/expression.cs:5833 #, csharp-format msgid "" "Cannot use fixed local `{0}' inside an anonymous method, lambda expression " "or query expression" msgstr "" -#: mcs/mcs/expression.cs:6001 +#: mcs/mcs/expression.cs:6018 #, csharp-format msgid "" "Parameter `{0}' cannot be used inside `{1}' when using `ref' or `out' " "modifier" msgstr "" -#: mcs/mcs/expression.cs:6071 +#: mcs/mcs/expression.cs:6088 #, csharp-format msgid "Use of unassigned out parameter `{0}'" msgstr "" -#: mcs/mcs/expression.cs:6233 +#: mcs/mcs/expression.cs:6271 #, fuzzy, csharp-format msgid "Cannot invoke a non-delegate type `{0}'" msgstr "Kann Typ `{0}'<...> nicht finden" -#: mcs/mcs/expression.cs:6244 +#: mcs/mcs/expression.cs:6282 #, csharp-format msgid "The member `{0}' cannot be used as method or delegate" msgstr "" -#: mcs/mcs/expression.cs:6264 +#: mcs/mcs/expression.cs:6302 msgid "" "Do not directly call your base class Finalize method. It is called " "automatically from your destructor" msgstr "" -#: mcs/mcs/expression.cs:6266 +#: mcs/mcs/expression.cs:6304 msgid "" "Destructors and object.Finalize cannot be called directly. Consider calling " "IDisposable.Dispose if available" msgstr "" -#: mcs/mcs/expression.cs:6295 +#: mcs/mcs/expression.cs:6333 #, csharp-format msgid "" "The base call to method `{0}' cannot be dynamically dispatched. Consider " "casting the dynamic arguments or eliminating the base access" msgstr "" -#: mcs/mcs/expression.cs:6379 +#: mcs/mcs/expression.cs:6418 #, csharp-format msgid "`{0}': cannot explicitly call operator or accessor" msgstr "" -#: mcs/mcs/expression.cs:6566 +#: mcs/mcs/expression.cs:6605 #, csharp-format msgid "Unsafe type `{0}' cannot be used in an object creation expression" msgstr "" -#: mcs/mcs/expression.cs:6589 +#: mcs/mcs/expression.cs:6628 #, csharp-format msgid "" "Cannot create an instance of the variable type `{0}' because it does not " "have the new() constraint" msgstr "" -#: mcs/mcs/expression.cs:6595 +#: mcs/mcs/expression.cs:6634 #, csharp-format msgid "" "`{0}': cannot provide arguments when creating an instance of a variable type" msgstr "" -#: mcs/mcs/expression.cs:6604 +#: mcs/mcs/expression.cs:6643 #, csharp-format msgid "Cannot create an instance of the static class `{0}'" msgstr "" -#: mcs/mcs/expression.cs:6616 +#: mcs/mcs/expression.cs:6655 #, csharp-format msgid "Cannot create an instance of the abstract class or interface `{0}'" msgstr "" -#: mcs/mcs/expression.cs:6925 +#: mcs/mcs/expression.cs:6964 msgid "" "An implicitly typed local variable declarator cannot use an array initializer" msgstr "" -#: mcs/mcs/expression.cs:7088 mcs/mcs/expression.cs:7113 +#: mcs/mcs/expression.cs:7127 mcs/mcs/expression.cs:7152 #, csharp-format msgid "An array initializer of length `{0}' was expected" msgstr "" -#: mcs/mcs/expression.cs:7104 +#: mcs/mcs/expression.cs:7143 msgid "" "Array initializers can only be used in a variable or field initializer. Try " "using a new expression instead" msgstr "" -#: mcs/mcs/expression.cs:7121 +#: mcs/mcs/expression.cs:7160 msgid "A nested array initializer was expected" msgstr "" -#: mcs/mcs/expression.cs:7168 +#: mcs/mcs/expression.cs:7207 msgid "An expression tree cannot contain a multidimensional array initializer" msgstr "" -#: mcs/mcs/expression.cs:7204 +#: mcs/mcs/expression.cs:7243 msgid "Cannot create an array with a negative size" msgstr "" -#: mcs/mcs/expression.cs:7296 +#: mcs/mcs/expression.cs:7335 msgid "" "Can only use array initializer expressions to assign to array types. Try " "using a new expression instead" msgstr "" -#: mcs/mcs/expression.cs:7718 +#: mcs/mcs/expression.cs:7759 msgid "" "The type of an implicitly typed array cannot be inferred from the " "initializer. Try specifying array type explicitly" msgstr "" -#: mcs/mcs/expression.cs:7859 +#: mcs/mcs/expression.cs:7914 msgid "" "The `this' object cannot be used before all of its fields are assigned to" msgstr "" -#: mcs/mcs/expression.cs:7865 +#: mcs/mcs/expression.cs:7920 msgid "" "Keyword `this' is not valid in a static property, static method, or static " "field initializer" msgstr "" -#: mcs/mcs/expression.cs:7868 +#: mcs/mcs/expression.cs:7923 msgid "" "Anonymous methods inside structs cannot access instance members of `this'. " "Consider copying `this' to a local variable outside the anonymous method and " "using the local instead" msgstr "" -#: mcs/mcs/expression.cs:7871 +#: mcs/mcs/expression.cs:7926 msgid "Keyword `this' is not available in the current context" msgstr "" -#: mcs/mcs/expression.cs:7947 +#: mcs/mcs/expression.cs:8002 msgid "Cannot take the address of `this' because it is read-only" msgstr "" -#: mcs/mcs/expression.cs:7949 +#: mcs/mcs/expression.cs:8004 msgid "Cannot pass `this' as a ref or out argument because it is read-only" msgstr "" -#: mcs/mcs/expression.cs:7951 +#: mcs/mcs/expression.cs:8006 msgid "Cannot assign to `this' because it is read-only" msgstr "" -#: mcs/mcs/expression.cs:8019 +#: mcs/mcs/expression.cs:8074 msgid "The __arglist construct is valid only within a variable argument method" msgstr "" -#: mcs/mcs/expression.cs:8080 +#: mcs/mcs/expression.cs:8135 msgid "An expression tree cannot contain a method with variable arguments" msgstr "" -#: mcs/mcs/expression.cs:8348 +#: mcs/mcs/expression.cs:8403 msgid "The typeof operator cannot be used on the dynamic type" msgstr "" -#: mcs/mcs/expression.cs:8389 +#: mcs/mcs/expression.cs:8444 #, csharp-format msgid "`{0}': an attribute argument cannot use type parameters" msgstr "" -#: mcs/mcs/expression.cs:8604 +#: mcs/mcs/expression.cs:8659 #, csharp-format msgid "" "`{0}' does not have a predefined size, therefore sizeof can only be used in " @@ -2000,34 +2057,34 @@ msgid "" "SizeOf)" msgstr "" -#: mcs/mcs/expression.cs:8671 +#: mcs/mcs/expression.cs:8726 #, csharp-format msgid "Alias `{0}' not found" msgstr "Alias `{0}' wurde nicht gefunden" -#: mcs/mcs/expression.cs:8697 +#: mcs/mcs/expression.cs:8752 msgid "" "The namespace alias qualifier `::' cannot be used to invoke a method. " "Consider using `.' instead" msgstr "" -#: mcs/mcs/expression.cs:8787 +#: mcs/mcs/expression.cs:8842 msgid "Cannot perform member binding on `null' value" msgstr "" -#: mcs/mcs/expression.cs:8918 +#: mcs/mcs/expression.cs:8973 #, csharp-format msgid "" "`{0}': cannot reference a type through an expression. Consider using `{1}' " "instead" msgstr "" -#: mcs/mcs/expression.cs:8987 +#: mcs/mcs/expression.cs:9042 #, csharp-format msgid "A nested type cannot be specified through a type parameter `{0}'" msgstr "" -#: mcs/mcs/expression.cs:8995 +#: mcs/mcs/expression.cs:9050 #, fuzzy, csharp-format msgid "" "Alias `{0}' cannot be used with `::' since it denotes a type. Consider " @@ -2036,124 +2093,124 @@ msgstr "" "Der Alias `{0}' kann nicht mit '::' verwendet werden, da der Alias auf einen " "Typ verweist. Verwenden Sie '.' stattdessen." -#: mcs/mcs/expression.cs:9060 +#: mcs/mcs/expression.cs:9117 #, csharp-format msgid "The nested type `{0}' does not exist in the type `{1}'" msgstr "" -#: mcs/mcs/expression.cs:9084 +#: mcs/mcs/expression.cs:9141 #, csharp-format msgid "" "Type `{0}' does not contain a definition for `{1}' and no extension method " "`{1}' of type `{0}' could be found. Are you missing {2}?" msgstr "" -#: mcs/mcs/expression.cs:9312 +#: mcs/mcs/expression.cs:9369 #, csharp-format msgid "Cannot apply indexing with [] to an expression of type `{0}'" msgstr "" -#: mcs/mcs/expression.cs:9330 +#: mcs/mcs/expression.cs:9387 msgid "A pointer must be indexed by only one value" msgstr "" -#: mcs/mcs/expression.cs:9386 +#: mcs/mcs/expression.cs:9443 msgid "An element access expression cannot use named argument" msgstr "" -#: mcs/mcs/expression.cs:9470 +#: mcs/mcs/expression.cs:9531 #, csharp-format msgid "Wrong number of indexes `{0}' inside [], expected `{1}'" msgstr "" -#: mcs/mcs/expression.cs:9870 +#: mcs/mcs/expression.cs:9932 msgid "" "The indexer base access cannot be dynamically dispatched. Consider casting " "the dynamic arguments or eliminating the base access" msgstr "" -#: mcs/mcs/expression.cs:9955 +#: mcs/mcs/expression.cs:10017 msgid "An expression tree may not contain a base access" msgstr "" -#: mcs/mcs/expression.cs:9973 +#: mcs/mcs/expression.cs:10035 msgid "Keyword `base' is not available in a static method" msgstr "" -#: mcs/mcs/expression.cs:9975 +#: mcs/mcs/expression.cs:10037 msgid "Keyword `base' is not available in the current context" msgstr "" -#: mcs/mcs/expression.cs:10013 +#: mcs/mcs/expression.cs:10075 msgid "" "A property, indexer or dynamic member access may not be passed as `ref' or " "`out' parameter" msgstr "" -#: mcs/mcs/expression.cs:10351 +#: mcs/mcs/expression.cs:10413 #, csharp-format msgid "Array elements cannot be of type `{0}'" msgstr "" -#: mcs/mcs/expression.cs:10354 +#: mcs/mcs/expression.cs:10416 #, csharp-format msgid "Array elements cannot be of static type `{0}'" msgstr "" -#: mcs/mcs/expression.cs:10530 +#: mcs/mcs/expression.cs:10592 msgid "Cannot use a negative size with stackalloc" msgstr "" -#: mcs/mcs/expression.cs:10534 +#: mcs/mcs/expression.cs:10596 msgid "Cannot use stackalloc in finally or catch" msgstr "" -#: mcs/mcs/expression.cs:10651 +#: mcs/mcs/expression.cs:10716 #, csharp-format msgid "" "Member `{0}' cannot be initialized. An object initializer may only be used " "for fields, or properties" msgstr "" -#: mcs/mcs/expression.cs:10660 +#: mcs/mcs/expression.cs:10724 #, csharp-format msgid "" "Static field or property `{0}' cannot be assigned in an object initializer" msgstr "" -#: mcs/mcs/expression.cs:10867 +#: mcs/mcs/expression.cs:10931 #, csharp-format msgid "" "A field or property `{0}' cannot be initialized with a collection object " "initializer because type `{1}' does not implement `{2}' interface" msgstr "" -#: mcs/mcs/expression.cs:10878 +#: mcs/mcs/expression.cs:10942 #, csharp-format msgid "Inconsistent `{0}' member declaration" msgstr "" -#: mcs/mcs/expression.cs:10886 +#: mcs/mcs/expression.cs:10950 #, csharp-format msgid "" "An object initializer includes more than one member `{0}' initialization" msgstr "" -#: mcs/mcs/expression.cs:10904 +#: mcs/mcs/expression.cs:10968 #, csharp-format msgid "Cannot initialize object of type `{0}' with a collection initializer" msgstr "" -#: mcs/mcs/expression.cs:11047 +#: mcs/mcs/expression.cs:11113 msgid "" "Object and collection initializers cannot be used to instantiate a delegate" msgstr "" -#: mcs/mcs/expression.cs:11219 +#: mcs/mcs/expression.cs:11301 msgid "Anonymous types cannot be used in this expression" msgstr "" -#: mcs/mcs/expression.cs:11313 +#: mcs/mcs/expression.cs:11395 #, csharp-format msgid "An anonymous type property `{0}' cannot be initialized with `{1}'" msgstr "" @@ -2224,7 +2281,7 @@ msgstr "" msgid "`{0}': A field cannot be both volatile and readonly" msgstr "`{0}' Eine Klasse kann nicht gleichzeitig statisch und versiegelt sein" -#: mcs/mcs/flowanalysis.cs:144 +#: mcs/mcs/flowanalysis.cs:148 #, csharp-format msgid "" "An automatically implemented property `{0}' must be fully assigned before " @@ -2232,7 +2289,7 @@ msgid "" "contructor from a constructor initializer" msgstr "" -#: mcs/mcs/flowanalysis.cs:148 +#: mcs/mcs/flowanalysis.cs:156 #, csharp-format msgid "" "Field `{0}' must be fully assigned before control leaves the constructor" @@ -2312,40 +2369,40 @@ msgid "" "`{0}' is not a valid constraint. Static classes cannot be used as constraints" msgstr "" -#: mcs/mcs/generic.cs:689 +#: mcs/mcs/generic.cs:694 #, csharp-format msgid "The {2} type parameter `{0}' must be {3} valid on `{1}{4}'" msgstr "" -#: mcs/mcs/generic.cs:2188 +#: mcs/mcs/generic.cs:2205 #, csharp-format msgid "`{0}': static classes cannot be used as generic arguments" msgstr "" -#: mcs/mcs/generic.cs:2195 +#: mcs/mcs/generic.cs:2212 #, csharp-format msgid "The type `{0}' may not be used as a type argument" msgstr "" -#: mcs/mcs/generic.cs:2289 +#: mcs/mcs/generic.cs:2306 msgid "Variant type parameters can only be used with interfaces and delegates" msgstr "" -#: mcs/mcs/generic.cs:2358 +#: mcs/mcs/generic.cs:2375 #, csharp-format msgid "" "Partial method declarations of `{0}' have inconsistent constraints for type " "parameter `{1}'" msgstr "" -#: mcs/mcs/generic.cs:2374 +#: mcs/mcs/generic.cs:2391 #, csharp-format msgid "" "Partial declarations of `{0}' have inconsistent constraints for type " "parameter `{1}'" msgstr "" -#: mcs/mcs/generic.cs:2558 +#: mcs/mcs/generic.cs:2575 #, fuzzy, csharp-format msgid "" "The type `{0}' must be a reference type in order to use it as type parameter " @@ -2354,7 +2411,7 @@ msgstr "" "Der Typ `{0}' muss ein Referenztyp sein, damit er als `{1}'-Parameter in " "generischen Typ oder in der generischen Methode `{2}' verwendet werden kann." -#: mcs/mcs/generic.cs:2568 +#: mcs/mcs/generic.cs:2585 #, fuzzy, csharp-format msgid "" "The type `{0}' must be a non-nullable value type in order to use it as type " @@ -2363,14 +2420,14 @@ msgstr "" "Der Typ `{0}' darf keine NULL-Werte zulassen, wenn er als `{1}'-Parameter im " "generischen Typ oder in der generischen Methode `{2}' verwendet werden soll." -#: mcs/mcs/generic.cs:2629 +#: mcs/mcs/generic.cs:2646 #, csharp-format msgid "" "The type `{0}' must have a public parameterless constructor in order to use " "it as parameter `{1}' in the generic type or method `{2}'" msgstr "" -#: mcs/mcs/generic.cs:2685 +#: mcs/mcs/generic.cs:2702 #, fuzzy, csharp-format msgid "" "The type `{0}' cannot be used as type parameter `{1}' in the generic type or " @@ -2380,7 +2437,7 @@ msgstr "" "Der Typ `{0}' muss ein Referenztyp sein, damit er als `{1}'-Parameter in " "generischen Typ oder in der generischen Methode `{2}' verwendet werden kann." -#: mcs/mcs/generic.cs:2691 +#: mcs/mcs/generic.cs:2708 #, fuzzy, csharp-format msgid "" "The type `{0}' cannot be used as type parameter `{1}' in the generic type or " @@ -2390,7 +2447,7 @@ msgstr "" "Der Typ `{0}' muss ein Referenztyp sein, damit er als `{1}'-Parameter in " "generischen Typ oder in der generischen Methode `{2}' verwendet werden kann." -#: mcs/mcs/generic.cs:2695 +#: mcs/mcs/generic.cs:2712 #, fuzzy, csharp-format msgid "" "The type `{0}' cannot be used as type parameter `{1}' in the generic type or " @@ -2399,7 +2456,7 @@ msgstr "" "Der Typ `{0}' muss ein Referenztyp sein, damit er als `{1}'-Parameter in " "generischen Typ oder in der generischen Methode `{2}' verwendet werden kann." -#: mcs/mcs/generic.cs:2700 +#: mcs/mcs/generic.cs:2717 #, fuzzy, csharp-format msgid "" "The type `{0}' cannot be used as type parameter `{1}' in the generic type or " @@ -2408,7 +2465,7 @@ msgstr "" "Der Typ `{0}' muss ein Referenztyp sein, damit er als `{1}'-Parameter in " "generischen Typ oder in der generischen Methode `{2}' verwendet werden kann." -#: mcs/mcs/generic.cs:2705 +#: mcs/mcs/generic.cs:2722 #, fuzzy, csharp-format msgid "" "The type `{0}' cannot be used as type parameter `{1}' in the generic type or " @@ -2417,42 +2474,42 @@ msgstr "" "Der Typ `{0}' muss ein Referenztyp sein, damit er als `{1}'-Parameter in " "generischen Typ oder in der generischen Methode `{2}' verwendet werden kann." -#: mcs/mcs/iterators.cs:98 +#: mcs/mcs/iterators.cs:101 msgid "The yield statement cannot be used inside anonymous method blocks" msgstr "" -#: mcs/mcs/iterators.cs:103 +#: mcs/mcs/iterators.cs:106 msgid "Cannot yield in the body of a finally clause" msgstr "" -#: mcs/mcs/iterators.cs:116 +#: mcs/mcs/iterators.cs:119 msgid "Cannot yield a value in the body of a try block with a catch clause" msgstr "" -#: mcs/mcs/iterators.cs:120 +#: mcs/mcs/iterators.cs:123 msgid "Cannot yield a value in the body of a catch clause" msgstr "" -#: mcs/mcs/iterators.cs:1188 +#: mcs/mcs/iterators.cs:1183 #, csharp-format msgid "" "The body of `{0}' cannot be an iterator block because `{1}' is not an " "iterator interface type" msgstr "" -#: mcs/mcs/iterators.cs:1201 +#: mcs/mcs/iterators.cs:1196 msgid "Iterators cannot have ref or out parameters" msgstr "" -#: mcs/mcs/iterators.cs:1207 +#: mcs/mcs/iterators.cs:1202 msgid "__arglist is not allowed in parameter list of iterators" msgstr "" -#: mcs/mcs/iterators.cs:1213 +#: mcs/mcs/iterators.cs:1208 msgid "Iterators cannot have unsafe parameters or yield types" msgstr "" -#: mcs/mcs/iterators.cs:1219 mcs/mcs/statement.cs:5931 +#: mcs/mcs/iterators.cs:1214 mcs/mcs/statement.cs:6093 msgid "Unsafe code may not appear in iterators" msgstr "" @@ -2577,63 +2634,63 @@ msgid "" "suffix `{1}' to create a literal of this type" msgstr "" -#: mcs/mcs/membercache.cs:1409 +#: mcs/mcs/membercache.cs:1412 msgid "" "A partial method declaration and partial method implementation cannot differ " "on use of `params' modifier" msgstr "" -#: mcs/mcs/membercache.cs:1412 +#: mcs/mcs/membercache.cs:1415 msgid "" "A partial method declaration and partial method implementation must be both " "an extension method or neither" msgstr "" -#: mcs/mcs/membercache.cs:1416 +#: mcs/mcs/membercache.cs:1419 #, csharp-format msgid "" "Overloaded contructor `{0}' cannot differ on use of parameter modifiers only" msgstr "" -#: mcs/mcs/membercache.cs:1420 +#: mcs/mcs/membercache.cs:1423 #, csharp-format msgid "" "Overloaded method `{0}' cannot differ on use of parameter modifiers only" msgstr "" -#: mcs/mcs/membercache.cs:1452 +#: mcs/mcs/membercache.cs:1455 msgid "" "A partial method declaration and partial method implementation must be both " "`static' or neither" msgstr "" -#: mcs/mcs/membercache.cs:1458 +#: mcs/mcs/membercache.cs:1461 msgid "" "A partial method declaration and partial method implementation must be both " "`unsafe' or neither" msgstr "" -#: mcs/mcs/membercache.cs:1466 +#: mcs/mcs/membercache.cs:1469 #, csharp-format msgid "A partial method `{0}' declaration is already defined" msgstr "" -#: mcs/mcs/membercache.cs:1470 +#: mcs/mcs/membercache.cs:1473 #, csharp-format msgid "A partial method `{0}' implementation is already defined" msgstr "" -#: mcs/mcs/membercache.cs:1481 mcs/mcs/property.cs:81 +#: mcs/mcs/membercache.cs:1484 mcs/mcs/property.cs:81 #, csharp-format msgid "A member `{0}' is already reserved" msgstr "" -#: mcs/mcs/membercache.cs:1492 +#: mcs/mcs/membercache.cs:1495 #, csharp-format msgid "Duplicate user-defined conversion in type `{0}'" msgstr "" -#: mcs/mcs/membercache.cs:1498 +#: mcs/mcs/membercache.cs:1501 #, csharp-format msgid "" "A member `{0}' is already defined. Rename this member or use different " @@ -2651,12 +2708,18 @@ msgid "" "`extern'" msgstr "" -#: mcs/mcs/method.cs:665 +#: mcs/mcs/method.cs:569 +msgid "" +"The DllImport attribute cannot be applied to a method that is generic or " +"contained in a generic type" +msgstr "" + +#: mcs/mcs/method.cs:671 #, csharp-format msgid "`{0}': A partial method parameters cannot use `out' modifier" msgstr "" -#: mcs/mcs/method.cs:729 +#: mcs/mcs/method.cs:740 #, csharp-format msgid "" "Conditional not valid on `{0}' because it is a constructor, destructor, " @@ -2665,56 +2728,56 @@ msgstr "" "Das Conditional-Attribut ist für `{0}' ungültig, weil dies ein Konstruktor, " "Destruktor, Operator oder eine explizite Schnittstellenimplementierung ist" -#: mcs/mcs/method.cs:899 +#: mcs/mcs/method.cs:910 msgid "" "A partial method cannot define access modifier or any of abstract, extern, " "new, override, sealed, or virtual modifiers" msgstr "" -#: mcs/mcs/method.cs:905 +#: mcs/mcs/method.cs:916 msgid "" "A partial method must be declared within a partial class or partial struct" msgstr "" -#: mcs/mcs/method.cs:910 +#: mcs/mcs/method.cs:921 #, csharp-format msgid "`{0}': Extension methods must be declared static" msgstr "`{0}': Erweiterungsmethoden müssen statisch sein" -#: mcs/mcs/method.cs:926 +#: mcs/mcs/method.cs:937 #, csharp-format msgid "Program `{0}' has more than one entry point defined: `{1}'" msgstr "" -#: mcs/mcs/method.cs:969 +#: mcs/mcs/method.cs:980 #, csharp-format msgid "Conditional not valid on `{0}' because it is an override method" msgstr "" "Das Conditional-Attribut ist für `{0}' ungültig, da es eine überschriebene " "Funktion ist" -#: mcs/mcs/method.cs:974 +#: mcs/mcs/method.cs:985 #, csharp-format msgid "Conditional not valid on `{0}' because its return type is not void" msgstr "" "Das Conditional-Attribut ist für `{0}' ungültig, da der Rückgabetyp nicht " "leer ist" -#: mcs/mcs/method.cs:979 +#: mcs/mcs/method.cs:990 msgid "Conditional not valid on interface members" msgstr "Das Conditional-Attribut ist für Schnittstellenmember ungültig" -#: mcs/mcs/method.cs:985 +#: mcs/mcs/method.cs:996 #, fuzzy, csharp-format msgid "Conditional member `{0}' cannot implement interface member `{1}'" msgstr "`{0}' implementiert den Schnittstellenmember `{1}' nicht" -#: mcs/mcs/method.cs:992 +#: mcs/mcs/method.cs:1003 #, csharp-format msgid "Conditional method `{0}' cannot have an out parameter" msgstr "" -#: mcs/mcs/method.cs:1180 +#: mcs/mcs/method.cs:1191 #, csharp-format msgid "" "The constraints for type parameter `{0}' of method `{1}' must match the " @@ -2722,18 +2785,18 @@ msgid "" "using an explicit interface implementation instead" msgstr "" -#: mcs/mcs/method.cs:1235 +#: mcs/mcs/method.cs:1246 msgid "The return type of an async method must be void, Task, or Task" msgstr "" -#: mcs/mcs/method.cs:1252 +#: mcs/mcs/method.cs:1263 #, fuzzy, csharp-format msgid "`{0}': Extension methods cannot be defined in a nested class" msgstr "" "`{0}': Erweiterungsmethoden müssen in einer nicht generischen statischen " "Klasse definiert werden" -#: mcs/mcs/method.cs:1258 +#: mcs/mcs/method.cs:1269 #, csharp-format msgid "" "`{0}': Extension methods require `System.Runtime.CompilerServices." @@ -2741,168 +2804,169 @@ msgid "" "reference?" msgstr "" -#: mcs/mcs/method.cs:1267 +#: mcs/mcs/method.cs:1278 #, csharp-format msgid "`{0}': Extension methods must be defined in a non-generic static class" msgstr "" "`{0}': Erweiterungsmethoden müssen in einer nicht generischen statischen " "Klasse definiert werden" -#: mcs/mcs/method.cs:1283 +#: mcs/mcs/method.cs:1294 #, fuzzy, csharp-format msgid "`{0}': an entry point cannot be async method" msgstr "`{0}': Abstrakte Eigenschaften können keine privaten-Accessoren haben" -#: mcs/mcs/method.cs:1333 +#: mcs/mcs/method.cs:1350 #, csharp-format msgid "" "A partial method `{0}' implementation is missing a partial method declaration" msgstr "" -#: mcs/mcs/method.cs:1371 +#: mcs/mcs/method.cs:1382 #, csharp-format msgid "Method or delegate cannot return type `{0}'" msgstr "" -#: mcs/mcs/method.cs:1449 +#: mcs/mcs/method.cs:1483 msgid "" "The constructor call cannot be dynamically dispatched within constructor " "initializer" msgstr "" -#: mcs/mcs/method.cs:1463 +#: mcs/mcs/method.cs:1497 #, fuzzy, csharp-format msgid "`{0}': Struct constructors cannot call base constructors" msgstr "`{0}': Statische Klassen können keinen Destruktor enthalten" -#: mcs/mcs/method.cs:1481 +#: mcs/mcs/method.cs:1515 #, csharp-format msgid "Constructor `{0}' cannot call itself" msgstr "" -#: mcs/mcs/method.cs:1633 +#: mcs/mcs/method.cs:1666 #, csharp-format msgid "`{0}': The static constructor must be parameterless" msgstr "" -#: mcs/mcs/method.cs:1654 +#: mcs/mcs/method.cs:1687 msgid "Structs cannot contain explicit parameterless constructors" msgstr "" -#: mcs/mcs/method.cs:1680 +#: mcs/mcs/method.cs:1713 #, fuzzy, csharp-format msgid "" -"`{0}': Structs with primary constructor cannot have explicit constructor" +"`{0}': Structs with primary constructor cannot specify default constructor " +"initializer" msgstr "`{0}': Statische Klassen können keinen Destruktor enthalten" -#: mcs/mcs/method.cs:1683 +#: mcs/mcs/method.cs:1716 #, fuzzy, csharp-format msgid "" "`{0}': Instance constructor of type with primary constructor must specify " "`this' constructor initializer" msgstr "`{0}': Statische Klassen können keinen Destruktor enthalten" -#: mcs/mcs/method.cs:1719 +#: mcs/mcs/method.cs:1752 #, csharp-format msgid "" "`{0}': A class with the ComImport attribute cannot have a user-defined " "constructor" msgstr "" -#: mcs/mcs/method.cs:1971 +#: mcs/mcs/method.cs:2004 #, fuzzy, csharp-format msgid "`{0}' is an accessor not found in interface member `{1}{2}'" msgstr "`{0}' implementiert den Schnittstellenmember `{1}' nicht" -#: mcs/mcs/method.cs:1977 +#: mcs/mcs/method.cs:2010 #, csharp-format msgid "" "`{0}.{1}' in explicit interface declaration is not a member of interface" msgstr "" -#: mcs/mcs/method.cs:1985 +#: mcs/mcs/method.cs:2018 #, csharp-format msgid "" "`{0}' explicit method implementation cannot implement `{1}' because it is an " "accessor" msgstr "" -#: mcs/mcs/method.cs:1995 +#: mcs/mcs/method.cs:2028 #, fuzzy, csharp-format msgid "Method `{0}' cannot implement interface accessor `{1}'" msgstr "`{0}' implementiert den Schnittstellenmember `{1}' nicht" -#: mcs/mcs/method.cs:2002 +#: mcs/mcs/method.cs:2035 #, csharp-format msgid "" "Accessor `{0}' cannot implement interface member `{1}' for type `{2}'. Use " "an explicit interface implementation" msgstr "" -#: mcs/mcs/method.cs:2009 +#: mcs/mcs/method.cs:2042 #, fuzzy, csharp-format msgid "" "Accessor `{0}' must be declared public to implement interface member `{1}'" msgstr "`{0}' implementiert den Schnittstellenmember `{1}' nicht" -#: mcs/mcs/method.cs:2029 +#: mcs/mcs/method.cs:2062 #, csharp-format msgid "" "`{0}': the explicit interface implementation cannot introduce the params " "modifier" msgstr "" -#: mcs/mcs/method.cs:2370 +#: mcs/mcs/method.cs:2403 #, csharp-format msgid "" "Attribute `{0}' is not valid on property or event accessors. It is valid on " "`{1}' declarations only" msgstr "" -#: mcs/mcs/method.cs:2603 +#: mcs/mcs/method.cs:2636 #, csharp-format msgid "User-defined operator `{0}' must be declared static and public" msgstr "" -#: mcs/mcs/method.cs:2647 +#: mcs/mcs/method.cs:2680 msgid "" "User-defined operator cannot take an object of the enclosing type and " "convert to an object of the enclosing type" msgstr "" -#: mcs/mcs/method.cs:2658 +#: mcs/mcs/method.cs:2691 msgid "User-defined conversion must convert to or from the enclosing type" msgstr "" -#: mcs/mcs/method.cs:2664 +#: mcs/mcs/method.cs:2697 #, csharp-format msgid "" "User-defined conversion `{0}' cannot convert to or from the dynamic type" msgstr "" -#: mcs/mcs/method.cs:2671 +#: mcs/mcs/method.cs:2704 #, csharp-format msgid "" "User-defined conversion `{0}' cannot convert to or from an interface type" msgstr "" -#: mcs/mcs/method.cs:2678 +#: mcs/mcs/method.cs:2711 #, csharp-format msgid "User-defined conversion `{0}' cannot convert to or from a base class" msgstr "" -#: mcs/mcs/method.cs:2684 +#: mcs/mcs/method.cs:2717 #, csharp-format msgid "User-defined conversion `{0}' cannot convert to or from a derived class" msgstr "" -#: mcs/mcs/method.cs:2691 +#: mcs/mcs/method.cs:2724 msgid "" "Overloaded shift operator must have the type of the first operand be the " "containing type, and the type of the second operand must be int" msgstr "" -#: mcs/mcs/method.cs:2700 +#: mcs/mcs/method.cs:2733 msgid "" "The return type for ++ or -- operator must be the containing type or derived " "from the containing type" @@ -2910,20 +2974,20 @@ msgstr "" "Der Rückgabetyp für die Operatoren ++ und -- muss der enthaltene Typ sein " "oder vom enthaltenen Typ abgeleitet sein" -#: mcs/mcs/method.cs:2705 +#: mcs/mcs/method.cs:2738 msgid "The parameter type for ++ or -- operator must be the containing type" msgstr "Der Parameter für den ++ oder -- Operator muss der enthaltene Typ sein" -#: mcs/mcs/method.cs:2712 +#: mcs/mcs/method.cs:2745 #, fuzzy msgid "The parameter type of a unary operator must be the containing type" msgstr "Der Parameter für den ++ oder -- Operator muss der enthaltene Typ sein" -#: mcs/mcs/method.cs:2720 +#: mcs/mcs/method.cs:2753 msgid "The return type of operator True or False must be bool" msgstr "" -#: mcs/mcs/method.cs:2735 +#: mcs/mcs/method.cs:2768 #, fuzzy msgid "One of the parameters of a binary operator must be the containing type" msgstr "Der Parameter für den ++ oder -- Operator muss der enthaltene Typ sein" @@ -2938,46 +3002,53 @@ msgstr "" msgid "The imported type `{0}' is defined multiple times" msgstr "" -#: mcs/mcs/namespace.cs:741 mcs/mcs/namespace.cs:753 +#: mcs/mcs/namespace.cs:742 mcs/mcs/namespace.cs:754 msgid "" "A using clause must precede all other namespace elements except extern alias " "declarations" msgstr "" -#: mcs/mcs/namespace.cs:769 +#: mcs/mcs/namespace.cs:770 #, csharp-format msgid "The using alias `{0}' appeared previously in this namespace" msgstr "" -#: mcs/mcs/namespace.cs:807 mcs/mcs/namespace.cs:830 +#: mcs/mcs/namespace.cs:808 mcs/mcs/namespace.cs:831 #, csharp-format msgid "The namespace `{0}' already contains a definition for `{1}'" msgstr "" -#: mcs/mcs/namespace.cs:1052 +#: mcs/mcs/namespace.cs:1071 #, csharp-format msgid "Namespace `{0}' contains a definition with same name as alias `{1}'" msgstr "" -#: mcs/mcs/namespace.cs:1105 +#: mcs/mcs/namespace.cs:1124 #, csharp-format msgid "`{0}' is an ambiguous reference between `{1}' and `{2}'" msgstr "" -#: mcs/mcs/namespace.cs:1301 +#: mcs/mcs/namespace.cs:1386 +#, csharp-format +msgid "" +"`{0}' is not a static class. A using namespace directive can only be applied " +"to static classes or namespace" +msgstr "" + +#: mcs/mcs/namespace.cs:1395 #, csharp-format msgid "" "`{0}' is a type not a namespace. A using namespace directive can only be " "applied to namespaces" msgstr "" -#: mcs/mcs/namespace.cs:1325 +#: mcs/mcs/namespace.cs:1418 #, csharp-format msgid "The extern alias `{0}' was not specified in -reference option" msgstr "" "Der externe Alias `{0}' wurde nicht in der -reference-Option angegeben." -#: mcs/mcs/nullable.cs:1082 +#: mcs/mcs/nullable.cs:1087 msgid "" "An expression tree cannot contain a coalescing operator with null left side" msgstr "" @@ -2986,121 +3057,128 @@ msgstr "" msgid "The params parameter must be a single dimensional array" msgstr "" -#: mcs/mcs/parameter.cs:327 +#: mcs/mcs/parameter.cs:319 msgid "An out parameter cannot have the `In' attribute" msgstr "" -#: mcs/mcs/parameter.cs:332 +#: mcs/mcs/parameter.cs:324 msgid "" "Do not use `System.ParamArrayAttribute'. Use the `params' keyword instead" msgstr "" -#: mcs/mcs/parameter.cs:339 +#: mcs/mcs/parameter.cs:331 msgid "" "Cannot specify only `Out' attribute on a ref parameter. Use both `In' and " "`Out' attributes or neither" msgstr "" -#: mcs/mcs/parameter.cs:348 +#: mcs/mcs/parameter.cs:340 #, csharp-format msgid "Cannot specify `{0}' attribute on optional parameter `{1}'" msgstr "" -#: mcs/mcs/parameter.cs:357 +#: mcs/mcs/parameter.cs:349 msgid "" "The CallerMemberName attribute can only be applied to parameters with " "default value" msgstr "" -#: mcs/mcs/parameter.cs:362 +#: mcs/mcs/parameter.cs:354 msgid "" "The CallerLineNumber attribute can only be applied to parameters with " "default value" msgstr "" -#: mcs/mcs/parameter.cs:367 +#: mcs/mcs/parameter.cs:359 msgid "" "The CallerFilePath attribute can only be applied to parameters with default " "value" msgstr "" -#: mcs/mcs/parameter.cs:404 +#: mcs/mcs/parameter.cs:401 #, csharp-format msgid "Method or delegate parameter cannot be of type `{0}'" msgstr "" -#: mcs/mcs/parameter.cs:414 +#: mcs/mcs/parameter.cs:411 #, csharp-format msgid "`{0}': static types cannot be used as parameters" msgstr "" -#: mcs/mcs/parameter.cs:420 +#: mcs/mcs/parameter.cs:417 #, csharp-format msgid "The extension method cannot be of type `{0}'" msgstr "" -#: mcs/mcs/parameter.cs:441 mcs/mcs/parameter.cs:453 +#: mcs/mcs/parameter.cs:439 #, csharp-format msgid "" "The CallerMemberName attribute cannot be applied because there is no " "standard conversion from `{0}' to `{1}'" msgstr "" -#: mcs/mcs/parameter.cs:465 +#: mcs/mcs/parameter.cs:458 +#, csharp-format +msgid "" +"The CallerLineNumberAttribute attribute cannot be applied because there is " +"no standard conversion from `{0}' to `{1}'" +msgstr "" + +#: mcs/mcs/parameter.cs:476 #, csharp-format msgid "" "The CallerFilePath attribute cannot be applied because there is no standard " "conversion from `{0}' to `{1}'" msgstr "" -#: mcs/mcs/parameter.cs:511 +#: mcs/mcs/parameter.cs:552 #, csharp-format msgid "" "Argument of type `{0}' is not applicable for the DefaultParameterValue " "attribute" msgstr "" -#: mcs/mcs/parameter.cs:515 +#: mcs/mcs/parameter.cs:556 #, csharp-format msgid "" "The DefaultParameterValue attribute is not applicable on parameters of type " "`{0}'" msgstr "" -#: mcs/mcs/parameter.cs:543 +#: mcs/mcs/parameter.cs:584 msgid "The type of the default value should match the type of the parameter" msgstr "" -#: mcs/mcs/parameter.cs:694 +#: mcs/mcs/parameter.cs:735 msgid "An expression tree parameter cannot use `ref' or `out' modifier" msgstr "" -#: mcs/mcs/parameter.cs:1203 +#: mcs/mcs/parameter.cs:1266 #, csharp-format msgid "The parameter name `{0}' conflicts with a compiler generated name" msgstr "" -#: mcs/mcs/parameter.cs:1360 +#: mcs/mcs/parameter.cs:1424 #, csharp-format msgid "" "The expression being assigned to optional parameter `{0}' must be a constant " "or default value" msgstr "" -#: mcs/mcs/parameter.cs:1377 +#: mcs/mcs/parameter.cs:1442 #, csharp-format msgid "" "The expression being assigned to nullable optional parameter `{0}' must be " "default value" msgstr "" -#: mcs/mcs/parameter.cs:1385 +#: mcs/mcs/parameter.cs:1450 #, csharp-format msgid "" "Optional parameter `{0}' of type `{1}' can only be initialized with `null'" msgstr "" -#: mcs/mcs/parameter.cs:1396 +#: mcs/mcs/parameter.cs:1461 #, csharp-format msgid "" "Optional parameter expression of type `{0}' cannot be converted to parameter " @@ -3209,26 +3287,46 @@ msgid "" "or indexer has both a get and a set accessor" msgstr "" -#: mcs/mcs/property.cs:853 +#: mcs/mcs/property.cs:838 +#, fuzzy, csharp-format +msgid "`{0}': Only auto-implemented properties can have initializers" +msgstr "`{0}': Instanzfeldinitialisierungen können nicht in Strukturen sein" + +#: mcs/mcs/property.cs:842 +#, fuzzy, csharp-format +msgid "`{0}': Properties inside interfaces cannot have initializers" +msgstr "`{0}': Instanzfeldinitialisierungen können nicht in Strukturen sein" + +#: mcs/mcs/property.cs:851 +#, csharp-format +msgid "Auto-implemented property `{0}' must have get accessor" +msgstr "" + +#: mcs/mcs/property.cs:857 +#, csharp-format +msgid "Auto-implemented property `{0}' must have set accessor or initializer" +msgstr "" + +#: mcs/mcs/property.cs:891 #, csharp-format msgid "" "Automatically implemented property `{0}' cannot be used inside a type with " "an explicit StructLayout attribute" msgstr "" -#: mcs/mcs/property.cs:1348 +#: mcs/mcs/property.cs:1386 #, csharp-format msgid "`{0}': event must be of a delegate type" msgstr "" -#: mcs/mcs/property.cs:1626 +#: mcs/mcs/property.cs:1664 #, csharp-format msgid "" "The `{0}' attribute is valid only on an indexer that is not an explicit " "interface member declaration" msgstr "" -#: mcs/mcs/property.cs:1630 +#: mcs/mcs/property.cs:1668 msgid "Cannot set the `IndexerName' attribute on an indexer marked override" msgstr "" @@ -3251,109 +3349,111 @@ msgstr "" msgid "Control cannot leave the body of a finally clause" msgstr "" -#: mcs/mcs/statement.cs:1170 +#: mcs/mcs/statement.cs:1174 #, csharp-format msgid "" "An object of a type convertible to `{0}' is required for the return statement" msgstr "" -#: mcs/mcs/statement.cs:1183 mcs/mcs/statement.cs:1207 +#: mcs/mcs/statement.cs:1187 #, csharp-format msgid "" "`{0}': A return keyword must not be followed by any expression when method " "returns void" msgstr "" -#: mcs/mcs/statement.cs:1220 -#, csharp-format +#: mcs/mcs/statement.cs:1206 +msgid "Cannot return an expression of type `void'" +msgstr "" + +#: mcs/mcs/statement.cs:1214 mcs/mcs/statement.cs:1247 msgid "" -"`{0}': A return keyword must not be followed by an expression when async " -"delegate returns `Task'. Consider using `Task' return type" +"Anonymous function or lambda expression converted to a void returning " +"delegate cannot return a value" msgstr "" #: mcs/mcs/statement.cs:1224 +msgid "" +"Async lambda expression or anonymous method converted to a `Task' cannot " +"return a value. Consider returning `Task'" +msgstr "" + +#: mcs/mcs/statement.cs:1227 #, csharp-format msgid "" "`{0}': A return keyword must not be followed by an expression when async " "method returns `Task'. Consider using `Task' return type" msgstr "" -#: mcs/mcs/statement.cs:1237 +#: mcs/mcs/statement.cs:1238 #, csharp-format msgid "" "`{0}': The return expression type of async method must be `{1}' rather than " "`Task<{1}>'" msgstr "" -#: mcs/mcs/statement.cs:1247 -#, csharp-format -msgid "" -"`{0}': A return keyword must not be followed by any expression when delegate " -"returns void" -msgstr "" - -#: mcs/mcs/statement.cs:1280 +#: mcs/mcs/statement.cs:1278 #, csharp-format msgid "" "Cannot convert `{0}' to delegate type `{1}' because some of the return types " "in the block are not implicitly convertible to the delegate return type" msgstr "" -#: mcs/mcs/statement.cs:1337 +#: mcs/mcs/statement.cs:1354 msgid "" "Cannot return a value from iterators. Use the yield return statement to " "return a value, or yield break to end the iteration" msgstr "" -#: mcs/mcs/statement.cs:1399 +#: mcs/mcs/statement.cs:1416 #, csharp-format msgid "" "The label `{0}:' could not be found within the scope of the goto statement" msgstr "" -#: mcs/mcs/statement.cs:1737 +#: mcs/mcs/statement.cs:1771 msgid "A goto case is only valid inside a switch statement" msgstr "" -#: mcs/mcs/statement.cs:1760 +#: mcs/mcs/statement.cs:1794 msgid "" "A throw statement with no arguments is not allowed outside of a catch clause" msgstr "" -#: mcs/mcs/statement.cs:1765 +#: mcs/mcs/statement.cs:1799 msgid "" "A throw statement with no arguments is not allowed inside of a finally " "clause nested inside of the innermost catch clause" msgstr "" -#: mcs/mcs/statement.cs:1783 mcs/mcs/statement.cs:6436 +#: mcs/mcs/statement.cs:1817 mcs/mcs/statement.cs:6626 msgid "The type caught or thrown must be derived from System.Exception" msgstr "" -#: mcs/mcs/statement.cs:1925 +#: mcs/mcs/statement.cs:1984 msgid "No enclosing loop out of which to break or continue" msgstr "" -#: mcs/mcs/statement.cs:2094 +#: mcs/mcs/statement.cs:2153 msgid "A fixed statement cannot use an implicitly typed local variable" msgstr "" -#: mcs/mcs/statement.cs:2099 +#: mcs/mcs/statement.cs:2158 msgid "An implicitly typed local variable cannot be a constant" msgstr "" -#: mcs/mcs/statement.cs:2104 +#: mcs/mcs/statement.cs:2163 msgid "" "An implicitly typed local variable declarator must include an initializer" msgstr "" -#: mcs/mcs/statement.cs:2109 +#: mcs/mcs/statement.cs:2168 msgid "" "An implicitly typed local variable declaration cannot include multiple " "declarators" msgstr "" -#: mcs/mcs/statement.cs:2750 +#: mcs/mcs/statement.cs:2814 #, csharp-format msgid "" "A local variable named `{0}' cannot be declared in this scope because it " @@ -3361,114 +3461,123 @@ msgid "" "scope to denote something else" msgstr "" -#: mcs/mcs/statement.cs:2762 +#: mcs/mcs/statement.cs:2826 #, csharp-format msgid "A local variable named `{0}' is already defined in this scope" msgstr "" -#: mcs/mcs/statement.cs:2769 +#: mcs/mcs/statement.cs:2833 #, csharp-format msgid "" "The type parameter name `{0}' is the same as local variable or parameter name" msgstr "" -#: mcs/mcs/statement.cs:3617 +#: mcs/mcs/statement.cs:3712 #, csharp-format msgid "" "The out parameter `{0}' must be assigned to before control leaves the " "current method" msgstr "" -#: mcs/mcs/statement.cs:3880 +#: mcs/mcs/statement.cs:3975 #, fuzzy msgid "Async methods cannot have ref or out parameters" msgstr "`{0}' implementiert den Schnittstellenmember `{1}' nicht" -#: mcs/mcs/statement.cs:3886 +#: mcs/mcs/statement.cs:3981 msgid "__arglist is not allowed in parameter list of async methods" msgstr "" -#: mcs/mcs/statement.cs:3892 +#: mcs/mcs/statement.cs:3987 #, fuzzy msgid "Async methods cannot have unsafe parameters" msgstr "`{0}' implementiert den Schnittstellenmember `{1}' nicht" -#: mcs/mcs/statement.cs:4089 +#: mcs/mcs/statement.cs:4184 #, csharp-format msgid "The label `{0}' is a duplicate" msgstr "" -#: mcs/mcs/statement.cs:4098 mcs/mcs/statement.cs:4109 +#: mcs/mcs/statement.cs:4193 mcs/mcs/statement.cs:4204 #, csharp-format msgid "" "The label `{0}' shadows another label by the same name in a contained scope" msgstr "" -#: mcs/mcs/statement.cs:4312 +#: mcs/mcs/statement.cs:4425 #, csharp-format msgid "`{0}': not all code paths return a value" msgstr "" -#: mcs/mcs/statement.cs:4430 +#: mcs/mcs/statement.cs:4543 #, csharp-format msgid "The label `{0}' already occurs in this switch statement" msgstr "" -#: mcs/mcs/statement.cs:4554 +#: mcs/mcs/statement.cs:4667 #, csharp-format msgid "Control cannot fall through from one case label `{0}' to another" msgstr "" -#: mcs/mcs/statement.cs:4933 +#: mcs/mcs/statement.cs:5077 #, csharp-format msgid "" "A switch expression of type `{0}' cannot be converted to an integral type, " "bool, char, string, enum or nullable type" msgstr "" -#: mcs/mcs/statement.cs:5697 +#: mcs/mcs/statement.cs:5859 #, csharp-format msgid "`{0}' is not a reference type as required by the lock statement" msgstr "" -#: mcs/mcs/statement.cs:6078 +#: mcs/mcs/statement.cs:6240 msgid "The type of locals declared in a fixed statement must be a pointer type" msgstr "" -#: mcs/mcs/statement.cs:6094 +#: mcs/mcs/statement.cs:6256 msgid "" "The right hand side of a fixed statement assignment may not be a cast " "expression" msgstr "" -#: mcs/mcs/statement.cs:6164 +#: mcs/mcs/statement.cs:6326 msgid "" "You cannot use the fixed statement to take the address of an already fixed " "expression" msgstr "" -#: mcs/mcs/statement.cs:6688 +#: mcs/mcs/statement.cs:6487 +#, fuzzy +msgid "" +"The `await' operator cannot be used in the filter expression of a catch " +"clause" +msgstr "" +"Die `new()'-Einschränkung kann nicht mit der `struct'-Einschränkung genutzt " +"werden" + +#: mcs/mcs/statement.cs:7059 #, csharp-format msgid "" "A previous catch clause already catches all exceptions of this or a super " "type `{0}'" msgstr "" -#: mcs/mcs/statement.cs:6866 +#: mcs/mcs/statement.cs:7288 #, csharp-format msgid "" "`{0}': type used in a using statement must be implicitly convertible to " "`System.IDisposable'" msgstr "" -#: mcs/mcs/statement.cs:7277 +#: mcs/mcs/statement.cs:7700 #, csharp-format msgid "" "foreach statement requires that the return type `{0}' of `{1}' must have a " "suitable public MoveNext method and public Current property" msgstr "" -#: mcs/mcs/statement.cs:7321 +#: mcs/mcs/statement.cs:7744 #, csharp-format msgid "" "foreach statement cannot operate on variables of type `{0}' because it " @@ -3476,60 +3585,63 @@ msgid "" "implementation" msgstr "" -#: mcs/mcs/statement.cs:7343 +#: mcs/mcs/statement.cs:7766 #, csharp-format msgid "" "foreach statement cannot operate on variables of type `{0}' because it does " "not contain a definition for `{1}' or is inaccessible" msgstr "" -#: mcs/mcs/statement.cs:7578 +#: mcs/mcs/statement.cs:8001 msgid "Use of null is not valid in this context" msgstr "" -#: mcs/mcs/statement.cs:7590 +#: mcs/mcs/statement.cs:8013 #, csharp-format msgid "Foreach statement cannot operate on a `{0}'" msgstr "" -#: mcs/mcs/typemanager.cs:796 +#: mcs/mcs/typemanager.cs:797 #, csharp-format msgid "The predefined type `{0}.{1}' is not defined or imported" msgstr "" -#: mcs/mcs/typemanager.cs:841 +#: mcs/mcs/typemanager.cs:842 #, csharp-format msgid "" "The predefined type `{0}.{1}' is defined multiple times. Using definition " "from `{2}'" msgstr "" -#: mcs/mcs/typemanager.cs:852 +#: mcs/mcs/typemanager.cs:853 #, csharp-format msgid "" "The predefined type `{0}.{1}' is defined in an assembly that is not " "referenced." msgstr "" -#: mcs/mcs/typemanager.cs:862 +#: mcs/mcs/typemanager.cs:863 #, csharp-format msgid "The predefined type `{0}.{1}' is not declared correctly" msgstr "" -#: mcs/mcs/typemanager.cs:988 +#: mcs/mcs/typemanager.cs:989 #, csharp-format msgid "" "The compiler required member `{0}.{1}{2}' could not be found or is " "inaccessible" msgstr "" -#: mcs/mcs/typemanager.cs:1107 +#: mcs/mcs/typemanager.cs:1108 #, csharp-format msgid "" "Cannot take the address of, get the size of, or declare a pointer to a " "managed type `{0}'" msgstr "" +#~ msgid "`{0}': Structs cannot have instance field initializers" +#~ msgstr "`{0}': Instanzfeldinitialisierungen können nicht in Strukturen sein" + #~ msgid "" #~ "The type or namespace name `{0}' could not be found. Are you missing a " #~ "using directive or an assembly reference?" @@ -3582,10 +3694,6 @@ msgstr "" #~ msgid "Only class types can contain destructor" #~ msgstr "`{0}': Statische Klassen können keinen Destruktor enthalten" -#, fuzzy -#~ msgid "`{0}': event in interface cannot have an initializer" -#~ msgstr "`{0}': Instanzfeldinitialisierungen können nicht in Strukturen sein" - #, fuzzy #~ msgid "`{0}': abstract event cannot have an initializer" #~ msgstr "`{0}': Instanzfeldinitialisierungen können nicht in Strukturen sein" diff --git a/po/mcs/es.gmo b/po/mcs/es.gmo index d937a45f2de2bfdc5620566df45df6ad6e766c33..37be0e73319c343813b19b684febc85ef84fd304 100644 GIT binary patch delta 2272 zcmYk-Uu+ar6vy#XT4-sP!j@9lmfEFasV%jO0^2{dEZEWtwXAE|?rLjWTU^p$AVEa@ zw@oB$n)rf^@oyqAL}TQky1qzKqD=rr4VosTK8TM7iufQeJ^+4yGh^aS&wTD3X7AiN z_ssCeM9%l=^tF<_w~dw}))IZWW|R2l5)QQK0<%i|0+-Of6cA2H^2%Tn5oWoAMjg8pib8j?`yBTLOiFZ*GCRoizJcR)~ zj}e^5AO?z=16!~Hk77NZ!ZkR9wcOvX(us279wsol+^iozLp@>63U{2q9>&wirFIAJ zL!aO5QLM+6cnFn&H!zIfdgFhPC$?}2S;p5f%KdGQj&8V~Un>Kz;*&UwT5(yayRe=3 z5aSPU2VTa5=v!s>FdoNtJd1m90rz6K%w1pxwV)qRTbR3={Od#y9i{XHzJfCt!e;Um z!Es!VpQCEzXS^T(M5WeG{&l_qYjL;d5!}r9L)2FNf(P&}>cLXwo3XmeP2~Uv8K1>={0X%cK2ECGdQtOC;^7>M5~~?Ea-c3PhN_ie z9L6(gI@*iHdcsxRJcin`oA?;kZ_;&XJ`8kJJhxD(ucP9kcodcTi>TE5sH6cL zMWyr`)bGkj*Dj3VTlgNT7B+5iuS+3Q+YGM5zmVjZpTY}rf7?cfRM;T0IGaQkZ|9J? z><02@RqTiMFpiq=YfRz->UW)#wo?8g?!~LvhBZ{M7CMH?>}lkm>^i1(K{d-&>V{Dl ze1%i?sw_)OOLRF%+gizl8-;|~pkx!@?_#QZWG>DbNQ-oSBq0KHPR20>O z_I4RjL9h?b{hf~hWB0!@OcHv(v_B&RTjYEYR-j(!0HOD21ECK=8KL4(Q!%OSA!>%=~jhAXxRo#D$;&R>-jh`S?`f4f=-hJDz0j(-~pPT+8hiu SwQLDxPprEV$bQ^!i&66=cbm^F1qRc`JKbo`p)OPzTdCs_wRY0 z-(fm(dn6%pGc)PDF?xuV#QsFHQM|a255`ooSsqT~V!Vwz@G-VxU5eROJddy99M)n% zs+k|VuoB0y5$7;~rHjnAn?-DtNfjHv;WkW5Gh2r(s0*FO*YIa-M;~{g6As`Dcm;Ft z2Kw50HQ^+Bf zm0|WQ7GXWs<1=^`m4OSm5r2=bGcvs=wkF)m{-@Z?_3a)LU2qdeD+6P=2j@_Cymnda z#yW5<>nLuvU?DCb?@DbcYJVG+;G1zr@nzOuqe^ubd(f8~d$33@`B(Eyuu+N+ zQR`gJswX&vda?=B32x#RT*TFMgN?WjBUpozs0X@-8?cbh)&FoE-CH0pwDSH+t27%HU`=-@wChbvjAB%N4|mr&=K#eoFgoP6F0*6;E` zf7&>zB$E*)T}&RKYOrP)s&m<)cb#uiN1IpmBLy&PN_eE&Duw$K8p@g z>N{~iUPGlcoiyn<7q{a$evEfey>M!M?0erJm#{P%jdrj)T*LLPi;07ys7!o;+@#H- zx;KUVb1thwwk(9I;bqhblWFC4tVSI-hAP32sAes$iv1uBqi!^cJMaNU_>NU_o3(fh zmAXmP7ZUk)BQ~IZ+b`f|yoG)&-W1E!VbuC7tjE7lDc`_JNANhd;@_x@G?M>5JXc5l z)l^T|*o#>lr6)UrZTJi7g2jG18|R10qh?Ja)Kvc+c`ObPYRdVslnK?cw+KJ6lhApS zReue7#~VIA)qJYA>+QsT)1P9l(i9PDo(07GILIVtet|87L#!Z{5dR;_q{b>@S^WCe z$wFP6NX(CRCK*H)L8-hyPWh-zY49R=KPH*pD%O;mE+o`9sRSAKNgd;rr-{{shF&|piW)(JcJS)1bs@nkZ^eX~b2p)q@)CK2 z*6>Q(5nHx;e>egxN{BG631>P=9y^1EZ%L@uFj?;Yu%ieHrps)9&8%@qDOiHaRE3a_M zE2}FuM%U;6nzN}dFyy#H-g$-xnTPtFfnhi3hMce)atC#Mw|9IX*gxnFIYF1J9UbWB Ms8ICJ>e-}!0r-RwGynhq diff --git a/po/mcs/es.po.REMOVED.git-id b/po/mcs/es.po.REMOVED.git-id index 6da6220a87..5f0410a5b7 100644 --- a/po/mcs/es.po.REMOVED.git-id +++ b/po/mcs/es.po.REMOVED.git-id @@ -1 +1 @@ -bfa9b0f159ce1f7e52f254ed0aa870aa395c434d \ No newline at end of file +7f73c5e0dd3a3b0bfa94219123173809a01fd19d \ No newline at end of file diff --git a/po/mcs/ja.gmo b/po/mcs/ja.gmo index 253c8852a4588919a5a55e01bba716a2ee0a26dc..5e01efe9bce6dad0f50589a9ae697937b91b8392 100644 GIT binary patch delta 2598 zcmZYAeN2^Q7{~DoL=;pI6cv#dK|t~CsGz)icuhfh5fJe$Q6vh~FmW}kqcj=jmNhkJ zW^3hY)3q9y{ZY7ZIjdRz(N@`(&VTx&0)?f`)wJ*Ld5)W_d%Mo(e(rP5^W67!-S;`Y zX96C+8{oSU8Fbuedx;su)lp`rao-qTXm>))VsRKJV0ft63XH|I*o?*4kIOM|oY@mt zh->f_%)?)B8^(+`^P&$k!M>nV!N7fN#1%ZH6whK74r2+<4Ku66c3g-9sEG_?8D@t& zH?)K3<@zFK;6v=djEU|9&tW0gzhfHDw*?Vq^B8ErXzWHWzJm#P3$rmWlG$S(PQwPA zjk~c5PvJWJ1C^PQNoIBU7S`hkuEMg(X3W`6U>wi4_vsYjW#ls!5@nW%v8dE}aT&hk zzrKLV(4Sa~IaAyTyoP$vEmX#`rkd5D54C{raV~~2drdSOeGBLurLzVvVF5;whBmCn z#rP%W<6oGLOQ*Y~YQ=J{zeOz|n)EEgO{mfw$41U5mEu;v$50dKN0n>@TQEM(U0DxmGoHsec;A1W6mPbL>lVC#Un6U^{R!kh zm(IxqcO^fdR-8D~eLx**vvi?Wa2XfkJZBEKMUB6SOYj?1MjxQQSIz1&u?w|; z&u}T;@%aZ*$ww0d8?g`vFbji{-CduL30%L5`S=kQ;1H^|o)q`St++aX&5JD3hEm;Q z8%7#c(iwOR4`Czv;>goFI{Q%r*YN=6q`5Wh$MswXvvW$Y(eDRX!Sx{Sz+CE4jc0K= z{)5Uu?tJzG9ziW^5Z^!#8;|e%>b@s24u3_qi;bo}DoGN)!1Jw^&S?g|!-LpHfx2)6dD}WN-0{1} ziL*`$M^fx{)Pz4rzG^XS1g*RhoAC%X;62=kRcwF__#y7Y5bE2b2Xxcv#Bd6!FCIpH zU<9AUUFzHk>+X-0Rney6;6)NyZm5 z8Ehyf!K(FL2DH**3a1I3!FIfjo!H27VgvXSK{mAg%|A>nCarKw@I2}PKcfD8l1Yyy zz615ZpHLY|=H?r)4L9OfWj_BKG}|UiZ^j5 zo?ta9O)&L%7OQYR4xsLL8+E#tRPl3;pZMr##p%^%EYSJ&0%w-nQFYS|AGI1fTZpa1 z6youw42BUwgtAICZ7iXQs7)ZW7`3@B&IWgCs&pzON`b9P4#@#ymVAXH7fbP7Rd-(#HK&?PB8r)Jl{D=8lR&V+ISb|l@sNh?MFjN zbQ+0LVk!|z=;+NRrV%Z~I6`d{(LtmWi->lD1LFM8XtS#YH1tJHH(xYOT>6ftQJ^R;|mHeShzJ@Y#Ov=XqW@@B2Kz=l7iR z@RZ-VxBWbWp#evPwu6WwzV#P5jfW<1p+y9XL}MgQ#vELQMOcHcU?C3UQcRvGvJyAr zT0DnKaQq|@2QJ5aJcGF+9=SuOj2m%0-Hsi&0>8n97&(QPVI`L1F`S2YQ6~}^B2tWv z$OGj=%*PR2fQeH@I^{2mN3<>Wu@~gcoobTIZOjz=7qA`_YP{n1@pm%q_FwBF2YNpYt`^{6roi zixnGb)Z^QZy0yFTHT2w}W2du+e67cyP{+B+R5%{TRTxEnYte~Cc-dzl`%uQX6x;Cx zR$x$?dEDwyGjIay@d4_>N-4afdj1d7(FY`uw^HoH2E2lLKaRY;i5;j94#_l&&5i|( z-$Bj9Z6qm@!2UV06m_EKP@nr3#$XZqLitD&X6X6vrt>T}yx5OvAACTn8FQ^lqNg?nE*@;VW0GsgvK84k6{0968>u}OSk=^>>7CHxU81=Zg z*hu~0J=~2IRNB*c14)*oQ?Wf*kE`((c45jAvqny#oAGbB0ymMK5*$Eo$v>zQ%4L?G zt#o?n=vU~td~=U&XcLYHUdKOiGhQX%YC0RpT;&+Dc)5u@Q-YV9=Xy12wYyO7pY%D1 z`rPP3b4#`qlGqd6IL{5;>nb)(S9%(CLjFwu87xE1%w>%BV&VO)<6yq)r{=JI=oiwG4~{q{8Z{6Q2*h3WDXL`rw*VKnY`S`4Vb}O zs_|viQ#0fnFJ={=GVVne7MGh_^ci+A_FqGNp&Rvir#y7@n2q3b*ivDx{5G;sNg%cn zNrbk1B7~?Xv{73|##)dvFxnKZt;AMB>tG|Hlhihqh#<63wI)1UxM&Jvh-6|qF_)M` zjI|m%DMT2dY1ZZ>s7K>Sa`KEbZb$u&m_bldMr-C8O{AJbnTEPG+P0eq%N$rBkBB8^ znYWB;UFYjteTJf@u#KSZjNf>UwoxY_K}4K(Xp@Ofqh}VZZpm0cuk{ZT z^g>G~;tAbjEwmkkHn!hroJ^yDCSrkk%lO`pq)#b4YMUPQ%uYM#(Hm>!yx(Z!xdsz_ z?Hj**dh;=Y!Zq4BpG~M=KH)@%?;fRNGzV8bj++S%lu^iFwE0{c2`xG;bZv8pq(ClO z(K88c8AO-SqgpY**Dv;t27MfnR_Wf>>2PniI_xgjR=2gq-sQBmy0*LRE{D_F-0Ey= zV%X|#wYRnIbb4QpcLfCJre$VXGjkVZ<#\n" "Language-Team: LANGUAGE \n" @@ -34,7 +34,7 @@ msgid "" "mismatch" msgstr "" -#: mcs/mcs/anonymous.cs:1054 mcs/mcs/ecore.cs:5492 +#: mcs/mcs/anonymous.cs:1054 mcs/mcs/ecore.cs:5515 #, csharp-format msgid "Delegate `{0}' does not take `{1}' arguments" msgstr "" @@ -75,23 +75,23 @@ msgid "" "context" msgstr "" -#: mcs/mcs/anonymous.cs:1363 +#: mcs/mcs/anonymous.cs:1378 #, csharp-format msgid "" "Local variable or parameter `{0}' cannot have their address taken and be " "used inside an anonymous method, lambda expression or query expression" msgstr "" -#: mcs/mcs/anonymous.cs:1383 +#: mcs/mcs/anonymous.cs:1398 #, csharp-format msgid "Cannot convert async {0} to delegate type `{1}'" msgstr "" -#: mcs/mcs/anonymous.cs:1693 +#: mcs/mcs/anonymous.cs:1708 msgid "An expression tree cannot contain an anonymous method expression" msgstr "" -#: mcs/mcs/anonymous.cs:1995 +#: mcs/mcs/anonymous.cs:2023 #, csharp-format msgid "" "`{0}': An anonymous type cannot have multiple properties with the same name" @@ -106,20 +106,20 @@ msgstr "" msgid "An expression tree cannot contain named argument" msgstr "" -#: mcs/mcs/argument.cs:363 +#: mcs/mcs/argument.cs:373 #, csharp-format msgid "" "The method group `{0}' cannot be used as an argument of dynamic operation. " "Consider using parentheses to invoke the method" msgstr "" -#: mcs/mcs/argument.cs:367 +#: mcs/mcs/argument.cs:377 msgid "" "An anonymous method or lambda expression cannot be used as an argument of " "dynamic operation. Consider using a cast" msgstr "" -#: mcs/mcs/argument.cs:370 +#: mcs/mcs/argument.cs:380 #, csharp-format msgid "" "An expression of type `{0}' cannot be used as an argument of dynamic " @@ -130,55 +130,72 @@ msgstr "" msgid "An expression tree cannot contain an assignment operator" msgstr "" -#: mcs/mcs/assign.cs:779 +#: mcs/mcs/assign.cs:780 #, csharp-format msgid "Cannot assign to `{0}' because it is a `{1}'" msgstr "" -#: mcs/mcs/assembly.cs:286 +#: mcs/mcs/assembly.cs:210 +msgid "" +"Executables cannot be satellite assemblies. Remove the attribute or keep it " +"empty" +msgstr "" + +#: mcs/mcs/assembly.cs:234 +#, csharp-format +msgid "" +"The specified version string `{0}' does not conform to the required format - " +"major[.minor[.build[.revision]]]" +msgstr "" + +#: mcs/mcs/assembly.cs:287 msgid "Invalid type specified as an argument for TypeForwardedTo attribute" msgstr "" -#: mcs/mcs/assembly.cs:294 +#: mcs/mcs/assembly.cs:295 #, csharp-format msgid "A duplicate type forward of type `{0}'" msgstr "" -#: mcs/mcs/assembly.cs:303 +#: mcs/mcs/assembly.cs:304 #, csharp-format msgid "Cannot forward type `{0}' because it is defined in this assembly" msgstr "" -#: mcs/mcs/assembly.cs:309 +#: mcs/mcs/assembly.cs:310 #, csharp-format msgid "Cannot forward type `{0}' because it is a nested type" msgstr "" -#: mcs/mcs/assembly.cs:338 +#: mcs/mcs/assembly.cs:327 +msgid "Friend assembly reference cannot have `null' value" +msgstr "" + +#: mcs/mcs/assembly.cs:344 #, csharp-format msgid "" "Friend assembly reference `{0}' is invalid. InternalsVisibleTo declarations " "cannot have a version, culture or processor architecture specified" msgstr "" -#: mcs/mcs/assembly.cs:346 +#: mcs/mcs/assembly.cs:352 #, csharp-format msgid "" "Friend assembly reference `{0}' is invalid. Strong named assemblies must " "specify a public key in their InternalsVisibleTo declarations" msgstr "" -#: mcs/mcs/assembly.cs:397 +#: mcs/mcs/assembly.cs:403 #, csharp-format msgid "Referenced assembly `{0}' does not have a strong name" msgstr "" -#: mcs/mcs/assembly.cs:403 +#: mcs/mcs/assembly.cs:409 #, csharp-format msgid "Referenced assembly `{0}' has different culture setting of `{1}'" msgstr "" -#: mcs/mcs/assembly.cs:418 +#: mcs/mcs/assembly.cs:424 #, csharp-format msgid "" "Friend access was granted to `{0}', but the output assembly is named `{1}'. " @@ -186,147 +203,139 @@ msgid "" "it" msgstr "" -#: mcs/mcs/assembly.cs:432 +#: mcs/mcs/assembly.cs:438 msgid "" "Could not sign the assembly. ECMA key can only be used to delay-sign " "assemblies" msgstr "" -#: mcs/mcs/assembly.cs:686 +#: mcs/mcs/assembly.cs:692 msgid "" "Added modules must be marked with the CLSCompliant attribute to match the " "assembly" msgstr "" -#: mcs/mcs/assembly.cs:721 mcs/mcs/assembly.cs:736 +#: mcs/mcs/assembly.cs:727 mcs/mcs/assembly.cs:742 #, csharp-format msgid "" "Option `{0}' overrides attribute `{1}' given in a source file or added module" msgstr "" -#: mcs/mcs/assembly.cs:771 +#: mcs/mcs/assembly.cs:777 msgid "Delay signing was requested but no key file was given" msgstr "" -#: mcs/mcs/assembly.cs:792 +#: mcs/mcs/assembly.cs:798 msgid "Cannot link resource file when building a module" msgstr "" -#: mcs/mcs/assembly.cs:797 +#: mcs/mcs/assembly.cs:803 #, csharp-format msgid "Error reading resource file `{0}'" msgstr "" -#: mcs/mcs/assembly.cs:867 +#: mcs/mcs/assembly.cs:873 msgid "Could not write to file `" msgstr "" -#: mcs/mcs/assembly.cs:911 +#: mcs/mcs/assembly.cs:917 msgid "Cannot specify -main if building a module or library" msgstr "" -#: mcs/mcs/assembly.cs:937 -#, csharp-format -msgid "Could not find `{0}' specified for Main method" -msgstr "" - #: mcs/mcs/assembly.cs:943 #, csharp-format +msgid "Could not find `{0}' specified for Main method" +msgstr "" + +#: mcs/mcs/assembly.cs:949 +#, csharp-format msgid "`{0}' specified for Main method must be a valid class or struct" msgstr "" -#: mcs/mcs/assembly.cs:947 +#: mcs/mcs/assembly.cs:953 #, csharp-format msgid "`{0}' does not have a suitable static Main method" msgstr "" -#: mcs/mcs/assembly.cs:950 +#: mcs/mcs/assembly.cs:956 #, csharp-format msgid "" "Program `{0}' does not contain a static `Main' method suitable for an entry " "point" msgstr "" -#: mcs/mcs/assembly.cs:969 +#: mcs/mcs/assembly.cs:975 msgid "Error during assembly signing. " msgstr "" -#: mcs/mcs/assembly.cs:1154 +#: mcs/mcs/assembly.cs:1160 #, csharp-format msgid "Metadata file `{0}' could not be found" msgstr "" -#: mcs/mcs/assembly.cs:1159 +#: mcs/mcs/assembly.cs:1165 #, csharp-format msgid "Metadata file `{0}' does not contain valid metadata" msgstr "" -#: mcs/mcs/assembly.cs:1165 +#: mcs/mcs/assembly.cs:1171 #, csharp-format msgid "" "Referenced assembly file `{0}' is a module. Consider using `-addmodule' " "option to add the module" msgstr "" -#: mcs/mcs/assembly.cs:1172 +#: mcs/mcs/assembly.cs:1178 #, csharp-format msgid "" "Added module file `{0}' is an assembly. Consider using `-r' option to " "reference the file" msgstr "" -#: mcs/mcs/async.cs:78 -msgid "The `await' operator cannot be used in the body of a finally clause" -msgstr "" - -#: mcs/mcs/async.cs:83 +#: mcs/mcs/async.cs:79 msgid "The `await' operator cannot be used in the body of a lock statement" msgstr "" -#: mcs/mcs/async.cs:88 +#: mcs/mcs/async.cs:84 msgid "The `await' operator cannot be used in an unsafe context" msgstr "" -#: mcs/mcs/async.cs:164 +#: mcs/mcs/async.cs:160 #, csharp-format msgid "" "Cannot await void method `{0}'. Consider changing method return type to " "`Task'" msgstr "" -#: mcs/mcs/async.cs:167 +#: mcs/mcs/async.cs:163 #, csharp-format msgid "Cannot await `{0}' expression" msgstr "" -#: mcs/mcs/async.cs:315 +#: mcs/mcs/async.cs:311 #, csharp-format msgid "" "The awaiter type `{0}' must have suitable IsCompleted and GetResult members" msgstr "" -#: mcs/mcs/async.cs:323 +#: mcs/mcs/async.cs:319 msgid "" "The `await' operator may only be used in a query expression within the first " "collection expression of the initial `from' clause or within the collection " "expression of a `join' clause" msgstr "" -#: mcs/mcs/async.cs:328 -msgid "The `await' operator cannot be used in a catch clause" -msgstr "" - -#: mcs/mcs/async.cs:360 +#: mcs/mcs/async.cs:352 #, csharp-format msgid "The `await' operand type `{0}' must have suitable GetAwaiter method" msgstr "" -#: mcs/mcs/async.cs:376 +#: mcs/mcs/async.cs:368 #, csharp-format msgid "The awaiter type `{0}' must implement interface `{1}'" msgstr "" -#: mcs/mcs/async.cs:658 +#: mcs/mcs/async.cs:667 msgid "" "Cannot find compiler required types for asynchronous functions support. Are " "you targeting the wrong framework version?" @@ -365,56 +374,86 @@ msgstr "" msgid "Do not use `{0}' directly. Use `dynamic' keyword instead" msgstr "" -#: mcs/mcs/attribute.cs:267 +#: mcs/mcs/attribute.cs:263 #, csharp-format msgid "Error during emitting `{0}' attribute. The reason is `{1}'" msgstr "" -#: mcs/mcs/attribute.cs:327 +#: mcs/mcs/attribute.cs:269 +#, csharp-format +msgid "Invalid value for argument to `{0}' attribute" +msgstr "" + +#: mcs/mcs/attribute.cs:275 +#, csharp-format +msgid "" +"Security attribute `{0}' is not valid on this declaration type. Security " +"attributes are only valid on assembly, type and method declarations" +msgstr "" + +#: mcs/mcs/attribute.cs:330 #, csharp-format msgid "" "`{0}' is ambiguous between `{1}' and `{2}'. Use either `@{0}' or `{0}" "Attribute'" msgstr "" -#: mcs/mcs/attribute.cs:353 mcs/mcs/attribute.cs:364 +#: mcs/mcs/attribute.cs:356 mcs/mcs/attribute.cs:367 #, csharp-format msgid "`{0}': is not an attribute class" msgstr "" -#: mcs/mcs/attribute.cs:473 +#: mcs/mcs/attribute.cs:476 #, csharp-format msgid "Cannot apply attribute class `{0}' because it is abstract" msgstr "" -#: mcs/mcs/attribute.cs:544 +#: mcs/mcs/attribute.cs:547 #, csharp-format msgid "Duplicate named attribute `{0}' argument" msgstr "" -#: mcs/mcs/attribute.cs:1003 +#: mcs/mcs/attribute.cs:860 +#, csharp-format +msgid "Security attribute `{0}' has an invalid SecurityAction value `{1}'" +msgstr "" + +#: mcs/mcs/attribute.cs:867 +#, csharp-format +msgid "" +"SecurityAction value `{0}' is invalid for security attributes applied to an " +"assembly" +msgstr "" + +#: mcs/mcs/attribute.cs:871 +#, csharp-format +msgid "" +"SecurityAction value `{0}' is invalid for security attributes applied to a " +"type or a method" +msgstr "" + +#: mcs/mcs/attribute.cs:1018 #, csharp-format msgid "" "The attribute `{0}' is not valid on this declaration type. It is valid on " "`{1}' declarations only" msgstr "" -#: mcs/mcs/attribute.cs:1025 +#: mcs/mcs/attribute.cs:1040 #, csharp-format msgid "The argument to the `{0}' attribute must be a valid identifier" msgstr "" -#: mcs/mcs/attribute.cs:1039 -#, csharp-format -msgid "Invalid value for argument to `{0}' attribute" +#: mcs/mcs/attribute.cs:1059 +msgid "Unmanaged type `ByValArray' is only valid for fields" msgstr "" -#: mcs/mcs/attribute.cs:1307 +#: mcs/mcs/attribute.cs:1320 #, csharp-format msgid "The attribute `{0}' cannot be applied multiple times" msgstr "" -#: mcs/mcs/attribute.cs:1613 +#: mcs/mcs/attribute.cs:1626 #, csharp-format msgid "`{0}' is obsolete: `{1}'" msgstr "" @@ -425,112 +464,112 @@ msgid "" "`struct', `interface', or `void' keyword" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:1535 mcs/mcs/cs-tokenizer.cs:1598 +#: mcs/mcs/cs-tokenizer.cs:1553 mcs/mcs/cs-tokenizer.cs:1616 msgid "Invalid number" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:1813 +#: mcs/mcs/cs-tokenizer.cs:1831 #, csharp-format msgid "Unrecognized escape sequence `\\{0}'" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:1832 +#: mcs/mcs/cs-tokenizer.cs:1850 msgid "Unrecognized escape sequence" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:2097 +#: mcs/mcs/cs-tokenizer.cs:2115 msgid "Filename, single-line comment or end-of-line expected" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:2145 +#: mcs/mcs/cs-tokenizer.cs:2163 msgid "Missing identifier to pre-processor directive" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:2155 mcs/mcs/cs-tokenizer.cs:2159 +#: mcs/mcs/cs-tokenizer.cs:2173 mcs/mcs/cs-tokenizer.cs:2177 #, csharp-format msgid "Identifier expected: {0}" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:2667 +#: mcs/mcs/cs-tokenizer.cs:2685 msgid "Integral constant is too large" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:2672 +#: mcs/mcs/cs-tokenizer.cs:2690 msgid "Invalid preprocessor directive" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:2679 +#: mcs/mcs/cs-tokenizer.cs:2697 #, csharp-format msgid "Unexpected processor directive ({0})" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:2685 +#: mcs/mcs/cs-tokenizer.cs:2703 msgid "" "Cannot define or undefine preprocessor symbols after first token in file" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:2691 +#: mcs/mcs/cs-tokenizer.cs:2709 msgid "" "Preprocessor directives must appear as the first non-whitespace character on " "a line" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:2696 +#: mcs/mcs/cs-tokenizer.cs:2714 msgid "Single-line comment or end-of-line expected" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:2741 mcs/mcs/cs-tokenizer.cs:3780 +#: mcs/mcs/cs-tokenizer.cs:2759 mcs/mcs/cs-tokenizer.cs:3798 msgid "Expected `#endif' directive" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:2774 mcs/mcs/cs-tokenizer.cs:2795 -#: mcs/mcs/cs-tokenizer.cs:2826 mcs/mcs/cs-tokenizer.cs:3778 +#: mcs/mcs/cs-tokenizer.cs:2792 mcs/mcs/cs-tokenizer.cs:2813 +#: mcs/mcs/cs-tokenizer.cs:2844 mcs/mcs/cs-tokenizer.cs:3796 msgid "#endregion directive expected" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:2875 +#: mcs/mcs/cs-tokenizer.cs:2893 msgid "Wrong preprocessor directive" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:2887 +#: mcs/mcs/cs-tokenizer.cs:2905 #, csharp-format msgid "#error: '{0}'" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:2905 +#: mcs/mcs/cs-tokenizer.cs:2923 msgid "The line number specified for #line directive is missing or invalid" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:2967 mcs/mcs/cs-tokenizer.cs:3619 +#: mcs/mcs/cs-tokenizer.cs:2985 mcs/mcs/cs-tokenizer.cs:3637 msgid "Newline in constant" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:2994 +#: mcs/mcs/cs-tokenizer.cs:3012 msgid "Unterminated string literal" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:3071 +#: mcs/mcs/cs-tokenizer.cs:3089 msgid "Identifier too long (limit is 512 chars)" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:3457 +#: mcs/mcs/cs-tokenizer.cs:3475 msgid "End-of-file found, '*/' expected" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:3568 +#: mcs/mcs/cs-tokenizer.cs:3586 msgid "Keyword, identifier, or string expected after verbatim specifier: @" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:3589 +#: mcs/mcs/cs-tokenizer.cs:3607 #, csharp-format msgid "Unexpected character `{0}'" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:3614 +#: mcs/mcs/cs-tokenizer.cs:3632 msgid "Empty character literal" msgstr "" -#: mcs/mcs/cs-tokenizer.cs:3635 +#: mcs/mcs/cs-tokenizer.cs:3653 msgid "Too many characters in character literal" msgstr "" @@ -538,7 +577,7 @@ msgstr "" msgid "The operation overflows at compile time in checked mode" msgstr "" -#: mcs/mcs/cfold.cs:329 mcs/mcs/expression.cs:4178 +#: mcs/mcs/cfold.cs:329 mcs/mcs/expression.cs:4195 #, csharp-format msgid "Operator `{0}' is ambiguous on operands of type `{1}' and `{2}'" msgstr "" @@ -580,434 +619,447 @@ msgid "" "declaration of this type exists" msgstr "" -#: mcs/mcs/class.cs:759 +#: mcs/mcs/class.cs:764 #, csharp-format msgid "" "`{0}': explicit interface declaration can only be declared in a class or " "struct" msgstr "" -#: mcs/mcs/class.cs:814 +#: mcs/mcs/class.cs:819 #, csharp-format msgid "Duplicate type parameter `{0}'" msgstr "" -#: mcs/mcs/class.cs:816 -#, csharp-format -msgid "" -"Primary constructor of type `{0}' has parameter of same name as type " -"parameter `{1}'" -msgstr "" - -#: mcs/mcs/class.cs:820 +#: mcs/mcs/class.cs:822 #, csharp-format msgid "The type `{0}' already contains a definition for `{1}'" msgstr "" -#: mcs/mcs/class.cs:897 +#: mcs/mcs/class.cs:914 msgid "" "Cannot specify the `DefaultMember' attribute on type containing an indexer" msgstr "" -#: mcs/mcs/class.cs:902 +#: mcs/mcs/class.cs:919 msgid "The RequiredAttribute attribute is not permitted on C# types" msgstr "" -#: mcs/mcs/class.cs:1142 -#, csharp-format -msgid "Class `{0}' cannot derive from the dynamic type" -msgstr "" - #: mcs/mcs/class.cs:1159 #, csharp-format +msgid "Class `{0}' cannot derive from the dynamic type" +msgstr "" + +#: mcs/mcs/class.cs:1176 +#, csharp-format msgid "`{0}' is already listed in interface list" msgstr "" -#: mcs/mcs/class.cs:1167 +#: mcs/mcs/class.cs:1184 #, csharp-format msgid "" "Inconsistent accessibility: base interface `{0}' is less accessible than " "interface `{1}'" msgstr "" -#: mcs/mcs/class.cs:1173 +#: mcs/mcs/class.cs:1190 #, csharp-format msgid "Type `{0}' in interface list is not an interface" msgstr "" -#: mcs/mcs/class.cs:1175 +#: mcs/mcs/class.cs:1192 #, csharp-format msgid "`{0}': Classes cannot have multiple base classes (`{1}' and `{2}')" msgstr "" -#: mcs/mcs/class.cs:1178 +#: mcs/mcs/class.cs:1195 #, csharp-format msgid "`{0}': Base class `{1}' must be specified as first" msgstr "" -#: mcs/mcs/class.cs:1239 +#: mcs/mcs/class.cs:1256 #, csharp-format msgid "" "The operator `{0}' requires a matching operator `{1}' to also be defined" msgstr "" -#: mcs/mcs/class.cs:1494 +#: mcs/mcs/class.cs:1511 #, csharp-format msgid "Partial declarations of `{0}' must not specify different base classes" msgstr "" -#: mcs/mcs/class.cs:1529 +#: mcs/mcs/class.cs:1546 msgid "" "Only one part of a partial type can declare primary constructor parameters" msgstr "" -#: mcs/mcs/class.cs:1546 +#: mcs/mcs/class.cs:1563 #, csharp-format msgid "" "Inherited interface `{0}' causes a cycle in the interface hierarchy of `{1}'" msgstr "" -#: mcs/mcs/class.cs:1553 +#: mcs/mcs/class.cs:1570 #, csharp-format msgid "Circular base class dependency involving `{0}' and `{1}'" msgstr "" -#: mcs/mcs/class.cs:1870 +#: mcs/mcs/class.cs:1580 +msgid "Implemented interfaces cannot have arguments" +msgstr "" + +#: mcs/mcs/class.cs:1909 #, csharp-format msgid "`{0}': cannot implement a dynamic interface `{1}'" msgstr "" -#: mcs/mcs/class.cs:1885 +#: mcs/mcs/class.cs:1924 #, csharp-format msgid "" "`{0}' cannot implement both `{1}' and `{2}' because they may unify for some " "type parameter substitutions" msgstr "" -#: mcs/mcs/class.cs:1909 +#: mcs/mcs/class.cs:1948 #, csharp-format msgid "" "A generic type cannot derive from `{0}' because it is an attribute class" msgstr "" -#: mcs/mcs/class.cs:2013 +#: mcs/mcs/class.cs:2052 msgid "" "Two indexers have different names; the IndexerName attribute must be used " "with the same name on every indexer within a type" msgstr "" -#: mcs/mcs/class.cs:2271 +#: mcs/mcs/class.cs:2310 #, csharp-format msgid "A static member `{0}' cannot be marked as override, virtual or abstract" msgstr "" -#: mcs/mcs/class.cs:2278 +#: mcs/mcs/class.cs:2317 #, csharp-format msgid "A member `{0}' marked as override cannot be marked as new or virtual" msgstr "" -#: mcs/mcs/class.cs:2290 +#: mcs/mcs/class.cs:2329 #, csharp-format msgid "`{0}' cannot be both extern and abstract" msgstr "" -#: mcs/mcs/class.cs:2295 +#: mcs/mcs/class.cs:2334 #, csharp-format msgid "`{0}' cannot be both abstract and sealed" msgstr "" -#: mcs/mcs/class.cs:2300 +#: mcs/mcs/class.cs:2339 #, csharp-format msgid "The abstract method `{0}' cannot be marked virtual" msgstr "" -#: mcs/mcs/class.cs:2306 +#: mcs/mcs/class.cs:2345 #, csharp-format msgid "`{0}' is abstract but it is declared in the non-abstract class `{1}'" msgstr "" -#: mcs/mcs/class.cs:2314 +#: mcs/mcs/class.cs:2353 #, csharp-format msgid "`{0}': virtual or abstract members cannot be private" msgstr "" -#: mcs/mcs/class.cs:2321 +#: mcs/mcs/class.cs:2360 #, csharp-format msgid "`{0}' cannot be sealed because it is not an override" msgstr "" -#: mcs/mcs/class.cs:2370 +#: mcs/mcs/class.cs:2409 #, csharp-format msgid "`{0}': containing type does not implement interface `{1}'" msgstr "" -#: mcs/mcs/class.cs:2567 +#: mcs/mcs/class.cs:2606 #, csharp-format msgid "Type parameter `{0}' has same name as containing type, or method" msgstr "" -#: mcs/mcs/class.cs:2573 +#: mcs/mcs/class.cs:2614 +#, csharp-format +msgid "`{0}': member names cannot be the same as their enclosing type" +msgstr "" + +#: mcs/mcs/class.cs:2689 #, csharp-format msgid "" "Primary constructor of type `{0}' has parameter of same name as containing " "type" msgstr "" -#: mcs/mcs/class.cs:2581 +#: mcs/mcs/class.cs:2697 #, csharp-format -msgid "`{0}': member names cannot be the same as their enclosing type" +msgid "" +"Primary constructor of type `{0}' has parameter of same name as type " +"parameter `{1}'" msgstr "" -#: mcs/mcs/class.cs:2717 +#: mcs/mcs/class.cs:2763 msgid "" "The class System.Object cannot have a base class or implement an interface." msgstr "" -#: mcs/mcs/class.cs:2726 +#: mcs/mcs/class.cs:2772 #, csharp-format msgid "Attribute `{0}' is only valid on classes derived from System.Attribute" msgstr "" -#: mcs/mcs/class.cs:2731 +#: mcs/mcs/class.cs:2777 msgid "" "Attribute `System.Diagnostics.ConditionalAttribute' is only valid on methods " "or attribute classes" msgstr "" -#: mcs/mcs/class.cs:2760 +#: mcs/mcs/class.cs:2806 #, csharp-format msgid "`{0}': an abstract class cannot be sealed or static" msgstr "" -#: mcs/mcs/class.cs:2764 +#: mcs/mcs/class.cs:2810 #, csharp-format msgid "`{0}': a class cannot be both static and sealed" msgstr "" -#: mcs/mcs/class.cs:2769 +#: mcs/mcs/class.cs:2815 #, csharp-format msgid "`{0}': Static classes cannot have primary constructor" msgstr "" -#: mcs/mcs/class.cs:2775 +#: mcs/mcs/class.cs:2821 #, csharp-format msgid "`{0}': Static classes cannot contain user-defined operators" msgstr "" -#: mcs/mcs/class.cs:2780 +#: mcs/mcs/class.cs:2826 #, csharp-format msgid "`{0}': Static classes cannot contain destructor" msgstr "" -#: mcs/mcs/class.cs:2785 +#: mcs/mcs/class.cs:2831 #, csharp-format msgid "`{0}': cannot declare indexers in a static class" msgstr "" -#: mcs/mcs/class.cs:2793 +#: mcs/mcs/class.cs:2839 #, csharp-format msgid "`{0}': Static classes cannot have instance constructors" msgstr "" -#: mcs/mcs/class.cs:2797 +#: mcs/mcs/class.cs:2843 #, csharp-format msgid "`{0}': cannot declare instance members in a static class" msgstr "" -#: mcs/mcs/class.cs:2839 +#: mcs/mcs/class.cs:2885 #, csharp-format msgid "`{0}': Cannot derive from type parameter `{1}'" msgstr "" -#: mcs/mcs/class.cs:2843 +#: mcs/mcs/class.cs:2889 #, csharp-format msgid "`{0}': Cannot derive from static class `{1}'" msgstr "" -#: mcs/mcs/class.cs:2847 +#: mcs/mcs/class.cs:2893 #, csharp-format msgid "`{0}': cannot derive from sealed type `{1}'" msgstr "" -#: mcs/mcs/class.cs:2850 +#: mcs/mcs/class.cs:2896 #, csharp-format msgid "" "Static class `{0}' cannot derive from type `{1}'. Static classes must derive " "from object" msgstr "" -#: mcs/mcs/class.cs:2861 +#: mcs/mcs/class.cs:2907 #, csharp-format msgid "`{0}' cannot derive from special class `{1}'" msgstr "" -#: mcs/mcs/class.cs:2871 +#: mcs/mcs/class.cs:2917 #, csharp-format msgid "" "Inconsistent accessibility: base class `{0}' is less accessible than class " "`{1}'" msgstr "" -#: mcs/mcs/class.cs:2879 +#: mcs/mcs/class.cs:2925 #, csharp-format msgid "Static class `{0}' cannot implement interfaces" msgstr "" -#: mcs/mcs/class.cs:2990 mcs/mcs/class.cs:3004 +#: mcs/mcs/class.cs:3036 mcs/mcs/class.cs:3050 #, csharp-format msgid "Struct member `{0}' of type `{1}' causes a cycle in the struct layout" msgstr "" -#: mcs/mcs/class.cs:3094 +#: mcs/mcs/class.cs:3154 #, csharp-format -msgid "`{0}': Structs cannot have instance field initializers" +msgid "" +"`{0}': Structs without explicit constructors cannot contain members with " +"initializers" msgstr "" -#: mcs/mcs/class.cs:3282 +#: mcs/mcs/class.cs:3343 #, csharp-format msgid "Do not override `{0}'. Use destructor syntax instead" msgstr "" -#: mcs/mcs/class.cs:3285 +#: mcs/mcs/class.cs:3346 #, csharp-format msgid "`{0}' is marked as an override but no suitable {1} found to override" msgstr "" -#: mcs/mcs/class.cs:3291 +#: mcs/mcs/class.cs:3352 #, csharp-format msgid "`{0}': cannot override because `{1}' is not an event" msgstr "" -#: mcs/mcs/class.cs:3294 +#: mcs/mcs/class.cs:3355 #, csharp-format msgid "`{0}': cannot override because `{1}' is not a property" msgstr "" -#: mcs/mcs/class.cs:3297 +#: mcs/mcs/class.cs:3358 #, csharp-format msgid "`{0}': cannot override because `{1}' is not a method" msgstr "" -#: mcs/mcs/class.cs:3316 +#: mcs/mcs/class.cs:3377 #, csharp-format msgid "" "`{0}' cannot override inherited members `{1}' and `{2}' because they have " "the same signature when used in type `{3}'" msgstr "" -#: mcs/mcs/class.cs:3369 mcs/mcs/field.cs:203 +#: mcs/mcs/class.cs:3430 mcs/mcs/field.cs:203 #, csharp-format msgid "`{0}' hides inherited abstract member `{1}'" msgstr "" -#: mcs/mcs/class.cs:3393 +#: mcs/mcs/class.cs:3454 #, csharp-format msgid "" "`{0}': cannot override inherited member `{1}' because it is not marked " "virtual, abstract or override" msgstr "" -#: mcs/mcs/class.cs:3401 +#: mcs/mcs/class.cs:3462 #, csharp-format msgid "`{0}': cannot override inherited member `{1}' because it is sealed" msgstr "" -#: mcs/mcs/class.cs:3410 +#: mcs/mcs/class.cs:3471 #, csharp-format msgid "`{0}': type must be `{1}' to match overridden member `{2}'" msgstr "" -#: mcs/mcs/class.cs:3413 +#: mcs/mcs/class.cs:3474 #, csharp-format msgid "`{0}': return type must be `{1}' to match overridden member `{2}'" msgstr "" -#: mcs/mcs/class.cs:3481 +#: mcs/mcs/class.cs:3542 #, csharp-format msgid "A partial method `{0}' cannot explicitly implement an interface" msgstr "" -#: mcs/mcs/class.cs:3487 +#: mcs/mcs/class.cs:3548 #, csharp-format msgid "The type `{0}' in explicit interface declaration is not an interface" msgstr "" -#: mcs/mcs/class.cs:3522 +#: mcs/mcs/class.cs:3583 #, csharp-format msgid "" "Inconsistent accessibility: parameter type `{0}' is less accessible than " "indexer `{1}'" msgstr "" -#: mcs/mcs/class.cs:3526 +#: mcs/mcs/class.cs:3587 #, csharp-format msgid "" "Inconsistent accessibility: parameter type `{0}' is less accessible than " "operator `{1}'" msgstr "" -#: mcs/mcs/class.cs:3530 +#: mcs/mcs/class.cs:3591 #, csharp-format msgid "" "Inconsistent accessibility: parameter type `{0}' is less accessible than " "method `{1}'" msgstr "" -#: mcs/mcs/class.cs:3590 +#: mcs/mcs/class.cs:3651 #, csharp-format msgid "" "`{0}': cannot change access modifiers when overriding `{1}' inherited member " "`{2}'" msgstr "" -#: mcs/mcs/class.cs:3599 +#: mcs/mcs/class.cs:3660 #, csharp-format msgid "`{0}': static types cannot be used as return types" msgstr "" -#: mcs/mcs/class.cs:3660 +#: mcs/mcs/class.cs:3721 #, csharp-format msgid "" "`{0}': Cannot specify constraints for overrides and explicit interface " "implementation methods" msgstr "" -#: mcs/mcs/class.cs:3724 +#: mcs/mcs/class.cs:3785 #, csharp-format msgid "New virtual member `{0}' is declared in a sealed class `{1}'" msgstr "" -#: mcs/mcs/class.cs:3739 +#: mcs/mcs/class.cs:3800 msgid "Inconsistent accessibility: property type `" msgstr "" -#: mcs/mcs/class.cs:3744 +#: mcs/mcs/class.cs:3805 msgid "Inconsistent accessibility: indexer return type `" msgstr "" -#: mcs/mcs/class.cs:3750 mcs/mcs/class.cs:3755 mcs/mcs/delegate.cs:171 +#: mcs/mcs/class.cs:3811 mcs/mcs/class.cs:3816 mcs/mcs/delegate.cs:171 msgid "Inconsistent accessibility: return type `" msgstr "" -#: mcs/mcs/class.cs:3760 +#: mcs/mcs/class.cs:3821 +#, csharp-format +msgid "" +"Inconsistent accessibility: event type `{0}' is less accessible than event " +"`{1}'" +msgstr "" + +#: mcs/mcs/class.cs:3825 msgid "Inconsistent accessibility: field type `" msgstr "" -#: mcs/mcs/class.cs:3772 +#: mcs/mcs/class.cs:3837 #, csharp-format msgid "" "Parameters or local variables of type `{0}' cannot be declared in async " "methods or iterators" msgstr "" -#: mcs/mcs/class.cs:3776 +#: mcs/mcs/class.cs:3841 #, csharp-format msgid "" "Local variables of type `{0}' cannot be used inside anonymous methods, " "lambda expressions or query expressions" msgstr "" -#: mcs/mcs/class.cs:3780 +#: mcs/mcs/class.cs:3845 #, csharp-format msgid "Field or property cannot be of type `{0}'" msgstr "" @@ -1040,7 +1092,7 @@ msgid "" "to override)" msgstr "" -#: mcs/mcs/convert.cs:1196 +#: mcs/mcs/convert.cs:1221 #, csharp-format msgid "" "Ambiguous user defined operators `{0}' and `{1}' when converting from `{2}' " @@ -1096,51 +1148,51 @@ msgid "" "delegate `{1}'" msgstr "" -#: mcs/mcs/delegate.cs:517 +#: mcs/mcs/delegate.cs:518 #, csharp-format msgid "" "Cannot create delegate from method `{0}' because it is a member of System." "Nullable type" msgstr "" -#: mcs/mcs/delegate.cs:530 +#: mcs/mcs/delegate.cs:531 #, csharp-format msgid "" "Extension method `{0}' of value type `{1}' cannot be used to create delegates" msgstr "" -#: mcs/mcs/delegate.cs:548 +#: mcs/mcs/delegate.cs:549 #, csharp-format msgid "Cannot create delegate from partial method declaration `{0}'" msgstr "" -#: mcs/mcs/delegate.cs:551 +#: mcs/mcs/delegate.cs:552 #, csharp-format msgid "" "Cannot create delegate with `{0}' because it has a Conditional attribute" msgstr "" -#: mcs/mcs/delegate.cs:599 +#: mcs/mcs/delegate.cs:600 #, csharp-format msgid "" "A method or delegate `{0} {1}' parameters and return type must be same as " "delegate `{2} {3}' parameters and return type" msgstr "" -#: mcs/mcs/delegate.cs:606 +#: mcs/mcs/delegate.cs:607 #, csharp-format msgid "" "A method or delegate `{0}' parameters do not match delegate `{1}' parameters" msgstr "" -#: mcs/mcs/delegate.cs:611 +#: mcs/mcs/delegate.cs:612 #, csharp-format msgid "" "A method or delegate `{0} {1}' return type does not match delegate `{2} {3}' " "return type" msgstr "" -#: mcs/mcs/delegate.cs:787 +#: mcs/mcs/delegate.cs:788 msgid "Method name expected" msgstr "" @@ -1241,223 +1293,223 @@ msgstr "" msgid "The operation in question is undefined on void pointers" msgstr "" -#: mcs/mcs/ecore.cs:473 mcs/mcs/statement.cs:3824 mcs/mcs/statement.cs:3826 +#: mcs/mcs/ecore.cs:473 mcs/mcs/statement.cs:3919 mcs/mcs/statement.cs:3921 #, csharp-format msgid "Internal compiler error: {0}" msgstr "" -#: mcs/mcs/ecore.cs:535 mcs/mcs/expression.cs:7074 mcs/mcs/expression.cs:7082 +#: mcs/mcs/ecore.cs:535 mcs/mcs/expression.cs:7113 mcs/mcs/expression.cs:7121 msgid "A constant value is expected" msgstr "" -#: mcs/mcs/ecore.cs:546 +#: mcs/mcs/ecore.cs:547 msgid "" "An attribute argument must be a constant expression, typeof expression or " "array creation expression" msgstr "" -#: mcs/mcs/ecore.cs:726 +#: mcs/mcs/ecore.cs:550 +#, csharp-format +msgid "" +"Attribute constructor parameter has type `{0}', which is not a valid " +"attribute parameter type" +msgstr "" + +#: mcs/mcs/ecore.cs:732 #, csharp-format msgid "The class `{0}' has no constructors defined" msgstr "" -#: mcs/mcs/ecore.cs:924 +#: mcs/mcs/ecore.cs:930 #, csharp-format msgid "The `{0}' operator cannot be applied to operand of type `{1}'" msgstr "" -#: mcs/mcs/ecore.cs:930 +#: mcs/mcs/ecore.cs:936 msgid "An expression tree cannot contain an unsafe pointer operation" msgstr "" -#: mcs/mcs/ecore.cs:1012 +#: mcs/mcs/ecore.cs:1018 #, csharp-format msgid "`{0}' is a `{1}' but a `{2}' was expected" msgstr "" -#: mcs/mcs/ecore.cs:1045 +#: mcs/mcs/ecore.cs:1051 #, csharp-format msgid "Expression denotes a `{0}', where a `{1}' was expected" msgstr "" -#: mcs/mcs/ecore.cs:1055 +#: mcs/mcs/ecore.cs:1061 msgid "Pointers and fixed size buffers may only be used in an unsafe context" msgstr "" -#: mcs/mcs/ecore.cs:2616 +#: mcs/mcs/ecore.cs:2622 #, csharp-format msgid "" "Dynamic keyword requires `{0}' to be defined. Are you missing System.Core." "dll assembly reference?" msgstr "" -#: mcs/mcs/ecore.cs:2692 +#: mcs/mcs/ecore.cs:2698 #, csharp-format msgid "" "A local variable `{0}' cannot be used before it is declared. Consider " "renaming the local variable when it hides the member `{1}'" msgstr "" -#: mcs/mcs/ecore.cs:2707 mcs/mcs/ecore.cs:2750 +#: mcs/mcs/ecore.cs:2713 mcs/mcs/ecore.cs:2756 #, csharp-format msgid "`{0}' conflicts with a declaration in a child block" msgstr "" -#: mcs/mcs/ecore.cs:2759 +#: mcs/mcs/ecore.cs:2774 #, csharp-format msgid "A local variable `{0}' cannot be used before it is declared" msgstr "" -#: mcs/mcs/ecore.cs:2788 -#, csharp-format -msgid "" -"Primary constructor parameter `{0}' is not available in this context when " -"using ref or out modifier" -msgstr "" - -#: mcs/mcs/ecore.cs:2827 +#: mcs/mcs/ecore.cs:2831 #, csharp-format msgid "The name `{0}' does not exist in the current context" msgstr "" -#: mcs/mcs/ecore.cs:2923 +#: mcs/mcs/ecore.cs:2927 msgid "System.Void cannot be used from C#. Consider using `void'" msgstr "" -#: mcs/mcs/ecore.cs:3086 +#: mcs/mcs/ecore.cs:3090 #, csharp-format msgid "" "The type or namespace name `{0}' could not be found in the global namespace. " "Are you missing {1} assembly reference?" msgstr "" -#: mcs/mcs/ecore.cs:3090 +#: mcs/mcs/ecore.cs:3094 #, csharp-format msgid "" "The type or namespace name `{0}' does not exist in the namespace `{1}'. Are " "you missing {2} assembly reference?" msgstr "" -#: mcs/mcs/ecore.cs:3330 +#: mcs/mcs/ecore.cs:3334 #, csharp-format msgid "Cannot call an abstract base member `{0}'" msgstr "" -#: mcs/mcs/ecore.cs:3337 +#: mcs/mcs/ecore.cs:3341 #, csharp-format msgid "" "Cannot access protected member `{0}' via a qualifier of type `{1}'. The " "qualifier must be of type `{2}' or derived from it" msgstr "" -#: mcs/mcs/ecore.cs:3362 +#: mcs/mcs/ecore.cs:3366 #, csharp-format msgid "" "Fields of static readonly field `{0}' cannot be assigned to (except in a " "static constructor or a variable initializer)" msgstr "" -#: mcs/mcs/ecore.cs:3365 +#: mcs/mcs/ecore.cs:3369 #, csharp-format msgid "" "Members of readonly field `{0}' cannot be modified (except in a constructor " "or a variable initializer)" msgstr "" -#: mcs/mcs/ecore.cs:3374 +#: mcs/mcs/ecore.cs:3378 #, csharp-format msgid "" "Members of value type `{0}' cannot be assigned using a property `{1}' object " "initializer" msgstr "" -#: mcs/mcs/ecore.cs:3378 +#: mcs/mcs/ecore.cs:3382 #, csharp-format msgid "" "Cannot modify a value type return value of `{0}'. Consider storing the value " "in a temporary variable" msgstr "" -#: mcs/mcs/ecore.cs:3391 +#: mcs/mcs/ecore.cs:3395 #, csharp-format msgid "Cannot assign to members of `{0}' because it is a `{1}'" msgstr "" -#: mcs/mcs/ecore.cs:3417 +#: mcs/mcs/ecore.cs:3421 #, csharp-format msgid "" "Static member `{0}' cannot be accessed with an instance reference, qualify " "it with a type name instead" msgstr "" -#: mcs/mcs/ecore.cs:3432 +#: mcs/mcs/ecore.cs:3436 #, csharp-format msgid "" "A field initializer cannot reference the nonstatic field, method, or " "property `{0}'" msgstr "" -#: mcs/mcs/ecore.cs:3438 +#: mcs/mcs/ecore.cs:3442 msgid "Constructor initializer cannot access primary constructor parameters" msgstr "" -#: mcs/mcs/ecore.cs:3440 +#: mcs/mcs/ecore.cs:3444 #, csharp-format msgid "" "An object reference is required to access primary constructor parameter `{0}'" msgstr "" -#: mcs/mcs/ecore.cs:3445 +#: mcs/mcs/ecore.cs:3449 #, csharp-format msgid "An object reference is required to access non-static member `{0}'" msgstr "" -#: mcs/mcs/ecore.cs:3456 +#: mcs/mcs/ecore.cs:3460 #, csharp-format msgid "" "Cannot access a nonstatic member of outer type `{0}' via nested type `{1}'" msgstr "" -#: mcs/mcs/ecore.cs:3484 +#: mcs/mcs/ecore.cs:3488 msgid "Cannot modify the result of an unboxing conversion" msgstr "" -#: mcs/mcs/ecore.cs:3662 +#: mcs/mcs/ecore.cs:3666 #, csharp-format msgid "" "Type `{0}' does not contain a member `{1}' and the best extension method " "overload `{2}' has some invalid arguments" msgstr "" -#: mcs/mcs/ecore.cs:3667 +#: mcs/mcs/ecore.cs:3671 #, csharp-format msgid "Extension method instance type `{0}' cannot be converted to `{1}'" msgstr "" -#: mcs/mcs/ecore.cs:3815 +#: mcs/mcs/ecore.cs:3819 msgid "An expression tree cannot contain an expression with method group" msgstr "" -#: mcs/mcs/ecore.cs:3821 +#: mcs/mcs/ecore.cs:3825 msgid "" "Partial methods with only a defining declaration or removed conditional " "methods cannot be used in an expression tree" msgstr "" -#: mcs/mcs/ecore.cs:3853 +#: mcs/mcs/ecore.cs:3857 #, csharp-format msgid "" "Cannot convert method group `{0}' to non-delegate type `{1}'. Consider using " "parentheses to invoke the method" msgstr "" -#: mcs/mcs/ecore.cs:4584 +#: mcs/mcs/ecore.cs:4596 #, csharp-format msgid "" "The type `{0}' does not contain a constructor that takes `{1}' arguments" msgstr "" -#: mcs/mcs/ecore.cs:5274 +#: mcs/mcs/ecore.cs:5297 #, csharp-format msgid "" "Type `{0}' does not contain a member `{1}' and the best extension method " @@ -1465,200 +1517,200 @@ msgid "" "without the extension method syntax" msgstr "" -#: mcs/mcs/ecore.cs:5313 +#: mcs/mcs/ecore.cs:5336 #, csharp-format msgid "" "The call is ambiguous between the following methods or properties: `{0}' and " "`{1}'" msgstr "" -#: mcs/mcs/ecore.cs:5376 +#: mcs/mcs/ecore.cs:5399 #, csharp-format msgid "" "The best overloaded collection initalizer method `{0}' cannot have `ref' or " "`out' modifier" msgstr "" -#: mcs/mcs/ecore.cs:5380 +#: mcs/mcs/ecore.cs:5403 #, csharp-format msgid "" "The best overloaded collection initalizer method `{0}' has some invalid " "arguments" msgstr "" -#: mcs/mcs/ecore.cs:5383 +#: mcs/mcs/ecore.cs:5406 #, csharp-format msgid "Delegate `{0}' has some invalid arguments" msgstr "" -#: mcs/mcs/ecore.cs:5387 +#: mcs/mcs/ecore.cs:5410 #, csharp-format msgid "The best overloaded method match for `{0}' has some invalid arguments" msgstr "" -#: mcs/mcs/ecore.cs:5396 +#: mcs/mcs/ecore.cs:5419 #, csharp-format msgid "" "Argument `#{0}' does not require `{1}' modifier. Consider removing `{1}' " "modifier" msgstr "" -#: mcs/mcs/ecore.cs:5399 +#: mcs/mcs/ecore.cs:5422 #, csharp-format msgid "Argument `#{0}' is missing `{1}' modifier" msgstr "" -#: mcs/mcs/ecore.cs:5416 +#: mcs/mcs/ecore.cs:5439 #, csharp-format msgid "Argument `#{0}' cannot convert `{1}' expression to type `{2}'" msgstr "" -#: mcs/mcs/ecore.cs:5468 +#: mcs/mcs/ecore.cs:5491 #, csharp-format msgid "" "The type arguments for method `{0}' cannot be inferred from the usage. Try " "specifying the type arguments explicitly" msgstr "" -#: mcs/mcs/ecore.cs:5497 +#: mcs/mcs/ecore.cs:5520 #, csharp-format msgid "No overload for method `{0}' takes `{1}' arguments" msgstr "" -#: mcs/mcs/ecore.cs:5586 +#: mcs/mcs/ecore.cs:5613 #, csharp-format msgid "The delegate `{0}' does not contain a parameter named `{1}'" msgstr "" -#: mcs/mcs/ecore.cs:5591 +#: mcs/mcs/ecore.cs:5618 #, csharp-format msgid "" "The best overloaded method match for `{0}' does not contain a parameter " "named `{1}'" msgstr "" -#: mcs/mcs/ecore.cs:5601 +#: mcs/mcs/ecore.cs:5628 #, csharp-format msgid "" "Named argument `{0}' cannot be used for a parameter which has positional " "argument specified" msgstr "" -#: mcs/mcs/ecore.cs:5940 +#: mcs/mcs/ecore.cs:5967 msgid "" "You cannot use fixed size buffers contained in unfixed expressions. Try " "using the fixed statement" msgstr "" -#: mcs/mcs/ecore.cs:5945 +#: mcs/mcs/ecore.cs:5972 #, csharp-format msgid "`{0}': Fixed size buffers can only be accessed through locals or fields" msgstr "" -#: mcs/mcs/ecore.cs:6019 +#: mcs/mcs/ecore.cs:6046 #, csharp-format msgid "" "A static readonly field `{0}' cannot be passed ref or out (except in a " "static constructor)" msgstr "" -#: mcs/mcs/ecore.cs:6022 +#: mcs/mcs/ecore.cs:6049 #, csharp-format msgid "" "A readonly field `{0}' cannot be passed ref or out (except in a constructor)" msgstr "" -#: mcs/mcs/ecore.cs:6036 +#: mcs/mcs/ecore.cs:6063 #, csharp-format msgid "" "Fields of static readonly field `{0}' cannot be passed ref or out (except in " "a static constructor)" msgstr "" -#: mcs/mcs/ecore.cs:6039 +#: mcs/mcs/ecore.cs:6066 #, csharp-format msgid "" "Members of readonly field `{0}' cannot be passed ref or out (except in a " "constructor)" msgstr "" -#: mcs/mcs/ecore.cs:6046 +#: mcs/mcs/ecore.cs:6073 #, csharp-format msgid "" "A static readonly field `{0}' cannot be assigned to (except in a static " "constructor or a variable initializer)" msgstr "" -#: mcs/mcs/ecore.cs:6049 +#: mcs/mcs/ecore.cs:6076 #, csharp-format msgid "" "A readonly field `{0}' cannot be assigned to (except in a constructor or a " "variable initializer)" msgstr "" -#: mcs/mcs/ecore.cs:6113 +#: mcs/mcs/ecore.cs:6140 #, csharp-format msgid "Use of possibly unassigned field `{0}'" msgstr "" -#: mcs/mcs/ecore.cs:6470 +#: mcs/mcs/ecore.cs:6502 #, csharp-format msgid "Property or event `{0}' is not supported by the C# language" msgstr "" -#: mcs/mcs/ecore.cs:6666 +#: mcs/mcs/ecore.cs:6698 #, csharp-format msgid "A range variable `{0}' may not be passes as `ref' or `out' parameter" msgstr "" -#: mcs/mcs/ecore.cs:6741 +#: mcs/mcs/ecore.cs:6773 #, csharp-format msgid "" "The property or indexer `{0}' cannot be used in this context because it " "lacks the `get' accessor" msgstr "" -#: mcs/mcs/ecore.cs:6748 +#: mcs/mcs/ecore.cs:6780 #, csharp-format msgid "" "The property or indexer `{0}' cannot be used in this context because the get " "accessor is inaccessible" msgstr "" -#: mcs/mcs/ecore.cs:6767 +#: mcs/mcs/ecore.cs:6799 #, csharp-format msgid "Property or indexer `{0}' cannot be assigned to (it is read-only)" msgstr "" -#: mcs/mcs/ecore.cs:6775 +#: mcs/mcs/ecore.cs:6807 #, csharp-format msgid "" "The property or indexer `{0}' cannot be used in this context because the set " "accessor is inaccessible" msgstr "" -#: mcs/mcs/ecore.cs:6943 +#: mcs/mcs/ecore.cs:6975 #, csharp-format msgid "" "The event `{0}' can only appear on the left hand side of `+=' or `-=' " "operator" msgstr "" -#: mcs/mcs/ecore.cs:6947 +#: mcs/mcs/ecore.cs:6979 #, csharp-format msgid "" "The event `{0}' can only appear on the left hand side of += or -= when used " "outside of the type `{1}'" msgstr "" -#: mcs/mcs/ecore.cs:7119 +#: mcs/mcs/ecore.cs:7151 #, csharp-format msgid "" "An implicitly typed local variable declaration cannot be initialized with " "`{0}'" msgstr "" -#: mcs/mcs/ecore.cs:7133 +#: mcs/mcs/ecore.cs:7165 msgid "" "The contextual keyword `var' may only appear within a local variable " "declaration" @@ -1680,294 +1732,301 @@ msgstr "" msgid "Type byte, sbyte, short, ushort, int, uint, long or ulong expected" msgstr "" -#: mcs/mcs/eval.cs:587 +#: mcs/mcs/eval.cs:628 msgid "Detection Parsing Error" msgstr "" -#: mcs/mcs/expression.cs:605 +#: mcs/mcs/expression.cs:608 #, csharp-format msgid "Operator `{0}' is ambiguous on an operand of type `{1}'" msgstr "" -#: mcs/mcs/expression.cs:699 +#: mcs/mcs/expression.cs:702 msgid "Cannot take the address of the given expression" msgstr "" -#: mcs/mcs/expression.cs:722 +#: mcs/mcs/expression.cs:725 msgid "" "You can only take the address of unfixed expression inside of a fixed " "statement initializer" msgstr "" -#: mcs/mcs/expression.cs:966 +#: mcs/mcs/expression.cs:969 msgid "The * or -> operator must be applied to a pointer" msgstr "" -#: mcs/mcs/expression.cs:1189 +#: mcs/mcs/expression.cs:1192 msgid "" "The operand of an increment or decrement operator must be a variable, " "property or indexer" msgstr "" -#: mcs/mcs/expression.cs:1432 +#: mcs/mcs/expression.cs:1435 #, csharp-format -msgid "The `{0}' operator cannot be applied to an operand of a static type" +msgid "The second operand of `is' or `as' operator cannot be static type `{0}'" msgstr "" -#: mcs/mcs/expression.cs:1437 +#: mcs/mcs/expression.cs:1441 #, csharp-format msgid "The `{0}' operator cannot be applied to an operand of pointer type" msgstr "" -#: mcs/mcs/expression.cs:1443 +#: mcs/mcs/expression.cs:1447 #, csharp-format msgid "" -"The `{0}' operator cannot be applied to a lambda expression or anonymous " -"method" +"The `{0}' operator cannot be applied to a lambda expression, anonymous " +"method, or method group" msgstr "" -#: mcs/mcs/expression.cs:1735 +#: mcs/mcs/expression.cs:1747 #, csharp-format msgid "" "The `as' operator cannot be used with a non-reference type parameter `{0}'. " "Consider adding `class' or a reference type constraint" msgstr "" -#: mcs/mcs/expression.cs:1739 +#: mcs/mcs/expression.cs:1751 #, csharp-format msgid "The `as' operator cannot be used with a non-nullable value type `{0}'" msgstr "" -#: mcs/mcs/expression.cs:1773 +#: mcs/mcs/expression.cs:1785 #, csharp-format msgid "Cannot convert type `{0}' to `{1}' via a built-in conversion" msgstr "" -#: mcs/mcs/expression.cs:1814 +#: mcs/mcs/expression.cs:1826 #, csharp-format msgid "Cannot convert to static type `{0}'" msgstr "" -#: mcs/mcs/expression.cs:1924 +#: mcs/mcs/expression.cs:1936 msgid "" "The `default value' operator cannot be applied to an operand of a static type" msgstr "" -#: mcs/mcs/expression.cs:2601 +#: mcs/mcs/expression.cs:2613 #, csharp-format msgid "Operator `{0}' cannot be applied to operands of type `{1}' and `{2}'" msgstr "" -#: mcs/mcs/expression.cs:3396 +#: mcs/mcs/expression.cs:3408 msgid "To cast a negative value, you must enclose the value in parentheses" msgstr "" -#: mcs/mcs/expression.cs:5067 +#: mcs/mcs/expression.cs:3501 +#, csharp-format +msgid "" +"Expression must be implicitly convertible to Boolean or its type `{0}' must " +"define operator `{1}'" +msgstr "" + +#: mcs/mcs/expression.cs:5084 #, csharp-format msgid "" "A user-defined operator `{0}' must have each parameter type and return type " "of the same type in order to be applicable as a short circuit operator" msgstr "" -#: mcs/mcs/expression.cs:5077 +#: mcs/mcs/expression.cs:5094 #, csharp-format msgid "" "The type `{0}' must have operator `true' and operator `false' defined when " "`{1}' is used as a short circuit operator" msgstr "" -#: mcs/mcs/expression.cs:5452 +#: mcs/mcs/expression.cs:5469 #, csharp-format msgid "" "Type of conditional expression cannot be determined as `{0}' and `{1}' " "convert implicitly to each other" msgstr "" -#: mcs/mcs/expression.cs:5464 +#: mcs/mcs/expression.cs:5481 #, csharp-format msgid "" "Type of conditional expression cannot be determined because there is no " "implicit conversion between `{0}' and `{1}'" msgstr "" -#: mcs/mcs/expression.cs:5796 +#: mcs/mcs/expression.cs:5813 #, csharp-format msgid "Use of unassigned local variable `{0}'" msgstr "" -#: mcs/mcs/expression.cs:5816 +#: mcs/mcs/expression.cs:5833 #, csharp-format msgid "" "Cannot use fixed local `{0}' inside an anonymous method, lambda expression " "or query expression" msgstr "" -#: mcs/mcs/expression.cs:6001 +#: mcs/mcs/expression.cs:6018 #, csharp-format msgid "" "Parameter `{0}' cannot be used inside `{1}' when using `ref' or `out' " "modifier" msgstr "" -#: mcs/mcs/expression.cs:6071 +#: mcs/mcs/expression.cs:6088 #, csharp-format msgid "Use of unassigned out parameter `{0}'" msgstr "" -#: mcs/mcs/expression.cs:6233 +#: mcs/mcs/expression.cs:6271 #, csharp-format msgid "Cannot invoke a non-delegate type `{0}'" msgstr "" -#: mcs/mcs/expression.cs:6244 +#: mcs/mcs/expression.cs:6282 #, csharp-format msgid "The member `{0}' cannot be used as method or delegate" msgstr "" -#: mcs/mcs/expression.cs:6264 +#: mcs/mcs/expression.cs:6302 msgid "" "Do not directly call your base class Finalize method. It is called " "automatically from your destructor" msgstr "" -#: mcs/mcs/expression.cs:6266 +#: mcs/mcs/expression.cs:6304 msgid "" "Destructors and object.Finalize cannot be called directly. Consider calling " "IDisposable.Dispose if available" msgstr "" -#: mcs/mcs/expression.cs:6295 +#: mcs/mcs/expression.cs:6333 #, csharp-format msgid "" "The base call to method `{0}' cannot be dynamically dispatched. Consider " "casting the dynamic arguments or eliminating the base access" msgstr "" -#: mcs/mcs/expression.cs:6379 +#: mcs/mcs/expression.cs:6418 #, csharp-format msgid "`{0}': cannot explicitly call operator or accessor" msgstr "" -#: mcs/mcs/expression.cs:6566 +#: mcs/mcs/expression.cs:6605 #, csharp-format msgid "Unsafe type `{0}' cannot be used in an object creation expression" msgstr "" -#: mcs/mcs/expression.cs:6589 +#: mcs/mcs/expression.cs:6628 #, csharp-format msgid "" "Cannot create an instance of the variable type `{0}' because it does not " "have the new() constraint" msgstr "" -#: mcs/mcs/expression.cs:6595 +#: mcs/mcs/expression.cs:6634 #, csharp-format msgid "" "`{0}': cannot provide arguments when creating an instance of a variable type" msgstr "" -#: mcs/mcs/expression.cs:6604 +#: mcs/mcs/expression.cs:6643 #, csharp-format msgid "Cannot create an instance of the static class `{0}'" msgstr "" -#: mcs/mcs/expression.cs:6616 +#: mcs/mcs/expression.cs:6655 #, csharp-format msgid "Cannot create an instance of the abstract class or interface `{0}'" msgstr "" -#: mcs/mcs/expression.cs:6925 +#: mcs/mcs/expression.cs:6964 msgid "" "An implicitly typed local variable declarator cannot use an array initializer" msgstr "" -#: mcs/mcs/expression.cs:7088 mcs/mcs/expression.cs:7113 +#: mcs/mcs/expression.cs:7127 mcs/mcs/expression.cs:7152 #, csharp-format msgid "An array initializer of length `{0}' was expected" msgstr "" -#: mcs/mcs/expression.cs:7104 +#: mcs/mcs/expression.cs:7143 msgid "" "Array initializers can only be used in a variable or field initializer. Try " "using a new expression instead" msgstr "" -#: mcs/mcs/expression.cs:7121 +#: mcs/mcs/expression.cs:7160 msgid "A nested array initializer was expected" msgstr "" -#: mcs/mcs/expression.cs:7168 +#: mcs/mcs/expression.cs:7207 msgid "An expression tree cannot contain a multidimensional array initializer" msgstr "" -#: mcs/mcs/expression.cs:7204 +#: mcs/mcs/expression.cs:7243 msgid "Cannot create an array with a negative size" msgstr "" -#: mcs/mcs/expression.cs:7296 +#: mcs/mcs/expression.cs:7335 msgid "" "Can only use array initializer expressions to assign to array types. Try " "using a new expression instead" msgstr "" -#: mcs/mcs/expression.cs:7718 +#: mcs/mcs/expression.cs:7759 msgid "" "The type of an implicitly typed array cannot be inferred from the " "initializer. Try specifying array type explicitly" msgstr "" -#: mcs/mcs/expression.cs:7859 +#: mcs/mcs/expression.cs:7914 msgid "" "The `this' object cannot be used before all of its fields are assigned to" msgstr "" -#: mcs/mcs/expression.cs:7865 +#: mcs/mcs/expression.cs:7920 msgid "" "Keyword `this' is not valid in a static property, static method, or static " "field initializer" msgstr "" -#: mcs/mcs/expression.cs:7868 +#: mcs/mcs/expression.cs:7923 msgid "" "Anonymous methods inside structs cannot access instance members of `this'. " "Consider copying `this' to a local variable outside the anonymous method and " "using the local instead" msgstr "" -#: mcs/mcs/expression.cs:7871 +#: mcs/mcs/expression.cs:7926 msgid "Keyword `this' is not available in the current context" msgstr "" -#: mcs/mcs/expression.cs:7947 +#: mcs/mcs/expression.cs:8002 msgid "Cannot take the address of `this' because it is read-only" msgstr "" -#: mcs/mcs/expression.cs:7949 +#: mcs/mcs/expression.cs:8004 msgid "Cannot pass `this' as a ref or out argument because it is read-only" msgstr "" -#: mcs/mcs/expression.cs:7951 +#: mcs/mcs/expression.cs:8006 msgid "Cannot assign to `this' because it is read-only" msgstr "" -#: mcs/mcs/expression.cs:8019 +#: mcs/mcs/expression.cs:8074 msgid "The __arglist construct is valid only within a variable argument method" msgstr "" -#: mcs/mcs/expression.cs:8080 +#: mcs/mcs/expression.cs:8135 msgid "An expression tree cannot contain a method with variable arguments" msgstr "" -#: mcs/mcs/expression.cs:8348 +#: mcs/mcs/expression.cs:8403 msgid "The typeof operator cannot be used on the dynamic type" msgstr "" -#: mcs/mcs/expression.cs:8389 +#: mcs/mcs/expression.cs:8444 #, csharp-format msgid "`{0}': an attribute argument cannot use type parameters" msgstr "" -#: mcs/mcs/expression.cs:8604 +#: mcs/mcs/expression.cs:8659 #, csharp-format msgid "" "`{0}' does not have a predefined size, therefore sizeof can only be used in " @@ -1975,158 +2034,158 @@ msgid "" "SizeOf)" msgstr "" -#: mcs/mcs/expression.cs:8671 +#: mcs/mcs/expression.cs:8726 #, csharp-format msgid "Alias `{0}' not found" msgstr "" -#: mcs/mcs/expression.cs:8697 +#: mcs/mcs/expression.cs:8752 msgid "" "The namespace alias qualifier `::' cannot be used to invoke a method. " "Consider using `.' instead" msgstr "" -#: mcs/mcs/expression.cs:8787 +#: mcs/mcs/expression.cs:8842 msgid "Cannot perform member binding on `null' value" msgstr "" -#: mcs/mcs/expression.cs:8918 +#: mcs/mcs/expression.cs:8973 #, csharp-format msgid "" "`{0}': cannot reference a type through an expression. Consider using `{1}' " "instead" msgstr "" -#: mcs/mcs/expression.cs:8987 +#: mcs/mcs/expression.cs:9042 #, csharp-format msgid "A nested type cannot be specified through a type parameter `{0}'" msgstr "" -#: mcs/mcs/expression.cs:8995 +#: mcs/mcs/expression.cs:9050 #, csharp-format msgid "" "Alias `{0}' cannot be used with `::' since it denotes a type. Consider " "replacing `::' with `.'" msgstr "" -#: mcs/mcs/expression.cs:9060 +#: mcs/mcs/expression.cs:9117 #, csharp-format msgid "The nested type `{0}' does not exist in the type `{1}'" msgstr "" -#: mcs/mcs/expression.cs:9084 +#: mcs/mcs/expression.cs:9141 #, csharp-format msgid "" "Type `{0}' does not contain a definition for `{1}' and no extension method " "`{1}' of type `{0}' could be found. Are you missing {2}?" msgstr "" -#: mcs/mcs/expression.cs:9312 +#: mcs/mcs/expression.cs:9369 #, csharp-format msgid "Cannot apply indexing with [] to an expression of type `{0}'" msgstr "" -#: mcs/mcs/expression.cs:9330 +#: mcs/mcs/expression.cs:9387 msgid "A pointer must be indexed by only one value" msgstr "" -#: mcs/mcs/expression.cs:9386 +#: mcs/mcs/expression.cs:9443 msgid "An element access expression cannot use named argument" msgstr "" -#: mcs/mcs/expression.cs:9470 +#: mcs/mcs/expression.cs:9531 #, csharp-format msgid "Wrong number of indexes `{0}' inside [], expected `{1}'" msgstr "" -#: mcs/mcs/expression.cs:9870 +#: mcs/mcs/expression.cs:9932 msgid "" "The indexer base access cannot be dynamically dispatched. Consider casting " "the dynamic arguments or eliminating the base access" msgstr "" -#: mcs/mcs/expression.cs:9955 +#: mcs/mcs/expression.cs:10017 msgid "An expression tree may not contain a base access" msgstr "" -#: mcs/mcs/expression.cs:9973 +#: mcs/mcs/expression.cs:10035 msgid "Keyword `base' is not available in a static method" msgstr "" -#: mcs/mcs/expression.cs:9975 +#: mcs/mcs/expression.cs:10037 msgid "Keyword `base' is not available in the current context" msgstr "" -#: mcs/mcs/expression.cs:10013 +#: mcs/mcs/expression.cs:10075 msgid "" "A property, indexer or dynamic member access may not be passed as `ref' or " "`out' parameter" msgstr "" -#: mcs/mcs/expression.cs:10351 +#: mcs/mcs/expression.cs:10413 #, csharp-format msgid "Array elements cannot be of type `{0}'" msgstr "" -#: mcs/mcs/expression.cs:10354 +#: mcs/mcs/expression.cs:10416 #, csharp-format msgid "Array elements cannot be of static type `{0}'" msgstr "" -#: mcs/mcs/expression.cs:10530 +#: mcs/mcs/expression.cs:10592 msgid "Cannot use a negative size with stackalloc" msgstr "" -#: mcs/mcs/expression.cs:10534 +#: mcs/mcs/expression.cs:10596 msgid "Cannot use stackalloc in finally or catch" msgstr "" -#: mcs/mcs/expression.cs:10651 +#: mcs/mcs/expression.cs:10716 #, csharp-format msgid "" "Member `{0}' cannot be initialized. An object initializer may only be used " "for fields, or properties" msgstr "" -#: mcs/mcs/expression.cs:10660 +#: mcs/mcs/expression.cs:10724 #, csharp-format msgid "" "Static field or property `{0}' cannot be assigned in an object initializer" msgstr "" -#: mcs/mcs/expression.cs:10867 +#: mcs/mcs/expression.cs:10931 #, csharp-format msgid "" "A field or property `{0}' cannot be initialized with a collection object " "initializer because type `{1}' does not implement `{2}' interface" msgstr "" -#: mcs/mcs/expression.cs:10878 +#: mcs/mcs/expression.cs:10942 #, csharp-format msgid "Inconsistent `{0}' member declaration" msgstr "" -#: mcs/mcs/expression.cs:10886 +#: mcs/mcs/expression.cs:10950 #, csharp-format msgid "" "An object initializer includes more than one member `{0}' initialization" msgstr "" -#: mcs/mcs/expression.cs:10904 +#: mcs/mcs/expression.cs:10968 #, csharp-format msgid "Cannot initialize object of type `{0}' with a collection initializer" msgstr "" -#: mcs/mcs/expression.cs:11047 +#: mcs/mcs/expression.cs:11113 msgid "" "Object and collection initializers cannot be used to instantiate a delegate" msgstr "" -#: mcs/mcs/expression.cs:11219 +#: mcs/mcs/expression.cs:11301 msgid "Anonymous types cannot be used in this expression" msgstr "" -#: mcs/mcs/expression.cs:11313 +#: mcs/mcs/expression.cs:11395 #, csharp-format msgid "An anonymous type property `{0}' cannot be initialized with `{1}'" msgstr "" @@ -2197,7 +2256,7 @@ msgstr "" msgid "`{0}': A field cannot be both volatile and readonly" msgstr "" -#: mcs/mcs/flowanalysis.cs:144 +#: mcs/mcs/flowanalysis.cs:148 #, csharp-format msgid "" "An automatically implemented property `{0}' must be fully assigned before " @@ -2205,7 +2264,7 @@ msgid "" "contructor from a constructor initializer" msgstr "" -#: mcs/mcs/flowanalysis.cs:148 +#: mcs/mcs/flowanalysis.cs:156 #, csharp-format msgid "" "Field `{0}' must be fully assigned before control leaves the constructor" @@ -2281,61 +2340,61 @@ msgid "" "`{0}' is not a valid constraint. Static classes cannot be used as constraints" msgstr "" -#: mcs/mcs/generic.cs:689 +#: mcs/mcs/generic.cs:694 #, csharp-format msgid "The {2} type parameter `{0}' must be {3} valid on `{1}{4}'" msgstr "" -#: mcs/mcs/generic.cs:2188 +#: mcs/mcs/generic.cs:2205 #, csharp-format msgid "`{0}': static classes cannot be used as generic arguments" msgstr "" -#: mcs/mcs/generic.cs:2195 +#: mcs/mcs/generic.cs:2212 #, csharp-format msgid "The type `{0}' may not be used as a type argument" msgstr "" -#: mcs/mcs/generic.cs:2289 +#: mcs/mcs/generic.cs:2306 msgid "Variant type parameters can only be used with interfaces and delegates" msgstr "" -#: mcs/mcs/generic.cs:2358 +#: mcs/mcs/generic.cs:2375 #, csharp-format msgid "" "Partial method declarations of `{0}' have inconsistent constraints for type " "parameter `{1}'" msgstr "" -#: mcs/mcs/generic.cs:2374 +#: mcs/mcs/generic.cs:2391 #, csharp-format msgid "" "Partial declarations of `{0}' have inconsistent constraints for type " "parameter `{1}'" msgstr "" -#: mcs/mcs/generic.cs:2558 +#: mcs/mcs/generic.cs:2575 #, csharp-format msgid "" "The type `{0}' must be a reference type in order to use it as type parameter " "`{1}' in the generic type or method `{2}'" msgstr "" -#: mcs/mcs/generic.cs:2568 +#: mcs/mcs/generic.cs:2585 #, csharp-format msgid "" "The type `{0}' must be a non-nullable value type in order to use it as type " "parameter `{1}' in the generic type or method `{2}'" msgstr "" -#: mcs/mcs/generic.cs:2629 +#: mcs/mcs/generic.cs:2646 #, csharp-format msgid "" "The type `{0}' must have a public parameterless constructor in order to use " "it as parameter `{1}' in the generic type or method `{2}'" msgstr "" -#: mcs/mcs/generic.cs:2685 +#: mcs/mcs/generic.cs:2702 #, csharp-format msgid "" "The type `{0}' cannot be used as type parameter `{1}' in the generic type or " @@ -2343,7 +2402,7 @@ msgid "" "`{3}'" msgstr "" -#: mcs/mcs/generic.cs:2691 +#: mcs/mcs/generic.cs:2708 #, csharp-format msgid "" "The type `{0}' cannot be used as type parameter `{1}' in the generic type or " @@ -2351,63 +2410,63 @@ msgid "" "`{3}'" msgstr "" -#: mcs/mcs/generic.cs:2695 +#: mcs/mcs/generic.cs:2712 #, csharp-format msgid "" "The type `{0}' cannot be used as type parameter `{1}' in the generic type or " "method `{2}'. The nullable type `{0}' does not satisfy constraint `{3}'" msgstr "" -#: mcs/mcs/generic.cs:2700 +#: mcs/mcs/generic.cs:2717 #, csharp-format msgid "" "The type `{0}' cannot be used as type parameter `{1}' in the generic type or " "method `{2}'. There is no boxing conversion from `{0}' to `{3}'" msgstr "" -#: mcs/mcs/generic.cs:2705 +#: mcs/mcs/generic.cs:2722 #, csharp-format msgid "" "The type `{0}' cannot be used as type parameter `{1}' in the generic type or " "method `{2}'. There is no implicit reference conversion from `{0}' to `{3}'" msgstr "" -#: mcs/mcs/iterators.cs:98 +#: mcs/mcs/iterators.cs:101 msgid "The yield statement cannot be used inside anonymous method blocks" msgstr "" -#: mcs/mcs/iterators.cs:103 +#: mcs/mcs/iterators.cs:106 msgid "Cannot yield in the body of a finally clause" msgstr "" -#: mcs/mcs/iterators.cs:116 +#: mcs/mcs/iterators.cs:119 msgid "Cannot yield a value in the body of a try block with a catch clause" msgstr "" -#: mcs/mcs/iterators.cs:120 +#: mcs/mcs/iterators.cs:123 msgid "Cannot yield a value in the body of a catch clause" msgstr "" -#: mcs/mcs/iterators.cs:1188 +#: mcs/mcs/iterators.cs:1183 #, csharp-format msgid "" "The body of `{0}' cannot be an iterator block because `{1}' is not an " "iterator interface type" msgstr "" -#: mcs/mcs/iterators.cs:1201 +#: mcs/mcs/iterators.cs:1196 msgid "Iterators cannot have ref or out parameters" msgstr "" -#: mcs/mcs/iterators.cs:1207 +#: mcs/mcs/iterators.cs:1202 msgid "__arglist is not allowed in parameter list of iterators" msgstr "" -#: mcs/mcs/iterators.cs:1213 +#: mcs/mcs/iterators.cs:1208 msgid "Iterators cannot have unsafe parameters or yield types" msgstr "" -#: mcs/mcs/iterators.cs:1219 mcs/mcs/statement.cs:5931 +#: mcs/mcs/iterators.cs:1214 mcs/mcs/statement.cs:6093 msgid "Unsafe code may not appear in iterators" msgstr "" @@ -2530,63 +2589,63 @@ msgid "" "suffix `{1}' to create a literal of this type" msgstr "" -#: mcs/mcs/membercache.cs:1409 +#: mcs/mcs/membercache.cs:1412 msgid "" "A partial method declaration and partial method implementation cannot differ " "on use of `params' modifier" msgstr "" -#: mcs/mcs/membercache.cs:1412 +#: mcs/mcs/membercache.cs:1415 msgid "" "A partial method declaration and partial method implementation must be both " "an extension method or neither" msgstr "" -#: mcs/mcs/membercache.cs:1416 +#: mcs/mcs/membercache.cs:1419 #, csharp-format msgid "" "Overloaded contructor `{0}' cannot differ on use of parameter modifiers only" msgstr "" -#: mcs/mcs/membercache.cs:1420 +#: mcs/mcs/membercache.cs:1423 #, csharp-format msgid "" "Overloaded method `{0}' cannot differ on use of parameter modifiers only" msgstr "" -#: mcs/mcs/membercache.cs:1452 +#: mcs/mcs/membercache.cs:1455 msgid "" "A partial method declaration and partial method implementation must be both " "`static' or neither" msgstr "" -#: mcs/mcs/membercache.cs:1458 +#: mcs/mcs/membercache.cs:1461 msgid "" "A partial method declaration and partial method implementation must be both " "`unsafe' or neither" msgstr "" -#: mcs/mcs/membercache.cs:1466 +#: mcs/mcs/membercache.cs:1469 #, csharp-format msgid "A partial method `{0}' declaration is already defined" msgstr "" -#: mcs/mcs/membercache.cs:1470 +#: mcs/mcs/membercache.cs:1473 #, csharp-format msgid "A partial method `{0}' implementation is already defined" msgstr "" -#: mcs/mcs/membercache.cs:1481 mcs/mcs/property.cs:81 +#: mcs/mcs/membercache.cs:1484 mcs/mcs/property.cs:81 #, csharp-format msgid "A member `{0}' is already reserved" msgstr "" -#: mcs/mcs/membercache.cs:1492 +#: mcs/mcs/membercache.cs:1495 #, csharp-format msgid "Duplicate user-defined conversion in type `{0}'" msgstr "" -#: mcs/mcs/membercache.cs:1498 +#: mcs/mcs/membercache.cs:1501 #, csharp-format msgid "" "A member `{0}' is already defined. Rename this member or use different " @@ -2604,64 +2663,70 @@ msgid "" "`extern'" msgstr "" -#: mcs/mcs/method.cs:665 +#: mcs/mcs/method.cs:569 +msgid "" +"The DllImport attribute cannot be applied to a method that is generic or " +"contained in a generic type" +msgstr "" + +#: mcs/mcs/method.cs:671 #, csharp-format msgid "`{0}': A partial method parameters cannot use `out' modifier" msgstr "" -#: mcs/mcs/method.cs:729 +#: mcs/mcs/method.cs:740 #, csharp-format msgid "" "Conditional not valid on `{0}' because it is a constructor, destructor, " "operator or explicit interface implementation" msgstr "" -#: mcs/mcs/method.cs:899 +#: mcs/mcs/method.cs:910 msgid "" "A partial method cannot define access modifier or any of abstract, extern, " "new, override, sealed, or virtual modifiers" msgstr "" -#: mcs/mcs/method.cs:905 +#: mcs/mcs/method.cs:916 msgid "" "A partial method must be declared within a partial class or partial struct" msgstr "" -#: mcs/mcs/method.cs:910 +#: mcs/mcs/method.cs:921 #, csharp-format msgid "`{0}': Extension methods must be declared static" msgstr "" -#: mcs/mcs/method.cs:926 +#: mcs/mcs/method.cs:937 #, csharp-format msgid "Program `{0}' has more than one entry point defined: `{1}'" msgstr "" -#: mcs/mcs/method.cs:969 +#: mcs/mcs/method.cs:980 #, csharp-format msgid "Conditional not valid on `{0}' because it is an override method" msgstr "" -#: mcs/mcs/method.cs:974 +#: mcs/mcs/method.cs:985 #, csharp-format msgid "Conditional not valid on `{0}' because its return type is not void" msgstr "" -#: mcs/mcs/method.cs:979 +#: mcs/mcs/method.cs:990 msgid "Conditional not valid on interface members" msgstr "" -#: mcs/mcs/method.cs:985 +#: mcs/mcs/method.cs:996 #, csharp-format msgid "Conditional member `{0}' cannot implement interface member `{1}'" msgstr "" -#: mcs/mcs/method.cs:992 +#: mcs/mcs/method.cs:1003 #, csharp-format msgid "Conditional method `{0}' cannot have an out parameter" msgstr "" -#: mcs/mcs/method.cs:1180 +#: mcs/mcs/method.cs:1191 #, csharp-format msgid "" "The constraints for type parameter `{0}' of method `{1}' must match the " @@ -2669,16 +2734,16 @@ msgid "" "using an explicit interface implementation instead" msgstr "" -#: mcs/mcs/method.cs:1235 +#: mcs/mcs/method.cs:1246 msgid "The return type of an async method must be void, Task, or Task" msgstr "" -#: mcs/mcs/method.cs:1252 +#: mcs/mcs/method.cs:1263 #, csharp-format msgid "`{0}': Extension methods cannot be defined in a nested class" msgstr "" -#: mcs/mcs/method.cs:1258 +#: mcs/mcs/method.cs:1269 #, csharp-format msgid "" "`{0}': Extension methods require `System.Runtime.CompilerServices." @@ -2686,184 +2751,185 @@ msgid "" "reference?" msgstr "" -#: mcs/mcs/method.cs:1267 +#: mcs/mcs/method.cs:1278 #, csharp-format msgid "`{0}': Extension methods must be defined in a non-generic static class" msgstr "" -#: mcs/mcs/method.cs:1283 +#: mcs/mcs/method.cs:1294 #, csharp-format msgid "`{0}': an entry point cannot be async method" msgstr "" -#: mcs/mcs/method.cs:1333 +#: mcs/mcs/method.cs:1350 #, csharp-format msgid "" "A partial method `{0}' implementation is missing a partial method declaration" msgstr "" -#: mcs/mcs/method.cs:1371 +#: mcs/mcs/method.cs:1382 #, csharp-format msgid "Method or delegate cannot return type `{0}'" msgstr "" -#: mcs/mcs/method.cs:1449 +#: mcs/mcs/method.cs:1483 msgid "" "The constructor call cannot be dynamically dispatched within constructor " "initializer" msgstr "" -#: mcs/mcs/method.cs:1463 +#: mcs/mcs/method.cs:1497 #, csharp-format msgid "`{0}': Struct constructors cannot call base constructors" msgstr "" -#: mcs/mcs/method.cs:1481 +#: mcs/mcs/method.cs:1515 #, csharp-format msgid "Constructor `{0}' cannot call itself" msgstr "" -#: mcs/mcs/method.cs:1633 +#: mcs/mcs/method.cs:1666 #, csharp-format msgid "`{0}': The static constructor must be parameterless" msgstr "" -#: mcs/mcs/method.cs:1654 +#: mcs/mcs/method.cs:1687 msgid "Structs cannot contain explicit parameterless constructors" msgstr "" -#: mcs/mcs/method.cs:1680 +#: mcs/mcs/method.cs:1713 #, csharp-format msgid "" -"`{0}': Structs with primary constructor cannot have explicit constructor" +"`{0}': Structs with primary constructor cannot specify default constructor " +"initializer" msgstr "" -#: mcs/mcs/method.cs:1683 +#: mcs/mcs/method.cs:1716 #, csharp-format msgid "" "`{0}': Instance constructor of type with primary constructor must specify " "`this' constructor initializer" msgstr "" -#: mcs/mcs/method.cs:1719 +#: mcs/mcs/method.cs:1752 #, csharp-format msgid "" "`{0}': A class with the ComImport attribute cannot have a user-defined " "constructor" msgstr "" -#: mcs/mcs/method.cs:1971 +#: mcs/mcs/method.cs:2004 #, csharp-format msgid "`{0}' is an accessor not found in interface member `{1}{2}'" msgstr "" -#: mcs/mcs/method.cs:1977 +#: mcs/mcs/method.cs:2010 #, csharp-format msgid "" "`{0}.{1}' in explicit interface declaration is not a member of interface" msgstr "" -#: mcs/mcs/method.cs:1985 +#: mcs/mcs/method.cs:2018 #, csharp-format msgid "" "`{0}' explicit method implementation cannot implement `{1}' because it is an " "accessor" msgstr "" -#: mcs/mcs/method.cs:1995 +#: mcs/mcs/method.cs:2028 #, csharp-format msgid "Method `{0}' cannot implement interface accessor `{1}'" msgstr "" -#: mcs/mcs/method.cs:2002 +#: mcs/mcs/method.cs:2035 #, csharp-format msgid "" "Accessor `{0}' cannot implement interface member `{1}' for type `{2}'. Use " "an explicit interface implementation" msgstr "" -#: mcs/mcs/method.cs:2009 +#: mcs/mcs/method.cs:2042 #, csharp-format msgid "" "Accessor `{0}' must be declared public to implement interface member `{1}'" msgstr "" -#: mcs/mcs/method.cs:2029 +#: mcs/mcs/method.cs:2062 #, csharp-format msgid "" "`{0}': the explicit interface implementation cannot introduce the params " "modifier" msgstr "" -#: mcs/mcs/method.cs:2370 +#: mcs/mcs/method.cs:2403 #, csharp-format msgid "" "Attribute `{0}' is not valid on property or event accessors. It is valid on " "`{1}' declarations only" msgstr "" -#: mcs/mcs/method.cs:2603 +#: mcs/mcs/method.cs:2636 #, csharp-format msgid "User-defined operator `{0}' must be declared static and public" msgstr "" -#: mcs/mcs/method.cs:2647 +#: mcs/mcs/method.cs:2680 msgid "" "User-defined operator cannot take an object of the enclosing type and " "convert to an object of the enclosing type" msgstr "" -#: mcs/mcs/method.cs:2658 +#: mcs/mcs/method.cs:2691 msgid "User-defined conversion must convert to or from the enclosing type" msgstr "" -#: mcs/mcs/method.cs:2664 +#: mcs/mcs/method.cs:2697 #, csharp-format msgid "" "User-defined conversion `{0}' cannot convert to or from the dynamic type" msgstr "" -#: mcs/mcs/method.cs:2671 +#: mcs/mcs/method.cs:2704 #, csharp-format msgid "" "User-defined conversion `{0}' cannot convert to or from an interface type" msgstr "" -#: mcs/mcs/method.cs:2678 +#: mcs/mcs/method.cs:2711 #, csharp-format msgid "User-defined conversion `{0}' cannot convert to or from a base class" msgstr "" -#: mcs/mcs/method.cs:2684 +#: mcs/mcs/method.cs:2717 #, csharp-format msgid "User-defined conversion `{0}' cannot convert to or from a derived class" msgstr "" -#: mcs/mcs/method.cs:2691 +#: mcs/mcs/method.cs:2724 msgid "" "Overloaded shift operator must have the type of the first operand be the " "containing type, and the type of the second operand must be int" msgstr "" -#: mcs/mcs/method.cs:2700 +#: mcs/mcs/method.cs:2733 msgid "" "The return type for ++ or -- operator must be the containing type or derived " "from the containing type" msgstr "" -#: mcs/mcs/method.cs:2705 +#: mcs/mcs/method.cs:2738 msgid "The parameter type for ++ or -- operator must be the containing type" msgstr "" -#: mcs/mcs/method.cs:2712 +#: mcs/mcs/method.cs:2745 msgid "The parameter type of a unary operator must be the containing type" msgstr "" -#: mcs/mcs/method.cs:2720 +#: mcs/mcs/method.cs:2753 msgid "The return type of operator True or False must be bool" msgstr "" -#: mcs/mcs/method.cs:2735 +#: mcs/mcs/method.cs:2768 msgid "One of the parameters of a binary operator must be the containing type" msgstr "" @@ -2877,45 +2943,52 @@ msgstr "" msgid "The imported type `{0}' is defined multiple times" msgstr "" -#: mcs/mcs/namespace.cs:741 mcs/mcs/namespace.cs:753 +#: mcs/mcs/namespace.cs:742 mcs/mcs/namespace.cs:754 msgid "" "A using clause must precede all other namespace elements except extern alias " "declarations" msgstr "" -#: mcs/mcs/namespace.cs:769 +#: mcs/mcs/namespace.cs:770 #, csharp-format msgid "The using alias `{0}' appeared previously in this namespace" msgstr "" -#: mcs/mcs/namespace.cs:807 mcs/mcs/namespace.cs:830 +#: mcs/mcs/namespace.cs:808 mcs/mcs/namespace.cs:831 #, csharp-format msgid "The namespace `{0}' already contains a definition for `{1}'" msgstr "" -#: mcs/mcs/namespace.cs:1052 +#: mcs/mcs/namespace.cs:1071 #, csharp-format msgid "Namespace `{0}' contains a definition with same name as alias `{1}'" msgstr "" -#: mcs/mcs/namespace.cs:1105 +#: mcs/mcs/namespace.cs:1124 #, csharp-format msgid "`{0}' is an ambiguous reference between `{1}' and `{2}'" msgstr "" -#: mcs/mcs/namespace.cs:1301 +#: mcs/mcs/namespace.cs:1386 +#, csharp-format +msgid "" +"`{0}' is not a static class. A using namespace directive can only be applied " +"to static classes or namespace" +msgstr "" + +#: mcs/mcs/namespace.cs:1395 #, csharp-format msgid "" "`{0}' is a type not a namespace. A using namespace directive can only be " "applied to namespaces" msgstr "" -#: mcs/mcs/namespace.cs:1325 +#: mcs/mcs/namespace.cs:1418 #, csharp-format msgid "The extern alias `{0}' was not specified in -reference option" msgstr "" -#: mcs/mcs/nullable.cs:1082 +#: mcs/mcs/nullable.cs:1087 msgid "" "An expression tree cannot contain a coalescing operator with null left side" msgstr "" @@ -2924,121 +2997,128 @@ msgstr "" msgid "The params parameter must be a single dimensional array" msgstr "" -#: mcs/mcs/parameter.cs:327 +#: mcs/mcs/parameter.cs:319 msgid "An out parameter cannot have the `In' attribute" msgstr "" -#: mcs/mcs/parameter.cs:332 +#: mcs/mcs/parameter.cs:324 msgid "" "Do not use `System.ParamArrayAttribute'. Use the `params' keyword instead" msgstr "" -#: mcs/mcs/parameter.cs:339 +#: mcs/mcs/parameter.cs:331 msgid "" "Cannot specify only `Out' attribute on a ref parameter. Use both `In' and " "`Out' attributes or neither" msgstr "" -#: mcs/mcs/parameter.cs:348 +#: mcs/mcs/parameter.cs:340 #, csharp-format msgid "Cannot specify `{0}' attribute on optional parameter `{1}'" msgstr "" -#: mcs/mcs/parameter.cs:357 +#: mcs/mcs/parameter.cs:349 msgid "" "The CallerMemberName attribute can only be applied to parameters with " "default value" msgstr "" -#: mcs/mcs/parameter.cs:362 +#: mcs/mcs/parameter.cs:354 msgid "" "The CallerLineNumber attribute can only be applied to parameters with " "default value" msgstr "" -#: mcs/mcs/parameter.cs:367 +#: mcs/mcs/parameter.cs:359 msgid "" "The CallerFilePath attribute can only be applied to parameters with default " "value" msgstr "" -#: mcs/mcs/parameter.cs:404 +#: mcs/mcs/parameter.cs:401 #, csharp-format msgid "Method or delegate parameter cannot be of type `{0}'" msgstr "" -#: mcs/mcs/parameter.cs:414 +#: mcs/mcs/parameter.cs:411 #, csharp-format msgid "`{0}': static types cannot be used as parameters" msgstr "" -#: mcs/mcs/parameter.cs:420 +#: mcs/mcs/parameter.cs:417 #, csharp-format msgid "The extension method cannot be of type `{0}'" msgstr "" -#: mcs/mcs/parameter.cs:441 mcs/mcs/parameter.cs:453 +#: mcs/mcs/parameter.cs:439 #, csharp-format msgid "" "The CallerMemberName attribute cannot be applied because there is no " "standard conversion from `{0}' to `{1}'" msgstr "" -#: mcs/mcs/parameter.cs:465 +#: mcs/mcs/parameter.cs:458 +#, csharp-format +msgid "" +"The CallerLineNumberAttribute attribute cannot be applied because there is " +"no standard conversion from `{0}' to `{1}'" +msgstr "" + +#: mcs/mcs/parameter.cs:476 #, csharp-format msgid "" "The CallerFilePath attribute cannot be applied because there is no standard " "conversion from `{0}' to `{1}'" msgstr "" -#: mcs/mcs/parameter.cs:511 +#: mcs/mcs/parameter.cs:552 #, csharp-format msgid "" "Argument of type `{0}' is not applicable for the DefaultParameterValue " "attribute" msgstr "" -#: mcs/mcs/parameter.cs:515 +#: mcs/mcs/parameter.cs:556 #, csharp-format msgid "" "The DefaultParameterValue attribute is not applicable on parameters of type " "`{0}'" msgstr "" -#: mcs/mcs/parameter.cs:543 +#: mcs/mcs/parameter.cs:584 msgid "The type of the default value should match the type of the parameter" msgstr "" -#: mcs/mcs/parameter.cs:694 +#: mcs/mcs/parameter.cs:735 msgid "An expression tree parameter cannot use `ref' or `out' modifier" msgstr "" -#: mcs/mcs/parameter.cs:1203 +#: mcs/mcs/parameter.cs:1266 #, csharp-format msgid "The parameter name `{0}' conflicts with a compiler generated name" msgstr "" -#: mcs/mcs/parameter.cs:1360 +#: mcs/mcs/parameter.cs:1424 #, csharp-format msgid "" "The expression being assigned to optional parameter `{0}' must be a constant " "or default value" msgstr "" -#: mcs/mcs/parameter.cs:1377 +#: mcs/mcs/parameter.cs:1442 #, csharp-format msgid "" "The expression being assigned to nullable optional parameter `{0}' must be " "default value" msgstr "" -#: mcs/mcs/parameter.cs:1385 +#: mcs/mcs/parameter.cs:1450 #, csharp-format msgid "" "Optional parameter `{0}' of type `{1}' can only be initialized with `null'" msgstr "" -#: mcs/mcs/parameter.cs:1396 +#: mcs/mcs/parameter.cs:1461 #, csharp-format msgid "" "Optional parameter expression of type `{0}' cannot be converted to parameter " @@ -3147,26 +3227,46 @@ msgid "" "or indexer has both a get and a set accessor" msgstr "" -#: mcs/mcs/property.cs:853 +#: mcs/mcs/property.cs:838 +#, csharp-format +msgid "`{0}': Only auto-implemented properties can have initializers" +msgstr "" + +#: mcs/mcs/property.cs:842 +#, csharp-format +msgid "`{0}': Properties inside interfaces cannot have initializers" +msgstr "" + +#: mcs/mcs/property.cs:851 +#, csharp-format +msgid "Auto-implemented property `{0}' must have get accessor" +msgstr "" + +#: mcs/mcs/property.cs:857 +#, csharp-format +msgid "Auto-implemented property `{0}' must have set accessor or initializer" +msgstr "" + +#: mcs/mcs/property.cs:891 #, csharp-format msgid "" "Automatically implemented property `{0}' cannot be used inside a type with " "an explicit StructLayout attribute" msgstr "" -#: mcs/mcs/property.cs:1348 +#: mcs/mcs/property.cs:1386 #, csharp-format msgid "`{0}': event must be of a delegate type" msgstr "" -#: mcs/mcs/property.cs:1626 +#: mcs/mcs/property.cs:1664 #, csharp-format msgid "" "The `{0}' attribute is valid only on an indexer that is not an explicit " "interface member declaration" msgstr "" -#: mcs/mcs/property.cs:1630 +#: mcs/mcs/property.cs:1668 msgid "Cannot set the `IndexerName' attribute on an indexer marked override" msgstr "" @@ -3189,109 +3289,111 @@ msgstr "" msgid "Control cannot leave the body of a finally clause" msgstr "" -#: mcs/mcs/statement.cs:1170 +#: mcs/mcs/statement.cs:1174 #, csharp-format msgid "" "An object of a type convertible to `{0}' is required for the return statement" msgstr "" -#: mcs/mcs/statement.cs:1183 mcs/mcs/statement.cs:1207 +#: mcs/mcs/statement.cs:1187 #, csharp-format msgid "" "`{0}': A return keyword must not be followed by any expression when method " "returns void" msgstr "" -#: mcs/mcs/statement.cs:1220 -#, csharp-format +#: mcs/mcs/statement.cs:1206 +msgid "Cannot return an expression of type `void'" +msgstr "" + +#: mcs/mcs/statement.cs:1214 mcs/mcs/statement.cs:1247 msgid "" -"`{0}': A return keyword must not be followed by an expression when async " -"delegate returns `Task'. Consider using `Task' return type" +"Anonymous function or lambda expression converted to a void returning " +"delegate cannot return a value" msgstr "" #: mcs/mcs/statement.cs:1224 +msgid "" +"Async lambda expression or anonymous method converted to a `Task' cannot " +"return a value. Consider returning `Task'" +msgstr "" + +#: mcs/mcs/statement.cs:1227 #, csharp-format msgid "" "`{0}': A return keyword must not be followed by an expression when async " "method returns `Task'. Consider using `Task' return type" msgstr "" -#: mcs/mcs/statement.cs:1237 +#: mcs/mcs/statement.cs:1238 #, csharp-format msgid "" "`{0}': The return expression type of async method must be `{1}' rather than " "`Task<{1}>'" msgstr "" -#: mcs/mcs/statement.cs:1247 -#, csharp-format -msgid "" -"`{0}': A return keyword must not be followed by any expression when delegate " -"returns void" -msgstr "" - -#: mcs/mcs/statement.cs:1280 +#: mcs/mcs/statement.cs:1278 #, csharp-format msgid "" "Cannot convert `{0}' to delegate type `{1}' because some of the return types " "in the block are not implicitly convertible to the delegate return type" msgstr "" -#: mcs/mcs/statement.cs:1337 +#: mcs/mcs/statement.cs:1354 msgid "" "Cannot return a value from iterators. Use the yield return statement to " "return a value, or yield break to end the iteration" msgstr "" -#: mcs/mcs/statement.cs:1399 +#: mcs/mcs/statement.cs:1416 #, csharp-format msgid "" "The label `{0}:' could not be found within the scope of the goto statement" msgstr "" -#: mcs/mcs/statement.cs:1737 +#: mcs/mcs/statement.cs:1771 msgid "A goto case is only valid inside a switch statement" msgstr "" -#: mcs/mcs/statement.cs:1760 +#: mcs/mcs/statement.cs:1794 msgid "" "A throw statement with no arguments is not allowed outside of a catch clause" msgstr "" -#: mcs/mcs/statement.cs:1765 +#: mcs/mcs/statement.cs:1799 msgid "" "A throw statement with no arguments is not allowed inside of a finally " "clause nested inside of the innermost catch clause" msgstr "" -#: mcs/mcs/statement.cs:1783 mcs/mcs/statement.cs:6436 +#: mcs/mcs/statement.cs:1817 mcs/mcs/statement.cs:6626 msgid "The type caught or thrown must be derived from System.Exception" msgstr "" -#: mcs/mcs/statement.cs:1925 +#: mcs/mcs/statement.cs:1984 msgid "No enclosing loop out of which to break or continue" msgstr "" -#: mcs/mcs/statement.cs:2094 +#: mcs/mcs/statement.cs:2153 msgid "A fixed statement cannot use an implicitly typed local variable" msgstr "" -#: mcs/mcs/statement.cs:2099 +#: mcs/mcs/statement.cs:2158 msgid "An implicitly typed local variable cannot be a constant" msgstr "" -#: mcs/mcs/statement.cs:2104 +#: mcs/mcs/statement.cs:2163 msgid "" "An implicitly typed local variable declarator must include an initializer" msgstr "" -#: mcs/mcs/statement.cs:2109 +#: mcs/mcs/statement.cs:2168 msgid "" "An implicitly typed local variable declaration cannot include multiple " "declarators" msgstr "" -#: mcs/mcs/statement.cs:2750 +#: mcs/mcs/statement.cs:2814 #, csharp-format msgid "" "A local variable named `{0}' cannot be declared in this scope because it " @@ -3299,112 +3401,118 @@ msgid "" "scope to denote something else" msgstr "" -#: mcs/mcs/statement.cs:2762 +#: mcs/mcs/statement.cs:2826 #, csharp-format msgid "A local variable named `{0}' is already defined in this scope" msgstr "" -#: mcs/mcs/statement.cs:2769 +#: mcs/mcs/statement.cs:2833 #, csharp-format msgid "" "The type parameter name `{0}' is the same as local variable or parameter name" msgstr "" -#: mcs/mcs/statement.cs:3617 +#: mcs/mcs/statement.cs:3712 #, csharp-format msgid "" "The out parameter `{0}' must be assigned to before control leaves the " "current method" msgstr "" -#: mcs/mcs/statement.cs:3880 +#: mcs/mcs/statement.cs:3975 msgid "Async methods cannot have ref or out parameters" msgstr "" -#: mcs/mcs/statement.cs:3886 +#: mcs/mcs/statement.cs:3981 msgid "__arglist is not allowed in parameter list of async methods" msgstr "" -#: mcs/mcs/statement.cs:3892 +#: mcs/mcs/statement.cs:3987 msgid "Async methods cannot have unsafe parameters" msgstr "" -#: mcs/mcs/statement.cs:4089 +#: mcs/mcs/statement.cs:4184 #, csharp-format msgid "The label `{0}' is a duplicate" msgstr "" -#: mcs/mcs/statement.cs:4098 mcs/mcs/statement.cs:4109 +#: mcs/mcs/statement.cs:4193 mcs/mcs/statement.cs:4204 #, csharp-format msgid "" "The label `{0}' shadows another label by the same name in a contained scope" msgstr "" -#: mcs/mcs/statement.cs:4312 +#: mcs/mcs/statement.cs:4425 #, csharp-format msgid "`{0}': not all code paths return a value" msgstr "" -#: mcs/mcs/statement.cs:4430 +#: mcs/mcs/statement.cs:4543 #, csharp-format msgid "The label `{0}' already occurs in this switch statement" msgstr "" -#: mcs/mcs/statement.cs:4554 +#: mcs/mcs/statement.cs:4667 #, csharp-format msgid "Control cannot fall through from one case label `{0}' to another" msgstr "" -#: mcs/mcs/statement.cs:4933 +#: mcs/mcs/statement.cs:5077 #, csharp-format msgid "" "A switch expression of type `{0}' cannot be converted to an integral type, " "bool, char, string, enum or nullable type" msgstr "" -#: mcs/mcs/statement.cs:5697 +#: mcs/mcs/statement.cs:5859 #, csharp-format msgid "`{0}' is not a reference type as required by the lock statement" msgstr "" -#: mcs/mcs/statement.cs:6078 +#: mcs/mcs/statement.cs:6240 msgid "The type of locals declared in a fixed statement must be a pointer type" msgstr "" -#: mcs/mcs/statement.cs:6094 +#: mcs/mcs/statement.cs:6256 msgid "" "The right hand side of a fixed statement assignment may not be a cast " "expression" msgstr "" -#: mcs/mcs/statement.cs:6164 +#: mcs/mcs/statement.cs:6326 msgid "" "You cannot use the fixed statement to take the address of an already fixed " "expression" msgstr "" -#: mcs/mcs/statement.cs:6688 +#: mcs/mcs/statement.cs:6487 +msgid "" +"The `await' operator cannot be used in the filter expression of a catch " +"clause" +msgstr "" + +#: mcs/mcs/statement.cs:7059 #, csharp-format msgid "" "A previous catch clause already catches all exceptions of this or a super " "type `{0}'" msgstr "" -#: mcs/mcs/statement.cs:6866 +#: mcs/mcs/statement.cs:7288 #, csharp-format msgid "" "`{0}': type used in a using statement must be implicitly convertible to " "`System.IDisposable'" msgstr "" -#: mcs/mcs/statement.cs:7277 +#: mcs/mcs/statement.cs:7700 #, csharp-format msgid "" "foreach statement requires that the return type `{0}' of `{1}' must have a " "suitable public MoveNext method and public Current property" msgstr "" -#: mcs/mcs/statement.cs:7321 +#: mcs/mcs/statement.cs:7744 #, csharp-format msgid "" "foreach statement cannot operate on variables of type `{0}' because it " @@ -3412,54 +3520,54 @@ msgid "" "implementation" msgstr "" -#: mcs/mcs/statement.cs:7343 +#: mcs/mcs/statement.cs:7766 #, csharp-format msgid "" "foreach statement cannot operate on variables of type `{0}' because it does " "not contain a definition for `{1}' or is inaccessible" msgstr "" -#: mcs/mcs/statement.cs:7578 +#: mcs/mcs/statement.cs:8001 msgid "Use of null is not valid in this context" msgstr "" -#: mcs/mcs/statement.cs:7590 +#: mcs/mcs/statement.cs:8013 #, csharp-format msgid "Foreach statement cannot operate on a `{0}'" msgstr "" -#: mcs/mcs/typemanager.cs:796 +#: mcs/mcs/typemanager.cs:797 #, csharp-format msgid "The predefined type `{0}.{1}' is not defined or imported" msgstr "" -#: mcs/mcs/typemanager.cs:841 +#: mcs/mcs/typemanager.cs:842 #, csharp-format msgid "" "The predefined type `{0}.{1}' is defined multiple times. Using definition " "from `{2}'" msgstr "" -#: mcs/mcs/typemanager.cs:852 +#: mcs/mcs/typemanager.cs:853 #, csharp-format msgid "" "The predefined type `{0}.{1}' is defined in an assembly that is not " "referenced." msgstr "" -#: mcs/mcs/typemanager.cs:862 +#: mcs/mcs/typemanager.cs:863 #, csharp-format msgid "The predefined type `{0}.{1}' is not declared correctly" msgstr "" -#: mcs/mcs/typemanager.cs:988 +#: mcs/mcs/typemanager.cs:989 #, csharp-format msgid "" "The compiler required member `{0}.{1}{2}' could not be found or is " "inaccessible" msgstr "" -#: mcs/mcs/typemanager.cs:1107 +#: mcs/mcs/typemanager.cs:1108 #, csharp-format msgid "" "Cannot take the address of, get the size of, or declare a pointer to a " diff --git a/po/mcs/pt_BR.gmo b/po/mcs/pt_BR.gmo index 6c8bb64600ee7a808a7cfe9e7e8bc408443618a3..a5cf87def7b9d216a3673125c6ad75728eed45f4 100644 GIT binary patch delta 8575 zcmY+}33yG{+Q9L3NNT7l4UNc1qzI81BZCaYoREn~4G9sV#u#dhlc=dE<(Ns(s;N|o zprf&dUPIMTTGA@od)s^aeOgqt<@>+;-Ja)u`?2y{@7nw9z2{JPp12$3`bQXo^%@)V62@aXj=+WZ5yoNH zU}L)DJZys(FvS?Bsm!OMDagRR_$GG5PECyIheg;3zrsX(j8ibKsWJWWASPj*W;`4R zp**k@+hGNEz`E2j8Iv&|*JC!%H*U=(W6Uso1y5iGhP9wKa1KV`EtHCRhZ@rbGcguR zP%3r<+hW6(#&pAeI1NitDp)_vm@Lf0ad;Se@_Z8(ZcG|Z$9i}U3^({Vey%LT+VNqx8&aEXAtS)+sIAMn+obMt}9e7)-;( zn2g_I4-9S3+`uU)W4RaQL64Efm>6!-8%N_F{0OP58AYw6A|;rL-yox6LL=#add*~V zSBBlp#UZ#0rNyldg4-?j$flxtZxjJkaB)Vh0Y?QX8uBXU^8kV zLzj*#aBWBWUs~Lffs_x-LV3`8C_Um!e@(>;N>8lB;dmTnQiXKZu^WfOh&Lg_Yuq_W)^xxb zI1~A29`QpaVMm&ohZ9hG>KaN91u}6hl`hLdhRMvcJ&f_h zk5FnJNpmLSIHWVoU8K$?n291c&PVA97xu?fC_NfTZ5m^LWNtW3AsMOh9%QAMJ19fq z$yE2oT$BnGVl&){qwz9&VM3B#mxa>eiTDa$N1kaCleOYY(4Y7M%25A;fwKPnnX&;C z#3A#`WTUij9X7--&n&E!>Ju>5_6XGWM5IK2V>#NedG(6lb8E-+`~Hhnu{CFaockOu9M) zbO=�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 JcT|1;{{U)}6M6su delta 8826 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 diff --git a/po/mcs/pt_BR.po.REMOVED.git-id b/po/mcs/pt_BR.po.REMOVED.git-id index 26e35ecb40..abd51dff27 100644 --- a/po/mcs/pt_BR.po.REMOVED.git-id +++ b/po/mcs/pt_BR.po.REMOVED.git-id @@ -1 +1 @@ -55604865cc8cb4c41a41514f745c25f474ecf326 \ No newline at end of file +60e7a40953ccc9779004c20ec0d6d8df99687897 \ No newline at end of file diff --git a/runtime/Makefile.am b/runtime/Makefile.am index 6b784a3d6e..2d9c2886db 100644 --- a/runtime/Makefile.am +++ b/runtime/Makefile.am @@ -168,9 +168,9 @@ CLEANFILES = etc/mono/config # depend on $(symlinks) to ensure 'etc/mono' directory exists etc/mono/config: ../data/config Makefile $(symlinks) d=`cd ../support && pwd`; \ - sed 's,target="libMonoPosixHelper[^"]*",target="'$$d/libMonoPosixHelper.la'",' ../data/config > $@t + sed 's,target="$(prefix)/lib/libMonoPosixHelper$(libsuffix)",target="'$$d'/libMonoPosixHelper.la",' ../data/config > $@t if test -z "$(libgdiplus_loc)"; then :; else \ - sed 's,target="[^"]*libgdiplus[^"]*",target="$(libgdiplus_loc)",' $@t > $@tt; \ + sed 's,target="$(libgdiplus_install_loc)",target="$(libgdiplus_loc)",' $@t > $@tt; \ mv -f $@tt $@t; fi mv -f $@t $@ diff --git a/runtime/Makefile.in b/runtime/Makefile.in index d5ccf607cf..f6d292b288 100644 --- a/runtime/Makefile.in +++ b/runtime/Makefile.in @@ -171,6 +171,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -179,6 +180,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -245,6 +247,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -294,6 +297,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ @@ -624,9 +628,9 @@ test: mcs-do-test-profiles # depend on $(symlinks) to ensure 'etc/mono' directory exists etc/mono/config: ../data/config Makefile $(symlinks) d=`cd ../support && pwd`; \ - sed 's,target="libMonoPosixHelper[^"]*",target="'$$d/libMonoPosixHelper.la'",' ../data/config > $@t + sed 's,target="$(prefix)/lib/libMonoPosixHelper$(libsuffix)",target="'$$d'/libMonoPosixHelper.la",' ../data/config > $@t if test -z "$(libgdiplus_loc)"; then :; else \ - sed 's,target="[^"]*libgdiplus[^"]*",target="$(libgdiplus_loc)",' $@t > $@tt; \ + sed 's,target="$(libgdiplus_install_loc)",target="$(libgdiplus_loc)",' $@t > $@tt; \ mv -f $@tt $@t; fi mv -f $@t $@ diff --git a/samples/Makefile.in b/samples/Makefile.in index cb14b82bc6..427922a1e2 100644 --- a/samples/Makefile.in +++ b/samples/Makefile.in @@ -161,6 +161,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -169,6 +170,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -235,6 +237,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -284,6 +287,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/scripts/Makefile.in b/scripts/Makefile.in index f9a5b87ff4..ba7bc6e642 100644 --- a/scripts/Makefile.in +++ b/scripts/Makefile.in @@ -194,6 +194,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -202,6 +203,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -268,6 +270,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -317,6 +320,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/support/Makefile.in b/support/Makefile.in index 0be467358a..2a4d315ec5 100644 --- a/support/Makefile.in +++ b/support/Makefile.in @@ -282,6 +282,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -290,6 +291,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -356,6 +358,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -405,6 +408,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/support/grp.c b/support/grp.c index 09aff34327..827bc550d9 100644 --- a/support/grp.c +++ b/support/grp.c @@ -8,7 +8,9 @@ */ #include +#ifdef HAVE_SYS_PARAM_H #include +#endif #include #include #include diff --git a/support/macros.c b/support/macros.c index d2cf5e7bcd..8d455889d7 100644 --- a/support/macros.c +++ b/support/macros.c @@ -100,6 +100,15 @@ char *helper_Mono_Posix_readdir(void *dir) { } #if HAVE_GETPWNAM_R +int helper_Mono_Posix_getpwnamuid (int mode, char *in_name, int in_uid, + char **account, + char **password, + int *uid, + int *gid, + char **name, + char **home, + char **shell); + int helper_Mono_Posix_getpwnamuid (int mode, char *in_name, int in_uid, char **account, char **password, diff --git a/support/minizip/zip.c b/support/minizip/zip.c index 5acf49f586..ef81ecc032 100644 --- a/support/minizip/zip.c +++ b/support/minizip/zip.c @@ -187,12 +187,13 @@ local void init_linkedlist(linkedlist_data *ll) ll->first_block = ll->last_block = NULL; } +/* local void free_linkedlist(linkedlist_data *ll) { free_datablock(ll->first_block); ll->first_block = ll->last_block = NULL; } - +*/ local int add_data_in_datablock(linkedlist_data *ll, const void *buf, uLong len) { diff --git a/support/nl.c b/support/nl.c index 60ad23d594..88babdae39 100644 --- a/support/nl.c +++ b/support/nl.c @@ -221,8 +221,10 @@ ReadEvents (gpointer sock, gpointer buffer, gint32 count, gint32 size) int addr_length; int msg_type; int table; +#ifdef NL_DEBUG int protocol; int scope; +#endif int rtm_type; gboolean have_dst; gboolean have_src; @@ -250,8 +252,10 @@ ReadEvents (gpointer sock, gpointer buffer, gint32 count, gint32 size) addr_length = (family == AF_INET) ? 4 : 16; table = rtp->rtm_table; +#ifdef NL_DEBUG protocol = rtp->rtm_protocol; scope = rtp->rtm_scope; +#endif rtm_type = rtp->rtm_type; NL_DEBUG_PRINT ("\tRTMSG table: %d %s", table, FIND_RT_TABLE_NAME (table)); if (table != RT_TABLE_MAIN && table != RT_TABLE_LOCAL) diff --git a/support/old-map.c b/support/old-map.c index 9b2a2e907d..8d733b21cc 100644 --- a/support/old-map.c +++ b/support/old-map.c @@ -155,8 +155,10 @@ int map_Mono_Posix_Signals (int x) return SIGXFSZ; if (x == Mono_Posix_Signals_SIGVTALRM) return SIGVTALRM; +#ifdef SIGPROF if (x == Mono_Posix_Signals_SIGPROF) return SIGPROF; +#endif if (x == Mono_Posix_Signals_SIGWINCH) return SIGWINCH; #ifdef SIGIO diff --git a/support/serial.c b/support/serial.c index 36b902defb..dab4ccc3fe 100644 --- a/support/serial.c +++ b/support/serial.c @@ -5,6 +5,9 @@ * Author: Chris Toshok */ +#include "map.h" +#include "mph.h" + #include #include #include @@ -12,7 +15,9 @@ #include #if defined(__APPLE__) #include "fakepoll.h" -#else +#elif defined(HAVE_POLL_H) +#include +#elif defined(HAVE_SYS_POLL_H) #include #endif #include diff --git a/support/supportw.c b/support/supportw.c index 49ed549c5d..51b4969715 100644 --- a/support/supportw.c +++ b/support/supportw.c @@ -158,6 +158,9 @@ FindWindowExW (gpointer hwndParent, gpointer hwndChildAfter, const char *classw, return func (hwndParent, hwndChildAfter, classw, window); } +int +SetWindowPos (gpointer hwnd, gpointer hwndInsertAfter, int x, int y, int cx, int cy, unsigned int flags); + int SetWindowPos (gpointer hwnd, gpointer hwndInsertAfter, int x, int y, int cx, int cy, unsigned int flags) { @@ -165,6 +168,9 @@ SetWindowPos (gpointer hwnd, gpointer hwndInsertAfter, int x, int y, int cx, int return 1; } +int +SendMessageA (gpointer hwnd, unsigned int msg, gpointer wparam, gpointer lparam); + int SendMessageA (gpointer hwnd, unsigned int msg, gpointer wparam, gpointer lparam) { @@ -172,6 +178,9 @@ SendMessageA (gpointer hwnd, unsigned int msg, gpointer wparam, gpointer lparam) return 0; } +int +GetWindowLongA (gpointer hwnd, int a); + int GetWindowLongA (gpointer hwnd, int a) { diff --git a/support/sys-statvfs.c b/support/sys-statvfs.c index 2096dcff25..e03152a773 100644 --- a/support/sys-statvfs.c +++ b/support/sys-statvfs.c @@ -25,7 +25,9 @@ #endif /* def HAVE_SYS_STATVFS_H */ #ifdef HAVE_GETFSSTAT +#ifdef HAVE_SYS_PARAM_H #include +#endif #include #include #include /* for pathconf */ diff --git a/support/sys-time.c b/support/sys-time.c index 1759ec0fcb..a1c0ba0b18 100644 --- a/support/sys-time.c +++ b/support/sys-time.c @@ -69,23 +69,6 @@ Mono_Posix_Syscall_settimeofday ( return r; } -/* Remove this at some point in the future */ -gint32 -Mono_Posix_Syscall_utimes_bad (const char *filename, - struct Mono_Posix_Timeval *tv) -{ - struct timeval _tv; - struct timeval *ptv = NULL; - - if (tv) { - _tv.tv_sec = tv->tv_sec; - _tv.tv_usec = tv->tv_usec; - ptv = &_tv; - } - - return utimes (filename, ptv); -} - static inline struct timeval* copy_utimes (struct timeval* to, struct Mono_Posix_Timeval *from) { diff --git a/support/syslog.c b/support/syslog.c index 6fed2ad205..2d8d7cbe80 100644 --- a/support/syslog.c +++ b/support/syslog.c @@ -47,6 +47,9 @@ Mono_Posix_Syscall_syslog (int priority, const char* message) #endif /* vararg version of syslog(3). */ +gint32 +Mono_Posix_Syscall_syslog2 (int priority, const char *format, ...); + gint32 Mono_Posix_Syscall_syslog2 (int priority, const char *format, ...) { diff --git a/support/x-struct-str.c b/support/x-struct-str.c index b71a9cca1f..5124af71fc 100644 --- a/support/x-struct-str.c +++ b/support/x-struct-str.c @@ -20,7 +20,7 @@ : lstr_at(p, n) \ ) -char* MPH_INTERNAL +char* _mph_copy_structure_strings ( void *to, const mph_string_offset_t *to_offsets, const void *from, const mph_string_offset_t *from_offsets, diff --git a/support/zlib-helper.c b/support/zlib-helper.c index 47adde38db..d0911fc076 100644 --- a/support/zlib-helper.c +++ b/support/zlib-helper.c @@ -45,7 +45,7 @@ gint WriteZStream (ZStream *stream, guchar *buffer, gint length); static gint flush_internal (ZStream *stream, gboolean is_final); static void * -z_alloc (void *opaque, gsize nitems, gsize item_size) +z_alloc (void *opaque, unsigned int nitems, unsigned int item_size) { return g_malloc0 (nitems * item_size); } diff --git a/tools/Makefile.in b/tools/Makefile.in index 96bc55c6c5..ca9c41ff07 100644 --- a/tools/Makefile.in +++ b/tools/Makefile.in @@ -221,6 +221,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -229,6 +230,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -295,6 +297,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -344,6 +347,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/tools/locale-builder/Makefile.in b/tools/locale-builder/Makefile.in index 59f4442d0b..8eeb358f6c 100644 --- a/tools/locale-builder/Makefile.in +++ b/tools/locale-builder/Makefile.in @@ -161,6 +161,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -169,6 +170,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -235,6 +237,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -284,6 +287,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/tools/sgen/Makefile.in b/tools/sgen/Makefile.in index ca5b97bd6c..d9fafea104 100644 --- a/tools/sgen/Makefile.in +++ b/tools/sgen/Makefile.in @@ -210,6 +210,7 @@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +GDKX11 = @GDKX11@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ @@ -218,6 +219,7 @@ GMODULE_LIBS = @GMODULE_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ +GTKX11 = @GTKX11@ HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ @@ -284,6 +286,7 @@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ +WERROR_CFLAGS = @WERROR_CFLAGS@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ XGETTEXT = @XGETTEXT@ @@ -333,6 +336,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libgc_dir = @libgc_dir@ +libgdiplus_install_loc = @libgdiplus_install_loc@ libgdiplus_loc = @libgdiplus_loc@ libmono_cflags = @libmono_cflags@ libmono_ldflags = @libmono_ldflags@ diff --git a/tools/sgen/sgen-grep-binprot.c b/tools/sgen/sgen-grep-binprot.c index 082a40cd6d..ea416b7e3a 100644 --- a/tools/sgen/sgen-grep-binprot.c +++ b/tools/sgen/sgen-grep-binprot.c @@ -57,6 +57,8 @@ read_entry (FILE *in, void **data) case SGEN_PROTOCOL_DISLINK_PROCESS_STAGED: size = sizeof (SGenProtocolDislinkProcessStaged); break; case SGEN_PROTOCOL_DOMAIN_UNLOAD_BEGIN: size = sizeof (SGenProtocolDomainUnload); break; case SGEN_PROTOCOL_DOMAIN_UNLOAD_END: size = sizeof (SGenProtocolDomainUnload); break; + case SGEN_PROTOCOL_GRAY_ENQUEUE: size = sizeof (SGenProtocolGrayQueue); break; + case SGEN_PROTOCOL_GRAY_DEQUEUE: size = sizeof (SGenProtocolGrayQueue); break; default: assert (0); } @@ -71,211 +73,8 @@ read_entry (FILE *in, void **data) return (int)type; } -#define WORKER_PREFIX(t) (WORKER ((t)) ? "w" : " ") - -static void -print_entry (int type, void *data) -{ - switch (TYPE (type)) { - case SGEN_PROTOCOL_COLLECTION_FORCE: { - SGenProtocolCollectionForce *entry = data; - printf ("%s collection force generation %d\n", WORKER_PREFIX (type), entry->generation); - break; - } - case SGEN_PROTOCOL_COLLECTION_BEGIN: { - SGenProtocolCollection *entry = data; - printf ("%s collection begin %d generation %d\n", WORKER_PREFIX (type), entry->index, entry->generation); - break; - } - case SGEN_PROTOCOL_COLLECTION_END: { - SGenProtocolCollection *entry = data; - printf ("%s collection end %d generation %d\n", WORKER_PREFIX (type), entry->index, entry->generation); - break; - } - case SGEN_PROTOCOL_CONCURRENT_START: { - printf ("%s concurrent start\n", WORKER_PREFIX (type)); - break; - } - case SGEN_PROTOCOL_CONCURRENT_UPDATE_FINISH: { - printf ("%s concurrent update or finish\n", WORKER_PREFIX (type)); - break; - } - case SGEN_PROTOCOL_WORLD_STOPPING: { - SGenProtocolWorldStopping *entry = data; - printf ("%s world stopping timestamp %lld\n", WORKER_PREFIX (type), entry->timestamp); - break; - } - case SGEN_PROTOCOL_WORLD_STOPPED: { - SGenProtocolWorldStopped *entry = data; - long long total = entry->total_major_cards + entry->total_los_cards; - long long marked = entry->marked_major_cards + entry->marked_los_cards; - printf ("%s world stopped timestamp %lld total %lld marked %lld %0.2f%%\n", WORKER_PREFIX (type), entry->timestamp, total, marked, 100.0 * (double) marked / (double) total); - break; - } - case SGEN_PROTOCOL_WORLD_RESTARTING: { - SGenProtocolWorldRestarting *entry = data; - long long total = entry->total_major_cards + entry->total_los_cards; - long long marked = entry->marked_major_cards + entry->marked_los_cards; - printf ("%s world restarting generation %d timestamp %lld total %lld marked %lld %0.2f%%\n", WORKER_PREFIX (type), entry->generation, entry->timestamp, total, marked, 100.0 * (double) marked / (double) total); - break; - } - case SGEN_PROTOCOL_WORLD_RESTARTED: { - SGenProtocolWorldRestarted *entry = data; - printf ("%s world restarted generation %d timestamp %lld\n", WORKER_PREFIX (type), entry->generation, entry->timestamp); - break; - } - case SGEN_PROTOCOL_ALLOC: { - SGenProtocolAlloc *entry = data; - printf ("%s alloc obj %p vtable %p size %d\n", WORKER_PREFIX (type), entry->obj, entry->vtable, entry->size); - break; - } - case SGEN_PROTOCOL_ALLOC_PINNED: { - SGenProtocolAlloc *entry = data; - printf ("%s alloc pinned obj %p vtable %p size %d\n", WORKER_PREFIX (type), entry->obj, entry->vtable, entry->size); - break; - } - case SGEN_PROTOCOL_ALLOC_DEGRADED: { - SGenProtocolAlloc *entry = data; - printf ("%s alloc degraded obj %p vtable %p size %d\n", WORKER_PREFIX (type), entry->obj, entry->vtable, entry->size); - break; - } - case SGEN_PROTOCOL_COPY: { - SGenProtocolCopy *entry = data; - printf ("%s copy from %p to %p vtable %p size %d\n", WORKER_PREFIX (type), entry->from, entry->to, entry->vtable, entry->size); - break; - } - case SGEN_PROTOCOL_PIN: { - SGenProtocolPin *entry = data; - printf ("%s pin obj %p vtable %p size %d\n", WORKER_PREFIX (type), entry->obj, entry->vtable, entry->size); - break; - } - case SGEN_PROTOCOL_MARK: { - SGenProtocolMark *entry = data; - printf ("%s mark obj %p vtable %p size %d\n", WORKER_PREFIX (type), entry->obj, entry->vtable, entry->size); - break; - } - case SGEN_PROTOCOL_SCAN_BEGIN: { - SGenProtocolScanBegin *entry = data; - printf ("%s scan_begin obj %p vtable %p size %d\n", WORKER_PREFIX (type), entry->obj, entry->vtable, entry->size); - break; - } - case SGEN_PROTOCOL_SCAN_VTYPE_BEGIN: { - SGenProtocolScanVTypeBegin *entry = data; - printf ("%s scan_vtype_begin obj %p size %d\n", WORKER_PREFIX (type), entry->obj, entry->size); - break; - } - case SGEN_PROTOCOL_WBARRIER: { - SGenProtocolWBarrier *entry = data; - printf ("%s wbarrier ptr %p value %p value_vtable %p\n", WORKER_PREFIX (type), entry->ptr, entry->value, entry->value_vtable); - break; - } - case SGEN_PROTOCOL_GLOBAL_REMSET: { - SGenProtocolGlobalRemset *entry = data; - printf ("%s global_remset ptr %p value %p value_vtable %p\n", WORKER_PREFIX (type), entry->ptr, entry->value, entry->value_vtable); - break; - } - case SGEN_PROTOCOL_PTR_UPDATE: { - SGenProtocolPtrUpdate *entry = data; - printf ("%s ptr_update ptr %p old_value %p new_value %p vtable %p size %d\n", WORKER_PREFIX (type), - entry->ptr, entry->old_value, entry->new_value, entry->vtable, entry->size); - break; - } - case SGEN_PROTOCOL_CLEANUP: { - SGenProtocolCleanup *entry = data; - printf ("%s cleanup ptr %p vtable %p size %d\n", WORKER_PREFIX (type), entry->ptr, entry->vtable, entry->size); - break; - } - case SGEN_PROTOCOL_EMPTY: { - SGenProtocolEmpty *entry = data; - printf ("%s empty start %p size %d\n", WORKER_PREFIX (type), entry->start, entry->size); - break; - } - case SGEN_PROTOCOL_THREAD_SUSPEND: { - SGenProtocolThreadSuspend *entry = data; - printf ("%s thread_suspend thread %p ip %p\n", WORKER_PREFIX (type), entry->thread, entry->stopped_ip); - break; - } - case SGEN_PROTOCOL_THREAD_RESTART: { - SGenProtocolThreadRestart *entry = data; - printf ("%s thread_restart thread %p\n", WORKER_PREFIX (type), entry->thread); - break; - } - case SGEN_PROTOCOL_THREAD_REGISTER: { - SGenProtocolThreadRegister *entry = data; - printf ("%s thread_register thread %p\n", WORKER_PREFIX (type), entry->thread); - break; - } - case SGEN_PROTOCOL_THREAD_UNREGISTER: { - SGenProtocolThreadUnregister *entry = data; - printf ("%s thread_unregister thread %p\n", WORKER_PREFIX (type), entry->thread); - break; - } - case SGEN_PROTOCOL_MISSING_REMSET: { - SGenProtocolMissingRemset *entry = data; - printf ("%s missing_remset obj %p obj_vtable %p offset %d value %p value_vtable %p value_pinned %d\n", WORKER_PREFIX (type), - entry->obj, entry->obj_vtable, entry->offset, entry->value, entry->value_vtable, entry->value_pinned); - break; - } - case SGEN_PROTOCOL_CARD_SCAN: { - SGenProtocolCardScan *entry = data; - printf ("%s card_scan start %p size %d\n", WORKER_PREFIX (type), entry->start, entry->size); - break; - } - case SGEN_PROTOCOL_CEMENT: { - SGenProtocolCement *entry = data; - printf ("%s cement obj %p vtable %p size %d\n", WORKER_PREFIX (type), entry->obj, entry->vtable, entry->size); - break; - } - case SGEN_PROTOCOL_CEMENT_RESET: { - printf ("%s cement_reset\n", WORKER_PREFIX (type)); - break; - } - case SGEN_PROTOCOL_DISLINK_UPDATE: { - SGenProtocolDislinkUpdate *entry = data; - printf ("%s dislink_update link %p obj %p staged %d", WORKER_PREFIX (type), entry->link, entry->obj, entry->staged); - if (entry->obj) - printf (" track %d\n", entry->track); - else - printf ("\n"); - break; - } - case SGEN_PROTOCOL_DISLINK_UPDATE_STAGED: { - SGenProtocolDislinkUpdateStaged *entry = data; - printf ("%s dislink_update_staged link %p obj %p index %d", WORKER_PREFIX (type), entry->link, entry->obj, entry->index); - if (entry->obj) - printf (" track %d\n", entry->track); - else - printf ("\n"); - break; - } - case SGEN_PROTOCOL_DISLINK_PROCESS_STAGED: { - SGenProtocolDislinkProcessStaged *entry = data; - printf ("%s dislink_process_staged link %p obj %p index %d\n", WORKER_PREFIX (type), entry->link, entry->obj, entry->index); - break; - } - case SGEN_PROTOCOL_DOMAIN_UNLOAD_BEGIN: { - SGenProtocolDomainUnload *entry = data; - printf ("%s dislink_unload_begin domain %p\n", WORKER_PREFIX (type), entry->domain); - break; - } - case SGEN_PROTOCOL_DOMAIN_UNLOAD_END: { - SGenProtocolDomainUnload *entry = data; - printf ("%s dislink_unload_end domain %p\n", WORKER_PREFIX (type), entry->domain); - break; - } - default: - assert (0); - } -} - static gboolean -matches_interval (gpointer ptr, gpointer start, int size) -{ - return ptr >= start && (char*)ptr < (char*)start + size; -} - -static gboolean -is_match (gpointer ptr, int type, void *data) +is_always_match (int type) { switch (TYPE (type)) { case SGEN_PROTOCOL_COLLECTION_FORCE: @@ -294,7 +93,234 @@ is_match (gpointer ptr, int type, void *data) case SGEN_PROTOCOL_CEMENT_RESET: case SGEN_PROTOCOL_DOMAIN_UNLOAD_BEGIN: case SGEN_PROTOCOL_DOMAIN_UNLOAD_END: + case SGEN_PROTOCOL_GRAY_ENQUEUE: + case SGEN_PROTOCOL_GRAY_DEQUEUE: return TRUE; + default: + return FALSE; + } +} + +#define WORKER_PREFIX(t) (WORKER ((t)) ? "w" : " ") + +static void +print_entry (int type, void *data) +{ + const char *always_prefix = is_always_match (type) ? " " : ""; + printf ("%s%s ", WORKER_PREFIX (type), always_prefix); + + switch (TYPE (type)) { + case SGEN_PROTOCOL_COLLECTION_FORCE: { + SGenProtocolCollectionForce *entry = data; + printf ("collection force generation %d\n", entry->generation); + break; + } + case SGEN_PROTOCOL_COLLECTION_BEGIN: { + SGenProtocolCollection *entry = data; + printf ("collection begin %d generation %d\n", entry->index, entry->generation); + break; + } + case SGEN_PROTOCOL_COLLECTION_END: { + SGenProtocolCollection *entry = data; + printf ("collection end %d generation %d\n", entry->index, entry->generation); + break; + } + case SGEN_PROTOCOL_CONCURRENT_START: { + printf ("concurrent start\n"); + break; + } + case SGEN_PROTOCOL_CONCURRENT_UPDATE_FINISH: { + printf ("concurrent update or finish\n"); + break; + } + case SGEN_PROTOCOL_WORLD_STOPPING: { + SGenProtocolWorldStopping *entry = data; + printf ("world stopping timestamp %lld\n", entry->timestamp); + break; + } + case SGEN_PROTOCOL_WORLD_STOPPED: { + SGenProtocolWorldStopped *entry = data; + long long total = entry->total_major_cards + entry->total_los_cards; + long long marked = entry->marked_major_cards + entry->marked_los_cards; + printf ("world stopped timestamp %lld total %lld marked %lld %0.2f%%\n", entry->timestamp, total, marked, 100.0 * (double) marked / (double) total); + break; + } + case SGEN_PROTOCOL_WORLD_RESTARTING: { + SGenProtocolWorldRestarting *entry = data; + long long total = entry->total_major_cards + entry->total_los_cards; + long long marked = entry->marked_major_cards + entry->marked_los_cards; + printf ("world restarting generation %d timestamp %lld total %lld marked %lld %0.2f%%\n", entry->generation, entry->timestamp, total, marked, 100.0 * (double) marked / (double) total); + break; + } + case SGEN_PROTOCOL_WORLD_RESTARTED: { + SGenProtocolWorldRestarted *entry = data; + printf ("world restarted generation %d timestamp %lld\n", entry->generation, entry->timestamp); + break; + } + case SGEN_PROTOCOL_ALLOC: { + SGenProtocolAlloc *entry = data; + printf ("alloc obj %p vtable %p size %d\n", entry->obj, entry->vtable, entry->size); + break; + } + case SGEN_PROTOCOL_ALLOC_PINNED: { + SGenProtocolAlloc *entry = data; + printf ("alloc pinned obj %p vtable %p size %d\n", entry->obj, entry->vtable, entry->size); + break; + } + case SGEN_PROTOCOL_ALLOC_DEGRADED: { + SGenProtocolAlloc *entry = data; + printf ("alloc degraded obj %p vtable %p size %d\n", entry->obj, entry->vtable, entry->size); + break; + } + case SGEN_PROTOCOL_COPY: { + SGenProtocolCopy *entry = data; + printf ("copy from %p to %p vtable %p size %d\n", entry->from, entry->to, entry->vtable, entry->size); + break; + } + case SGEN_PROTOCOL_PIN: { + SGenProtocolPin *entry = data; + printf ("pin obj %p vtable %p size %d\n", entry->obj, entry->vtable, entry->size); + break; + } + case SGEN_PROTOCOL_MARK: { + SGenProtocolMark *entry = data; + printf ("mark obj %p vtable %p size %d\n", entry->obj, entry->vtable, entry->size); + break; + } + case SGEN_PROTOCOL_SCAN_BEGIN: { + SGenProtocolScanBegin *entry = data; + printf ("scan_begin obj %p vtable %p size %d\n", entry->obj, entry->vtable, entry->size); + break; + } + case SGEN_PROTOCOL_SCAN_VTYPE_BEGIN: { + SGenProtocolScanVTypeBegin *entry = data; + printf ("scan_vtype_begin obj %p size %d\n", entry->obj, entry->size); + break; + } + case SGEN_PROTOCOL_WBARRIER: { + SGenProtocolWBarrier *entry = data; + printf ("wbarrier ptr %p value %p value_vtable %p\n", entry->ptr, entry->value, entry->value_vtable); + break; + } + case SGEN_PROTOCOL_GLOBAL_REMSET: { + SGenProtocolGlobalRemset *entry = data; + printf ("global_remset ptr %p value %p value_vtable %p\n", entry->ptr, entry->value, entry->value_vtable); + break; + } + case SGEN_PROTOCOL_PTR_UPDATE: { + SGenProtocolPtrUpdate *entry = data; + printf ("ptr_update ptr %p old_value %p new_value %p vtable %p size %d\n", + entry->ptr, entry->old_value, entry->new_value, entry->vtable, entry->size); + break; + } + case SGEN_PROTOCOL_CLEANUP: { + SGenProtocolCleanup *entry = data; + printf ("cleanup ptr %p vtable %p size %d\n", entry->ptr, entry->vtable, entry->size); + break; + } + case SGEN_PROTOCOL_EMPTY: { + SGenProtocolEmpty *entry = data; + printf ("empty start %p size %d\n", entry->start, entry->size); + break; + } + case SGEN_PROTOCOL_THREAD_SUSPEND: { + SGenProtocolThreadSuspend *entry = data; + printf ("thread_suspend thread %p ip %p\n", entry->thread, entry->stopped_ip); + break; + } + case SGEN_PROTOCOL_THREAD_RESTART: { + SGenProtocolThreadRestart *entry = data; + printf ("thread_restart thread %p\n", entry->thread); + break; + } + case SGEN_PROTOCOL_THREAD_REGISTER: { + SGenProtocolThreadRegister *entry = data; + printf ("thread_register thread %p\n", entry->thread); + break; + } + case SGEN_PROTOCOL_THREAD_UNREGISTER: { + SGenProtocolThreadUnregister *entry = data; + printf ("thread_unregister thread %p\n", entry->thread); + break; + } + case SGEN_PROTOCOL_MISSING_REMSET: { + SGenProtocolMissingRemset *entry = data; + printf ("missing_remset obj %p obj_vtable %p offset %d value %p value_vtable %p value_pinned %d\n", + entry->obj, entry->obj_vtable, entry->offset, entry->value, entry->value_vtable, entry->value_pinned); + break; + } + case SGEN_PROTOCOL_CARD_SCAN: { + SGenProtocolCardScan *entry = data; + printf ("card_scan start %p size %d\n", entry->start, entry->size); + break; + } + case SGEN_PROTOCOL_CEMENT: { + SGenProtocolCement *entry = data; + printf ("cement obj %p vtable %p size %d\n", entry->obj, entry->vtable, entry->size); + break; + } + case SGEN_PROTOCOL_CEMENT_RESET: { + printf ("cement_reset\n"); + break; + } + case SGEN_PROTOCOL_DISLINK_UPDATE: { + SGenProtocolDislinkUpdate *entry = data; + printf ("dislink_update link %p obj %p staged %d", entry->link, entry->obj, entry->staged); + if (entry->obj) + printf (" track %d\n", entry->track); + else + printf ("\n"); + break; + } + case SGEN_PROTOCOL_DISLINK_UPDATE_STAGED: { + SGenProtocolDislinkUpdateStaged *entry = data; + printf ("dislink_update_staged link %p obj %p index %d", entry->link, entry->obj, entry->index); + if (entry->obj) + printf (" track %d\n", entry->track); + else + printf ("\n"); + break; + } + case SGEN_PROTOCOL_DISLINK_PROCESS_STAGED: { + SGenProtocolDislinkProcessStaged *entry = data; + printf ("dislink_process_staged link %p obj %p index %d\n", entry->link, entry->obj, entry->index); + break; + } + case SGEN_PROTOCOL_DOMAIN_UNLOAD_BEGIN: { + SGenProtocolDomainUnload *entry = data; + printf ("dislink_unload_begin domain %p\n", entry->domain); + break; + } + case SGEN_PROTOCOL_DOMAIN_UNLOAD_END: { + SGenProtocolDomainUnload *entry = data; + printf ("dislink_unload_end domain %p\n", entry->domain); + break; + } + case SGEN_PROTOCOL_GRAY_ENQUEUE: { + SGenProtocolGrayQueue *entry = data; + printf ("enqueue queue %p cursor %p value %p\n", entry->queue, entry->cursor, entry->value); + break; + } + case SGEN_PROTOCOL_GRAY_DEQUEUE: { + SGenProtocolGrayQueue *entry = data; + printf ("dequeue queue %p cursor %p value %p\n", entry->queue, entry->cursor, entry->value); + break; + } + default: + assert (0); + } +} + +static gboolean +matches_interval (gpointer ptr, gpointer start, int size) +{ + return ptr >= start && (char*)ptr < (char*)start + size; +} + +static gboolean +is_match (gpointer ptr, int type, void *data) +{ + switch (TYPE (type)) { case SGEN_PROTOCOL_ALLOC: case SGEN_PROTOCOL_ALLOC_PINNED: case SGEN_PROTOCOL_ALLOC_DEGRADED: { @@ -367,7 +393,17 @@ is_match (gpointer ptr, int type, void *data) SGenProtocolDislinkProcessStaged *entry = data; return ptr == entry->obj || ptr == entry->link; } + case SGEN_PROTOCOL_GRAY_ENQUEUE: { + SGenProtocolGrayQueue *entry = data; + return ptr == entry->cursor || ptr == entry->value; + } + case SGEN_PROTOCOL_GRAY_DEQUEUE: { + SGenProtocolGrayQueue *entry = data; + return ptr == entry->cursor || ptr == entry->value; + } default: + if (is_always_match (type)) + return TRUE; assert (0); } } diff --git a/winconfig.h b/winconfig.h index 427e21f35a..0c690d3a35 100644 --- a/winconfig.h +++ b/winconfig.h @@ -12,6 +12,14 @@ #error Unknown architecture #endif +#if _WIN32_WINNT < 0x0502 +/* Required for Vectored Exception Handling. + Interlocked* functions are also not available in XP SP1 and below +*/ +#undef _WIN32_WINNT +#define _WIN32_WINNT 0x0502 +#endif /* _WIN32_WINNT < 0x0502 */ + /* * Features that are not required in the Windows port */ @@ -557,9 +565,6 @@ /* Enable the allocation and indexing of arrays greater than Int32.MaxValue */ /* #undef MONO_BIG_ARRAYS */ -/* Sizeof sock_un.sun_path */ -/* #undef MONO_SIZEOF_SUNPATH */ - /* Xen-specific behaviour */ /* #define MONO_XEN_OPT 1 */