mono.git
6 years ago[msvc] Update csproj files (#5131)
monojenkins [Tue, 27 Jun 2017 16:32:41 +0000 (18:32 +0200)]
[msvc] Update csproj files (#5131)

6 years ago[man] Fix AOT temp path option description
Alexander Köplinger [Tue, 27 Jun 2017 14:58:46 +0000 (16:58 +0200)]
[man] Fix AOT temp path option description

It's `temp-path` in the code, not `temp_path`

6 years agoMerge pull request #5120 from lambdageek/bug-57744
Aleksey Kliger (λgeek) [Tue, 27 Jun 2017 14:44:30 +0000 (10:44 -0400)]
Merge pull request #5120 from lambdageek/bug-57744

[reflection] Convert correct MonoError to an exn in Assembly.GetTypes ()

6 years agoFix various compiler warnings (#5064)
cherusker [Tue, 27 Jun 2017 14:21:34 +0000 (16:21 +0200)]
Fix various compiler warnings (#5064)

* Fix compiler warnings (w32)

- add explicit (long long (unsigned)) type casts

- change %ld to %lld once, to match the general style of these logging messages

* Fix compiler warnings (threadpool)

- add explicit (void *) type casts

* Fix compiler warnings (boehm)

- add an explicit (long) type cast; the values are defined as gint64, an upgrade to at least "%ld" seems like a good idea

- about dropping const: const does not seem to be necessary as g_getenv() returns pointers to freshly allocated buffers whenever called. const might have been used to protect the return value of g_getenv() on unix systems with earlier versions of Mono (as a comment in gmisc-unix.c suggests). keeping const here causes a compiler warning, as the const qualifier gets dropped when *env is being used with g_free(). that led to the decision to drop the qualifier altogether.

* Fix compiler warnings (sgen)

- specify the arguments (void) to avoid -Wstrict-prototypes warnings

* Fix compiler warnings (misc - metadata)

- specify the arguments (void) to avoid -Wstrict-prototypes warnings

* Fix compiler warnings (misc)

- specify the arguments (void) to avoid -Wstrict-prototypes warnings

- add an explicit (void *) type cast; changing the return type to char* might be more usable and could be discussed

- ret is not being used and can be removed; fixes a -Wunused-but-set-variable warning

* Fix compiler warnings (mini)

- specify the arguments (void) to avoid -Wstrict-prototypes warnings

* [fixup!] Correct indentation

* [fixup!] Correct (void *)
- use GUINT_TO_POINTER and MONO_NATIVE_THREAD_ID_TO_UINT instead of (void *) to cast mono_native_thread_id_get () to %p

* [fixup!] Correct indentation of boehm-gc.c and add FIXME

* include <inttypes.h> and test the G_GINT64_FORMAT macro

* [fixup!] Use G_G*_FORMAT and PRIx32 macros instead of type casts wherever possible

6 years ago[packaging/msbuild] Bump to get new changes on xplat-master (#5127)
Ankit Jain [Tue, 27 Jun 2017 04:57:07 +0000 (00:57 -0400)]
[packaging/msbuild] Bump to get new changes on xplat-master (#5127)

6 years ago[jit] Avoid emitting op_load_got_addr opcodes on x86 when using llvmonly, its not...
Zoltan Varga [Tue, 27 Jun 2017 03:19:07 +0000 (23:19 -0400)]
[jit] Avoid emitting op_load_got_addr opcodes on x86 when using llvmonly, its not needed. (#5125)

6 years ago[reflection] Convert correct MonoError to an exn in Assembly.GetTypes () (Fixes ...
Aleksey Kliger [Mon, 26 Jun 2017 19:52:08 +0000 (15:52 -0400)]
[reflection] Convert correct MonoError to an exn in Assembly.GetTypes () (Fixes #57744)

Fixes https://bugzilla.xamarin.com/show_bug.cgi?id=57744

6 years ago[bcl] Delete our ReflectionTypeLoadException
Aleksey Kliger [Mon, 26 Jun 2017 19:58:12 +0000 (15:58 -0400)]
[bcl] Delete our ReflectionTypeLoadException

We use the referencesource version

6 years ago[cil-strip] Move comment out of .sources file
Alexander Köplinger [Mon, 26 Jun 2017 17:16:47 +0000 (19:16 +0200)]
[cil-strip] Move comment out of .sources file

I forgot that we only run gensources.sh on libraries but not
tools so the comments don't get stripped out...

6 years ago[runtime] Add more logging in case mono_os_cond_timedwait () fails.
Zoltan Varga [Mon, 26 Jun 2017 17:04:36 +0000 (13:04 -0400)]
[runtime] Add more logging in case mono_os_cond_timedwait () fails.

6 years agoBump API snapshot
Alexander Köplinger [Mon, 26 Jun 2017 15:13:11 +0000 (17:13 +0200)]
Bump API snapshot

6 years ago[System.Core] Implement MemoryMappedFile.OpenExisting
Marius Ungureanu [Sat, 24 Jun 2017 18:48:17 +0000 (21:48 +0300)]
[System.Core] Implement MemoryMappedFile.OpenExisting

Reuse the existing icall infrastructure to give the same handle back.

This PR implements all OpenExisting methods (with the access rights parameter discarded) and the SafeHandle property.
In the runtime, we don't check the capacity parameter if we try to open a mmap file, and we fallthrough the handle refcount case.

6 years agoRevert "[cil-strip] Remove old private copy of Mono.Cecil"
Alexander Köplinger [Mon, 26 Jun 2017 10:32:33 +0000 (12:32 +0200)]
Revert "[cil-strip] Remove old private copy of Mono.Cecil"

(reverted from commit 4ea31227587b9df3a244d9c32a5a87a7afa70436)

6 years agoRevert "[cil-strip] Upgrade to latest Mono.Cecil API"
Alexander Köplinger [Mon, 26 Jun 2017 10:32:22 +0000 (12:32 +0200)]
Revert "[cil-strip] Upgrade to latest Mono.Cecil API"

(reverted from commit 0c9eb70a4646364f4b425f69b366be766043bef9)

Using newer Cecil means metadata tokens will be different which
breaks AOT compilation: https://github.com/mono/mono/pull/5102#issuecomment-310801767

6 years ago[msvc] Update csproj files
monojenkins [Sun, 25 Jun 2017 16:20:22 +0000 (16:20 +0000)]
[msvc] Update csproj files

6 years ago[llvm] Align aot variables to 8 bytes, parts of the aot code depend on it.
Zoltan Varga [Sat, 24 Jun 2017 19:12:38 +0000 (15:12 -0400)]
[llvm] Align aot variables to 8 bytes, parts of the aot code depend on it.

6 years ago[null_gc] Get null GC building again.
Aleksey Kliger [Fri, 23 Jun 2017 21:43:02 +0000 (17:43 -0400)]
[null_gc] Get null GC building again.

- Had to borrow a gchandles implementation from mono/metadata/boehm-gc.c
- Added coop handles support for NULL GC
- Fixed typos in configure.ac
- To use: `./configure --with-libgc=none --without-sgen --enable-boehm`
  You get a mono-boehm which actually is not collecting anything.

6 years ago[packaging/msbuild] Bump to get new changes on xplat-master (#5113) (#5114)
Ankit Jain [Sat, 24 Jun 2017 03:35:53 +0000 (23:35 -0400)]
[packaging/msbuild] Bump to get new changes on xplat-master (#5113) (#5114)

6 years ago[System] Fix compilation on watchos (#5108)
Ludovic Henry [Fri, 23 Jun 2017 23:32:35 +0000 (19:32 -0400)]
[System] Fix compilation on watchos (#5108)

6 years ago[cil-strip] Remove old private copy of Mono.Cecil
Alexander Köplinger [Fri, 23 Jun 2017 14:05:11 +0000 (16:05 +0200)]
[cil-strip] Remove old private copy of Mono.Cecil

No longer needed now that we're using the new Cecil.

6 years ago[cil-strip] Upgrade to latest Mono.Cecil API
Alexander Köplinger [Fri, 23 Jun 2017 14:03:36 +0000 (16:03 +0200)]
[cil-strip] Upgrade to latest Mono.Cecil API

This greatly simplifies the code and as a bonus also shaves off
about 300ms when stripping mscorlib.dll.

6 years agoMerge pull request #5103 from alexrp/profiler-signal-ack-fix
Rodrigo Kumpera [Fri, 23 Jun 2017 22:30:14 +0000 (15:30 -0700)]
Merge pull request #5103 from alexrp/profiler-signal-ack-fix

[profiler] Do the signal ack after checking that the thread is detached.

6 years ago[aot] Fix aot image loading messages in static mode.
Zoltan Varga [Fri, 23 Jun 2017 20:16:41 +0000 (16:16 -0400)]
[aot] Fix aot image loading messages in static mode.

6 years agoMerge pull request #5084 from BrzVlad/feature-worker-context
Vlad Brezae [Fri, 23 Jun 2017 18:10:18 +0000 (21:10 +0300)]
Merge pull request #5084 from BrzVlad/feature-worker-context

[sgen] Implement sgen worker context

6 years ago[sgen] Use concurrent mark concurrently with parallel minors
Vlad Brezae [Wed, 21 Jun 2017 10:43:39 +0000 (13:43 +0300)]
[sgen] Use concurrent mark concurrently with parallel minors

6 years ago[sgen] Implement work context for thread pool threads
Vlad Brezae [Thu, 15 Jun 2017 22:15:51 +0000 (01:15 +0300)]
[sgen] Implement work context for thread pool threads

We need to run jobs on the thread pool threads for parallel minor, parallel major, concurrent mark and concurrent sweep, some of which can run simultaneously. Instead of making separate threads reserved for each type of work, we create a work context abstraction (this contains a set of pending jobs to run and the sgen-worker callbacks). When a thread pool thread looks for work, it searches for work (jobs and idle work) through all contexts and finishes work from each one of them, from the highest to the lowest priority.

This is implemented by having different thread pool contexts (which contain the job list, work callbacks that indicate whether it should work and its ineherent priority), overall unrelated to the GC. The sgen worker infrastructure also creates separate worker contexts (which contain the object ops to be used and information about each worker, like the state and the private gray queue). We use at most two worker contexts (for minor and for major) and each worker context makes use of a sgen thread pool context.

6 years ago[sgen] Remove redundant code
Vlad Brezae [Wed, 21 Jun 2017 11:09:12 +0000 (14:09 +0300)]
[sgen] Remove redundant code

We always init worker distribute gray queue when initialising worker infrastructure.

6 years ago[sgen] Include split count in the parallel job
Vlad Brezae [Wed, 21 Jun 2017 10:55:57 +0000 (13:55 +0300)]
[sgen] Include split count in the parallel job

We were getting the split_count at job run time which makes little sense. Include it in the job, alongside the job index.

6 years ago[sgen] Run the scan pinned object job concurrently with minors
Vlad Brezae [Tue, 20 Jun 2017 12:22:39 +0000 (15:22 +0300)]
[sgen] Run the scan pinned object job concurrently with minors

Concurrent mark doesn't normally scan objects in the nursery since they can be moved. At the end of the concurrent mark, we were locking over the entire gc pause in order to make sure that the we can scan the latest pinned object list (aka none of those objects can be moved). Lock only over the pinning phase of the collection, since it is enough.

6 years agoMerge pull request #5098 from BrzVlad/fix-sgen-pagesize
Vlad Brezae [Fri, 23 Jun 2017 17:06:51 +0000 (20:06 +0300)]
Merge pull request #5098 from BrzVlad/fix-sgen-pagesize

[sgen] Fix sgen pagesize

6 years agoMerge pull request #5104 from mono/bump-bockbuild
Marius Ungureanu [Fri, 23 Jun 2017 16:08:23 +0000 (19:08 +0300)]
Merge pull request #5104 from mono/bump-bockbuild

Bump bockbuild

6 years agoBump bockbuild
Marius Ungureanu [Fri, 23 Jun 2017 16:05:48 +0000 (19:05 +0300)]
Bump bockbuild

6 years ago[profiler] Do the signal ack after checking that the thread is detached.
Alex Rønne Petersen [Fri, 23 Jun 2017 14:52:24 +0000 (16:52 +0200)]
[profiler] Do the signal ack after checking that the thread is detached.

Otherwise we could crash in mono_thread_info_current ().

6 years ago[aot] fixes temp-path argument only working when using LLVM compiler. (#5099)
Chris Lapa [Fri, 23 Jun 2017 13:30:23 +0000 (23:30 +1000)]
[aot] fixes temp-path argument only working when using LLVM compiler. (#5099)

Signed-off-by: Chris Lapa <chris@lapa.com.au>
6 years ago[packaging/msbuild] Bump to get new changes on xplat-master
Ankit Jain [Fri, 23 Jun 2017 06:16:31 +0000 (02:16 -0400)]
[packaging/msbuild] Bump to get new changes on xplat-master

6 years ago[packaging/msbuild] Update commit hash to point to xplat-master HEAD (#5100)
Ankit Jain [Fri, 23 Jun 2017 01:35:09 +0000 (21:35 -0400)]
[packaging/msbuild] Update commit hash to point to xplat-master HEAD (#5100)

6 years ago[sgen] Performance improvement for ms_block_size computations
Vlad Brezae [Thu, 22 Jun 2017 20:15:53 +0000 (23:15 +0300)]
[sgen] Performance improvement for ms_block_size computations

This reduces regressions for switching from MS_BLOCK_SIZE compile time constant
to ms_block_size variable by 85% on the tests where this was showing up. In the
future we should implement a block allocator, which would, amongst other benefits,
enable us to remove the block-size/page-size dependency.

6 years ago[sgen] Fix MS block size calculation.
Vlad Brezae [Wed, 21 Jun 2017 20:08:07 +0000 (23:08 +0300)]
[sgen] Fix MS block size calculation.

The block size must be a multiple of the system page size. Page size simply
cannot be determined reliably at compile time, so we must obtain the page size
through a system call on startup and use it as the block size. We still enforce
a minimum block size of 16kb on systems where the page size is smaller than
that.

The old code hardcoded page sizes for certain architectures with large pages.
THe problem is that those architectures don't necessarily have to have large
pages and on systems where this wasn't the case, we'd end up with a block size
much larger than needed.

Rebase of @alexrp's work.

6 years agoMerge pull request #5095 from kumpera/fix_fullaot
Rodrigo Kumpera [Thu, 22 Jun 2017 21:55:52 +0000 (14:55 -0700)]
Merge pull request #5095 from kumpera/fix_fullaot

[aot] Fix the name of the mono_gc_wbarrier_range_copy icall. FullAOT with direct calls requires it.

6 years ago[arm] Handle large offsets in OP_SEQ_POINT. Fixes #57476. (#5094)
Zoltan Varga [Thu, 22 Jun 2017 21:15:27 +0000 (17:15 -0400)]
[arm] Handle large offsets in OP_SEQ_POINT. Fixes #57476. (#5094)

6 years agoMerge pull request #5090 from alexrp/profiler-class-unload-removal
Alex Rønne Petersen [Thu, 22 Jun 2017 19:03:01 +0000 (21:03 +0200)]
Merge pull request #5090 from alexrp/profiler-class-unload-removal

[profiler] Remove class unload events.

6 years ago[profiler] Remove class unload events.
Alex Rønne Petersen [Thu, 22 Jun 2017 08:40:58 +0000 (10:40 +0200)]
[profiler] Remove class unload events.

These are never actually emitted by the profiler API because they make no sense
in the context of Mono's metadata layer.

6 years agoMerge pull request #5089 from alexrp/profiler-deadlock-fix
Alex Rønne Petersen [Thu, 22 Jun 2017 18:56:48 +0000 (20:56 +0200)]
Merge pull request #5089 from alexrp/profiler-deadlock-fix

[profiler] Fix a deadlock due to recursive use of the buffer lock.

6 years ago[aot] Fix the name of the mono_gc_wbarrier_range_copy icall. FullAOT with direct...
Rodrigo Kumpera [Thu, 22 Jun 2017 18:48:13 +0000 (11:48 -0700)]
[aot] Fix the name of the mono_gc_wbarrier_range_copy icall. FullAOT with direct calls requires it.

6 years agoMerge pull request #5092 from alexrp/mini-coverage-increment
Alex Rønne Petersen [Thu, 22 Jun 2017 18:39:37 +0000 (20:39 +0200)]
Merge pull request #5092 from alexrp/mini-coverage-increment

[mini] Use an atomic add for the code coverage counter when possible.

6 years agoDocs: added missing ) to RelaxngPattern snippet (#5093)
Eddie Hedges [Thu, 22 Jun 2017 16:48:40 +0000 (11:48 -0500)]
Docs: added missing ) to RelaxngPattern snippet (#5093)

6 years ago[mini] Use an atomic add for the code coverage counter when possible.
Alex Rønne Petersen [Thu, 22 Jun 2017 15:32:10 +0000 (17:32 +0200)]
[mini] Use an atomic add for the code coverage counter when possible.

6 years ago[runtime] Add a few missing error_init () calls to the mono_custom_attrs_from_.....
Zoltan Varga [Thu, 22 Jun 2017 14:27:07 +0000 (10:27 -0400)]
[runtime] Add a few missing error_init () calls to the mono_custom_attrs_from_... functions. Fixes #57488. (#5076)

6 years ago[sre] Fix the signature of the create_dynamic_method () icall, make it static since...
Zoltan Varga [Thu, 22 Jun 2017 14:26:46 +0000 (10:26 -0400)]
[sre] Fix the signature of the create_dynamic_method () icall, make it static since the C implementation only takes two parameters, this only caused problems if the icall set the error, since it overwrite the DynamicMethod object instead. Fixes #57301. (#5081)

6 years agoMerge pull request #5091 from alexrp/mini-enter-leave-cleanup
Alex Rønne Petersen [Thu, 22 Jun 2017 13:55:26 +0000 (15:55 +0200)]
Merge pull request #5091 from alexrp/mini-enter-leave-cleanup

[mini] Remove codegen special cases around MONO_PROFILE_ENTER_LEAVE.

6 years ago[mini] Remove codegen special cases around MONO_PROFILE_ENTER_LEAVE.
Alex Rønne Petersen [Thu, 22 Jun 2017 10:01:31 +0000 (12:01 +0200)]
[mini] Remove codegen special cases around MONO_PROFILE_ENTER_LEAVE.

Enter/leave instrumentation is now done with icalls at the IR level, so these
special cases are no longer needed.

6 years ago[profiler] Fix a deadlock due to recursive use of the buffer lock.
Alex Rønne Petersen [Thu, 22 Jun 2017 08:30:29 +0000 (10:30 +0200)]
[profiler] Fix a deadlock due to recursive use of the buffer lock.

The lock no longer supports recursion as of 10ba222234b0ff23bfbe29c6f2dfd7673ec2ca7f.
Not that it ever really did, since the old implementation was buggy.

6 years ago[threads] Enable blocking transition with MONO_ENABLE_BLOCKING_TRANSITION env variabl...
Ludovic Henry [Thu, 22 Jun 2017 00:46:18 +0000 (20:46 -0400)]
[threads] Enable blocking transition with MONO_ENABLE_BLOCKING_TRANSITION env variable (#5087)

6 years ago[utils/mmap] Prefer sysconf () over getpagesize () in mono_pagesize ().
Alex Rønne Petersen [Tue, 11 Oct 2016 09:29:39 +0000 (11:29 +0200)]
[utils/mmap] Prefer sysconf () over getpagesize () in mono_pagesize ().

The former is async-signal-safe, while the latter makes no guarantees and also
isn't actually portable.

6 years agoMerge pull request #5079 from lambdageek/dev-setvalue
Aleksey Kliger (λgeek) [Wed, 21 Jun 2017 19:32:29 +0000 (15:32 -0400)]
Merge pull request #5079 from lambdageek/dev-setvalue

[coop handles] Implement various SetValue methods

6 years agoMerge pull request #5082 from kumpera/fix-ro-fs-file-delete
Rodrigo Kumpera [Wed, 21 Jun 2017 17:34:01 +0000 (10:34 -0700)]
Merge pull request #5082 from kumpera/fix-ro-fs-file-delete

[io-layer] When deleting a file, check for EROFS and verify if the file exists. Fixes #57629.

6 years ago[runtime] Update comment with link to Linux Kernel fix.
Rodrigo Kumpera [Wed, 21 Jun 2017 16:56:58 +0000 (09:56 -0700)]
[runtime] Update comment with link to Linux Kernel fix.

6 years ago[interp] disable context-static.exe on CI as it suffers from stack usage issue
Bernhard Urban [Wed, 21 Jun 2017 09:14:15 +0000 (11:14 +0200)]
[interp] disable context-static.exe on CI as it suffers from stack usage issue

6 years ago[interp] fix BARRIER_IF_VOLATILE usage
Bernhard Urban [Wed, 21 Jun 2017 09:12:58 +0000 (11:12 +0200)]
[interp] fix BARRIER_IF_VOLATILE usage

6 years ago[interp] Handle the `no.` prefix instruction as a no-op.
Alex Rønne Petersen [Tue, 20 Jun 2017 22:43:26 +0000 (00:43 +0200)]
[interp] Handle the `no.` prefix instruction as a no-op.

6 years ago[interp] Add support for the `volatile.` prefix instruction.
Alex Rønne Petersen [Tue, 20 Jun 2017 22:33:54 +0000 (00:33 +0200)]
[interp] Add support for the `volatile.` prefix instruction.

6 years ago[interp] Add MINT_MONO_MEMORY_BARRIER.
Alex Rønne Petersen [Tue, 20 Jun 2017 22:09:41 +0000 (00:09 +0200)]
[interp] Add MINT_MONO_MEMORY_BARRIER.

6 years ago[interp] Fix oplength of MINT_MONO_TLS.
Alex Rønne Petersen [Tue, 20 Jun 2017 22:06:39 +0000 (00:06 +0200)]
[interp] Fix oplength of MINT_MONO_TLS.

6 years ago[interp] Update comment to clarify meaning of oplength.
Alex Rønne Petersen [Tue, 20 Jun 2017 22:05:26 +0000 (00:05 +0200)]
[interp] Update comment to clarify meaning of oplength.

6 years ago[mcs] Add missing vector cloning of definite assignment on-true. Fixes #57505
Marek Safar [Wed, 21 Jun 2017 10:52:20 +0000 (12:52 +0200)]
[mcs] Add missing vector cloning of definite assignment on-true. Fixes #57505

6 years agoMerge pull request #5072 from alexrp/profiler-stability
Alex Rønne Petersen [Wed, 21 Jun 2017 00:06:28 +0000 (02:06 +0200)]
Merge pull request #5072 from alexrp/profiler-stability

[profiler] A bunch of profiler bug/stability fixes.

6 years ago[mcs] Fixes regression introduced by a0fc3f4dcf571edc997f53066c09671650e96670 to...
Marek Safar [Tue, 20 Jun 2017 22:14:05 +0000 (00:14 +0200)]
[mcs] Fixes regression introduced by a0fc3f4dcf571edc997f53066c09671650e96670 to consider user set values. Fixes #57242

6 years ago[io-layer] When deleting a file, check for EROFS and verify if the file exists. Fixes...
Rodrigo Kumpera [Tue, 20 Jun 2017 20:39:48 +0000 (13:39 -0700)]
[io-layer] When deleting a file, check for EROFS and verify if the file exists. Fixes #57629.

Linux has this particular behavior of returning ENOFS when unlinking from an read only FS.
Even if the file doesn't exists! Darwin does the sane thing and return ENOENT in this case.

To workaround this, if unlink returns EROFS, we stat the file and deal with that.

6 years agoBump roslyn to 2.3 beta 2
Marek Safar [Tue, 20 Jun 2017 18:00:27 +0000 (20:00 +0200)]
Bump roslyn to 2.3 beta 2

6 years ago[runtime] Use coop handles for System.Array.SetValue
Aleksey Kliger [Tue, 20 Jun 2017 00:11:15 +0000 (20:11 -0400)]
[runtime] Use coop handles for System.Array.SetValue

6 years ago[runtime] Use coop handles for System.Array.SetValueImpl
Aleksey Kliger [Mon, 19 Jun 2017 22:13:51 +0000 (18:13 -0400)]
[runtime] Use coop handles for System.Array.SetValueImpl

6 years ago[runtime] Make array_set_value_impl single-exit
Aleksey Kliger [Mon, 19 Jun 2017 20:14:21 +0000 (16:14 -0400)]
[runtime] Make array_set_value_impl single-exit

6 years ago[runtime] Don't call icall ves_icall_System_Array_SetValueImpl directly
Aleksey Kliger [Mon, 19 Jun 2017 19:39:47 +0000 (15:39 -0400)]
[runtime] Don't call icall ves_icall_System_Array_SetValueImpl directly

add a helper function array_set_value_impl and call that from elsewhere in
native code.

6 years ago[runtime] Add mono_error_set_invalid_cast ()
Aleksey Kliger [Mon, 19 Jun 2017 19:20:01 +0000 (15:20 -0400)]
[runtime] Add mono_error_set_invalid_cast ()

6 years ago[runtime] Use coop handles for System.Reflection.MonoField.SetValueInternal
Aleksey Kliger [Wed, 7 Jun 2017 16:11:32 +0000 (12:11 -0400)]
[runtime] Use coop handles for System.Reflection.MonoField.SetValueInternal

6 years agoBump corefx
Marek Safar [Tue, 20 Jun 2017 11:48:05 +0000 (13:48 +0200)]
Bump corefx

6 years ago[runtime] Add mono_nullable_init_from_handle
Aleksey Kliger [Tue, 20 Jun 2017 17:36:21 +0000 (13:36 -0400)]
[runtime] Add mono_nullable_init_from_handle

6 years ago[msvc] Update csproj files (#5075)
monojenkins [Tue, 20 Jun 2017 16:30:37 +0000 (17:30 +0100)]
[msvc] Update csproj files (#5075)

6 years ago[coop handles] Add MONO_HANDLE_SET_FIELD_REF macro
Aleksey Kliger [Wed, 14 Jun 2017 21:14:29 +0000 (17:14 -0400)]
[coop handles] Add MONO_HANDLE_SET_FIELD_REF macro

Set a field in an object when you have a MonoClassField*

6 years ago[coop handles] Add mono_object_handle_pin_unbox
Aleksey Kliger [Tue, 6 Jun 2017 22:03:30 +0000 (18:03 -0400)]
[coop handles] Add mono_object_handle_pin_unbox

6 years ago[bcl tests] do not attempt to delete non-existing files
Bernhard Urban [Mon, 19 Jun 2017 14:04:09 +0000 (16:04 +0200)]
[bcl tests] do not attempt to delete non-existing files

This fixes an issue we see on the BCL test suite when run in the context
of Xamarin Android:

```
I/mono-stdout( 2534):     Certificate1 [FAIL] : TearDown : System.UnauthorizedAccessException : Access to the path "temp.b64" is denied.
```

It seems like those files aren't generated anymore.  Not sure why this
starts to be a problem now.

6 years ago[profiler] Remove an unnecessary check that could hide potential bugs.
Alex Rønne Petersen [Tue, 20 Jun 2017 04:38:21 +0000 (06:38 +0200)]
[profiler] Remove an unnecessary check that could hide potential bugs.

6 years ago[acceptance-tests] Update the profiler-stress test runner for the profiler's new...
Alex Rønne Petersen [Tue, 20 Jun 2017 04:22:28 +0000 (06:22 +0200)]
[acceptance-tests] Update the profiler-stress test runner for the profiler's new argument style.

This allows us to test a lot more combinations than previously.

6 years ago[profiler] Fix 'no' argument parsing.
Alex Rønne Petersen [Tue, 20 Jun 2017 03:45:41 +0000 (05:45 +0200)]
[profiler] Fix 'no' argument parsing.

6 years ago[profiler] Implement a new buffer reader/writer lock algorithm.
Alex Rønne Petersen [Tue, 20 Jun 2017 03:02:59 +0000 (05:02 +0200)]
[profiler] Implement a new buffer reader/writer lock algorithm.

See the comment + assertions to get an idea of how it works.

6 years ago[profiler] Require an ack of the previous sampling signal before sending another.
Alex Rønne Petersen [Tue, 20 Jun 2017 01:13:20 +0000 (03:13 +0200)]
[profiler] Require an ack of the previous sampling signal before sending another.

This avoids situations where we could end up filling the signal queue
completely, leading to the undocumented EAGAIN return value from pthread_kill,
which breaks ~everything in the STW/GC code because it thinks an error return
value from pthread_kill means the thread has exited.

The actual reason why this happened is that when a thread is suspended, we mask
all signals except the restart signal for that thread. This means that a
program with a large number of threads or where GC collections could take
longer than usual would end up with tens of thousands of sampling signals
queued up, eventually reaching the limit of the user-level signal queue (see
`ulimit -i` and `RLIMIT_SIGPENDING`).

We only do this on systems where we use real time signals. Non-RT signals do
not have this problem as the kernel will throttle them.

6 years ago[utils/threads] Export small ID functions as part of the API.
Alex Rønne Petersen [Tue, 20 Jun 2017 00:49:26 +0000 (02:49 +0200)]
[utils/threads] Export small ID functions as part of the API.

These will be used in the log profiler.

Also, make mono_thread_info_register_small_id () only allocate a new small ID
if one isn't already allocated for the current thread. This is necessary so
that we can allocate a small ID for a thread and not have it be overwritten
if/when that thread is later attached probably (which also results in this
function being called).

6 years ago[utils/threads] Print an error and abort if pthread_kill returns an error that isn...
Alex Rønne Petersen [Tue, 20 Jun 2017 00:34:17 +0000 (02:34 +0200)]
[utils/threads] Print an error and abort if pthread_kill returns an error that isn't ESRCH.

6 years ago[profiler] Remove a FIXME that likely won't be addressed now.
Alex Rønne Petersen [Tue, 20 Jun 2017 00:09:10 +0000 (02:09 +0200)]
[profiler] Remove a FIXME that likely won't be addressed now.

6 years ago[profiler] Ensure that buffer size is adjusted to whatever an event actually needs.
Alex Rønne Petersen [Tue, 20 Jun 2017 00:01:03 +0000 (02:01 +0200)]
[profiler] Ensure that buffer size is adjusted to whatever an event actually needs.

Very large events could previously result in potential overflows because
buffers always had the same size (BUFFER_SIZE, 64k).

6 years ago[profiler] Remove the buffer size hack in ensure_logbuf_unsafe ().
Alex Rønne Petersen [Mon, 19 Jun 2017 23:51:30 +0000 (01:51 +0200)]
[profiler] Remove the buffer size hack in ensure_logbuf_unsafe ().

This is blatantly hiding potential bugs. This kind of code is not okay.

6 years ago[profiler] Attach threads automatically in all callbacks.
Alex Rønne Petersen [Mon, 19 Jun 2017 23:50:18 +0000 (01:50 +0200)]
[profiler] Attach threads automatically in all callbacks.

This hardens the profiler against cases where an unattached thread causes some
event callback to be invoked. This is particularly relevant when embedding.

6 years ago[profiler] Flush the dumper thread every second.
Alex Rønne Petersen [Mon, 19 Jun 2017 23:34:14 +0000 (01:34 +0200)]
[profiler] Flush the dumper thread every second.

If a program is idle, we likely won't get enough samples to prompt the dumper
thread to send its log buffer to the writer thread. This can make it seem like
the profiler isn't working when it actually is. So, just send the dumper
thread's log buffer every second to make sure data is delivered in a timely
fashion.

6 years ago[profiler] Take the reader lock when modifying the thread-local method list.
Alex Rønne Petersen [Mon, 19 Jun 2017 23:33:46 +0000 (01:33 +0200)]
[profiler] Take the reader lock when modifying the thread-local method list.

It can be modified by other threads during sync points.

6 years ago[threads] Store MonoInternalThread in MonoThreadInfo for use when detaching (#5058)
Ludovic Henry [Tue, 20 Jun 2017 00:35:54 +0000 (20:35 -0400)]
[threads] Store MonoInternalThread in MonoThreadInfo for use when detaching (#5058)

* [threads] Make mono_thread_attach_full static

* [threads] Remove  prefix on MonoThreadInfoCallbacks callbacks

* [threads] Rename mono_threads*_init functions to mono_thread_info*_init

* [threads] Remove dead method mono_runtime_is_critical_method

* [threads] Move MonoThreadInfoCallbacks to metadata/threads

* [threads] Store MonoInternalThread in MonoThreadInfo for use when detaching

When the native thread would exit, the TLS keys are destroyed. There is a TLS destructor for MonoThreadInfo, but not for MonoInternalThread. If MonoInternalThread is destroyed before MonoThreadInfo, then MonoThreadInfoCallbacks.thread_detach wouldn't successfully detach the current MonoInternalThread as mono_thread_internal_current would return NULL. This would lead to MonoInternalThread still laying around, while their corresponding MonoThreadInfo has already been destroyed. This fixes this problem, since we now rely on MonoThreadInfo to store the MonoInternalThread for detach.

6 years agoMerge pull request #5070 from alexrp/profiler-version-bump
Alex Rønne Petersen [Mon, 19 Jun 2017 23:29:15 +0000 (01:29 +0200)]
Merge pull request #5070 from alexrp/profiler-version-bump

[profiler] Bump log profiler version to 2.0 due to breaking argument changes.

6 years ago[profiler] Bump log profiler version to 2.0 due to breaking argument changes.
Alex Rønne Petersen [Mon, 19 Jun 2017 23:24:51 +0000 (01:24 +0200)]
[profiler] Bump log profiler version to 2.0 due to breaking argument changes.

6 years agoMerge pull request #5062 from alexrp/profiler-library
Alex Rønne Petersen [Mon, 19 Jun 2017 23:04:18 +0000 (01:04 +0200)]
Merge pull request #5062 from alexrp/profiler-library

[profiler] Introduce the Mono.Profiler.Log library. (take 2)

6 years ago[profiler] Introduce the Mono.Profiler.Log library. API still unstable.
Alex Rønne Petersen [Mon, 12 Jun 2017 20:53:56 +0000 (22:53 +0200)]
[profiler] Introduce the Mono.Profiler.Log library. API still unstable.

6 years agoMerge pull request #5063 from alexrp/profiler-format-changes
Alex Rønne Petersen [Mon, 19 Jun 2017 22:46:50 +0000 (00:46 +0200)]
Merge pull request #5063 from alexrp/profiler-format-changes

[profiler] A few small format changes