Rodrigo Kumpera [Wed, 22 Feb 2017 23:44:54 +0000 (15:44 -0800)]
Fix compilation issues.
Rodrigo Kumpera [Thu, 8 Dec 2016 00:10:41 +0000 (16:10 -0800)]
[mini] Introduce job control to the JIT. Limits by active and duplicate jobs.
This shown up as a problem under parallel roslyn.
We hit frequently the case of multiple threads compiling the same method in parallel
and wasting all but one.
Another issue that happens, but infrequently, is having more threads JITing than there
are cores in the machine. Such thrashing doesn't help.
Test setup. 4/8 macbook pro compiling corlib.
Baseline:
real 0m7.665s
user 0m20.078s
sys 0m2.653s
Methods JITted using mono JIT : 22422
Total time spent JITting (sec) : 18.5365
With this patch:
real 0m6.149s
user 0m18.504s
sys 0m1.487s
Methods JITted using mono JIT : 16619
Total time spent JITting (sec) : 4.9420
New counters
JIT compile waited others : 7681
JIT compile 1+ jobs : 1
JIT compile overload wait : 67
JIT compile spurious wakeups : 14469
This results in a 20% wall clock reduction but only a 8% reduction on user.
We JIT 26% less methods, with very few duplications. Showing this drastically improves the situation.
JIT compilation time metrics are bogus due to .cctors and other sources of interference. So take it with a grain of salt.
Future work:
Based on the new counters, it's clear that the current wakeup design is suboptimal and we could further improve it by cutting on spurious wakeups.
Vincent Povirk [Thu, 6 Apr 2017 22:08:18 +0000 (17:08 -0500)]
[tests] Fix out of tree build. (#4657)
Ludovic Henry [Thu, 6 Apr 2017 18:49:04 +0000 (14:49 -0400)]
[tests] Add stress testing and reduce sgen normal testing time (#4653)
* [tests] Keep testing even if a test has failed
* [tests] Add stress testing and reduce sgen normal testing time
Zoltan Varga [Thu, 6 Apr 2017 17:21:38 +0000 (13:21 -0400)]
[jit] Only free the unwind info inside a MonoTrampInfo if its owned by the structure.
Alexander Köplinger [Thu, 6 Apr 2017 00:25:35 +0000 (02:25 +0200)]
[tools] Remove old msbuild experiment
This is just confusing now that we have the real thing.
Rolf Bjarne Kvinge [Thu, 6 Apr 2017 03:06:58 +0000 (05:06 +0200)]
[runtime] Free leaked variable. (#4643)
Zoltan Varga [Thu, 6 Apr 2017 03:06:47 +0000 (23:06 -0400)]
[aot] Print JIT failures without having to pass an additional option. (#4648)
Rodrigo Kumpera [Wed, 5 Apr 2017 23:59:08 +0000 (16:59 -0700)]
Merge pull request #4612 from kumpera/android-changes-part2
Fix Android compilation and some tests
Ludovic Henry [Wed, 5 Apr 2017 23:54:49 +0000 (19:54 -0400)]
[tests] Rework how we AOT compile tests + General cleanup of make targets (#4639)
Rodrigo Kumpera [Wed, 5 Apr 2017 21:17:37 +0000 (14:17 -0700)]
[runtime] Don't return the modules for the current process when pid != getpid ().
Rodrigo Kumpera [Wed, 5 Apr 2017 21:16:39 +0000 (14:16 -0700)]
[System] Disable test that is too unreliable.
Rodrigo Kumpera [Mon, 20 Mar 2017 23:49:25 +0000 (16:49 -0700)]
Improve test assert.
Rodrigo Kumpera [Mon, 20 Mar 2017 22:01:30 +0000 (15:01 -0700)]
[System] Disable a few tests that don't work on Android.
Rodrigo Kumpera [Thu, 16 Mar 2017 23:04:35 +0000 (16:04 -0700)]
[System] Disable test that doesn't work on Android.
Rodrigo Kumpera [Thu, 16 Mar 2017 22:58:11 +0000 (15:58 -0700)]
[io-layer] Don't RC std handles or the current process on every lookup.
Caller don't expect those lookups to be RC'd so they don't compensate. This leads to unbound growth of their ref count, which eventually overflows.
Rodrigo Kumpera [Thu, 16 Mar 2017 18:30:43 +0000 (11:30 -0700)]
[runtime] When looking up the process name, don't bail out if you can't load its modules.
Loading modules for other processes can fail under some linux sandboxing rules but that doesn't mean
we should not be able to compute the process name. So when module == NULL, we make module loading non-fatal.
Rodrigo Kumpera [Thu, 16 Mar 2017 18:23:20 +0000 (11:23 -0700)]
[runtime] Improve tracing of process name lookup functions.
Rodrigo Kumpera [Thu, 16 Mar 2017 18:21:28 +0000 (11:21 -0700)]
[runtime] Fix compilation under Android
Zoltan Varga [Wed, 5 Apr 2017 20:23:15 +0000 (16:23 -0400)]
[jit] Fix a leak in the trampoline info registration code. (#4646)
Bernhard Urban [Wed, 5 Apr 2017 16:13:10 +0000 (18:13 +0200)]
[interp] testcase for stack overflow on tail recursion opt
inspired by
./mcs/mcs/assign.cs:
SimpleAssign:CheckEqualAssign ()
Bernhard Urban [Tue, 4 Apr 2017 09:16:27 +0000 (11:16 +0200)]
[interp] fix stack overflow on tail recursion
Bernhard Urban [Tue, 4 Apr 2017 09:16:27 +0000 (11:16 +0200)]
[interp] fix stack alloc size
monojenkins [Wed, 5 Apr 2017 16:42:25 +0000 (18:42 +0200)]
[msvc] Update csproj files (#4645)
Egor Bogatov [Wed, 5 Apr 2017 13:12:21 +0000 (16:12 +0300)]
[System.Data] Fix Azure SQL specific issues (ProviderTests) (#4622)
* [System.Data] Fix Azure SQL specific issues (ProviderTests)
* [System.Data] ChangeDatabase - Azure specific test
* [System.Data] SqlConnectionTest: use Assert.Throws instead
Marek Safar [Wed, 5 Apr 2017 08:03:02 +0000 (10:03 +0200)]
[Facades] Add forwarder for DbDataReaderExtensions
monojenkins [Tue, 4 Apr 2017 16:25:38 +0000 (16:25 +0000)]
[msvc] Update csproj files
Alexander Köplinger [Wed, 5 Apr 2017 01:34:23 +0000 (03:34 +0200)]
[tests] Fix the mcs-compileall target in runtime/ (#4637)
It is used as the "verify" step on Jenkins/Wrench and I noticed
it didn't run recently.
Looks like it was broken a while ago by
695e8f53ae7d2139.
Moving the verifiable_files variable at the top is wrong since
the $$profile variable is only defined inside the for loop and
so we'd get an empty list.
When that was fixed it still didn't work as piping to `echo`
doesn't work. Replaced it with a Makefile solution instead.
Vlad Brezae [Tue, 4 Apr 2017 23:52:03 +0000 (02:52 +0300)]
Merge pull request #4630 from BrzVlad/feature-valloc-limit
[sgen] OOM testing
Vlad Brezae [Mon, 3 Apr 2017 21:30:45 +0000 (00:30 +0300)]
[runtime] Add arch size InterlockedAdd
Vlad Brezae [Fri, 31 Mar 2017 11:51:30 +0000 (14:51 +0300)]
[sgen] Add old forgotten oom tests to sgen oom suite
Vlad Brezae [Fri, 31 Mar 2017 11:48:33 +0000 (14:48 +0300)]
[sgen] Add oom testing suite
Vlad Brezae [Fri, 31 Mar 2017 14:40:12 +0000 (17:40 +0300)]
[sgen] Don't pass gc options to the test-runner
Also remove some plain configurations (in the tests we should explicitly select the major)
Vlad Brezae [Tue, 4 Apr 2017 22:13:00 +0000 (01:13 +0300)]
Merge pull request #4618 from BrzVlad/feature-par-nrs
[sgen] Parallel nursery collections
Martin Baulig [Tue, 4 Apr 2017 18:28:17 +0000 (14:28 -0400)]
[appletls]: Make CFObject.dlsym() private and fix CFBoolean. (#4640)
This fixes a native crash when attempting to use appletls.
Vlad Brezae [Wed, 29 Mar 2017 11:17:02 +0000 (14:17 +0300)]
[sgen] Split up concurrent sweep from worker logic
While this was ok because workers and sweep could not run at the same time, this is no longer the case with parallel nursery collections. In the future, if many threads will be required for different types of jobs, we can consider running them on same native thread, but the jobs will still need to have appropriate contexts (the SgenThreadPool they belong to).
Vlad Brezae [Tue, 28 Mar 2017 21:12:02 +0000 (00:12 +0300)]
[sgen] Increase gray stack section size
Stealing a gray section is relatively expensive since it requires locking. We want to avoid repeated stealing, since only one gray queue section is stolen at a time (in the case of the parallel collector).
Vlad Brezae [Fri, 3 Mar 2017 11:54:14 +0000 (13:54 +0200)]
[sgen] Increase parallelization of minors
Vlad Brezae [Fri, 3 Mar 2017 10:38:15 +0000 (12:38 +0200)]
[sgen] Parallel nursery collections
Scans the card table and the roots on the workers, including draining the stack.
Michael DeRoy [Tue, 4 Apr 2017 12:20:13 +0000 (08:20 -0400)]
Fix mono_marshal_alloc to accept gsize instead of gulong(unsigned long) (#4623)
* Fix mono_marshal_alloc to accept gsize instead of platform dependent unsigned long
* fix header
Marek Safar [Tue, 4 Apr 2017 08:50:56 +0000 (10:50 +0200)]
[System.Core] Linker friendly test update
Marek Safar [Tue, 4 Apr 2017 08:04:48 +0000 (10:04 +0200)]
[Facades] Fixes System.Threading.Overlapped
Marek Safar [Tue, 4 Apr 2017 07:40:16 +0000 (09:40 +0200)]
[System.Core] Remove duplicate files
Marek Safar [Tue, 4 Apr 2017 07:12:51 +0000 (09:12 +0200)]
Bump cecil
Marek Safar [Wed, 29 Mar 2017 13:43:32 +0000 (15:43 +0200)]
[corlib] Port more of corert array
Zoltan Varga [Mon, 3 Apr 2017 21:23:26 +0000 (17:23 -0400)]
[llvm] Add sign extensions for the index register used during bounds checks and array address calculations. (#4636)
Andi McClure [Mon, 3 Apr 2017 19:21:51 +0000 (15:21 -0400)]
Merge pull request #4635 from xmcclure/5.3-bump
Bump master to 5.3 due to creation of 2017-04 branch
Zoltan Varga [Mon, 3 Apr 2017 19:01:28 +0000 (15:01 -0400)]
[jit] Fix a regression caused by
399f6e2425d5fdf73c4f956e9e906613b55968d0. Avoid a crash if MONO_VERBOS_METHOD is used.
Andi McClure [Mon, 3 Apr 2017 17:18:02 +0000 (13:18 -0400)]
Bump to 5.3 due to creation of 2017-04 branch
Zoltan Varga [Mon, 3 Apr 2017 16:22:58 +0000 (12:22 -0400)]
[jit] Fix the casting between arrays with bounds and vectors even for special cased types like object[]. Fixes #54212. (#4633)
Francois Botha [Mon, 3 Apr 2017 14:48:34 +0000 (16:48 +0200)]
Correctly detect relative Uri in package parts (#3630)
Zoltan Varga [Mon, 3 Apr 2017 14:42:07 +0000 (10:42 -0400)]
[runtime] Default Interface Method support (#4625)
* [runtime] Add support for the simplest case of default interfaces, where the default method is used.
* [runtime] Implement overriding of default interface methods in interfaces.
* [jit] Fix gshared support for default interface methods, they require an mrgctx since the this argument doesn't point to the implementing class, not the interface.
Andi McClure [Fri, 31 Mar 2017 20:14:47 +0000 (16:14 -0400)]
Merge pull request #4628 from xmcclure/orbis-profile
Platform support fixes
Zoltan Varga [Fri, 31 Mar 2017 19:56:21 +0000 (15:56 -0400)]
[jit] Fix the ppc build.
Alexander Köplinger [Fri, 31 Mar 2017 17:51:10 +0000 (19:51 +0200)]
Make monolite profile directory versioned (#4631)
If you're building with monolite currently the build system
checks for the existence of mcs/class/lib/monolite and just
uses it in that case.
It becomes a problem when bumping corlib version since if you
pull the update and try to build it'll use the old monolite
and you'll hit the "corlib version not in sync" error.
By making the monolite directory include the version this can
be avoided and everything works out of the box.
Also removed the confusing "You need Mono version 4.8 or better"
message since we actually require a newer version in
basic-profile-check.cs now and keeping them in sync is error prone.
monojenkins [Fri, 31 Mar 2017 17:50:48 +0000 (19:50 +0200)]
[msvc] Update csproj files (#4632)
Andi McClure [Fri, 31 Mar 2017 15:53:53 +0000 (11:53 -0400)]
Style fixes for PR feedback
Michael DeRoy [Thu, 30 Mar 2017 18:23:50 +0000 (14:23 -0400)]
change icall to use gsize as well
Vlad Brezae [Thu, 30 Mar 2017 21:01:16 +0000 (00:01 +0300)]
[sgen] Add debug option for valloc limit
This allows us to stress test OOM inside sgen (and potentially other areas).
Marek Safar [Fri, 31 Mar 2017 11:31:12 +0000 (13:31 +0200)]
[System] Fixes build
Alexander Köplinger [Fri, 31 Mar 2017 00:35:19 +0000 (02:35 +0200)]
Fix Windows build
monojenkins [Fri, 31 Mar 2017 00:03:41 +0000 (02:03 +0200)]
[msvc] Update csproj files (#4624)
Alexander Kyte [Thu, 30 Mar 2017 22:17:29 +0000 (18:17 -0400)]
Merge pull request #4621 from alexanderkyte/strdup_env
[runtime] Switch getenv to use heap memory
Andi McClure [Thu, 30 Mar 2017 21:35:12 +0000 (17:35 -0400)]
Add System.Security.dll to orbis profile
Andi McClure [Thu, 30 Mar 2017 15:57:49 +0000 (11:57 -0400)]
More platform support fixes
- Support platforms without mkdtemp
- Fix compile for console-null.c
Andi McClure [Mon, 20 Mar 2017 21:25:18 +0000 (17:25 -0400)]
Combined cherrypick of changes between mono-4.8.0-branch and orbis-branch-30
ORBIS #ifdefs in BCL, exclude several files and assembly directories
from the orbis build, HAVE_LOCALTIME_R define in C.
Vlad Brezae [Mon, 20 Mar 2017 19:40:49 +0000 (15:40 -0400)]
[sgen] Emit fast inline wbarrier instead of the wrapper one
Which seems to be about 4 times slower than the inline one.
Bernhard Urban [Thu, 30 Mar 2017 15:50:03 +0000 (11:50 -0400)]
[interp] basic filter clause support
Alexander Kyte [Mon, 27 Mar 2017 06:18:43 +0000 (02:18 -0400)]
[runtime] Switch getenv to use heap memory
Getenv doesn't use heap memory, it uses static memory.
Mono's usage is consistent with a view of getenv memory contents
that are durable and can be stored and manipulated.
In a multithreaded context, getenv calls can race and corrupt
string buffers as they are read. In a single threaded context,
subsequent calls to getenv will lead to overwriting the memory
that pointers to previous calls point to.
In order to bring memory safety back, we duplicate memory and
manage it at each call-site.
Note: this changes the API semantics of g_getenv. This is necessary
because the locking around the getenv buffer is safest when confined to
the function in eglib.
Mikayla Hutchinson [Wed, 29 Mar 2017 23:47:50 +0000 (19:47 -0400)]
[System.Web] Implement HostingEnvironment.QueueBackgroundWorkItem
From reference source.
This is required for the Azure Functions Host to run unmodified.
Alexander Köplinger [Thu, 30 Mar 2017 15:02:10 +0000 (17:02 +0200)]
Bring in the new reference assemblies (#4619)
This bumps the reference assemblies submodule so we can install
the new assemblies which are built from source.
Alexander Kyte [Thu, 30 Mar 2017 12:39:05 +0000 (08:39 -0400)]
[runtime] Fix typo in icall name (#4616)
Zoltan Varga [Thu, 30 Mar 2017 11:32:44 +0000 (07:32 -0400)]
Add beginnings of mixed code execution support (#4613)
* [interp] Fix a few problems exposed by the iltests.exe test suite.
The ENDFINALLY opcode should empty the stack. The INITBLK opcode is two bytes.
* [interp] Store the MonoMethod->RuntimeMethod mapping in a separate hash in MonoJitDomainInfo instead of using MonoDomain.jit_code_hash, the latter contains MonoMethod->MonoJitInfo mappings. Also avoid holding the domain lock while creating the RuntimeMethod structure.
* [interp] Add a mono_jit_compile_method_jit_only () function which always compiles its argument using the JIT/AOT.
* [interp] Print a warning when --interpreter is used with a runtime compiled without ENABLE_INTERPRETER.
* [interp] Fix the size of the icall enter trampoline on amd64. Fix some formatting issues.
* [interp] Add support for calling JITted code from the interpreter. This uses the gsharedvt_out wrappers used by bitcode to reduce the number of possible calling conventions since all arguments and the return value are passed/returned by value. Not enabled yet.
* [interp] Add a --interp= argument which allows passing of options to the interpreter. Add a 'jit=' option which is used to control the set of types whose methods will be called by exiting the interpreter.
* [interp] Add tests for mixed mode execution.
* [interp] Add support for calling interpreter code from JITted code.
* [interp] add mixedmode target to CI
* Revert a debug change.
* [runtime] Fix the locking in the gsharedvt/interp wrapper creation functions.
* [interp] Implement support for interp->jit calls with more than 8 arguments.
Marek Safar [Wed, 29 Mar 2017 16:58:35 +0000 (18:58 +0200)]
[System] WebSockets from corefx
Vlad Brezae [Thu, 2 Mar 2017 21:35:58 +0000 (23:35 +0200)]
[sgen] Remove CARDTABLE_STATS
For dirty card counts we already have heavy counters. For card table scan time we already have the binary protocol which has more flexibility.
Vlad Brezae [Thu, 2 Mar 2017 14:44:56 +0000 (16:44 +0200)]
[sgen] Make sure workers don't have evacuating blocks on the free-lists
Double copying of an object during a collection is not allowed. If we allocate from an evacuating block this can happen.
Vlad Brezae [Thu, 2 Mar 2017 14:37:13 +0000 (16:37 +0200)]
[sgen] Blocks on the freelist don't need to have been swept
Vlad Brezae [Thu, 2 Mar 2017 14:28:25 +0000 (16:28 +0200)]
[sgen] Shutdown thread pool worker even if it's not active
Vlad Brezae [Wed, 1 Mar 2017 13:41:27 +0000 (15:41 +0200)]
[sgen] Don't use workers during finishing pause if we're not parallel
Worker can be used though to drain the gray stack of workers after a forced finish (at the start of the finishing pause).
Vlad Brezae [Wed, 1 Mar 2017 00:58:01 +0000 (02:58 +0200)]
[sgen] Add scan/copy context for the simple parallel nursery
Vlad Brezae [Wed, 1 Mar 2017 00:03:14 +0000 (02:03 +0200)]
[sgen] Add option for parallel nursery collector
Zoltan Varga [Thu, 30 Mar 2017 01:42:01 +0000 (21:42 -0400)]
[bcl] Avoid waiting for events inside a finalizer in Process.WaitForExit () because it can hang if the thread which sets the event is aborted during shutdown. Fixes #53843. (#4609) (#4617)
monojenkins [Wed, 29 Mar 2017 16:21:14 +0000 (16:21 +0000)]
[msvc] Update csproj files
Rodrigo Kumpera [Wed, 29 Mar 2017 15:46:29 +0000 (11:46 -0400)]
Merge pull request #4540 from kumpera/android-changes-part1
[bcl+runtime] Multiple small cleanups to Android.
Marek Safar [Wed, 29 Mar 2017 10:11:33 +0000 (12:11 +0200)]
[tools] Remove unused sources
Zoltan Varga [Wed, 29 Mar 2017 09:38:30 +0000 (05:38 -0400)]
[jit] Cleanup the signature of the mono_arch_get_static_rgctx_trampoline () function. (#4605)
Remove the unused MonoMethod argument, and rename the 'mrgctx' argument to 'arg', since it can be any value, not just
an mrgctx.
Marek Safar [Wed, 29 Mar 2017 07:56:43 +0000 (09:56 +0200)]
Bump cecil
Marek Safar [Thu, 23 Mar 2017 22:55:58 +0000 (23:55 +0100)]
Bump corefx
Zoltan Varga [Wed, 29 Mar 2017 00:17:31 +0000 (20:17 -0400)]
[jit] Add ref types to mini_get_underlying_type (), use it to simplify the switch loops in the jit. (#4606)
Ludovic Henry [Tue, 28 Mar 2017 21:03:31 +0000 (17:03 -0400)]
[threadpool] Pass callback at initialization (#4546)
This remove the possibility to execute different callbacks on the threadpool, but this allows us to remove the work_items_lock, which is called on the hot path of the ThreadPool.
monojenkins [Tue, 28 Mar 2017 16:42:55 +0000 (16:42 +0000)]
[msvc] Update csproj files
Andi McClure [Tue, 28 Mar 2017 18:14:08 +0000 (14:14 -0400)]
Merge pull request #4168 from xmcclure/aot-man
Correctly document --aot options in man page
Andi McClure [Mon, 27 Mar 2017 21:58:27 +0000 (17:58 -0400)]
Remove 'experimental' label from full/hybrid AOT in manpage
Andi McClure [Mon, 27 Mar 2017 21:50:46 +0000 (17:50 -0400)]
Correctly document --aot options in man page
- Ensure all AOT options are both documented and listed in
alphabetical order in both the manpage and --help line
- Ensure all exceptoins are commented in the aot-compiler.c source
with "intentionally udnocumented"
Marek Safar [Mon, 27 Mar 2017 22:28:08 +0000 (00:28 +0200)]
[mono] Remove unused icall
Miguel de Icaza [Tue, 28 Mar 2017 15:18:43 +0000 (11:18 -0400)]
Update copyright years
Rolf Bjarne Kvinge [Thu, 23 Mar 2017 17:43:29 +0000 (18:43 +0100)]
[corlib] Add back X509 support for watchOS.
Otherwise we'd be regressing existing (and working) behavior.
Chris Hamons [Mon, 27 Mar 2017 20:05:09 +0000 (15:05 -0500)]
Disable a few x509 tests that fail on older macOS
- Handles https://bugzilla.xamarin.com/show_bug.cgi?id=53958
- https://bugzilla.xamarin.com/show_bug.cgi?id=53689 is filed to turn them
back on later with a better version check
- SecCertificateCreateWithData handles invalid arguments differently based on
macOS version
Marek Safar [Thu, 23 Mar 2017 13:12:13 +0000 (14:12 +0100)]
[corlib] Add more Array tests
Marek Safar [Wed, 22 Mar 2017 14:05:53 +0000 (15:05 +0100)]
[System.Windows.Forms] Fixes DataGridViewColumnCollection comparer not to return 1 on match