Mark Probst [Fri, 13 Feb 2015 17:58:02 +0000 (09:58 -0800)]
[sgen] Implement a simple thread pool and do concurrent sweep with it.
We cannot start threads during stop-the-world pauses (some thread APIs,
including pthreads, can deadlock), and we want to do marking and sweeping
with the same threads. This new thread pool facility will allow that.
Mark Probst [Thu, 12 Feb 2015 22:29:43 +0000 (14:29 -0800)]
[sgen] Fix a comment.
Mark Probst [Wed, 11 Feb 2015 21:08:10 +0000 (13:08 -0800)]
[sgen] Don't unnecessarily compute object size index.
Mark Probst [Wed, 11 Feb 2015 20:45:10 +0000 (12:45 -0800)]
[sgen] Only do a debug block iteration on a higher assert level.
Mark Probst [Wed, 11 Feb 2015 20:08:19 +0000 (12:08 -0800)]
[sgen] Comments.
Mark Probst [Wed, 11 Feb 2015 20:05:50 +0000 (12:05 -0800)]
[sgen] Don't repeat code and don't load multiple times.
Mark Probst [Wed, 11 Feb 2015 20:01:33 +0000 (12:01 -0800)]
[sgen] Rename a function to better reflect what it does.
Mark Probst [Wed, 11 Feb 2015 20:00:52 +0000 (12:00 -0800)]
[sgen] `sweep_block()` returns whether it actually swept.
Mark Probst [Wed, 11 Feb 2015 00:38:41 +0000 (16:38 -0800)]
[sgen] Lock-free block array.
We tag pointers to blocks that are currently being processed. Those
must not even be dereferenced by other threads because the sweep
thread might free them at any point.
Mark Probst [Tue, 10 Feb 2015 23:25:46 +0000 (15:25 -0800)]
[sgen] Clean up FIXMEs.
Mark Probst [Tue, 10 Feb 2015 19:07:50 +0000 (11:07 -0800)]
[sgen] Just one iteration over the blocks at start of major collection.
Mark Probst [Mon, 9 Feb 2015 22:14:31 +0000 (14:14 -0800)]
[sgen] Remove dead macros.
Mark Probst [Mon, 9 Feb 2015 22:14:18 +0000 (14:14 -0800)]
[sgen] Assert world is stopped and not sweeping when iterating blocks.
Mark Probst [Fri, 6 Feb 2015 23:02:31 +0000 (15:02 -0800)]
[sgen] Whenever we wait for sweep, help the sweeping thread.
And since we always wait for the sweep now we can do iterations over
the blocks without taking the lock.
Mark Probst [Fri, 6 Feb 2015 01:03:33 +0000 (17:03 -0800)]
[sgen] Simplify allowance logic.
Don't use the difference to the last collection, but just calculate the maximum heap
size and trigger a collection when it's reached.
Mark Probst [Thu, 5 Feb 2015 23:44:47 +0000 (15:44 -0800)]
[sgen] Count major sections before/after sweep correctly.
Mark Probst [Thu, 5 Feb 2015 23:43:41 +0000 (15:43 -0800)]
[sgen] `num_major_sections` must be updated atomically.
It's updated from nursery collections and from the sweep thread concurrently.
Mark Probst [Thu, 5 Feb 2015 21:15:09 +0000 (13:15 -0800)]
[sgen] Write binary protocol for card scan before scanning the card.
Mark Probst [Fri, 30 Jan 2015 22:18:15 +0000 (14:18 -0800)]
[sgen] Don't iterate over block array while it's being compacted.
Mark Probst [Thu, 29 Jan 2015 21:59:11 +0000 (13:59 -0800)]
[sgen] Remove dead parameter to `sweep_block()`.
Mark Probst [Thu, 29 Jan 2015 21:09:38 +0000 (13:09 -0800)]
[sgen] Allow card table scanning to do block checking work.
Mark Probst [Thu, 29 Jan 2015 20:40:02 +0000 (12:40 -0800)]
[sgen] Fix initial block state.
New blocks need to be swept if they're allocated during a non-concurrent major
collection or while a concurrent major collection is running.
Mark Probst [Thu, 29 Jan 2015 20:38:41 +0000 (12:38 -0800)]
[sgen] Comments.
Mark Probst [Thu, 29 Jan 2015 20:35:41 +0000 (12:35 -0800)]
[sgen] Make function for block checking wait for another potential thread.
Mark Probst [Thu, 29 Jan 2015 20:30:29 +0000 (12:30 -0800)]
[sgen] Fix M&S heap consistency checks.
Mark Probst [Mon, 26 Jan 2015 18:18:32 +0000 (13:18 -0500)]
[sgen] Set the block state to CHECKING with the allocated blocks lock held.
Mark Probst [Mon, 26 Jan 2015 18:12:39 +0000 (13:12 -0500)]
[sgen] Traverse block array from high to low in sweep thread.
The nursery collector requires that sweeping has finished, and instead
of waiting it will cooperate with the sweep thread to finish more
quickly. The sweep thread will traverse the block array from high
indexes to low ones while the nursery collector will go from low to
high. They will contend only very briefly when they meet somewhere in
the middle.
Mark Probst [Mon, 26 Jan 2015 17:46:38 +0000 (12:46 -0500)]
[sgen] Factor out function that checks individual blocks for sweeping.
Mark Probst [Mon, 26 Jan 2015 17:26:55 +0000 (12:26 -0500)]
[sgen] Binary protocol entries for block alloc/free/change state.
Mark Probst [Mon, 26 Jan 2015 17:22:29 +0000 (12:22 -0500)]
[sgen] Card clearing and moving to shadow cards don't require sweep.
Mark Probst [Thu, 22 Jan 2015 22:08:46 +0000 (17:08 -0500)]
[sgen] Concurrent sweep
Mark Probst [Thu, 22 Jan 2015 00:16:41 +0000 (16:16 -0800)]
[sgen] Replace `swept` with more detailed block state.
Mark Probst [Fri, 27 Feb 2015 21:51:18 +0000 (13:51 -0800)]
[sgen] On forced major collections, free blocks.
Mark Probst [Thu, 22 Jan 2015 00:06:54 +0000 (16:06 -0800)]
[sgen] Make memory governor ready for concurrent sweep.
Mark Probst [Wed, 21 Jan 2015 23:44:05 +0000 (15:44 -0800)]
[sgen] Sweep state instead of `have_swept`.
Mark Probst [Wed, 21 Jan 2015 23:29:05 +0000 (15:29 -0800)]
[sgen] Make slots free list lock-free.
Mark Probst [Wed, 21 Jan 2015 23:14:46 +0000 (15:14 -0800)]
[sgen] Guard allocated block array with a mutex.
Both the concurrent sweep thread as well as the nursery collector will
need access to the block array. Until we've made that lock-free,
we're simply using a lock.
Mark Probst [Wed, 21 Jan 2015 23:17:04 +0000 (15:17 -0800)]
[sgen] Function for querying whether world is stopped.
Mark Probst [Tue, 28 Oct 2014 19:38:00 +0000 (12:38 -0700)]
[sgen] Split sweeping into three parts: start, block loop, finish.
Alexander Köplinger [Thu, 2 Apr 2015 22:23:26 +0000 (00:23 +0200)]
[System.Data] Fix 'make dist'
Zoltan Varga [Thu, 2 Apr 2015 21:33:07 +0000 (17:33 -0400)]
Merge pull request #1680 from schani/feature-profiler-exception-handling
[profiler] Add missing code buffers for exception handling.
Mark Probst [Tue, 24 Feb 2015 01:11:28 +0000 (17:11 -0800)]
[profiler] Add missing code buffers for exception handling.
Zoltan Varga [Thu, 2 Apr 2015 20:34:15 +0000 (16:34 -0400)]
[llvm] Emit division by zero/overflow checks for div/rem opcodes inside eh clauses, this is needed because llvm is not aware that these instructions can raise exceptions.
Sebastien Pouliot [Thu, 2 Apr 2015 19:43:33 +0000 (15:43 -0400)]
[linker] Ensure updated Scope for exported types (e.g. unlinked PCL facade assemblies in a Nuget) [#28617]
Sebastien Pouliot [Thu, 2 Apr 2015 19:41:38 +0000 (15:41 -0400)]
[tools] Fix mono-cil-strip to return non-zero on failure [#28617]
Zoltan Varga [Thu, 2 Apr 2015 16:39:28 +0000 (12:39 -0400)]
Revert "[runtime] Use mono_set_pending_exception () in a few more places."
This reverts commit
0ae611a9eb55c5ac9dec8b97cee87f65b734692e.
Revert this as it causes crashes in the System.ServiceModel tests.
Marek Safar [Thu, 2 Apr 2015 15:22:29 +0000 (17:22 +0200)]
[mcs] Check best dynamic candidate type parameters constrains only if it's single candidate. Fixes #28653
Marek Safar [Thu, 2 Apr 2015 14:10:00 +0000 (16:10 +0200)]
[mcs] Contextual var keywork cannot be shadowed by a namespace. Fixes #28648
Marek Safar [Thu, 2 Apr 2015 13:56:02 +0000 (15:56 +0200)]
[mcs] DefaultParameterValue treats dynamic as object. Fixes #28645
João Matos [Thu, 2 Apr 2015 14:53:29 +0000 (15:53 +0100)]
Merge pull request #1677 from ninjarobot/fix-test-again
Fix XmlSerializationTest again.
Dave Curylo [Thu, 2 Apr 2015 14:51:31 +0000 (10:51 -0400)]
Fix XmlSerializationTest again.
João Matos [Thu, 2 Apr 2015 14:43:41 +0000 (15:43 +0100)]
Merge pull request #1676 from ninjarobot/fix-xml-ser-tests
Corrects error in XmlSerializerTests.
Dave Curylo [Thu, 2 Apr 2015 14:38:33 +0000 (10:38 -0400)]
Corrects error in XmlSerializerTests.
Marek Safar [Thu, 2 Apr 2015 13:22:45 +0000 (15:22 +0200)]
[mcs] Handle null operator inside parenthesis expression. Fixes #28172
Marek Safar [Thu, 2 Apr 2015 12:49:21 +0000 (14:49 +0200)]
[mcs] Type parameter hidden methods should consider default parameters. Fixes #28651
João Matos [Thu, 2 Apr 2015 12:05:43 +0000 (13:05 +0100)]
Merge pull request #1672 from ninjarobot/patch-2
XmlSerializer should set *non* readonly {V}Specified fields
Marek Safar [Thu, 2 Apr 2015 10:52:47 +0000 (12:52 +0200)]
[corlib] CompareInfo from reference sources
Dave Curylo [Wed, 1 Apr 2015 15:23:08 +0000 (11:23 -0400)]
XmlSerializer should set *non* readonly {V}Specified fields
Addresses an oversight in PR 1257 that caused {V}Specified fields to not be set during XML deserialization in some circumstances.
Adds test for optional value serialization round trip
Zoltan Varga [Wed, 1 Apr 2015 23:32:40 +0000 (19:32 -0400)]
Merge pull request #1674 from alexanderkyte/gdb_support
[runtime] Disable XDEBUG on OSX
Zoltan Varga [Wed, 1 Apr 2015 23:30:37 +0000 (19:30 -0400)]
[runtime] Use mono_set_pending_exception () in a few more places.
Zoltan Varga [Wed, 1 Apr 2015 20:53:58 +0000 (16:53 -0400)]
[jit] Avoid a crash if constrained_gsharedvt_call_setup () fails.
Miguel de Icaza [Wed, 1 Apr 2015 20:18:13 +0000 (16:18 -0400)]
[doc] Format comment so our tools can process this
Rodrigo Kumpera [Wed, 1 Apr 2015 20:12:00 +0000 (16:12 -0400)]
[threading] Fix compilation of coop suspend on windows.
Alexander Kyte [Wed, 1 Apr 2015 19:13:52 +0000 (15:13 -0400)]
[Runtime] Disable xdebug on OSX because it does not work and prevents gdb use.
Rodrigo Kumpera [Wed, 1 Apr 2015 18:29:24 +0000 (14:29 -0400)]
[corlib] FEATURE_STRONGNAME_MIGRATION should be used in all profiles to avoid breaking compat.
Rodrigo Kumpera [Wed, 1 Apr 2015 17:04:49 +0000 (13:04 -0400)]
Merge pull request #1671 from kumpera/mobile_static_fixication
Fix some of the issues with the mobile_static profile.
João Matos [Wed, 1 Apr 2015 15:48:07 +0000 (16:48 +0100)]
Merge pull request #1673 from alexanderkyte/minor_cpp_fixes
[runtime] Fixed index comparison typo in class.c
Alexander Kyte [Wed, 1 Apr 2015 15:45:11 +0000 (11:45 -0400)]
[runtime] Fixed index comparison typo in class.c
Ludovic Henry [Wed, 1 Apr 2015 15:38:02 +0000 (16:38 +0100)]
[threadpool] Fix potential infinite loop
Atsushi Eno [Wed, 1 Apr 2015 14:05:08 +0000 (23:05 +0900)]
bump referencesource to fix Sys.Data mobile_static build.
Rodrigo Kumpera [Wed, 1 Apr 2015 03:46:34 +0000 (23:46 -0400)]
[mobile] Fix the build order between System.Numerics and System.Data due to dependencies between them.
Rodrigo Kumpera [Wed, 1 Apr 2015 03:16:47 +0000 (23:16 -0400)]
[corlib] Fix the mobile_static profile.
Marek Safar [Wed, 1 Apr 2015 12:22:16 +0000 (14:22 +0200)]
[corlib] Update more decimal separators. Further fixes for #17615
Marek Safar [Wed, 1 Apr 2015 08:00:03 +0000 (10:00 +0200)]
[system.net.http] Use correct separator for headers tostring
Sebastien Pouliot [Wed, 1 Apr 2015 01:30:15 +0000 (21:30 -0400)]
[tests] ManualResetEventSlim.SpinCount depends on the number of CPU/cores and we can't assume everything as multiple CPU/cores [#28611]
Zoltan Varga [Wed, 1 Apr 2015 01:26:35 +0000 (21:26 -0400)]
[jit] Use mono_error_set_pending_exception () in jit icalls.
Zoltan Varga [Wed, 1 Apr 2015 01:23:36 +0000 (21:23 -0400)]
[runtime] Move mono_error_raise_exception () to metadata/ to fix a layering issue. Add mono_error_set_pending_exception () helper function.
Zoltan Varga [Tue, 31 Mar 2015 22:36:11 +0000 (18:36 -0400)]
[jit] Increase some trampoline sizes.
Zoltan Varga [Tue, 31 Mar 2015 22:32:27 +0000 (18:32 -0400)]
[llvm] Reenable support for nested clauses.
Zoltan Varga [Tue, 31 Mar 2015 22:32:10 +0000 (18:32 -0400)]
[runtime] Add more caches to mono_marshal_get_native_wrapper () to avoid mixing wrappers with/without exception checks.
Zoltan Varga [Tue, 31 Mar 2015 21:01:11 +0000 (17:01 -0400)]
[llvm] Disable support for nested clauses for now as it causes regressions in the corlib tests.
Zoltan Varga [Tue, 31 Mar 2015 20:30:59 +0000 (16:30 -0400)]
[llvm] Implement support for nested clauses.
Zoltan Varga [Tue, 31 Mar 2015 16:50:08 +0000 (12:50 -0400)]
[amd64] Enable thunk creation when using LLVM as well.
Ludovic Henry [Tue, 31 Mar 2015 19:34:09 +0000 (20:34 +0100)]
[threadpool] Fix typo
Ludovic Henry [Sat, 28 Mar 2015 19:05:38 +0000 (19:05 +0000)]
[threadpool] Add IO support + Needed refactoring of threadpool
Ludovic Henry [Thu, 26 Mar 2015 17:33:26 +0000 (17:33 +0000)]
[threadpool] Move MonoAsyncResult invocation out of the ThreadPool
Ludovic Henry [Thu, 26 Mar 2015 17:19:16 +0000 (17:19 +0000)]
[threadpool] Move threadpool-microsoft.{c,h} to threadpool-ms.{c,h}
Avoid having really long filenames when adding threadpool-ms-io.{c,h}
Ludovic Henry [Thu, 19 Mar 2015 15:57:26 +0000 (15:57 +0000)]
[threadpool] Remove RegisteredWaitHandle runtime code, as it is all in managed
Marek Safar [Tue, 31 Mar 2015 14:04:11 +0000 (16:04 +0200)]
[corlib] NumberFormatInfo from reference sources
Rodrigo Kumpera [Tue, 31 Mar 2015 02:52:56 +0000 (22:52 -0400)]
[socket-io] Fix crasher in System test suite.
Alexander Köplinger [Mon, 30 Mar 2015 23:13:29 +0000 (01:13 +0200)]
[readme] Fix monolite instructions
EXTERNAL_MCS is misleading and wrong there, the build uses monolite automatically when appropriate.
Zoltan Varga [Mon, 30 Mar 2015 20:53:28 +0000 (16:53 -0400)]
Add an --enable-gsharedvt configure option, same as the misnamed --enable-gsharing.
Marek Safar [Mon, 30 Mar 2015 16:34:03 +0000 (18:34 +0200)]
[corlib] More globalization from reference sources
Marek Safar [Mon, 30 Mar 2015 16:33:33 +0000 (18:33 +0200)]
[corlib] Fix commonly used encoding names
Marek Safar [Mon, 30 Mar 2015 15:23:19 +0000 (17:23 +0200)]
[corlib] Update culture currency separators
João Matos [Mon, 30 Mar 2015 16:21:43 +0000 (17:21 +0100)]
[runtime] Fixed a warning.
It can happen that THREAD_INFO_TYPE is already defined by a previously included header to just undefine it before re-redefining it.
João Matos [Mon, 30 Mar 2015 16:20:57 +0000 (17:20 +0100)]
[mini] Fixed the build.
LLVM_FAILURE will try to `goto FAILURE` so we need to add a label to the function to make the compiler happy.
João Matos [Mon, 30 Mar 2015 16:20:21 +0000 (17:20 +0100)]
[runtime] Enable the complex math support code on Android.
Previously I thought these implementations were not needed but dlopen () was complaining when loading libmonosgen.so on Android so we do need them.
João Matos [Mon, 30 Mar 2015 16:17:56 +0000 (17:17 +0100)]
[runtime] Add some complex math support code.
This is adapted from FreeBSD's code.
Zoltan Varga [Mon, 30 Mar 2015 15:32:37 +0000 (11:32 -0400)]