Matt Mitchell [Tue, 19 Jan 2016 23:54:59 +0000 (15:54 -0800)]
Merge pull request #2737 from mmitche/add-minopts
Add COMPLUS_JitMinopts=1 stress leg to Jenkins
Matt Mitchell [Tue, 19 Jan 2016 23:37:12 +0000 (15:37 -0800)]
Add COMPLUS_JitMinopts=1 stress leg to Jenkins
Triggered daily, currently windows only (primarily because the testenv option isn't currently available for runtest.sh).
Can be triggered using: "@dotnet-bot test Windows_NT minopts"
Also a bunch of refactoring to make adding stress modes
Jan Kotas [Tue, 19 Jan 2016 22:00:13 +0000 (14:00 -0800)]
Merge pull request #2724 from stephentoub/readwrite_perf
Several Stream.Read/WriteAsync improvements
Jan Kotas [Tue, 19 Jan 2016 21:18:55 +0000 (13:18 -0800)]
Merge pull request #2723 from Dmitry-Me/fixCommentTypo
Fix comment typo
noahfalk [Tue, 19 Jan 2016 19:50:14 +0000 (11:50 -0800)]
Merge pull request #1745 from ww898/thread_static_struct_issue
GetStaticFieldAddrNoCreate() returns data offset instead of NULL
Jan Kotas [Tue, 19 Jan 2016 15:41:19 +0000 (07:41 -0800)]
Fix override detection to work reliably for JITed mscorlib
stephentoub [Tue, 19 Jan 2016 13:14:42 +0000 (08:14 -0500)]
Tweak a few more aspects of Stream.Read/WriteAsync perf improvements
- Remove older reflection-based detection of overrides from SyncStream
- Remove Tuple allocation from RunReadWriteTaskWhenReady
- Fix spelling of Overridden
- Add a few comments
Jan Kotas [Tue, 19 Jan 2016 08:04:33 +0000 (00:04 -0800)]
Add generic detection of Stream.{Begin|End}{Read|Write} overrides
stephentoub [Mon, 18 Jan 2016 15:44:35 +0000 (10:44 -0500)]
Several Stream.Read/WriteAsync improvements
Stream.XxAsync are currently implemented as a wrapper around Stream.Begin/EndXx. When a derived class overrides XxAsync to do its own async implementation, there's no issue. When a derived class overrides Begin/EndXx but not XxAsync, there's no issue (the base implementation does what it needs to do, wrapping Begin/EndXx). However, if the derived implementation doesn't override either XxAsync or Begin/EndXx, there are a few issues.
First, there's unnecessary cost. The base Begin/EndXx methods queue a Task to call the corresponding Read/Write method. But then the XxAsync method create another Task to wrap the Begin/End method invocation. This means we're allocating and completing two tasks, when we only needed to do one.
Second, task wait inlining is affected. Because Read/WriteAsync aren't returning the original queued delegate-backed task but rather a promise task, Wait()'ing on the returned task blocks until the operation completes on another thread. If the original delegate-backed task were returned, then Wait()'ing on the task could potentially "inline" its execution onto the current thread.
Third, there's unnecessary blocking if there are other outstanding async operations on the instance. Since Begin/EndXx were introduced, they track whether an operation is in progress, and subsequent calls to BeginXx while an operation is in progress blocks synchronously. Since Read/WriteAsync just wrap the virtual Begin/End methods, they inherit this behavior.
This commit addresses all three issues for CoreCLR. The Begin/EndXx methods aren't exposed from Stream in the new contracts, and as a result outside of mscorlib we don't need to be concerned about these methods being overridden. Thus, the commit adds an optimized path that simply returns the original delegate-backed task rather than wrapping it. This avoids the unnecessary task overheads and duplication, and it enables wait inlining if someone happens to wait on it. Further, since we're no longer subject to the behaviors of Begin/End, we can change the serialization to be done asynchronously rather than synchronously.
Dmitry-Me [Tue, 19 Jan 2016 10:26:53 +0000 (13:26 +0300)]
Fix comment typo
Jan Kotas [Tue, 19 Jan 2016 02:29:25 +0000 (18:29 -0800)]
Merge pull request #2720 from hughbe/synchronized-list
Remove SynchronizedList, Fix #1859
Stephen Toub [Mon, 18 Jan 2016 23:49:21 +0000 (18:49 -0500)]
Merge pull request #2718 from stephentoub/forcsync_completionaction
Allow some ITaskCompletionActions to always run synchronously
Hugh Bellamy [Mon, 18 Jan 2016 18:55:28 +0000 (18:55 +0000)]
Remove SynchronizedList
Fixes #1859
As stated in the issue, SynchronizedList and its accompanying internal
method are not called or used at across the dotnet projects, so it can
be dropped with a heavy heart.
Jan Kotas [Mon, 18 Jan 2016 16:02:31 +0000 (08:02 -0800)]
Merge pull request #2716 from janvorli/fix-crossgen-readytorun-build
Add ready to run support to unix crossgen
stephentoub [Mon, 18 Jan 2016 12:26:14 +0000 (07:26 -0500)]
Allow some ITaskCompletionActions to always run synchronously
A few internal Task completion actions do a known and small quantity of work, without any potential to run arbitrary code, e.g. a completion action used in Task.Wait to set a ManualResetEventSlim. Such actions used to typically run synchronously, but after https://github.com/dotnet/coreclr/pull/2026 can be forced to run asynchronously. These few actions are considered purely internal implementation details of TPL, need not be subject to forcing continuations to run asynchronously, and have perf benefits to always being run synchronously, e.g. calling Wait on a RunContinuationsAsynchronously task shouldn't require a work item to be queued to unblock the task.
This commit adds a property to ITaskCompletionAction that we can check to determine whether it's ok to force the continuation to run synchronously even if the system says we should be running all continuations asynchronously. Only those actions which are safe are annotated as such. We only invoke this interface property getter in cases where we're about to fall back to allocating and queueing a work item, so the cost of the extra interface call is acceptable for the benefits it provides. As all of this is internal, it can also be tweaked further in the future.
Jan Vorlicek [Mon, 18 Jan 2016 10:50:50 +0000 (11:50 +0100)]
Add ready to run support to unix crossgen
This change enables ready to run support in the unix crossgen that was accidentally
not enabled when adding ready to run support for Unix in the past. Only the
FEATURE_READYTORUN was set, but not the FEATURE_READYTORUN_COMPILER.
Jan Kotas [Mon, 18 Jan 2016 03:18:27 +0000 (19:18 -0800)]
Merge pull request #2678 from DionYe/master
Add check for out of memory
DionYe [Fri, 15 Jan 2016 03:32:01 +0000 (11:32 +0800)]
Add check for out of memory
Jan Kotas [Mon, 18 Jan 2016 02:06:08 +0000 (18:06 -0800)]
Merge pull request #2608 from justinvp/functorcomparer
Remove redundant internal Array.FunctorComparer<T> type
Matt Ellis [Sun, 17 Jan 2016 02:56:19 +0000 (18:56 -0800)]
Merge pull request #2709 from dotnet-bot/from-tfs
Merge changes from TFS
Ron Cain [Sun, 17 Jan 2016 00:37:22 +0000 (16:37 -0800)]
Fix incorrect placement of FEATURE_SIMD ifdef, and syntax error under _TARGET_ARM_.
Ron Cain checking in for Carol Eidt after validating fix.
[tfs-changeset: 1565967]
Matt Ellis [Sat, 16 Jan 2016 09:18:26 +0000 (01:18 -0800)]
Merge pull request #2707 from dotnet-bot/from-tfs
Merge changes from TFS
Jan Kotas [Sat, 16 Jan 2016 07:51:01 +0000 (23:51 -0800)]
Merge pull request #2702 from justinvp/array_sort_getlowerbound
Array.Sort<T>: Remove unnecessary GetLowerBound(0) call
Hongtao Yu [Sat, 16 Jan 2016 03:09:57 +0000 (19:09 -0800)]
Merge pull request #2686 from hoyMS/Bug2652
Fix for Bug 2652 [JitStress=2] JIT/Directed/Arrays/Complex2/Complex2.…
Stephen Toub [Sat, 16 Jan 2016 01:47:34 +0000 (20:47 -0500)]
Merge pull request #2694 from dotnet/UpdateReadmeForDebian
Add Debian CI projects to README
Aditya Mandaleeka [Sat, 16 Jan 2016 01:32:13 +0000 (17:32 -0800)]
Merge pull request #2693 from adityamandaleeka/contextAlignment
Revert old change for floating point context alignment issue
Justin Van Patten [Sat, 16 Jan 2016 00:57:56 +0000 (16:57 -0800)]
Array.Sort<T>: Remove unnecessary GetLowerBound(0) call
The lower bound of T[] is 0, so there's no need to call
GetLowerBound(0).
Brian Sullivan [Sat, 16 Jan 2016 00:55:26 +0000 (16:55 -0800)]
VSO 178902 - Jit can incorrectly make a method partially interruptible when it should be fully interruptible
This issue was caused when the IBC data for a very hot method overflowed the multiplication operation in setBBProfileWeight for the x86 Jit32
We then reorder the blocks in an odd way, which caused us to use a block that was not part of a loop in optReachWithoutCall
This caused us to make the method partially interruptible instead of fully interruptible.
This changeset fixes both issue for both the RyuJIT x64 and the x86 Jit32
[tfs-changeset: 1565753]
Mike McLaughlin [Sat, 16 Jan 2016 00:29:23 +0000 (16:29 -0800)]
Merge pull request #2695 from mikem8361/envvar
Add back COMPlus_DbgWaitForDebuggerAttach env var for mdbg tests
Carol Eidt [Fri, 15 Jan 2016 23:48:38 +0000 (15:48 -0800)]
Merge pull request #2545 from CarolEidt/LinuxSIMD
Enable FEATURE_SIMD on Linux.
Mike McLaughlin [Fri, 15 Jan 2016 22:00:04 +0000 (14:00 -0800)]
Add back COMPlus_DbgWaitForDebuggerAttach env var for mdbg tests (for now).
Eric Erhardt [Fri, 15 Jan 2016 21:36:57 +0000 (15:36 -0600)]
Merge pull request #2685 from eerhardt/Fix2185
Daylight transitions are not correct on Unix.
Carol Eidt [Wed, 9 Dec 2015 02:15:15 +0000 (18:15 -0800)]
Enable FEATURE_SIMD on Linux.
Most of the changes involve checking varTypeIsStruct instead of TYP_STRUCT in
cases where the SIMD types are treated like other structs, and then adding
a few special cases for SIMD types. The UNIX ABI implementation currently requires
that struct handles be preserved through code generation, so this required some
additional changes. Finally, the code that "homes" incoming arguments required changes
to handle incoming SIMD register args that need to be reassembled into their assigned
registers. That method was slightly refactored, primarily because it had cases that
should have been ifdef'd out for 64 bits. It needs further refactoring, but that is
left for future work. This fixes half of issue #983.
A previous version of this PR exposed issues with JIT/SIMD tests being inconsistently
compiled wrt optimization. This change modifies those tests to always
compile both with and without optimization.
Nate Amundson [Fri, 15 Jan 2016 21:24:52 +0000 (15:24 -0600)]
Add Debian CI projects to README
Also define the table using HTML instead of markdown to have the ability to specify the width of each column.
Rahul Kumar [Fri, 15 Jan 2016 21:06:24 +0000 (13:06 -0800)]
rollback 1565534 and also fix build break
[tfs-changeset: 1565674]
Hongtao Yu [Fri, 15 Jan 2016 18:48:35 +0000 (10:48 -0800)]
Fix for Bug 2652 [JitStress=2] JIT/Directed/Arrays/Complex2/Complex2.exe fails
The bug is caused by calling fgMorph in optPerformHoistExpr:
Before
N043 ( 1, 1) [000806] ------------ /--* lclVar int V04 loc3 u:7 $380
N044 ( 3, 3) [000805] ------------ /--* + int $348
N042 ( 1, 1) [000807] ------------ | --* lclVar int V05 loc4 u:7 $381
N045 ( 5, 5) [000804] ------------ /--* + int $349
N041 ( 1, 1) [000808] ------------ | --* lclVar int V06 loc5 u:7 $382
N046 ( 7, 7) [000803] ------------ /--* + int $34a
N040 ( 1, 1) [000809] ------------ | --* lclVar int V07 loc6 u:7 $383
N047 ( 9, 9) [000802] ------------ /--* + int $34b
N039 ( 1, 1) [000810] ------------ | --* lclVar int V08 loc7 u:7 $384
N048 ( 11, 11) [000801] ------------ * + int $34c
N038 ( 1, 1) [000811] ------------ --* lclVar int V09 loc8 u:7 $385
After
( 1, 1) [001747] -------H---- | /--* lclVar int V04 loc3 u:7 $380
( 11, 11) [001737] -------H---- --* + int $34c
( 1, 1) [001746] -------H---- | /--* lclVar int V05 loc4 u:7 $381
( 9, 9) [001739] ------------ --* + int $34b
( 1, 1) [001744] -------H---- | /--* lclVar int V06 loc5 u:7 $382
( 7, 7) [001741] ------------ --* + int $34a
( 1, 1) [001742] -------H---- | /--* lclVar int V07 loc6 u:7 $383
( 5, 5) [001743] ------------ --* + int $349
( 1, 1) [001740] -------H---- | /--* lclVar int V08 loc7 u:7 $384
( 3, 3) [001745] ------------ --* + int $348
( 1, 1) [001738] -------H---- --* lclVar int V09 loc8 u:7 $385
See the value number $34b doesn't reflect the same expressions before and after.
When fgMorph is called after value numbering, we have to ensure that a correct or a new value number is assigned to the resulting tree.
Aditya Mandaleeka [Fri, 15 Jan 2016 21:01:35 +0000 (13:01 -0800)]
Revert old change for floating point context alignment issue
Andy Ayers [Fri, 15 Jan 2016 20:45:01 +0000 (12:45 -0800)]
Merge pull request #2687 from AndyAyersMS/FixBurgers
Fix exception in Burgers on AVX-capable HW
Matt Mitchell [Fri, 15 Jan 2016 20:29:09 +0000 (12:29 -0800)]
Merge pull request #2691 from mmitche/fix-coreclr-builds
Reenable commit builds for OS's where we don't run flow jobs (got acc…
Matt Mitchell [Fri, 15 Jan 2016 20:27:21 +0000 (12:27 -0800)]
Reenable commit builds for OS's where we don't run flow jobs (got accidentally disabled yesterday)
Pat Gavlin [Fri, 15 Jan 2016 20:08:35 +0000 (12:08 -0800)]
Merge pull request #2654 from pgavlin/BuildRyuJitPackage
Add a script to build RyuJit packages.
Hongtao Yu [Fri, 15 Jan 2016 19:56:33 +0000 (11:56 -0800)]
Merge pull request #2628 from hoyMS/Bug2353
Fix for bug 2353 Assertion Failure 'nextStmtExpr->gtOper == GT_RETURN…
Lakshmi Priya [Fri, 15 Jan 2016 19:55:30 +0000 (11:55 -0800)]
Merge pull request #2670 from Priya91/addmachinename
Expose MachineName in mscorlib.
Andy Ayers [Fri, 15 Jan 2016 18:47:18 +0000 (10:47 -0800)]
Fix exception in Burgers on AVX-capable HW
Original code was implicitly assuming Vector<>.Count == 2, which isn't true once AVX kicks in.
Closes #2679.
Hongtao Yu [Fri, 15 Jan 2016 00:01:03 +0000 (16:01 -0800)]
Fix for bug 2353 Assertion Failure 'nextStmtExpr->gtOper == GT_RETURN' in morph.cpp line 6671.
The change fixes a bug in importing POP instruction where a copy between a tempvar and the return value of a tail call is misgenerated for Unix with enregisterable struct return values.
Matt Mitchell [Fri, 15 Jan 2016 18:10:07 +0000 (10:10 -0800)]
Merge pull request #2668 from mmitche/add-checked-builds
Add checked build jobs to Jenkins
William Godbe [Fri, 15 Jan 2016 18:02:41 +0000 (10:02 -0800)]
Merge pull request #2669 from wtgodbe/serverGC
Enable server GC for Ubuntu test runs for PRs in CI
Eric Erhardt [Fri, 15 Jan 2016 17:54:24 +0000 (11:54 -0600)]
Daylight transitions are not correct on Unix.
When checking whether a DateTime is daylight savings time, TimeZoneInfo gets it wrong when the AdjustmentRule spans multiple years. This is because CheckIsDst will adjust the DateTime's Year to be the same as the AdjustmentRule.StartTime.Year. On Unix, this is incorrect because the AdjustmentRules are fixed for the whole time; the offset doesn't change at all during the AdjustmentRule.
This is a fix for the last 2 issues noted in #2185.
Wes Haggard [Fri, 15 Jan 2016 17:01:45 +0000 (09:01 -0800)]
Rollback changeset 1565223.
[tfs-changeset: 1565534]
Russ Keldorph [Fri, 15 Jan 2016 16:18:36 +0000 (08:18 -0800)]
Merge pull request #2675 from RussKeldorph/disable4checked
Disable tests failing in Checked builds so automation will be green
Jan Vorlicek [Fri, 15 Jan 2016 09:23:09 +0000 (10:23 +0100)]
Merge pull request #2660 from janvorli/stack-limit-changes
Improve stack limit checking precision
Sergiy Kuryata [Fri, 15 Jan 2016 05:29:15 +0000 (21:29 -0800)]
Merge pull request #2661 from sergiy-k/pie
Enable the fPIE compiler option for executables in the coreclr repo on Unix platforms
Russ Keldorph [Fri, 15 Jan 2016 01:36:57 +0000 (17:36 -0800)]
Disable tests failing in Checked builds so automation is green
JIT\SIMD\VectorArgs\VectorArgs.cmd
JIT/Methodical/Arrays/misc/_il_dbgarrres/_il_dbgarrres.sh
JIT/Methodical/Arrays/misc/_il_relarrres/_il_relarrres.sh
JIT/Methodical/delegate/_simpleoddpower_il_d/_simpleoddpower_il_d.sh
JIT/Methodical/delegate/_simpleoddpower_il_r/_simpleoddpower_il_r.sh
JIT/Methodical/Invoke/25params/25param1c_il_r/25param1c_il_r.sh
JIT/Methodical/Invoke/25params/25param3c_il_r/25param3c_il_r.sh
JIT/Methodical/Invoke/25params/25paramMixed_il_r/25paramMixed_il_r.sh
I also took the liberty of fixing the whitespace in issues.targets on the
assumption that all modern differs can ignore whitespace diffs. If this
is unacceptable and should be separated, let me know.
Mike McLaughlin [Fri, 15 Jan 2016 03:08:05 +0000 (19:08 -0800)]
Merge pull request #2633 from mikem8361/launch
Add debugger launch to dbgshim for xplat.
Mike McLaughlin [Wed, 16 Dec 2015 00:42:20 +0000 (16:42 -0800)]
Add debugger launch to dbgshim for xplat.
Add the RegisterForRuntimeStartup/UnregisterForRuntimeStartup to dbghim. Executes
the callback when the coreclr runtime starts in the specified process. The callback
is passed the proper ICorDebug instance for the version of the runtime or an error if
something fails. This API works for launch and attach (and even the attach scenario
if the runtime hasn't been loaded yet) equally on both xplat and Windows. The callback
is always called on a separate thread. This API returns immediately.
The callback is invoke when the coreclr runtime module is loaded during early
initialization. The runtime is blocked during initialization until the callback
returns.
HRESULT
RegisterForRuntimeStartup(
__in DWORD dwProcessId,
__in PSTARTUP_CALLBACK pfnCallback,
__in PVOID parameter,
__out PVOID *ppUnregisterToken)
HRESULT
UnregisterForRuntimeStartup(
__in PVOID pUnregisterToken)
Most of the work is done for xplat in the PAL_RegisterForRuntimeStartup and
PAL_UnregisterForRuntimeStartup. On Windows, the APIs are implemented on top
of the old dbgshim ones.
Added reference counting to DbgTransportSession so the cleanup can be done after
the transport worker and the main code is finished.
Fix a hang in OSX initializing multiple PALs in the debugging test dbg, dbgshim
and mscordaccore by not calling FILEInitStdHandles() from PAL_InitializeDLL.
Fixed a minor EnumerateCLRs bug in an error path. A ThrowHR instead of returning
the HRESULT.
Better pipe file/dbg transport cleanup. Now also call the dbg transport connection
abort for an unhandled native exception. Added PROCAbort to replace most calls to
abort(). The shutdown handler is called in PROCAbort().
Cleanup debugger transport pipes on CTRL-C termination.
Cleanup process code; remove now useless CProcSharedData.
Added "PROCESS" PAL trace type.
Stephen Toub [Fri, 15 Jan 2016 01:59:15 +0000 (20:59 -0500)]
Merge pull request #2630 from ellismg/fast-path-index-of
Fast path IndexOf and variants for ASCII
Jan Vorlicek [Fri, 15 Jan 2016 01:49:39 +0000 (02:49 +0100)]
Merge pull request #2665 from janvorli/fix-pal-test-time-measurement
Make time measurement in PAL threading tests more precise
Lakshmi Priya Sekar [Thu, 14 Jan 2016 22:43:53 +0000 (14:43 -0800)]
Expose MachineName in mscorlib.
Jan Kotas [Fri, 15 Jan 2016 01:36:06 +0000 (17:36 -0800)]
Merge pull request #2659 from dotnet-bot/from-tfs
Merge changes from TFS
Rahul Kumar [Fri, 15 Jan 2016 01:29:57 +0000 (17:29 -0800)]
Fix for Build Issue #785302:
tools were still not getting built for projectK build....fixed that. Verified on local machine using below command
msbuild /t:rebuild /p:ProductGroupsToBuild=PK dirs.proj
[tfs-changeset: 1565223]
Pallavi Taneja [Fri, 15 Jan 2016 00:58:21 +0000 (16:58 -0800)]
[Fix issue https://github.com/dotnet/coreclr/issues/2379]
When retuning the args from the host we return the same array to all the callers causing changes done
by one reflected to the other caller. Adding Array.Clone() to mitigate the issue.
I will add the tests for these in corefx repro once they can be consumed there.
[tfs-changeset: 1565211]
Sivarv [Fri, 15 Jan 2016 00:36:12 +0000 (16:36 -0800)]
Merge pull request #2648 from sivarv/founddiff2
Fix to issue #2349 - Assertion failed '!foundDiff' in 'Node[__Canon][System.__Canon]:Search(ref,ref):ref:this' in lsra.cpp
Aditya Mandaleeka [Fri, 15 Jan 2016 00:34:32 +0000 (16:34 -0800)]
Merge pull request #2664 from adityamandaleeka/enable_hw_excep_pal
Add hardware exception handling back to Read/WriteProcessMemory
Brian Sullivan [Thu, 14 Jan 2016 23:00:48 +0000 (15:00 -0800)]
Merge pull request #2657 from briansull/fix-legacy
Fix the legacy frankenjit test execution failures
William Godbe [Thu, 14 Jan 2016 22:53:08 +0000 (14:53 -0800)]
Enable server GC for Ubuntu test runs for PRs in CI
Matt Mitchell [Thu, 14 Jan 2016 22:46:44 +0000 (14:46 -0800)]
Add checked build jobs to Jenkins
Initially checked will only run on commits. Once verification is completed, checked will replace release for most testing
Nate Amundson [Thu, 14 Jan 2016 22:45:50 +0000 (16:45 -0600)]
Merge pull request #2566 from dotnet/UpdateDocDebian
Update Linux instructions for Debian
Jan Vorlicek [Thu, 14 Jan 2016 19:45:58 +0000 (20:45 +0100)]
Improve stack limit checking precision
This change improves the precision of checking whether an address is in stack limits
for cases where ulimit -s is set to unlimited and the stack limit is checked for the
current thread. It uses current SP instead of the cached stack limit, since the OS
is free to move the stack limit up during the process runtime and the cached value
reflects the initial stack limit.
Jan Vorlicek [Thu, 14 Jan 2016 21:57:01 +0000 (22:57 +0100)]
Make time measurement in PAL threading tests more precise
This change replaces GetTickCount by measurement using QueryPerformanceCounter.
This is an attempt to fix stability of bunch of threading tests that were
failing randomly due to large error margin of the GetTickCount on Debian.
Matt Mitchell [Thu, 14 Jan 2016 21:47:38 +0000 (13:47 -0800)]
Merge pull request #2564 from mmitche/add-ildasm-roundtrip
Add ildasm roundtrip
Matt Mitchell [Thu, 7 Jan 2016 19:01:12 +0000 (11:01 -0800)]
Add ILAsm roundtrip testing
Refactor pri1 and default testing into scenarios
Brian Sullivan [Wed, 13 Jan 2016 23:21:54 +0000 (15:21 -0800)]
Fix the frankenjit test execution failures
The frankenjit is the new RyuJit frontend minus the rationalize phase and the legacy x86 backend.
It is still used internally for testing purposed and it was broken with the recent cleanup of liveness.
This change pust back the old method that handled GT_QMARK nodes. It is renamed to
fgLegacyPerStatementLocalVarLiveness and it is moved into codegenlegacy.cpp.
Aditya Mandaleeka [Thu, 14 Jan 2016 20:38:45 +0000 (12:38 -0800)]
Add hardware exception handling back to Read/WriteProcessMemory
Sergiy Kuryata [Thu, 14 Jan 2016 20:40:37 +0000 (12:40 -0800)]
Enable the fPIE compiler option for executables in the coreclr repo on Unix platforms
Hongtao Yu [Tue, 12 Jan 2016 23:44:43 +0000 (15:44 -0800)]
Fix for bug 2353 Assertion Failure 'nextStmtExpr->gtOper == GT_RETURN' in RetBufferBug:Tailaller() in morph.cpp line 6671.
The change fixes a bug in importing POP instruction where a copy between a tempvar and the return value of a tail call is misgenerated for Unix with enregisterable struct return values.
The change also fixes a bug of using GenTree::CopyFrom in fMorphInline where the dst node is a child of the src node.
Rahul Kumar [Thu, 14 Jan 2016 20:02:03 +0000 (12:02 -0800)]
Add OSS license headers to all new files in github
[tfs-changeset: 1565108]
Brian Sullivan [Thu, 14 Jan 2016 19:27:36 +0000 (11:27 -0800)]
Fix x86chk build break:
ndp\clr\src\debug\ee\debugger.h(1117): error C2220: warning treated as error - no 'object' file generated
ndp\clr\src\debug\ee\debugger.h(1117): warning C4324: 'DebuggerHeapExecutableMemoryChunk' : structure was padded due to __declspec(align())
[tfs-changeset: 1565087]
Pat Gavlin [Thu, 14 Jan 2016 18:02:45 +0000 (10:02 -0800)]
Add a script to build RyuJit packages.
This will be used to build and publish these packages.
sivarv [Thu, 14 Jan 2016 00:20:39 +0000 (16:20 -0800)]
For the repro case the method being compiled is a generic method
whose generic context is derived from thisptr. For this reason JIT
is asked to keep thisptr alive and report in gc-info. For such
methods JIT, caches thisptr to a stack slot in prolog and that
stack slot gets reported in gc-info.
Due to tail call loop optimization, the recursive method call at the end
is converted into a loop. This transformation assigns all the arguments
to temps and temps back to incoming parameters of the method and finally
branches to the first basic block (see fgMorphRecursiveFastTailCallIntoLoop()).
This will leads to the following basic block
tmp = GT_INDIR(thisptr+24)
thisptr = tmp
That is thisptr is changing while looping. But the thisptr stores in
cached stack slot is not updated. So potentially there is a mismatch
in generic context reported in gc-info to VM and the one used within
the method body.
The same issue exists in case of methods that have generic context
passed in a hidden argument instead of derived from thisptr.
Fix:
For now disabling tail call loop optimization for methods that need generic
context till we the above mentioned issue.
Pat Gavlin [Thu, 14 Jan 2016 17:53:47 +0000 (09:53 -0800)]
Merge pull request #2621 from pgavlin/ConfigureOnly
Add configureonly and skipconfigure to builds.
Sean Gillespie [Thu, 14 Jan 2016 08:44:18 +0000 (00:44 -0800)]
Merge pull request #2649 from swgillespie/gc_flavor_select
corerun: Enable Server GC and Concurrent GC to be configured with environment variables
Jan Kotas [Thu, 14 Jan 2016 06:27:03 +0000 (22:27 -0800)]
Merge pull request #2640 from janvorli/fix-stack-overflow
Fix Unix stack overflow detection
Sergiy Kuryata [Thu, 14 Jan 2016 05:33:24 +0000 (21:33 -0800)]
Merge pull request #2616 from sergiy-k/stackprotector
Enable the stack-protector compiler option for all coreclr code on Unix.
Stephen Toub [Thu, 14 Jan 2016 05:09:00 +0000 (00:09 -0500)]
Merge pull request #2646 from stephentoub/list_exceptionnames
Fix incorrect ArgumentException names in List<T>
Sean Gillespie [Thu, 14 Jan 2016 02:09:44 +0000 (18:09 -0800)]
Enable corerun to select server GC or concurrent GC on startup based on environment variables
Stephen Toub [Thu, 14 Jan 2016 02:32:01 +0000 (21:32 -0500)]
Merge pull request #2642 from stephentoub/aggexc_message
Override AggregateException.Message to include more detail
Jan Kotas [Thu, 14 Jan 2016 02:27:23 +0000 (18:27 -0800)]
Merge pull request #2647 from dotnet-bot/from-tfs
Merge changes from TFS
Sergiy Kuryata [Thu, 14 Jan 2016 01:27:24 +0000 (17:27 -0800)]
Use "-fstack-protector" instead of "-fstack-protector-strong" on OS X in order to work around a bug in clang (current version 7.0.2).
Jan Vorlicek [Wed, 13 Jan 2016 16:56:29 +0000 (17:56 +0100)]
Fix Unix stack overflow detection
On Linux (and FreeBSD), we were not distinguishing a stack overflow detected
using a probe and general access violation. So instead of aborting the process,
we were sending it a managed access violation exception.
This change checks for the case when the access violation happens in the page
below the stack limit and aborts right in the sigsegv_handler if it does.
On OSX, we were detecting it, but there was a problem in it - it could only
detect it if the probed address was closer than 512kB to the current SP.
So e.g. an application failing due to allocating 1MB structure on stack didn't
pass this test.
The fix here was to remove the distance limit.
Aditya Mandaleeka [Thu, 14 Jan 2016 00:05:45 +0000 (16:05 -0800)]
Merge pull request #2264 from adityamandaleeka/dbg_exec_alloc
[WIP] Fix usage of executable heap memory
Jan Kotas [Wed, 13 Jan 2016 23:56:23 +0000 (15:56 -0800)]
Merge pull request #2637 from bbowyersmyth/StringExceptionParamName
Provide paramName for ArgumentNull and ArgumentOutOfRange for String
Rahul Kumar [Wed, 13 Jan 2016 23:34:21 +0000 (15:34 -0800)]
coreclr BuildTools for github builds - instead of building the tools (which do not change) create a nuget package
This contains changes for following:
1. Binplace & sign following binaries
a. pdbtypematch.exe (only build in x86 ret .... build errors for other flavors)
b. dactableGen.exe
c. dialib.dll
d. GenClrDebugResource.exe
e. InjectResource.exe
2. add sources of PdbTypeMatch tools in github
3. bump up the version of coreclr buildtools package to 1.0.4
4. add above tools to coreclr buildtools package
5. remove bclrewriter from coreclr buildtools package
6. build dotnet.builtools.coreclr package only for x86 ret builds as pdbtypematch.exe only builds for ret flavor.
[tfs-changeset: 1564332]
Pat Gavlin [Tue, 12 Jan 2016 19:25:27 +0000 (11:25 -0800)]
Add configureonly and skipconfigure to builds.
These options allow the developer to either:
1. Run build configuration without actually running the build, or
2. Skip build configuration when running the build.
CMake already adds the various CMakeLists.txt files as build
dependencies s.t. it will be automatically re-run when necessary.
stephentoub [Wed, 13 Jan 2016 23:29:39 +0000 (18:29 -0500)]
Fix incorrect ArgumentException names in List<T>
Stephen Toub [Wed, 13 Jan 2016 23:15:58 +0000 (18:15 -0500)]
Merge pull request #2641 from eerhardt/FixIdn
IdnMapping GetUnicode conformance tests fail
stephentoub [Wed, 13 Jan 2016 18:37:47 +0000 (13:37 -0500)]
Override AggregateException.Message to include more detail
ToString() includes details on inner exceptions, but Message does not, with the default message just saying "One or more errors occurred." This commit overrides Message to append the messages of the inner exceptions as well.
Andy Ayers [Wed, 13 Jan 2016 21:39:49 +0000 (13:39 -0800)]
Merge pull request #2622 from AndyAyersMS/MiscBenchmarks
Add miscellaneous benchmarks
Matt Ellis [Wed, 13 Jan 2016 01:01:02 +0000 (17:01 -0800)]
Fast path IndexOf and variants for ASCII
In ICU doing any sort of index of operation (which includes Prefix and
Suffix checking) is relatively expensive. ICU ends up doing a fair
amount of work and allocations in order to construct a searcher object
which could be reused, but our APIs are not amenable towards working in
this manner.
However, for some cultures we can often fast path ASCII searches when we
know that ASCII and Ordinal comparisions are the same, as is the case
for both Invariant and en-US.
This change has CompareInfo hold some additional state about a locale to
decide if we can do this optimiztion and then wires it up to IndexOf,
LastIndexOf, IsPrefix and IsSuffix.
In the future, we can try to extend the set of allowable cultures that
we preform this optimization on by coming up with better checks on when
it is safe to preform this transformation.
Today, this optimization does not apply when IgnoreSymbols is set,
because we would need to blank some ASCII symbol characters. If this
ends up being a common operation, we could consider having ordinal
implementations that also ignore symbols.
This represents the best that we can do for dotnet/corefx#3672. It gets
us back to where we were before for many common real world cases.
Fixes dotnet/corefx#3672.
Bruce Bowyer-Smyth [Wed, 13 Jan 2016 20:57:50 +0000 (06:57 +1000)]
Provide paramName for ArgumentNull and ArgumentOutOfRange
Aditya Mandaleeka [Wed, 13 Jan 2016 20:02:02 +0000 (12:02 -0800)]
Merge pull request #2631 from adityamandaleeka/floatingPointCxtFix
Fix usage of floating point state from native contexts.