mono.git
8 years agoDo not remap framework assembly if it's version is higher than the runtime version
Ankit Jain [Tue, 23 Feb 2016 21:03:48 +0000 (16:03 -0500)]
Do not remap framework assembly if it's version is higher than the runtime version

Currently, assemblies like Microsoft.Build.Framework and
Microsoft.Build.Engine get remapped to the current runtime version, at
load time. This means that if an assembly references the above
assemblies with a version like `14.1.0.0`, then that would get remapped
to `4.0.0.0`. This is incorrect behavior and breaks msbuild. Instead,
now we do the remapping only if the requested version is lower than the
runtime version.

@akoplinger: This will actually impact xbuild too right now because
we're defaulting to xbuild 14.0 in Mono 4.4 now so we'd see messages
like Mono: The request to load the assembly Microsoft.Build.Framework
v14.0.0.0 was remapped to v4.0.0.0 in the assembly loading log, which
will break in very subtle ways.

8 years agoMerge pull request #2707 from lambdageek/dev/monoerror-mono_image_load_module_dynamic
monojenkins [Tue, 8 Mar 2016 15:10:37 +0000 (15:10 +0000)]
Merge pull request #2707 from lambdageek/dev/monoerror-mono_image_load_module_dynamic

[sre] Propagate MonoError in mono_image_load_module_dynamic

8 years ago[mcs] Fixes codegen for lifted null bitwise operators with constant left side of...
Marek Safar [Tue, 8 Mar 2016 12:39:48 +0000 (13:39 +0100)]
[mcs] Fixes codegen for lifted null bitwise operators with constant left side of null value

8 years agoMerge pull request #2708 from lambdageek/dev/monoerror-assorted-get_type
monojenkins [Tue, 8 Mar 2016 11:25:24 +0000 (11:25 +0000)]
Merge pull request #2708 from lambdageek/dev/monoerror-assorted-get_type

[reflection] MonoError for mono_reflection_{get_type_with_rootimage,type_from_name}

8 years agoMerge pull request #2668 from lambdageek/dev/monoerror-mono_security
monojenkins [Tue, 8 Mar 2016 11:20:58 +0000 (11:20 +0000)]
Merge pull request #2668 from lambdageek/dev/monoerror-mono_security

[runtime] MonoError cleanup in mono-security.c

Some easy MonoError cleanup in mono-security.c: use set_pending_exception, don't raise in helper functions, free memory on errors.

8 years agoMerge pull request #2670 from lambdageek/dev/monoerror-mono_runtime_object_init
monojenkins [Tue, 8 Mar 2016 11:20:52 +0000 (11:20 +0000)]
Merge pull request #2670 from lambdageek/dev/monoerror-mono_runtime_object_init

[runtime] Use MonoError in mono_runtime_object_init

Mark mono_runtime_object_init checked external only.  Runtime should use mono_runtime_object_init_checked.

8 years agoMerge pull request #2687 from lambdageek/dev/monoerror-mono_param_get_objects_internal
monojenkins [Tue, 8 Mar 2016 11:20:46 +0000 (11:20 +0000)]
Merge pull request #2687 from lambdageek/dev/monoerror-mono_param_get_objects_internal

[reflection] Use MonoError in mono_param_get_objects

8 years ago[mcs] Null conditional operator is never suppose to work with await according to...
Marek Safar [Mon, 7 Mar 2016 20:00:08 +0000 (21:00 +0100)]
[mcs] Null conditional operator is never suppose to work with await according to current C# standard. Fixes #39266

8 years ago[reflection] Fix mono_reflection_type_get_handle when
Aleksey Kliger [Mon, 7 Mar 2016 18:58:01 +0000 (13:58 -0500)]
[reflection] Fix mono_reflection_type_get_handle when
DISABLE_REFLECTION_EMIT is set

Fixup of 20a111a215c2ad93ab77068d2e81e21c886b9846

8 years ago[mcs] Remove test as it cannot reliably depend on process shutdown
Marek Safar [Mon, 7 Mar 2016 18:50:57 +0000 (19:50 +0100)]
[mcs] Remove test as it cannot reliably depend on process shutdown

8 years agoMerge pull request #2727 from akoeplinger/fix-system-testports
monojenkins [Sat, 5 Mar 2016 16:10:17 +0000 (16:10 +0000)]
Merge pull request #2727 from akoeplinger/fix-system-testports

[System] Fix more hardcoded test ports

A test failed on Jenkins today with "address already in use".
Opportunistically replaced a few more hardcoded test ports to avoid failures in the future.

@monojenkins merge

8 years ago[System/ServiceModel] Fix more hardcoded test ports
Alexander Köplinger [Sat, 5 Mar 2016 13:38:33 +0000 (14:38 +0100)]
[System/ServiceModel] Fix more hardcoded test ports

A test failed on Jenkins today with "address already in use".
Opportunistically replaced a few more hardcoded test ports to avoid failures in the future.

8 years ago[mcs] All returns with values from async block with finally need to be captured....
Marek Safar [Sat, 5 Mar 2016 10:28:36 +0000 (11:28 +0100)]
[mcs] All returns with values from async block with finally need to be captured. Fixes #39153

8 years ago[corlib] Enable the shim __ComObject for other profiles than mobile_static too
Alexander Köplinger [Fri, 4 Mar 2016 23:19:15 +0000 (00:19 +0100)]
[corlib] Enable the shim __ComObject for other profiles than mobile_static too

Otherwise they crash in a similar way during verification tests.

8 years ago[System] Switch DNS tests to a more stable domain/IP
Alexander Köplinger [Fri, 4 Mar 2016 23:09:13 +0000 (00:09 +0100)]
[System] Switch DNS tests to a more stable domain/IP

info.diku.dk stopped resolving today. Use Google's public DNS server instead which should be much more stable.

8 years ago[runtime] Compile arch before utils when INSTALL_MONOTOUCH is enabled
Alexander Köplinger [Fri, 4 Mar 2016 22:03:09 +0000 (23:03 +0100)]
[runtime] Compile arch before utils when INSTALL_MONOTOUCH is enabled

We'd run into an error before:

```
In file included from ../../mono/utils/mono-context.h:234:0,
                 from ../../mono/utils/mono-stack-unwinding.h:10,
                 from ../../mono/utils/mono-threads.h:14,
                 from mono-mmap.c:36:
../../mono/arch/arm/arm-codegen.h:936:41: fatal error: mono/arch/arm/arm_dpimacros.h: No such file or directory
```

This was done for the other cases in 637ee7cbaa03a1f576230eb8601c0c4fa7f93b36, but not when the monotouch
special case was added in cf754cdb634f2bdd5bc959cec66145372c301fba.

8 years agoMerge pull request #2714 from lambdageek/dev/monoerror-mono_reflection_type_get_handle
monojenkins [Fri, 4 Mar 2016 22:00:19 +0000 (22:00 +0000)]
Merge pull request #2714 from lambdageek/dev/monoerror-mono_reflection_type_get_handle

[reflection] MonoError for mono_reflection_type_get_handle

`mono_reflection_type_get_handle` is really a kind of normalization procedure that synthesizes real `MonoType`s from reflection's derived types such as `System.Reflection.Emit.ArrayType, ByRefType`, etc.  So we call it all over the place in System.Reflection.Emit runtime code.

That would all be fine, except that users are allowed to subclass `System.Type`, so we have to call the `UnderlyingSystemType()` method to get a real type.  Which means that an override can throw.  Which in coop mode means we have to thread around a `MonoError`.  So that's why this code is uglier.

But really this code is doing a lot of type inspection and high-level work that we should figure out how to migrate to managed.

8 years ago[bcl] Ensure all .sources files have newline at the end
Alexander Köplinger [Fri, 4 Mar 2016 20:48:09 +0000 (21:48 +0100)]
[bcl] Ensure all .sources files have newline at the end

It causes an issue with gensources.sh when using #include on Linux otherwise.

8 years ago[reflection] MonoError for mono_reflection_type_get_handle
Aleksey Kliger [Wed, 2 Mar 2016 15:19:32 +0000 (10:19 -0500)]
[reflection] MonoError for mono_reflection_type_get_handle

8 years agoMerge pull request #2704 from BrzVlad/fix-monitor-abort
Rodrigo Kumpera [Fri, 4 Mar 2016 19:49:33 +0000 (14:49 -0500)]
Merge pull request #2704 from BrzVlad/fix-monitor-abort

[runtime] Fix monitor abort

8 years agoFix filename casing in mobile_System.Data.dll.sources
Alexander Köplinger [Fri, 4 Mar 2016 19:35:19 +0000 (20:35 +0100)]
Fix filename casing in mobile_System.Data.dll.sources

It broke on Linux.

8 years agoMerge pull request #2722 from ludovic-henry/fix-39279-docker-cpu-count
monojenkins [Fri, 4 Mar 2016 18:00:30 +0000 (18:00 +0000)]
Merge pull request #2722 from ludovic-henry/fix-39279-docker-cpu-count

[utils] Get processor count from scheduler affinity if available

In case the user has set a scheduler CPU affinity, we should use it as the number of available CPU for the runtime. This is particularly important on docket which uses cgroups that set the container a cpu affinity, and by not using that, the runtime report the total number of CPU the machine has, and not the number of CPU the container has.

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

8 years agoMerge pull request #2700 from akoeplinger/monotouch-mobile-static
monojenkins [Fri, 4 Mar 2016 17:20:16 +0000 (17:20 +0000)]
Merge pull request #2700 from akoeplinger/monotouch-mobile-static

Enable building of monotouch/xammac profiles without mono-extensions and expose mobile_static in configure.ac

Relies on https://github.com/xamarin/mono-extensions/pull/17

This enables us to compile the monotouch, xammac and mobile_static profiles on public Jenkins without mono-extensions.

8 years agoMerge pull request #2723 from akoeplinger/fix-decimal-test-culture
monojenkins [Fri, 4 Mar 2016 16:30:31 +0000 (16:30 +0000)]
Merge pull request #2723 from akoeplinger/fix-decimal-test-culture

[corlib] Fix three decimal tests to not rely on current culture for formatting

They'd fail on cultures where "." is not the decimal separator before.

I've also reenabled them on mobile cause the workaround for #27269 is no longer necessary since all bots are now on Mono 4.0+.

@monojenkins merge

8 years agoMerge pull request #2719 from kumpera/aot_cctor_encoding_in_method_info
Rodrigo Kumpera [Fri, 4 Mar 2016 16:18:05 +0000 (11:18 -0500)]
Merge pull request #2719 from kumpera/aot_cctor_encoding_in_method_info

[runtime] Explicitly encode the need of running a cctor on method infos.

8 years agoAdd a shim __ComObject class to the mobile_static build
Alexander Köplinger [Wed, 2 Mar 2016 13:30:05 +0000 (14:30 +0100)]
Add a shim __ComObject class to the mobile_static build

We need this because when the runtime is built without --enable-minimal=com the runtime crashes
when trying to AOT because it tries to find the __ComObject (even though nothing in mobile_static
actually uses COM). With this shim we can AOT the mobile_static assemblies even with a "normal"
runtime.

8 years ago[corlib] Fix three decimal tests to not rely on current culture for formatting
Alexander Köplinger [Fri, 4 Mar 2016 14:53:25 +0000 (15:53 +0100)]
[corlib] Fix three decimal tests to not rely on current culture for formatting

They'd fail on cultures where "." is not the decimal separator before.

I've also reenabled them on mobile cause the workaround for #27269 is no longer necessary since all bots are now on Mono 4.0+.

8 years ago[corlib] Fixes build to using correct build profile dependency
Marek Safar [Fri, 4 Mar 2016 14:37:44 +0000 (15:37 +0100)]
[corlib] Fixes build to using correct build profile dependency

8 years ago[utils] Get processor count from scheduler affinity if available
Ludovic Henry [Fri, 4 Mar 2016 13:35:29 +0000 (13:35 +0000)]
[utils] Get processor count from scheduler affinity if available

In case the user has set a scheduler CPU affinity, we should use it as the number of available CPU for the runtime. This is particularly important on docket which uses cgroups that set the container a cpu affinity, and by not using that, the runtime report the total number of CPU the machine has, and not the number of CPU the container has.

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

8 years ago[tools] Remove unused comment
Marek Safar [Fri, 4 Mar 2016 12:58:05 +0000 (13:58 +0100)]
[tools] Remove unused comment

8 years ago[lc] Remove Option.cs local copy
Marek Safar [Fri, 4 Mar 2016 12:43:45 +0000 (13:43 +0100)]
[lc] Remove Option.cs local copy

8 years ago[bcl] Redo referencesource resource string integration to not depend on mcs
Marek Safar [Fri, 4 Mar 2016 12:40:41 +0000 (13:40 +0100)]
[bcl] Redo referencesource resource string integration to not depend on mcs

8 years ago[corlib] Remove duplicate file entry
Marek Safar [Fri, 4 Mar 2016 10:15:13 +0000 (11:15 +0100)]
[corlib] Remove duplicate file entry

8 years ago[runtime] Explicitly encode the need of running a cctor on method infos.
Rodrigo Kumpera [Mon, 16 Nov 2015 05:22:56 +0000 (00:22 -0500)]
[runtime] Explicitly encode the need of running a cctor on method infos.

This removes the case where decode_klass_ref returning NULL would be ok.

8 years ago[aot] Rename init_llvm_method () to init_method () since it is used for all methods...
Zoltan Varga [Thu, 3 Mar 2016 21:58:40 +0000 (22:58 +0100)]
[aot] Rename init_llvm_method () to init_method () since it is used for all methods, not just llvm ones.

8 years ago[acceptance-tests] Work around an issue that caused Roslyn tests to stop working
Alexander Köplinger [Thu, 3 Mar 2016 21:08:07 +0000 (22:08 +0100)]
[acceptance-tests] Work around an issue that caused Roslyn tests to stop working

xplat MSBuild uses a wrong, to be removed regex that doesn't catch our recent profile names. Temporarily work around it for now.

8 years agoMerge pull request #2716 from BrzVlad/fix-tramp-jinfo
Vlad Brezae [Thu, 3 Mar 2016 14:56:47 +0000 (21:56 +0700)]
Merge pull request #2716 from BrzVlad/fix-tramp-jinfo

[aot] Set null uw_info for tramps without unwind info

8 years agoMerge pull request #2268 from kumpera/coreclr-testsuite-fixes-1
Rodrigo Kumpera [Thu, 3 Mar 2016 06:08:01 +0000 (01:08 -0500)]
Merge pull request #2268 from kumpera/coreclr-testsuite-fixes-1

First batch of bug fixes found in the CoreClr test suite.

8 years agoMerge pull request #2710 from akoeplinger/fix-typo
Rodrigo Kumpera [Thu, 3 Mar 2016 03:43:50 +0000 (22:43 -0500)]
Merge pull request #2710 from akoeplinger/fix-typo

[jit] Fix duplicated left-hand side in comparison

8 years ago[jit] Fix target_type_is_incompatible to type check byref enums correctly.
Rodrigo Kumpera [Mon, 16 Nov 2015 05:22:56 +0000 (00:22 -0500)]
[jit] Fix target_type_is_incompatible to type check byref enums correctly.

8 years agoMerge pull request #2709 from lewurm/jit-phase-typo
monojenkins [Wed, 2 Mar 2016 23:45:34 +0000 (23:45 +0000)]
Merge pull request #2709 from lewurm/jit-phase-typo

[jit] remove 'jit_' prefix in two phases in stats output

@monojenkins merge

8 years agoMerge pull request #2645 from alexrp/profiler-stability
Rodrigo Kumpera [Wed, 2 Mar 2016 20:33:07 +0000 (15:33 -0500)]
Merge pull request #2645 from alexrp/profiler-stability

Fix a crash in the MONO_LLS_FOREACH_SAFE macro

8 years ago[jit] Fix duplicated left-hand side in comparison
Alexander Köplinger [Wed, 2 Mar 2016 20:01:27 +0000 (21:01 +0100)]
[jit] Fix duplicated left-hand side in comparison

The typo introduced by 1a784475c04a7b371e53346bee032590f4f94853 caused the if to always be false,
because it would compare like if (true == MONO_EXCEPTION_FIELD_ACCESS).

8 years ago[jit] remove 'jit_' prefix in two phases in stats output
Bernhard Urban [Wed, 2 Mar 2016 18:24:44 +0000 (10:24 -0800)]
[jit] remove 'jit_' prefix in two phases in stats output

8 years ago[sgen] Use regular, non-safe LLS foreach macro.
Alex Rønne Petersen [Wed, 2 Mar 2016 16:30:08 +0000 (17:30 +0100)]
[sgen] Use regular, non-safe LLS foreach macro.

As it turns out, all these uses of FOREACH_THREAD_SAFE were inside regions
where the suspend lock is held. This effectively meant that no modifications
to the thread list could actually happen while the foreach was executing. Since
the guarantees provided by FOREACH_THREAD_SAFE are not needed in any of these
cases, switch to FOREACH_THREAD. The latter macro also happens to be much more
lightweight, so this should result in an overall (small) performance gain.

8 years ago[utils/lls] Make the node free function support more flexible.
Alex Rønne Petersen [Sat, 20 Feb 2016 00:59:47 +0000 (01:59 +0100)]
[utils/lls] Make the node free function support more flexible.

The caller of mono_lls_init () can now specify whether the free function can or
cannot lock, rather than the LLS assuming that it can't. The only reason this
limitation existed was because the LLS wasn't extended to allow specifying this
information in/after 56a6ae2bd0ac3b9ebf8ad9daec6aca484b7e487b.

In addition, all LLS functions are now callable from both safe and async
context; the caller must specify the context as an additional argument. If a
free function is in use and it may lock, we'll simply enqueue it for execution
at a later point if an LLS function is invoked in async context.

8 years ago[utils/hp] Improve the mono_thread_hazardous_free_or_queue () API.
Alex Rønne Petersen [Sat, 20 Feb 2016 00:42:09 +0000 (01:42 +0100)]
[utils/hp] Improve the mono_thread_hazardous_free_or_queue () API.

1. The function suffered from the "too many bools" problem. Pass enum values
   instead so that call sites are clearer.
2. Don't restrict the combination of arguments. This makes it easier to use
   the function as part of data structures where the arguments aren't known
   ahead of time (e.g. the LLS).

8 years ago[utils/lls] Fix the safe foreach macro.
Alex Rønne Petersen [Thu, 18 Feb 2016 05:00:43 +0000 (06:00 +0100)]
[utils/lls] Fix the safe foreach macro.

This fixes a bug that would manifest when running the profiler on a program
that rapidly spawns/joins threads.

The problem was this: Given T1 which is joining on T2, T2 which is returning
and removing itself from the thread list, and T3 which is currently in the
SIGPROF signal handler, it was possible for T3 to encounter a pointer to T2's
freed thread info structure in the thread list. This can happen because the
SIGPROF handler doesn't actually acquire the suspend lock (it can't) while
iterating the thread list.

The MONO_LLS_FOREACH_SAFE macro was supposed to protect against this case
specifically and, as a result, only provide a snapshot of the thread list.
However, it was missing some very important bits of the mono_lls_find ()
algorithm. The gory details can be found in the paper that the LLS is based on:

    http://www.research.ibm.com/people/m/michael/spaa-2002.pdf

In particular, refer to the "Using Other Memory Management Methods" section
on page 6. It describes why lines E1-2 and E3-4 are necessary in order to
safely iterate the list in an implementation using hazard pointers (such as
ours). Basically, the iteration of the list has to be restarted if any sort of
modification to the list is detected during iteration. Otherwise, it's possible
to read and follow removed/freed memory, leading to all sorts of Bad Things™
happening.

Now, obviously we can't just restart a foreach loop without further thought;
that would cause all sorts of breakage due to the loop body being executed on
the same elements multiple times. As it happens, the LLS is an ordered data
structure: Elements are arranged in ascending order by key. We can exploit
this fact when iterating the list and restarting the loop. By simply storing
the last key we successfully processed, when restarting the loop, we can just
skip all keys that are not greater than the last key we successfully processed.

In addition to this, the MONO_LLS_FOREACH_SAFE macro now assists in freeing
removed elements that it encounters, just like mono_lls_find ().

The end result is that MONO_LLS_FOREACH_SAFE is now truly safe to use at any
point. It does have the potential to be ever so slightly slower, however, since
it does do significantly more work than it used to, and might even have to
restart the loop multiple times if lots of threads are modifying the thread
list at the same time. This doesn't seem to be a problem in practice, though.

Finally, to reduce the maintenance burden, the non-filtered versions of the
macros are now implemented in terms of the filtered versions, using a static
inline filter function that always returns true. When using the non-filtered
macros, the compiler will just eliminate the check entirely through its usual
optimization passes.

8 years agoMerge pull request #2145 from dlech/patch-2
Alexander Köplinger [Wed, 2 Mar 2016 16:12:08 +0000 (17:12 +0100)]
Merge pull request #2145 from dlech/patch-2

Strip extra null characters in socketAddress

8 years ago[reflection] Use MonoError in mono_reflection_type_from_name
Aleksey Kliger [Mon, 29 Feb 2016 23:06:03 +0000 (18:06 -0500)]
[reflection] Use MonoError in mono_reflection_type_from_name

Mark it external only.  Runtime should use mono_reflection_type_from_name_checked.

8 years ago[reflection] Use MonoError in mono_reflection_get_type_with_rootimage
Aleksey Kliger [Mon, 29 Feb 2016 22:20:21 +0000 (17:20 -0500)]
[reflection] Use MonoError in mono_reflection_get_type_with_rootimage

8 years ago[sre] Propagate MonoError in mono_image_load_module_dynamic
Aleksey Kliger [Mon, 29 Feb 2016 22:02:26 +0000 (17:02 -0500)]
[sre] Propagate MonoError in mono_image_load_module_dynamic

8 years agoMerge pull request #2699 from pruiz/integrate-syswebrouting-master
Alexander Köplinger [Wed, 2 Mar 2016 16:02:06 +0000 (17:02 +0100)]
Merge pull request #2699 from pruiz/integrate-syswebrouting-master

Completely replace System.Web.Routing with implementation from reference source

8 years ago[ilasm] When generating method signatures for method-defs, make sure they contain...
Rodrigo Kumpera [Mon, 7 Dec 2015 02:37:52 +0000 (21:37 -0500)]
[ilasm] When generating method signatures for method-defs, make sure they contain the full call conv. Fixes b35784.

When generating varargs signatures for method defs, ilasm would discard the rest of the call conv. Things
like instance or explicit this would be discarded.

8 years ago[mini] Weaken type check for byrefs to allow narrowing stores of primitive types...
Rodrigo Kumpera [Mon, 30 Nov 2015 01:11:33 +0000 (20:11 -0500)]
[mini] Weaken type check for byrefs to allow narrowing stores of primitive types. Fixes b59858.

CoreClr allows storing a wider primitive byref into a narrower one. int32& -> int16&, for example.

This is a safe weakening as there's no risk of overflows, undefined behavior or unaligned access.

8 years ago[jit] Using a literal field with stdsfld/ldsfld should trigger a MissingFieldExceptio...
Rodrigo Kumpera [Sat, 28 Nov 2015 20:07:51 +0000 (15:07 -0500)]
[jit] Using a literal field with stdsfld/ldsfld should trigger a MissingFieldException. Fixes b13452.

8 years ago[runtime] Fail Void arrays with Invalid Program exception instead of a TLE. Fixes...
Rodrigo Kumpera [Sat, 28 Nov 2015 15:50:01 +0000 (10:50 -0500)]
[runtime] Fail Void arrays with Invalid Program exception instead of a TLE. Fixes b353858.

8 years ago[mini] ckfinite throws OverflowException and not ArithmeticException. Fixes JIT/Regre...
Rodrigo Kumpera [Fri, 27 Nov 2015 22:15:15 +0000 (17:15 -0500)]
[mini] ckfinite throws OverflowException and not ArithmeticException. Fixes JIT/Regression/VS-ia64-JIT/M00/b108366.

8 years ago[jit] Try blocks can end at the last instruction of the method. Fixes DevDiv2_11321.
Rodrigo Kumpera [Thu, 26 Nov 2015 04:29:22 +0000 (23:29 -0500)]
[jit] Try blocks can end at the last instruction of the method. Fixes DevDiv2_11321.

Ass oddly as it sounds, it's valid to emit the catch handler before the try block
and have it be the last sequence of instructions in the method body.

This patch checks for that condition before looking the BB in cil_offset_to_bb.

8 years agoMerge pull request #2684 from ludovic-henry/monoerror-exception
monojenkins [Wed, 2 Mar 2016 15:30:51 +0000 (15:30 +0000)]
Merge pull request #2684 from ludovic-henry/monoerror-exception

[runtime] Use MonoError for mono_get_exception_type_initialization, mono_get_exception_reflection_type_load and mono_get_exception_runtime_wrapped

8 years agoMerge pull request #2696 from lambdageek/dev/unlock-mono_class_create_runtime_vtable
monojenkins [Wed, 2 Mar 2016 15:30:41 +0000 (15:30 +0000)]
Merge pull request #2696 from lambdageek/dev/unlock-mono_class_create_runtime_vtable

[runtime] Don't raise exception while holding locks

8 years ago[PEAPI] Fixed encoded token sizes for HasCustomAttribute, CustomAttributeType and...
Rodrigo Kumpera [Thu, 26 Nov 2015 02:45:29 +0000 (21:45 -0500)]
[PEAPI] Fixed encoded token sizes for HasCustomAttribute, CustomAttributeType and MemberRefParent.

This would cause some large il files to be miscompiled as the token size would not be the expected one.

This was found in b28158/test.il.

8 years ago[runtime] Null check the pointer argument of Interlocked::Exchange<T>. Fixes exchange...
Rodrigo Kumpera [Wed, 25 Nov 2015 14:16:57 +0000 (09:16 -0500)]
[runtime] Null check the pointer argument of Interlocked::Exchange<T>. Fixes exchangetneg.

8 years ago[msvc] Update .def files to fix Windows build
Alexander Köplinger [Wed, 2 Mar 2016 14:04:54 +0000 (15:04 +0100)]
[msvc] Update .def files to fix Windows build

8 years ago[runtime] Use MonoError for mono_get_exception_type_initialization, mono_get_exceptio...
Ludovic Henry [Fri, 26 Feb 2016 13:32:09 +0000 (13:32 +0000)]
[runtime] Use MonoError for mono_get_exception_type_initialization, mono_get_exception_reflection_type_load and mono_get_exception_runtime_wrapped

8 years ago[runtime] Obey requests to abort when waiting on monitors
Vlad Brezae [Mon, 29 Feb 2016 19:19:46 +0000 (21:19 +0200)]
[runtime] Obey requests to abort when waiting on monitors

If we are clearing the interruption_requested flag, we also need to throw the corresponding exception, otherwise we miss it.

Fixes #39042

8 years ago[runtime] Don't return from Monitor.Wait without holding the lock
Vlad Brezae [Tue, 1 Mar 2016 15:46:10 +0000 (17:46 +0200)]
[runtime] Don't return from Monitor.Wait without holding the lock

Even if we are interrupted we must throw the exception only after we have regained the lock. This prevents throwing an SynchronizationLockException in the finally clause of common scenarios like :

lock (obj) {
Monitor.Wait (obj);
}

The downside of this is that, if another thread doesn't give up the lock, we could fail to abort the thread. But this is what MS does.

8 years ago[runtime] Remove unreachable code
Vlad Brezae [Wed, 2 Mar 2016 02:02:14 +0000 (04:02 +0200)]
[runtime] Remove unreachable code

A monitor enter internal method returns -1 for interrupted, 0 for timed out, 1 for acquired. When doing a monitor wait, we regain the lock using an infinite wait (which can't time out) and retrying in the case of interruption.

8 years ago[runtime] Fix LOCK_DEBUG build, for monitor debugging
Vlad Brezae [Fri, 26 Feb 2016 07:33:43 +0000 (09:33 +0200)]
[runtime] Fix LOCK_DEBUG build, for monitor debugging

8 years ago[aot] Set null uw_info for tramps without unwind info
Vlad Brezae [Wed, 2 Mar 2016 08:19:01 +0000 (10:19 +0200)]
[aot] Set null uw_info for tramps without unwind info

We don't register jit infos for tramps that don't have unwind info because we can't unwind from them. Explicitly set uw_info to NULL, instead of pointing to a zero length array in the aot image, to not confuse the runtime when registering the tramp.

Likely to fix #38267

8 years ago[runtime] Move some mono_error_raise_exception () calls to icalls from utility functi...
Zoltan Varga [Wed, 2 Mar 2016 02:11:46 +0000 (03:11 +0100)]
[runtime] Move some mono_error_raise_exception () calls to icalls from utility functions. NFC.

8 years ago[runtime] Rename some icalls to match the icall naming convention. NFC.
Zoltan Varga [Wed, 2 Mar 2016 01:09:08 +0000 (02:09 +0100)]
[runtime] Rename some icalls to match the icall naming convention. NFC.

8 years agoMerge pull request #2705 from kumpera/loader-error-cleanup7
Rodrigo Kumpera [Wed, 2 Mar 2016 02:07:22 +0000 (21:07 -0500)]
Merge pull request #2705 from kumpera/loader-error-cleanup7

[runtime] Remove the loader error from the remaining of the loader.

8 years agoReplaced System.Web.Routing with referencesources own implementation.
Pablo Ruiz [Mon, 29 Feb 2016 17:59:05 +0000 (18:59 +0100)]
Replaced System.Web.Routing with referencesources own implementation.

8 years ago[misc] Multiple small fixes and cleanups.
Rodrigo Kumpera [Mon, 16 Nov 2015 05:22:56 +0000 (00:22 -0500)]
[misc] Multiple small fixes and cleanups.

8 years ago[utils] Add mono_error_move.
Rodrigo Kumpera [Mon, 16 Nov 2015 05:22:56 +0000 (00:22 -0500)]
[utils] Add mono_error_move.

8 years ago[runtime] Ban mono_method_get_header and promote mono_method_get_header_check to...
Rodrigo Kumpera [Tue, 23 Feb 2016 18:08:52 +0000 (13:08 -0500)]
[runtime] Ban mono_method_get_header and promote mono_method_get_header_check to the API as the profiler needs it.

8 years agoMerge pull request #2662 from mattleibow/pcl-mono.options
Jonathan Pryor [Tue, 1 Mar 2016 17:20:28 +0000 (09:20 -0800)]
Merge pull request #2662 from mattleibow/pcl-mono.options

[Mono.Options] Changed the code a bit so that it works with PCL

8 years agoFix marshaling of file name in Mono.Unix.UnixEndPoint.Create()
David Lechner [Sat, 17 Oct 2015 19:40:54 +0000 (14:40 -0500)]
Fix marshaling of file name in Mono.Unix.UnixEndPoint.Create()

In some cases, the null terminator in the SocketAddress may not be the last
character. This changes the algorithm to ignore the null terminator and
anything after it instead of assuming that the last character is the null
terminator.

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

8 years agoAdd unit tests for Mono.Unix.UnixEndpoint and Mono.Unix.UnixListener
David Lechner [Sat, 17 Oct 2015 17:27:23 +0000 (12:27 -0500)]
Add unit tests for Mono.Unix.UnixEndpoint and Mono.Unix.UnixListener

Tests for regression of https://bugzilla.xamarin.com/show_bug.cgi?id=35004

8 years ago[runtime] Remove all usages of mono_method_get_header from the runtime.
Rodrigo Kumpera [Tue, 23 Feb 2016 18:03:29 +0000 (13:03 -0500)]
[runtime] Remove all usages of mono_method_get_header from the runtime.

8 years ago[runtime] Replace mono_method_get_header with mono_method_get_header_checked.
Rodrigo Kumpera [Tue, 23 Feb 2016 17:46:30 +0000 (12:46 -0500)]
[runtime] Replace mono_method_get_header with mono_method_get_header_checked.

8 years ago[runtime] Use mono_method_get_header_checked in debug-helpers.c
Rodrigo Kumpera [Tue, 23 Feb 2016 17:18:21 +0000 (12:18 -0500)]
[runtime] Use mono_method_get_header_checked in debug-helpers.c

8 years ago[gc] Use the new MonoMethodBuilder:init_locals field.
Rodrigo Kumpera [Tue, 23 Feb 2016 16:24:13 +0000 (11:24 -0500)]
[gc] Use the new MonoMethodBuilder:init_locals field.

8 years ago[runtime] Add init_locals field to MonoMethodBuilder to make it easy to get it set...
Rodrigo Kumpera [Tue, 23 Feb 2016 16:17:03 +0000 (11:17 -0500)]
[runtime] Add init_locals field to MonoMethodBuilder to make it easy to get it set to false.

8 years ago[runtime] Add mono_method_get_header_checked and implement mono_method_get_header...
Rodrigo Kumpera [Tue, 23 Feb 2016 16:06:56 +0000 (11:06 -0500)]
[runtime] Add mono_method_get_header_checked and implement mono_method_get_header using it.

8 years ago[runtime] Ban mono_method_get_signature_full. It has no runtime usage left.
Rodrigo Kumpera [Tue, 23 Feb 2016 15:55:15 +0000 (10:55 -0500)]
[runtime] Ban mono_method_get_signature_full. It has no runtime usage left.

8 years ago[runtime] Ban mono_method_get_signature. Nothing else uses it.
Rodrigo Kumpera [Tue, 23 Feb 2016 15:53:45 +0000 (10:53 -0500)]
[runtime] Ban mono_method_get_signature. Nothing else uses it.

8 years ago[runtime] Ban mono_class_inflate_generic_type from usage by the runtime. Move code...
Rodrigo Kumpera [Tue, 23 Feb 2016 15:50:55 +0000 (10:50 -0500)]
[runtime] Ban mono_class_inflate_generic_type from usage by the runtime. Move code to use mono_class_inflate_generic_type_checked.

8 years ago[runtime] Remove mono_class_inflate_generic_class, replace usage with mono_class_infl...
Rodrigo Kumpera [Tue, 23 Feb 2016 12:18:19 +0000 (07:18 -0500)]
[runtime] Remove mono_class_inflate_generic_class, replace usage with mono_class_inflate_generic_class_checked.

8 years ago[runtime] Add mono error to inflate_generic_header. Fix buglet in mono_method_get_sig...
Rodrigo Kumpera [Tue, 23 Feb 2016 12:17:57 +0000 (07:17 -0500)]
[runtime] Add mono error to inflate_generic_header. Fix buglet in mono_method_get_signature_checked.

8 years ago[runtime] Ban mono_metadata_parse_mh from the runtime.
Rodrigo Kumpera [Mon, 22 Feb 2016 04:09:58 +0000 (23:09 -0500)]
[runtime] Ban mono_metadata_parse_mh from the runtime.

8 years ago[runtime] Introduce MonoError in mono_metadata_parse_mh_full.
Rodrigo Kumpera [Mon, 22 Feb 2016 04:05:18 +0000 (23:05 -0500)]
[runtime] Introduce MonoError in mono_metadata_parse_mh_full.

8 years ago[runtime] Remove dead function mono_metadata_parse_type_full.
Rodrigo Kumpera [Mon, 22 Feb 2016 02:53:30 +0000 (21:53 -0500)]
[runtime] Remove dead function mono_metadata_parse_type_full.

8 years ago[runtime] Disallow usage of mono_metadata_parse_type, mono_metadata_parse_param and...
Rodrigo Kumpera [Mon, 22 Feb 2016 02:39:07 +0000 (21:39 -0500)]
[runtime] Disallow usage of mono_metadata_parse_type, mono_metadata_parse_param and mono_metadata_parse_field_type.

8 years ago[mono-error] mono_metadata_parse_array is not longer used by the runtime, ban it.
Rodrigo Kumpera [Sun, 21 Feb 2016 22:52:43 +0000 (17:52 -0500)]
[mono-error] mono_metadata_parse_array is not longer used by the runtime, ban it.

8 years ago[mono-error] mono_class_from_name and mono_class_from_name_case now can cleanly retur...
Rodrigo Kumpera [Sun, 21 Feb 2016 22:50:32 +0000 (17:50 -0500)]
[mono-error] mono_class_from_name and mono_class_from_name_case now can cleanly return NULL on failure.

8 years agoMerge pull request #2686 from ludovic-henry/monoerror-mono_remoting_invoke
monojenkins [Tue, 1 Mar 2016 15:30:18 +0000 (15:30 +0000)]
Merge pull request #2686 from ludovic-henry/monoerror-mono_remoting_invoke

[runtime] Use MonoError for mono_remoting_invoke

8 years agoAutomatically define MONO_DISABLE_GSHAREDVT variable when gsharedvt isn't enabled
Alexander Köplinger [Mon, 29 Feb 2016 23:38:39 +0000 (00:38 +0100)]
Automatically define MONO_DISABLE_GSHAREDVT variable when gsharedvt isn't enabled

Before when the variable wasn't set (= the default), the mobile_static profile would try to pass
the -O=gsharedvt flag even when gsharedvt is not enabled (e.g. when building without mono-extensions)
which causes AOTing to fail.

A better solution is to export the variable from configure.ac into the mcs build system depending
on whether gsharedvt is enabled at configure time.

8 years agoMerge pull request #2701 from akoeplinger/fix-async-read-test
João Matos [Tue, 1 Mar 2016 10:14:29 +0000 (10:14 +0000)]
Merge pull request #2701 from akoeplinger/fix-async-read-test

Fix unreliability in async_read.exe test