mono.git
10 years agoMerge pull request #799 from kebby/master
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

10 years agoMerge pull request #805 from supershitauto/master
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>

10 years ago2013-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.

10 years ago[aot] Fix a typo causing crashes when using async jit info.
Zoltan Varga [Mon, 11 Nov 2013 18:21:57 +0000 (19:21 +0100)]
[aot] Fix a typo causing crashes when using async jit info.

10 years agoMerge pull request #804 from xplicit/attrfix
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()

10 years agofixed 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.

10 years ago[aot] Remove -mattr=-avx flag to llc on amd64+osx, its no longer needed.
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.

10 years ago[aot] Clean up the linker invocation code a bit.
Zoltan Varga [Mon, 11 Nov 2013 07:37:27 +0000 (08:37 +0100)]
[aot] Clean up the linker invocation code a bit.

10 years ago[aot] Use temp.bc/temp.opt.bc instead of temp.s.bc/temp.s.opt.bc as llvm temporary...
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.

10 years ago[llvm] Add the strip-dead-prototypes pass to remove unused intrinsics definitions...
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.

10 years ago[aot] Use clang as the assembler on osx.
Zoltan Varga [Mon, 11 Nov 2013 05:54:34 +0000 (06:54 +0100)]
[aot] Use clang as the assembler on osx.

10 years ago[aot] Avoid emitting a 'methods' symbol using .set methods, clang's integrated assemb...
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.

10 years ago[llvm] Use i64*/i32* as the LLVM type of objrefs instead of i64/i32, the basicaa...
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.

10 years ago[llvm] Update list of optimizations passed to 'opt'.
Zoltan Varga [Mon, 11 Nov 2013 04:37:08 +0000 (05:37 +0100)]
[llvm] Update list of optimizations passed to 'opt'.

10 years ago[llvm] Rename the MONO_INST_CONSTANT_LOAD flag to MONO_INST_INVARIANT_LOAD for consis...
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.

10 years agoDo not justify the text
Miguel de Icaza [Thu, 3 Oct 2013 03:46:29 +0000 (23:46 -0400)]
Do not justify the text

10 years ago[llvm] Mark the load generated by OP_AOTCONST as invariant.
Zoltan Varga [Mon, 11 Nov 2013 01:01:18 +0000 (02:01 +0100)]
[llvm] Mark the load generated by OP_AOTCONST as invariant.

10 years ago[jit] Add a simple loop invariant loop motion pass for use with LLVM, which moves...
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.

10 years agoMerge pull request #803 from Wolpertinger/patch-1
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

10 years agoSystem.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.

10 years agoImprove my previous change a bit.
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.

10 years agoFix an NRE in System.Timers.Timer.Dispose ().
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.

10 years ago[jit] Remove references to unused llvm.invariant.start/end intrinsics.
Zoltan Varga [Fri, 8 Nov 2013 22:52:29 +0000 (23:52 +0100)]
[jit] Remove references to unused llvm.invariant.start/end intrinsics.

10 years ago[jit] Make ABCREM really remove bounds checks, not just when running with -v -v ...
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.

10 years ago[Mono.Tuner] Make ISubStep.Initialize public virtual instead of private, so that...
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.

10 years agofix package build.
Atsushi Eno [Fri, 8 Nov 2013 08:09:53 +0000 (17:09 +0900)]
fix package build.

10 years agoMerge pull request #800 from alistair/south_timezone_fix
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

10 years ago[jit] Remove a few LLVM_MONO_BRANCH defines, we don't support non-mono versions of...
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.

10 years ago[jit] Fix sgen support in LLVM. Use the new LLVM 'invariant.load' metadata instead...
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.

10 years ago[jit] Implement support for OP_TLS_GET on amd64+llvm.
Zoltan Varga [Fri, 8 Nov 2013 03:40:25 +0000 (04:40 +0100)]
[jit] Implement support for OP_TLS_GET on amd64+llvm.

10 years ago[runtime] Remove some debug spew.
Zoltan Varga [Fri, 8 Nov 2013 01:44:19 +0000 (02:44 +0100)]
[runtime] Remove some debug spew.

10 years ago[runtime] Only do the stack manipulation added by 79e0856ffda4c2566314ba31677fe55f2d7...
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.

10 years ago[monolinker] Add additional preserve instruction for IReadOnlyCollection on System...
Sebastien Pouliot [Thu, 7 Nov 2013 19:42:46 +0000 (14:42 -0500)]
[monolinker] Add additional preserve instruction for IReadOnlyCollection on System.Array

10 years ago[runtime] Preserve the call chain in mono_arch_setup_async_callback () on amd64 to...
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).

10 years agoAdded tests for Task.WhenAll w/ empty list
Tammo 'kb' Hinrichs [Wed, 6 Nov 2013 14:55:32 +0000 (15:55 +0100)]
Added tests for Task.WhenAll w/ empty list

10 years agoReturn empty result array when calling Task.WhenAllCore<T> with empty argument 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

10 years agoFurther reduce the chance of an NRE in WebConnection, ref: 55f400b6446024adef5dcc8cc6...
Sebastien Pouliot [Tue, 5 Nov 2013 21:52:08 +0000 (16:52 -0500)]
Further reduce the chance of an NRE in WebConnection, ref: 55f400b6446024adef5dcc8cc690b6951af98125

10 years ago[runtime] Fix the osx mavericks stack size calculation in sgen too.
Zoltan Varga [Tue, 5 Nov 2013 19:18:14 +0000 (20:18 +0100)]
[runtime] Fix the osx mavericks stack size calculation in sgen too.

10 years ago[runtime] Fix stack size detection on osx mavericks. Fixes #15890.
Zoltan Varga [Tue, 5 Nov 2013 18:53:07 +0000 (19:53 +0100)]
[runtime] Fix stack size detection on osx mavericks. Fixes #15890.

10 years ago[linker] Allow accessing more MarkStep.Mark* methods from subclasses
Sebastien Pouliot [Tue, 5 Nov 2013 16:27:40 +0000 (11:27 -0500)]
[linker] Allow accessing more MarkStep.Mark* methods from subclasses

10 years agoReduce contention and unnecessary checks at each lookup, part of xambug #14644.
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.

10 years ago[runtime]Split thread unregistration in two steps, one with no locks, one with locks...
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.

10 years ago[runtime] Handle unaligned access in all interlocked icalls. Fixes #15925.
Zoltan Varga [Tue, 5 Nov 2013 14:44:10 +0000 (15:44 +0100)]
[runtime] Handle unaligned access in all interlocked icalls. Fixes #15925.

10 years ago[runtime] Fix warnings.
Zoltan Varga [Tue, 5 Nov 2013 00:46:31 +0000 (01:46 +0100)]
[runtime] Fix warnings.

10 years agoFix the mobile_static build.
Rodrigo Kumpera [Mon, 4 Nov 2013 22:02:43 +0000 (17:02 -0500)]
Fix the mobile_static build.

10 years ago[jit] Cleanup a bit how we handle small structs.
Rodrigo Kumpera [Mon, 4 Nov 2013 20:48:01 +0000 (15:48 -0500)]
[jit] Cleanup a bit how we handle small structs.

10 years ago [jit]Add amd64 support for the new compare instructions.
Rodrigo Kumpera [Mon, 4 Nov 2013 20:35:20 +0000 (15:35 -0500)]
 [jit]Add amd64 support for the new compare instructions.

10 years ago[jit]Add x86 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.

10 years ago[jit] Add some missing compare instructions which will make it easier to optimize...
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.

10 years ago[build]Enable passing arguments to the extension module.
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.

10 years ago[jit] Reduce the number of #ifdefs in the JIT code by a little.
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.

10 years agoFix corlib tests with hard coded line numbers.
Zoltan Varga [Sun, 3 Nov 2013 21:22:07 +0000 (22:22 +0100)]
Fix corlib tests with hard coded line numbers.

10 years ago[jit] Get rid of the intermediate OP_..CALLVIRT opcodes, use the _MEMBASE opcodes...
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.

10 years ago[jit] Add support for generating the push/pop the LMF from the LMF stack as IR instea...
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.

10 years agoMark some corlib tests with the LLVMNotWorking category.
Zoltan Varga [Sun, 3 Nov 2013 13:19:09 +0000 (14:19 +0100)]
Mark some corlib tests with the LLVMNotWorking category.

10 years agoFix compile warning and break from for loop once complete
Alistair Bush [Sun, 3 Nov 2013 01:04:27 +0000 (14:04 +1300)]
Fix compile warning and break from for loop once complete

10 years agoAttempt to implement GetTimeZoneData to support all hemispheres
Alistair Bush [Wed, 30 Oct 2013 10:41:09 +0000 (23:41 +1300)]
Attempt to implement GetTimeZoneData to support all hemispheres

10 years agoAdd unit test for NZST
Alistair Bush [Sun, 3 Nov 2013 08:54:07 +0000 (21:54 +1300)]
Add unit test for NZST

10 years ago[jit] Disable the optimization added by 63eb94e451a59491034516f2ec9f27d586b34d86...
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.

10 years ago[jit] Add a comment.
Zoltan Varga [Sat, 2 Nov 2013 22:53:47 +0000 (23:53 +0100)]
[jit] Add a comment.

10 years ago[jit] Remove OP_JMP implementation from the x86 backend, its not used there.
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.

10 years ago[jit] Clean up the tail call code a bit.
Zoltan Varga [Sat, 2 Nov 2013 21:14:18 +0000 (22:14 +0100)]
[jit] Clean up the tail call code a bit.

10 years ago[sdb] Implement support for DebuggerStepThrough attribute. Fixes #15139.
Zoltan Varga [Sat, 2 Nov 2013 19:42:49 +0000 (20:42 +0100)]
[sdb] Implement support for DebuggerStepThrough attribute. Fixes #15139.

10 years agoMerge pull request #798 from akoeplinger/fix-test
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

10 years agohack SettingValueElement.Unmerge().
Atsushi Eno [Sat, 2 Nov 2013 07:54:09 +0000 (16:54 +0900)]
hack SettingValueElement.Unmerge().

10 years ago[jit] Fix fbd9fd71679f626fabe0b1bd7f923836f98252b4, a wrong version was commited.
Zoltan Varga [Sat, 2 Nov 2013 02:26:23 +0000 (03:26 +0100)]
[jit] Fix fbd9fd71679f626fabe0b1bd7f923836f98252b4, a wrong version was commited.

10 years ago[fullaot] Don't use the complicated generics-heavy cache under full-aot.
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.

10 years ago[System] Avoid an NRE when Close() and Write() are concurrent.
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.)

10 years agoComment style
Miguel de Icaza [Fri, 1 Nov 2013 20:49:35 +0000 (16:49 -0400)]
Comment style

10 years ago[jit] Avoid linking the try block with the EH block as this produces spurious BBs...
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.

10 years agoFixed an issue in corlib Makefile that would make a resource test case fail which...
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.

10 years ago[jit]Extract emit_init_local and use it with the ldloca optimization to handle any...
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.

10 years ago[jit] Fix a gsharedvt crash on x86.
Zoltan Varga [Fri, 1 Nov 2013 17:12:50 +0000 (18:12 +0100)]
[jit] Fix a gsharedvt crash on x86.

10 years agoRevert "[sgen] Use mono_class_has_parent () instead of mono_class_has_parent_fast...
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.

10 years agoFix warnings.
Zoltan Varga [Fri, 1 Nov 2013 14:24:02 +0000 (15:24 +0100)]
Fix warnings.

10 years ago[sgen] Use mono_class_has_parent () instead of mono_class_has_parent_fast () in one...
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.

10 years ago[jit] Implement support for OP_TLS_GET_REG on amd64 linux.
Zoltan Varga [Fri, 1 Nov 2013 15:16:00 +0000 (11:16 -0400)]
[jit] Implement support for OP_TLS_GET_REG on amd64 linux.

10 years agoFix the linker script for OSX. libtool screwed up the first attempt.
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.

10 years agoMerge pull request #797 from ranma42/fix-log-message
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

10 years agoFix the amd64 build. Fix a warning.
Zoltan Varga [Fri, 1 Nov 2013 13:40:39 +0000 (14:40 +0100)]
Fix the amd64 build. Fix a warning.

10 years ago[sdb] Fix an assertion if a single step breakpoint is hit in a thread other than...
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.

10 years ago[jit] Fix the processing of LLVM compiled method frames on x86. Fixes running corlib...
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.

10 years ago[sdb] Fix tests.
Zoltan Varga [Fri, 1 Nov 2013 12:13:47 +0000 (13:13 +0100)]
[sdb] Fix tests.

10 years ago[runtime] Fix AOT log message
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.

10 years agoFix indentation.
Alex Rønne Petersen [Fri, 1 Nov 2013 08:53:38 +0000 (09:53 +0100)]
Fix indentation.

Oddly, we don't use tabs here...

10 years ago[jit] Pair of fixes from last merge.
Rodrigo Kumpera [Thu, 31 Oct 2013 23:44:40 +0000 (19:44 -0400)]
[jit] Pair of fixes from last merge.

10 years ago[jit] The AggressiveInlining hint now triggers class initialization so more stuff...
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.

10 years ago[jit] Clean up emit_init_rvar and reduce code duplication.
Rodrigo Kumpera [Thu, 31 Oct 2013 23:30:09 +0000 (19:30 -0400)]
[jit] Clean up emit_init_rvar and reduce code duplication.

10 years ago[jit] Clean up usage of signature variables.
Rodrigo Kumpera [Thu, 31 Oct 2013 22:41:18 +0000 (18:41 -0400)]
[jit] Clean up usage of signature variables.

10 years ago[jit]Add an alias analysis pass to the JIT.
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.

10 years ago[jit] Add counters for alias analysis.
Rodrigo Kumpera [Thu, 31 Oct 2013 20:50:16 +0000 (16:50 -0400)]
[jit] Add counters for alias analysis.

10 years ago[jit] Introduce has_indirection flag in MonoCompile to signal that LDADDR was generated.
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.

10 years ago[jit]Replace all usages of MONO_INST_INDIRECT to force regalloc with MONO_INST_VOLATILE.
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.

10 years ago[jit] Add new optimization flag for alias analysis.
Rodrigo Kumpera [Thu, 31 Oct 2013 18:14:44 +0000 (14:14 -0400)]
[jit] Add new optimization flag for alias analysis.

10 years ago[Mono.Debugger.Soft] Test the inherited Type attributes
Jeffrey Stedfast [Thu, 31 Oct 2013 19:58:04 +0000 (15:58 -0400)]
[Mono.Debugger.Soft] Test the inherited Type attributes

10 years ago[Mono.Debugger.Soft] Fixed unit test for getting custom 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

10 years agoRevert "Implementation of Properties and Methods in MethodSignatureGenerator.cs"
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.

10 years ago[runtime] Fix the ARM build.
Zoltan Varga [Thu, 31 Oct 2013 17:05:01 +0000 (18:05 +0100)]
[runtime] Fix the ARM build.

10 years ago[linker]: Fix my previous commit.
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.

10 years agoMerge pull request #794 from aakashapoorv/patch-1
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