Rodrigo Kumpera [Mon, 4 Nov 2013 15:55:29 +0000 (10:55 -0500)]
[build]Enable passing arguments to the extension module.
The build argument --enable-extension-module now takes a comma separated list
of arguments that are passed down. Passing no arguments triggers the old behavior.
Zoltan Varga [Sun, 3 Nov 2013 21:26:16 +0000 (22:26 +0100)]
[jit] Reduce the number of #ifdefs in the JIT code by a little.
Zoltan Varga [Sun, 3 Nov 2013 21:22:07 +0000 (22:22 +0100)]
Fix corlib tests with hard coded line numbers.
Zoltan Varga [Sun, 3 Nov 2013 20:54:57 +0000 (21:54 +0100)]
[jit] Get rid of the intermediate OP_..CALLVIRT opcodes, use the _MEMBASE opcodes instead.
Zoltan Varga [Sun, 3 Nov 2013 13:38:44 +0000 (14:38 +0100)]
[jit] Add support for generating the push/pop the LMF from the LMF stack as IR instead of hand-written assembly code in the backends. Not yet used.
Zoltan Varga [Sun, 3 Nov 2013 13:19:09 +0000 (14:19 +0100)]
Mark some corlib tests with the LLVMNotWorking category.
Zoltan Varga [Sun, 3 Nov 2013 00:35:28 +0000 (01:35 +0100)]
[jit] Disable the optimization added by
63eb94e451a59491034516f2ec9f27d586b34d86 when using LLVM, the handler bblock has no in edges, which seems to cause problems when using LLVM.
Zoltan Varga [Sat, 2 Nov 2013 22:53:47 +0000 (23:53 +0100)]
[jit] Add a comment.
Zoltan Varga [Sat, 2 Nov 2013 22:45:08 +0000 (23:45 +0100)]
[jit] Remove OP_JMP implementation from the x86 backend, its not used there.
Zoltan Varga [Sat, 2 Nov 2013 21:14:18 +0000 (22:14 +0100)]
[jit] Clean up the tail call code a bit.
Zoltan Varga [Sat, 2 Nov 2013 19:42:49 +0000 (20:42 +0100)]
[sdb] Implement support for DebuggerStepThrough attribute. Fixes #15139.
Marek Safar [Sat, 2 Nov 2013 08:20:02 +0000 (01:20 -0700)]
Merge pull request #798 from akoeplinger/fix-test
Fixed an issue in corlib Makefile
Atsushi Eno [Sat, 2 Nov 2013 07:54:09 +0000 (16:54 +0900)]
hack SettingValueElement.Unmerge().
Zoltan Varga [Sat, 2 Nov 2013 02:26:23 +0000 (03:26 +0100)]
[jit] Fix
fbd9fd71679f626fabe0b1bd7f923836f98252b4, a wrong version was commited.
Rodrigo Kumpera [Fri, 1 Nov 2013 21:51:16 +0000 (17:51 -0400)]
[fullaot] Don't use the complicated generics-heavy cache under full-aot.
Jonathan Pryor [Fri, 1 Nov 2013 20:39:42 +0000 (16:39 -0400)]
[System] Avoid an NRE when Close() and Write() are concurrent.
Fixes: https://bugzilla.xamarin.com/show_bug.cgi?id=15857
Scenario (for which I couldn't easily create a testcase, but can
sketch out): Imagine using HttpClient...in a multithreaded manner:
// shared:
static CancellationTokenSource _cancellationTokenSource = new CancellationTokenSource ();
// Thread 1
var request = new HttpRequestMessage(HttpMethod.Post, "https://www.google.com/") {
Content = new StringContent (new string('x', 1024)),
};
using (request)
using (HttpClient httpClient = new HttpClient())
using (HttpResponseMessage response = await httpClient.SendAsync(request,
_cancellationTokenSource.Token)) {
string responseContent = await response.Content.ReadAsStringAsync();
Console.WriteLine ("Read {0} chars", responseContent.Length);
}
// Thread 2
_cancellationTokenSource.Cancel ();
This isn't entirely farfetched; in the case of #15857, Thread 2 was
the Main thread (due to the user clicking a button), while Thread 1
was the ThreadPool (because of async/await).
The _occasional_ result: a TargetInvocationException exception:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object
at (wrapper delegate-invoke) <Module>:invoke_bool__this___HttpsClientStream (Mono.Security.Protocol.Tls.HttpsClientStream)
at System.Reflection.MonoProperty.GetterAdapterFrame[HttpsClientStream,Boolean] (System.Reflection.Getter`2 getter, System.Object obj)
at System.Reflection.MonoProperty.GetValue (System.Object obj, System.Object[] index)
--- End of inner exception stack trace ---
at System.Reflection.MonoProperty.GetValue (System.Object obj, System.Object[] index)
at System.Net.WebConnection.Write (System.Net.HttpWebRequest request, System.Byte[] buffer, Int32 offset, Int32 size, System.String& err_msg)
at System.Net.WebConnectionStream.WriteHeaders ()
at System.Net.WebConnectionStream.SetHeaders (System.Byte[] buffer)
at System.Net.HttpWebRequest.SendRequestHeaders (Boolean propagate_error)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw ()
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[System.Net.Http.HttpResponseMessage].GetResult ()
at System.Net.Http.HttpClient+<SendAsyncWorker>c__async0.MoveNext ()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw ()
at System.Runtime.CompilerServices.TaskAwaiter`1[System.Net.Http.HttpResponseMessage].GetResult ()
at HttpClientAsyncCancellationRepro.Activity1+<AccessGoogleButton_Click>c__async0.MoveNext ()
Huh?
The reason why is because HttpClientHandler.SendAsync() registers a
Cancel handler with the CancellationTokenSource, and the registered
handler calls HttpWebRequest.Abort() (which eventually calls
WebConnection.Close()). This causes WebConnection.nstream to _change_
while WebConnection.Write() is executing, causing
WebConnection.nstream to go from non-null to null, which
WebConnection.Write() does not expect:
# WebConnection.CreateStream; from 5 Threadpool worker
# WebConnection.Write; from 5 Threadpool worker
# WebConnection.Close; from 1 at at System.Environment.get_StackTrace()
at System.Net.WebConnection.Close(Boolean sendNext)
at System.Net.WebConnection.Abort(System.Object sender, System.EventArgs args)
at System.Net.WebConnection+AbortHelper.Abort(System.Object sender, System.EventArgs args)
at System.Net.HttpWebRequest.Abort()
at System.Net.Http.HttpClientHandler+<SendAsync>c__async0.<>m__0(System.Object l)
at System.Threading.CancellationToken+<Register>c__AnonStorey0.<>m__0()
at System.Threading.CancellationTokenSource.Cancel(Boolean throwOnFirstException)
at System.Threading.CancellationTokenSource.Cancel()
at System.Threading.CancellationTokenSource.SafeLinkedCancel()
at System.Threading.CancellationTokenSource.Cancel(Boolean throwOnFirstException)
at System.Threading.CancellationTokenSource.Cancel()
at HttpClientAsyncCancellationRepro.Activity1.CancelButton_Click(System.Object sender, System.EventArgs e)
at Android.Views.View+IOnClickListenerImplementor.OnClick(Android.Views.View v)
at Android.Views.View+IOnClickListenerInvoker.n_OnClick_Landroid_view_View_(IntPtr jnienv, IntPtr native__this, IntPtr native_v)
at System.Object.
e7b5b870-ea0f-434f-bc31-
984f665a44ad(IntPtr , IntPtr , IntPtr )
# WebConnection.Write: checking piTrustFailure; from 5 Threadpool worker
(Yay extra logging. Notice that WebConnection creates a stream from
the ThreadPool, starts WebConnection.Write(), then before it can se
piTrustFailure the instance is Close()d, which nulls out nstream.)
Since WebConnection.Write() attempts to access the (now null)
WebConnection.nstream field, it results in a NullReferenceException,
which is wrapped into a TargetInvocationException by
System.Reflection.
The fix? As usual, "don't do that."
In this case, WebConnection.Write() has already captured
WebConnection.nstream into the local variable `s` (which thus can't be
changed by another thread). Instead of using WebConnection.nstream,
reuse the `s` local variable, which cannot be null, thus avoiding the
NullReferenceException.
(This solution could fail if HttpsClientStream ever throws e.g.
ObjectDisposedException from HttpsClientStream.TrustFailure, but at
present HttpsClientStream.TrustFailure never throws, so this is fine.)
Miguel de Icaza [Fri, 1 Nov 2013 20:49:35 +0000 (16:49 -0400)]
Comment style
Rodrigo Kumpera [Fri, 1 Nov 2013 19:27:12 +0000 (15:27 -0400)]
[jit] Avoid linking the try block with the EH block as this produces spurious BBs during inlining.
The inliner could not handle optimally when we inline code inside the try block as it would be linked
with the catch block.
Since the source block would have more than one exit, the inliner would conservatively not link them together,
which hinders further local optimizations.
Alexander Köplinger [Fri, 1 Nov 2013 19:06:44 +0000 (20:06 +0100)]
Fixed an issue in corlib Makefile that would make a resource test case fail which relies on satellite assemblies.
The satellite assembly generated by the Makefile was suffixed with '.Resources.dll', but the assembly loader looks for '.resources.dll', thus the satellite assembly wasn't found.
Rodrigo Kumpera [Fri, 1 Nov 2013 19:05:55 +0000 (15:05 -0400)]
[jit]Extract emit_init_local and use it with the ldloca optimization to handle any kind of types.
Zoltan Varga [Fri, 1 Nov 2013 17:12:50 +0000 (18:12 +0100)]
[jit] Fix a gsharedvt crash on x86.
Zoltan Varga [Fri, 1 Nov 2013 16:16:18 +0000 (17:16 +0100)]
Revert "[sgen] Use mono_class_has_parent () instead of mono_class_has_parent_fast () in one place."
This reverts commit
2594b363632d507e20dbc728f48bcb4bfef7295f.
Revert this as its wrong.
Zoltan Varga [Fri, 1 Nov 2013 14:24:02 +0000 (15:24 +0100)]
Fix warnings.
Zoltan Varga [Fri, 1 Nov 2013 15:16:29 +0000 (11:16 -0400)]
[sgen] Use mono_class_has_parent () instead of mono_class_has_parent_fast () in one place.
Zoltan Varga [Fri, 1 Nov 2013 15:16:00 +0000 (11:16 -0400)]
[jit] Implement support for OP_TLS_GET_REG on amd64 linux.
Rodrigo Kumpera [Fri, 1 Nov 2013 14:56:55 +0000 (10:56 -0400)]
Fix the linker script for OSX. libtool screwed up the first attempt.
Zoltan Varga [Fri, 1 Nov 2013 13:47:40 +0000 (06:47 -0700)]
Merge pull request #797 from ranma42/fix-log-message
[runtime] Fix AOT log message
Zoltan Varga [Fri, 1 Nov 2013 13:40:39 +0000 (14:40 +0100)]
Fix the amd64 build. Fix a warning.
Zoltan Varga [Fri, 1 Nov 2013 13:16:15 +0000 (14:16 +0100)]
[sdb] Fix an assertion if a single step breakpoint is hit in a thread other than the thread the single stepping is done on. Fixes #14950.
Zoltan Varga [Fri, 1 Nov 2013 12:14:38 +0000 (13:14 +0100)]
[jit] Fix the processing of LLVM compiled method frames on x86. Fixes running corlib tests with LLVM.
Zoltan Varga [Fri, 1 Nov 2013 12:13:47 +0000 (13:13 +0100)]
[sdb] Fix tests.
Andrea Canciani [Fri, 1 Nov 2013 10:38:51 +0000 (11:38 +0100)]
[runtime] Fix AOT log message
In
72ca429d6ced5d0a5cf9e517e19aa2c49405f4ed the message format was
refactored and an additional '%s' format specifier was left over.
Alex Rønne Petersen [Fri, 1 Nov 2013 08:53:38 +0000 (09:53 +0100)]
Fix indentation.
Oddly, we don't use tabs here...
Rodrigo Kumpera [Thu, 31 Oct 2013 23:44:40 +0000 (19:44 -0400)]
[jit] Pair of fixes from last merge.
Rodrigo Kumpera [Thu, 31 Oct 2013 23:34:04 +0000 (19:34 -0400)]
[jit] The AggressiveInlining hint now triggers class initialization so more stuff gets force-inlined.
Rodrigo Kumpera [Thu, 31 Oct 2013 23:30:09 +0000 (19:30 -0400)]
[jit] Clean up emit_init_rvar and reduce code duplication.
Rodrigo Kumpera [Thu, 31 Oct 2013 22:41:18 +0000 (18:41 -0400)]
[jit] Clean up usage of signature variables.
Rodrigo Kumpera [Thu, 31 Oct 2013 21:02:59 +0000 (17:02 -0400)]
[jit]Add an alias analysis pass to the JIT.
The alias analysis pass is capable of simplifying indirection against
local or temporary variables. It will replace a memory load or store
with direct access to the variable.
It does a local pass looking for addresses and replacing memory
ops with direct ops.
If any conversion happens, it does a DCE pass to try to kill those
LDADDR and then recalculate the indirect flag.
Finally, if the number of indirect variables is reduced, it does a
global to local vreg pass and another DCE pass to kill most spurious
copying.
Performance numbers on 32bits OSX:
Code size:
mcs: -11.366 (0.6%)
corlib: -15.397 (0.6%)
Execution time increased by less than 0.2% which is about the same
value of the test variance.
Numbers are not impressive since we don't perform store forwarding
or constant load elimination. Proper handling of value type aggregates
and longs would move us much further.
Rodrigo Kumpera [Thu, 31 Oct 2013 20:50:16 +0000 (16:50 -0400)]
[jit] Add counters for alias analysis.
Rodrigo Kumpera [Thu, 31 Oct 2013 20:45:35 +0000 (16:45 -0400)]
[jit] Introduce has_indirection flag in MonoCompile to signal that LDADDR was generated.
To reduce the cost of alias analysis we detect which methods can potentially profit from
the optimization.
The current detection logic is very simple, every time LDADDR is generated, we set
has_indirection to TRUE.
Rodrigo Kumpera [Thu, 31 Oct 2013 20:41:26 +0000 (16:41 -0400)]
[jit]Replace all usages of MONO_INST_INDIRECT to force regalloc with MONO_INST_VOLATILE.
The indirect flag should only be used to signal that the address of the given variable
has been taken. This means that it should be possible to recompute that flag from the IR.
The usage of the volatile flag remains not ideal as it conflates two separate issues
and will in the future hinder efforts to implement address based alias analysis.
Rodrigo Kumpera [Thu, 31 Oct 2013 18:14:44 +0000 (14:14 -0400)]
[jit] Add new optimization flag for alias analysis.
Jeffrey Stedfast [Thu, 31 Oct 2013 19:58:04 +0000 (15:58 -0400)]
[Mono.Debugger.Soft] Test the inherited Type attributes
Jeffrey Stedfast [Thu, 31 Oct 2013 19:02:01 +0000 (15:02 -0400)]
[Mono.Debugger.Soft] Fixed unit test for getting custom type attributes
Rodrigo Kumpera [Thu, 31 Oct 2013 18:59:19 +0000 (14:59 -0400)]
Revert "Implementation of Properties and Methods in MethodSignatureGenerator.cs"
This reverts commit
46cd052a3ab3102c59ed70f60a6290b4ed63da97.
This breaks the build.
Zoltan Varga [Thu, 31 Oct 2013 17:05:01 +0000 (18:05 +0100)]
[runtime] Fix the ARM build.
Martin Baulig [Fri, 25 Oct 2013 21:56:59 +0000 (23:56 +0200)]
[linker]: Fix my previous commit.
We need to resolve all the TypeReferences before we update their scopes.
After setting the scope to null, calling Resolve() on a nested child would
crash.
Marek Safar [Thu, 31 Oct 2013 06:58:27 +0000 (23:58 -0700)]
Merge pull request #794 from aakashapoorv/patch-1
Implementation of Properties and Methods in MethodSignatureGenerator.cs
aakashapoorv [Thu, 31 Oct 2013 03:00:22 +0000 (11:00 +0800)]
Implementation of Properties and Methods in MethodSignatureGenerator.cs
Implemented following properties:-
CodeProvider
ContainerParameterType
DataSetClassName
IsGetMethod
PagingMethod
ParameterGenerationOption
ParameterOption
TableClassName
and following methods:-
GenerateMethod
GenerateMethodSignature
GenerateUpdatingMethods
SetDesignTableContent
SetMethodSourceContent
Zoltan Varga [Thu, 31 Oct 2013 01:16:52 +0000 (02:16 +0100)]
Dist README.md.
Zoltan Varga [Wed, 30 Oct 2013 17:38:01 +0000 (18:38 +0100)]
[runtime] Make an AOT log message smaller.
Jeffrey Stedfast [Wed, 30 Oct 2013 19:36:24 +0000 (15:36 -0400)]
[Mono.Debugger.Soft] Implemented inheritance for TypeMirror.GetCustomAttributes()
Fixes bug #15320
Miguel de Icaza [Wed, 30 Oct 2013 18:45:21 +0000 (11:45 -0700)]
Merge pull request #795 from mono/readme2
[README] Minor update to content and use markdown formatting.
Therzok [Wed, 30 Oct 2013 18:42:27 +0000 (20:42 +0200)]
[README] Minor update to content and use markdown formatting.
Miguel de Icaza [Wed, 30 Oct 2013 18:36:34 +0000 (14:36 -0400)]
Rename README to README.md
Neale Ferguson [Wed, 30 Oct 2013 17:29:11 +0000 (13:29 -0400)]
Add mono_arch_get_nullified_class_init_trampoline
Zoltan Varga [Wed, 30 Oct 2013 13:31:00 +0000 (14:31 +0100)]
Fix MONO_PATH for run-test-vts in corlib.
Zoltan Varga [Wed, 30 Oct 2013 12:04:05 +0000 (13:04 +0100)]
[runtime] Fix a warning.
Zoltan Varga [Wed, 30 Oct 2013 12:03:47 +0000 (13:03 +0100)]
[runtime] Fix an assertion in mono_arch_context_get_int_reg () on amd64. Fixes #15786.
Zoltan Varga [Wed, 30 Oct 2013 10:31:26 +0000 (11:31 +0100)]
Dist the subdirs of class/Facades.
Rodrigo Kumpera [Tue, 29 Oct 2013 19:25:20 +0000 (15:25 -0400)]
Fix skip_scan to handle proper load errors.
Marek Safar [Tue, 29 Oct 2013 19:07:07 +0000 (20:07 +0100)]
Fixes build
Marek Safar [Tue, 29 Oct 2013 18:00:21 +0000 (19:00 +0100)]
When parsing documentation cref text turn on error probing for tokenizer as well. Fixes #15511
Zoltan Varga [Tue, 29 Oct 2013 16:23:33 +0000 (17:23 +0100)]
[aot] Small AOT changes. Save some constants into the AOT image instead of duplicating them in aot-runtime.c. Emit some padding so multiple symbols do not point to the same address.
Zoltan Varga [Tue, 29 Oct 2013 16:05:20 +0000 (17:05 +0100)]
[runtime] Add mno-signal-handler.h to dist.
Marek Safar [Tue, 29 Oct 2013 14:04:44 +0000 (15:04 +0100)]
Better error message when member does not implement interface. Fixes #15369
Marek Safar [Tue, 29 Oct 2013 10:50:06 +0000 (11:50 +0100)]
Variables from diffent parameter block still need to be captures even if async block has no await. Fixes #15719
Sebastien Pouliot [Mon, 28 Oct 2013 13:55:12 +0000 (09:55 -0400)]
The stripper does not care if some variables can't be referenced (they'll be removed) and new cecil has a similar fix [#15727]
Marek Safar [Mon, 28 Oct 2013 12:08:58 +0000 (13:08 +0100)]
Better error message when type inference resolves valid types but parameter types still don't match
Marek Safar [Sun, 27 Oct 2013 20:37:34 +0000 (21:37 +0100)]
Update lower/upper type inference fixing to match the latest C# standard. Fixes #15505
Marek Safar [Sun, 27 Oct 2013 07:39:51 +0000 (08:39 +0100)]
Enum subtraction quirk needs to work with numeric constants only. Fixes #15520
Alex Rønne Petersen [Sat, 26 Oct 2013 23:23:41 +0000 (01:23 +0200)]
Silence some noisy warnings in mono/tests/.
Alex Rønne Petersen [Sat, 26 Oct 2013 23:15:45 +0000 (01:15 +0200)]
Add a .gitignore file to support/minizip/ to ignore *.la *.lo files.
Alex Rønne Petersen [Sat, 26 Oct 2013 23:15:00 +0000 (01:15 +0200)]
Ignore .dirstamp files.
Alex Rønne Petersen [Sat, 26 Oct 2013 22:52:09 +0000 (00:52 +0200)]
Don't assert in Interlocked.Add () icalls on 64-bit systems.
The checks here were wrong in the first place; they should have
checked for MONO_ARCH_HAVE_ATOMIC_ADD rather than SIZEOF_VOID_P.
But regardless, these methods need to work when invoked via
reflection, which they wouldn't previously.
Alex Rønne Petersen [Sat, 26 Oct 2013 19:34:42 +0000 (21:34 +0200)]
Define WIN32_LEAN_AND_MEAN before including windows.h.
Marek Safar [Sat, 26 Oct 2013 07:11:19 +0000 (00:11 -0700)]
Merge pull request #790 from akoeplinger/fixtests
Fixed a test issue where net45 methods were used in net40 profile
Alex Rønne Petersen [Sat, 26 Oct 2013 03:07:54 +0000 (05:07 +0200)]
Remove dead s390(x) code from mono-membar.h.
Alex Rønne Petersen [Sat, 26 Oct 2013 03:07:08 +0000 (05:07 +0200)]
Enable GCC atomics on sparc32/64.
Alex Rønne Petersen [Fri, 25 Oct 2013 21:31:54 +0000 (23:31 +0200)]
Correct VFP detection in mono-hwcap-arm.
This is supposed to be the value 64, not 100.
Rodrigo Kumpera [Fri, 25 Oct 2013 19:49:10 +0000 (15:49 -0400)]
[runtime]Add a wrapper around signal handlers to ease porting work.
Alexander Köplinger [Tue, 22 Oct 2013 17:38:40 +0000 (19:38 +0200)]
Fixed a test issue where net45 methods were used in net40 profile
Alex Rønne Petersen [Fri, 25 Oct 2013 16:20:44 +0000 (18:20 +0200)]
Add LLDB support to mono_gdb_render_native_backtraces () on POSIX.
Rodrigo Kumpera [Fri, 25 Oct 2013 15:41:08 +0000 (11:41 -0400)]
[runtime] Improve the docs on reference queues a bit.
Rodrigo Kumpera [Fri, 25 Oct 2013 15:40:51 +0000 (11:40 -0400)]
[runtime] Promote the reference queue API to the public.
Martin Baulig [Fri, 25 Oct 2013 13:15:18 +0000 (15:15 +0200)]
[linker]: Also reference all type-references for LinkAction.Link and Save.
Marek Safar [Fri, 25 Oct 2013 10:25:49 +0000 (12:25 +0200)]
Tests update
Marek Safar [Fri, 25 Oct 2013 08:41:41 +0000 (10:41 +0200)]
When looking for base implementation of generic MVAR methods use non-inflated parameter types. Fixes #15523
Marek Safar [Fri, 25 Oct 2013 08:40:44 +0000 (10:40 +0200)]
Add new tests
Zoltan Varga [Thu, 24 Oct 2013 20:47:45 +0000 (22:47 +0200)]
[runtime] Fix the windows build.
Zoltan Varga [Thu, 24 Oct 2013 17:37:03 +0000 (19:37 +0200)]
[runtime] Fix the sparc build.
Alex Rønne Petersen [Thu, 24 Oct 2013 15:19:56 +0000 (17:19 +0200)]
Prefix internal variables with `mono_`.
Rolf Bjarne Kvinge [Thu, 24 Oct 2013 13:11:43 +0000 (15:11 +0200)]
Add OrderedDictionary to the mobile profile.
Requested in support case #49635.
Rolf Bjarne Kvinge [Thu, 24 Oct 2013 13:24:32 +0000 (15:24 +0200)]
Move mono_get_optimizations_for_method to mini.c, since driver.c is only included in binaries, not libraries.
Zoltan Varga [Wed, 23 Oct 2013 20:04:33 +0000 (22:04 +0200)]
Add a --with-llvm=<llvm prefix> argument to configure to make the location of llvm-config explicit, instead of reading it from the PATH, which might be different on a reconfigure.
Rodrigo Kumpera [Wed, 23 Oct 2013 22:06:55 +0000 (18:06 -0400)]
[runtime]Properly calculate the bitmap of valuetype [ThreadStatic] variables.
We must account that a valuetype field offset is relative to a boxed instance
and TLS memory stores a valuetype unboxed.
Alex Rønne Petersen [Wed, 23 Oct 2013 21:10:16 +0000 (23:10 +0200)]
Fix mono_gc_wbarrier_generic_store_atomic semantics.
It should ensure that stores are fully atomic with barriers.
Alex Rønne Petersen [Wed, 23 Oct 2013 21:05:36 +0000 (23:05 +0200)]
Fix the semantics for System.Threading.Volatile methods.
This is a bit tricky. The System.Threading.Thread.Volatile* methods
don't actually guarantee atomicity; all they guarantee is that the
runtime will insert acquire barriers for loads and release barriers
for stores. The methods in the System.Threading.Volatile class,
however, require both barriers *and* atomicity.
So, we need an entirely separate set of icalls for the Volatile
class in order to get the right semantics there.
These APIs are insane.
Alex Rønne Petersen [Wed, 23 Oct 2013 20:24:53 +0000 (22:24 +0200)]
Add Interlocked{Read,Write}{8,16,Pointer} functions.
Alex Rønne Petersen [Wed, 23 Oct 2013 22:01:46 +0000 (15:01 -0700)]
Merge pull request #787 from directhex/master
Don't redeclare desc in mini_create_ftnptr on ppc64