Marek Safar [Tue, 12 Nov 2013 08:38:48 +0000 (00:38 -0800)]
Merge pull request #799 from kebby/master
Task.WhenAllCore<T> now handles empty argument list correctly. Fixes #15956
Marek Safar [Tue, 12 Nov 2013 08:11:18 +0000 (00:11 -0800)]
Merge pull request #805 from supershitauto/master
2013-11-12 Ryan Williams <ryan@ryanwilliams.id.au>
supershitauto [Tue, 12 Nov 2013 05:13:39 +0000 (16:13 +1100)]
2013-11-12 Ryan Williams <ryan@ryanwilliams.id.au>
Renamed member variables to be compatible with Microsoft for serialization.
Slight change to Equals method for consistency.
Zoltan Varga [Mon, 11 Nov 2013 18:21:57 +0000 (19:21 +0100)]
[aot] Fix a typo causing crashes when using async jit info.
Marek Safar [Mon, 11 Nov 2013 14:22:35 +0000 (06:22 -0800)]
Merge pull request #804 from xplicit/attrfix
Fixed StackOverflow exception in Attribute.GetHashCode()
xplicit [Mon, 11 Nov 2013 13:44:59 +0000 (20:44 +0700)]
fixed stackoverflow exception in Attribute.GetHashCode()
MS implementation of Attribute.GetHashCode does not depend on TypeId property, so you can return any value in TypeId and hashcode in MS.NET will be the same.
Zoltan Varga [Mon, 11 Nov 2013 07:56:07 +0000 (08:56 +0100)]
[aot] Remove -mattr=-avx flag to llc on amd64+osx, its no longer needed.
Zoltan Varga [Mon, 11 Nov 2013 07:37:27 +0000 (08:37 +0100)]
[aot] Clean up the linker invocation code a bit.
Zoltan Varga [Mon, 11 Nov 2013 07:23:33 +0000 (08:23 +0100)]
[aot] Use temp.bc/temp.opt.bc instead of temp.s.bc/temp.s.opt.bc as llvm temporary file names.
Zoltan Varga [Mon, 11 Nov 2013 07:09:24 +0000 (08:09 +0100)]
[llvm] Add the strip-dead-prototypes pass to remove unused intrinsics definitions from the .bc file.
Zoltan Varga [Mon, 11 Nov 2013 05:54:34 +0000 (06:54 +0100)]
[aot] Use clang as the assembler on osx.
Zoltan Varga [Mon, 11 Nov 2013 05:35:58 +0000 (06:35 +0100)]
[aot] Avoid emitting a 'methods' symbol using .set methods, clang's integrated assembler doesn't seem to support it.
Zoltan Varga [Mon, 11 Nov 2013 05:05:29 +0000 (06:05 +0100)]
[llvm] Use i64*/i32* as the LLVM type of objrefs instead of i64/i32, the basicaa LLVM pass cannot see through the inttoptr casts we were emitting before loads.
Zoltan Varga [Mon, 11 Nov 2013 04:37:08 +0000 (05:37 +0100)]
[llvm] Update list of optimizations passed to 'opt'.
Zoltan Varga [Mon, 11 Nov 2013 01:36:57 +0000 (02:36 +0100)]
[llvm] Rename the MONO_INST_CONSTANT_LOAD flag to MONO_INST_INVARIANT_LOAD for consistency with LLVM.
Miguel de Icaza [Thu, 3 Oct 2013 03:46:29 +0000 (23:46 -0400)]
Do not justify the text
Zoltan Varga [Mon, 11 Nov 2013 01:01:18 +0000 (02:01 +0100)]
[llvm] Mark the load generated by OP_AOTCONST as invariant.
Zoltan Varga [Sun, 10 Nov 2013 20:10:55 +0000 (21:10 +0100)]
[jit] Add a simple loop invariant loop motion pass for use with LLVM, which moves loop invariant instructions out of loop headers into the preceeding bblock.
Marek Safar [Sun, 10 Nov 2013 08:10:43 +0000 (00:10 -0800)]
Merge pull request #803 from Wolpertinger/patch-1
System.CompomentModel.Component.cs: Make disposedEvent key static
Alex Willmy [Sat, 9 Nov 2013 16:49:12 +0000 (17:49 +0100)]
System.CompomentModel.Component.cs: Make disposedEvent key static
There is no need for an instance of Component to create its own lookup key for the Disposed event. Use a shared static key instead.
Alex Rønne Petersen [Sat, 9 Nov 2013 01:52:20 +0000 (02:52 +0100)]
Improve my previous change a bit.
Checking the `disposing` argument is cleaner.
Alex Rønne Petersen [Fri, 8 Nov 2013 06:12:36 +0000 (07:12 +0100)]
Fix an NRE in System.Timers.Timer.Dispose ().
This would happen because _lock is nullified by the GC during
finalization. Dispose () calls Close () which sets the Enabled
property to false, which then attempts to lock on _lock.
Zoltan Varga [Fri, 8 Nov 2013 22:52:29 +0000 (23:52 +0100)]
[jit] Remove references to unused llvm.invariant.start/end intrinsics.
Zoltan Varga [Fri, 8 Nov 2013 17:27:01 +0000 (18:27 +0100)]
[jit] Make ABCREM really remove bounds checks, not just when running with -v -v -v -v.
Rolf Bjarne Kvinge [Fri, 8 Nov 2013 13:49:31 +0000 (14:49 +0100)]
[Mono.Tuner] Make ISubStep.Initialize public virtual instead of private, so that consumers can override.
Previously derived classes could implement ISubStep.Initialize, but after
da82237da061cf this (correctly) not allowed anymore.
Atsushi Eno [Fri, 8 Nov 2013 08:09:53 +0000 (17:09 +0900)]
fix package build.
Atsushi Eno [Fri, 8 Nov 2013 05:02:24 +0000 (21:02 -0800)]
Merge pull request #800 from alistair/south_timezone_fix
Southern Hemisphere timezone fix
Zoltan Varga [Fri, 8 Nov 2013 04:22:46 +0000 (05:22 +0100)]
[jit] Remove a few LLVM_MONO_BRANCH defines, we don't support non-mono versions of LLVM any more.
Zoltan Varga [Fri, 8 Nov 2013 04:12:41 +0000 (05:12 +0100)]
[jit] Fix sgen support in LLVM. Use the new LLVM 'invariant.load' metadata instead of our 'mono.noalias' metadata.
Zoltan Varga [Fri, 8 Nov 2013 03:40:25 +0000 (04:40 +0100)]
[jit] Implement support for OP_TLS_GET on amd64+llvm.
Zoltan Varga [Fri, 8 Nov 2013 01:44:19 +0000 (02:44 +0100)]
[runtime] Remove some debug spew.
Zoltan Varga [Fri, 8 Nov 2013 01:39:53 +0000 (02:39 +0100)]
[runtime] Only do the stack manipulation added by
79e0856ffda4c2566314ba31677fe55f2d7f53f2 on linux, since it seems to crash on osx.
Sebastien Pouliot [Thu, 7 Nov 2013 19:42:46 +0000 (14:42 -0500)]
[monolinker] Add additional preserve instruction for IReadOnlyCollection on System.Array
Zoltan Varga [Thu, 7 Nov 2013 03:56:42 +0000 (04:56 +0100)]
[runtime] Preserve the call chain in mono_arch_setup_async_callback () on amd64 to prevent crashes in the libgcc unwinder (#15969).
Tammo 'kb' Hinrichs [Wed, 6 Nov 2013 14:55:32 +0000 (15:55 +0100)]
Added tests for Task.WhenAll w/ empty list
Tammo 'kb' Hinrichs [Wed, 6 Nov 2013 12:21:47 +0000 (13:21 +0100)]
Return empty result array when calling Task.WhenAllCore<T> with empty argument list. Fixes #15956
Sebastien Pouliot [Tue, 5 Nov 2013 21:52:08 +0000 (16:52 -0500)]
Further reduce the chance of an NRE in WebConnection, ref:
55f400b6446024adef5dcc8cc690b6951af98125
Zoltan Varga [Tue, 5 Nov 2013 19:18:14 +0000 (20:18 +0100)]
[runtime] Fix the osx mavericks stack size calculation in sgen too.
Zoltan Varga [Tue, 5 Nov 2013 18:53:07 +0000 (19:53 +0100)]
[runtime] Fix stack size detection on osx mavericks. Fixes #15890.
Sebastien Pouliot [Tue, 5 Nov 2013 16:27:40 +0000 (11:27 -0500)]
[linker] Allow accessing more MarkStep.Mark* methods from subclasses
Paolo Molaro [Tue, 5 Nov 2013 16:37:08 +0000 (17:37 +0100)]
Reduce contention and unnecessary checks at each lookup, part of xambug #14644.
Rodrigo Kumpera [Tue, 5 Nov 2013 14:54:59 +0000 (09:54 -0500)]
[runtime]Split thread unregistration in two steps, one with no locks, one with locks taken. Fixes #15916.
In order allow for arbitrary code in the profiler callback we must invoke it without
holding any runtime leaf lock - this happens quite frequently with sdb as it tries to
suspend the world on those callbacks.
So thread shutdown is now split in two phases, first one that does the no-locks part
where the thread remains suspendable afterwards and then onewith locks taken where we
do the final cleanup and final shutdown.
Zoltan Varga [Tue, 5 Nov 2013 14:44:10 +0000 (15:44 +0100)]
[runtime] Handle unaligned access in all interlocked icalls. Fixes #15925.
Zoltan Varga [Tue, 5 Nov 2013 00:46:31 +0000 (01:46 +0100)]
[runtime] Fix warnings.
Rodrigo Kumpera [Mon, 4 Nov 2013 22:02:43 +0000 (17:02 -0500)]
Fix the mobile_static build.
Rodrigo Kumpera [Mon, 4 Nov 2013 20:48:01 +0000 (15:48 -0500)]
[jit] Cleanup a bit how we handle small structs.
Rodrigo Kumpera [Mon, 4 Nov 2013 20:35:20 +0000 (15:35 -0500)]
[jit]Add amd64 support for the new compare instructions.
Rodrigo Kumpera [Mon, 4 Nov 2013 20:34:09 +0000 (15:34 -0500)]
[jit]Add x86 support for the new compare instructions.
Rodrigo Kumpera [Mon, 4 Nov 2013 20:10:38 +0000 (15:10 -0500)]
[jit] Add some missing compare instructions which will make it easier to optimize inlined boolean expressions.
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.
Alistair Bush [Sun, 3 Nov 2013 01:04:27 +0000 (14:04 +1300)]
Fix compile warning and break from for loop once complete
Alistair Bush [Wed, 30 Oct 2013 10:41:09 +0000 (23:41 +1300)]
Attempt to implement GetTimeZoneData to support all hemispheres
Alistair Bush [Sun, 3 Nov 2013 08:54:07 +0000 (21:54 +1300)]
Add unit test for NZST
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