platform/upstream/coreclr.git
8 years agoMerge pull request #2660 from janvorli/stack-limit-changes
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

8 years agoMerge pull request #2661 from sergiy-k/pie
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

8 years agoMerge pull request #2633 from mikem8361/launch
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.

8 years agoAdd 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.

8 years agoMerge pull request #2630 from ellismg/fast-path-index-of
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

8 years agoMerge pull request #2665 from janvorli/fix-pal-test-time-measurement
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

8 years agoMerge pull request #2659 from dotnet-bot/from-tfs
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

8 years agoMerge pull request #2648 from sivarv/founddiff2
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

8 years agoMerge pull request #2664 from adityamandaleeka/enable_hw_excep_pal
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

8 years agoMerge pull request #2657 from briansull/fix-legacy
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

8 years agoMerge pull request #2566 from dotnet/UpdateDocDebian
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

8 years agoImprove stack limit checking precision
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.

8 years agoMake time measurement in PAL threading tests more precise
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.

8 years agoMerge pull request #2564 from mmitche/add-ildasm-roundtrip
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

8 years agoAdd ILAsm roundtrip testing
Matt Mitchell [Thu, 7 Jan 2016 19:01:12 +0000 (11:01 -0800)]
Add ILAsm roundtrip testing

Refactor pri1 and default testing into scenarios

8 years agoFix the frankenjit test execution failures
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.

8 years agoAdd hardware exception handling back to Read/WriteProcessMemory
Aditya Mandaleeka [Thu, 14 Jan 2016 20:38:45 +0000 (12:38 -0800)]
Add hardware exception handling back to Read/WriteProcessMemory

8 years agoEnable the fPIE compiler option for executables in the coreclr repo on Unix platforms
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

8 years agoFix x86chk build break:
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]

8 years agoFor the repro case the method being compiled is a generic method
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.

8 years agoMerge pull request #2621 from pgavlin/ConfigureOnly
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.

8 years agoMerge pull request #2649 from swgillespie/gc_flavor_select
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

8 years agoMerge pull request #2640 from janvorli/fix-stack-overflow
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

8 years agoMerge pull request #2616 from sergiy-k/stackprotector
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.

8 years agoMerge pull request #2646 from stephentoub/list_exceptionnames
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>

8 years agoEnable corerun to select server GC or concurrent GC on startup based on environment...
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

8 years agoMerge pull request #2642 from stephentoub/aggexc_message
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

8 years agoMerge pull request #2647 from dotnet-bot/from-tfs
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

8 years agoUse "-fstack-protector" instead of "-fstack-protector-strong" on OS X in order to...
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).

8 years agoFix Unix stack overflow detection
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.

8 years agoMerge pull request #2264 from adityamandaleeka/dbg_exec_alloc
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

8 years agoMerge pull request #2637 from bbowyersmyth/StringExceptionParamName
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

8 years agocoreclr BuildTools for github builds - instead of building the tools (which do not...
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]

8 years agoAdd configureonly and skipconfigure to builds.
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.

8 years agoFix incorrect ArgumentException names in List<T>
stephentoub [Wed, 13 Jan 2016 23:29:39 +0000 (18:29 -0500)]
Fix incorrect ArgumentException names in List<T>

8 years agoMerge pull request #2641 from eerhardt/FixIdn
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

8 years agoOverride AggregateException.Message to include more detail
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.

8 years agoMerge pull request #2622 from AndyAyersMS/MiscBenchmarks
Andy Ayers [Wed, 13 Jan 2016 21:39:49 +0000 (13:39 -0800)]
Merge pull request #2622 from AndyAyersMS/MiscBenchmarks

Add miscellaneous benchmarks

8 years agoFast path IndexOf and variants for ASCII
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.

8 years agoProvide paramName for ArgumentNull and ArgumentOutOfRange
Bruce Bowyer-Smyth [Wed, 13 Jan 2016 20:57:50 +0000 (06:57 +1000)]
Provide paramName for ArgumentNull and ArgumentOutOfRange

8 years agoMerge pull request #2631 from adityamandaleeka/floatingPointCxtFix
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.

8 years agoMerge pull request #2599 from mikedn/baddef
Jan Kotas [Wed, 13 Jan 2016 17:43:52 +0000 (09:43 -0800)]
Merge pull request #2599 from mikedn/baddef

Fix bad JIT #ifdefs

8 years agoMerge pull request #2636 from bbowyersmyth/FixedString
Jan Kotas [Wed, 13 Jan 2016 17:36:00 +0000 (09:36 -0800)]
Merge pull request #2636 from bbowyersmyth/FixedString

Port https://github.com/dotnet/corert/pull/629 to CoreCLR

8 years agoMerge pull request #2635 from dotnet-bot/from-tfs
Jan Kotas [Wed, 13 Jan 2016 17:29:47 +0000 (09:29 -0800)]
Merge pull request #2635 from dotnet-bot/from-tfs

Merge changes from TFS

8 years agoMerge pull request #2639 from dotnet/revert-2624-founddiff
Jan Kotas [Wed, 13 Jan 2016 17:29:36 +0000 (09:29 -0800)]
Merge pull request #2639 from dotnet/revert-2624-founddiff

Revert "Fix to github issue #2349."

8 years agoIdnMapping GetUnicode conformance tests fail
Eric Erhardt [Wed, 13 Jan 2016 17:05:11 +0000 (11:05 -0600)]
IdnMapping GetUnicode conformance tests fail

The IdnaConformanceTests fail on Unix because \u00DF, \u200C and \u200D characters are not being handled as specified in the http://www.unicode.org/Public/idna/6.0.0/IdnaTest.txt file.

The fix is to use UIDNA_NONTRANSITIONAL_TO_UNICODE and UIDNA_CHECK_CONTEXTJ options when calling uidna_openUTS46.

Partial fix for https://github.com/dotnet/corefx/issues/3406.

8 years agoRevert "Fix to github issue #2349."
Jan Kotas [Wed, 13 Jan 2016 15:26:52 +0000 (07:26 -0800)]
Revert "Fix to github issue #2349."

8 years agoUse m_firstChar instead of string object in fixed statement
Bruce Bowyer-Smyth [Wed, 13 Jan 2016 06:12:09 +0000 (16:12 +1000)]
Use m_firstChar instead of string object in fixed statement

8 years agoMerge pull request #2625 from swgillespie/volatile_gc_perf_tests
Sean Gillespie [Wed, 13 Jan 2016 05:46:06 +0000 (21:46 -0800)]
Merge pull request #2625 from swgillespie/volatile_gc_perf_tests

Remove volatile GC perf tests from the main perf run

8 years agoMerge pull request #2624 from sivarv/founddiff
Sivarv [Wed, 13 Jan 2016 05:15:47 +0000 (21:15 -0800)]
Merge pull request #2624 from sivarv/founddiff

Fix to github issue #2349.

8 years agoFix arm specific build break pertaining to AssemblyLoadContext changes.
Gaurav Khanna [Wed, 13 Jan 2016 05:10:11 +0000 (21:10 -0800)]
Fix arm specific build break pertaining to AssemblyLoadContext changes.

[tfs-changeset: 1564035]

8 years agoMerge pull request #2612 from hoyMS/Bug2610
Hongtao Yu [Wed, 13 Jan 2016 04:39:38 +0000 (20:39 -0800)]
Merge pull request #2612 from hoyMS/Bug2610

Fix for bug 2610 Incorrect copy prop substitution.

8 years agoMerge pull request #2623 from BruceForstall/BuildShChanges
Bruce Forstall [Wed, 13 Jan 2016 04:37:04 +0000 (20:37 -0800)]
Merge pull request #2623 from BruceForstall/BuildShChanges

Clean up build.sh

8 years agoMerge pull request #2629 from adityamandaleeka/mscorrcFpic
Aditya Mandaleeka [Wed, 13 Jan 2016 04:30:27 +0000 (20:30 -0800)]
Merge pull request #2629 from adityamandaleeka/mscorrcFpic

Add fPIC option when compiling mscorrc.

8 years agoMerge pull request #2602 from LLITCHEV/Issue2295
Lubomir Litchev [Wed, 13 Jan 2016 04:23:37 +0000 (20:23 -0800)]
Merge pull request #2602 from LLITCHEV/Issue2295

Fix issue 2295.

8 years agoMerge pull request #2627 from RussKeldorph/dowhilebndchk
Senthil [Wed, 13 Jan 2016 02:35:34 +0000 (18:35 -0800)]
Merge pull request #2627 from RussKeldorph/dowhilebndchk

Do loop cloning only if zero trip test can be ensured

8 years agoMerge pull request #2626 from briansull/cleanup-liveness
Brian Sullivan [Wed, 13 Jan 2016 02:26:54 +0000 (18:26 -0800)]
Merge pull request #2626 from briansull/cleanup-liveness

Cleanup code in fgPerStatementLiveness and fgPerBlockLocalVarLiveness

8 years agoMerge pull request #2581 from AndyAyersMS/BenchmarkGame
Andy Ayers [Wed, 13 Jan 2016 01:14:54 +0000 (17:14 -0800)]
Merge pull request #2581 from AndyAyersMS/BenchmarkGame

Add a subset of benchmark game benchmarks

8 years agoMerge pull request #2571 from AndyAyersMS/PerfTestsZ
Andy Ayers [Wed, 13 Jan 2016 01:13:25 +0000 (17:13 -0800)]
Merge pull request #2571 from AndyAyersMS/PerfTestsZ

Add more integer benchmarks

8 years agoFix for bug 2610 Incorrect copy prop substitution.
Hongtao Yu [Mon, 11 Jan 2016 23:24:49 +0000 (15:24 -0800)]
Fix for bug 2610 Incorrect copy prop substitution.

The bug is due to missing lvAddrExposed flag for tmp vars serving as pass-by-ref arguments.

8 years agoFix usage of floating point state from native contexts.
Aditya Mandaleeka [Wed, 13 Jan 2016 00:50:45 +0000 (16:50 -0800)]
Fix usage of floating point state from native contexts.

8 years agoMerge pull request #2617 from stephentoub/datetime_allocation
Jan Kotas [Wed, 13 Jan 2016 00:45:56 +0000 (16:45 -0800)]
Merge pull request #2617 from stephentoub/datetime_allocation

Remove StringBuilder allocation/usage from DateTimeFormat

8 years agoReduce Burgers iteration to avoid debug timeout
Andy Ayers [Tue, 12 Jan 2016 23:49:40 +0000 (15:49 -0800)]
Reduce Burgers iteration to avoid debug timeout

8 years agoFix issue 2295.
Lubomir Litchev [Sun, 10 Jan 2016 23:11:09 +0000 (15:11 -0800)]
Fix issue 2295.

Closes #2295. When creating shadow variables, copy the lvDontPromote flag
from the shadowed variable.

8 years agoAdd fPIC option when compiling mscorrc.
Aditya Mandaleeka [Tue, 12 Jan 2016 23:35:40 +0000 (15:35 -0800)]
Add fPIC option when compiling mscorrc.

8 years agoCleanup code in fgPerStatementLiveness and fgPerBlockLocalVarLiveness
Brian Sullivan [Tue, 12 Jan 2016 23:30:53 +0000 (15:30 -0800)]
Cleanup code in fgPerStatementLiveness and fgPerBlockLocalVarLiveness

Removed the <BUGNUM> comment about GT_QMARK that preceded the fgPerStatementLiveness method.
Added method header comment for fgPerStatementLiveness.
Changed return type of fgPerStatementLiveness to void.
Renamed the lhsNode argument to asgnLclVar.
Remove all the code that handles GT_QMARK/GT_COLON nodes,
 as those node are no longer used by the RyuJit codebase.
In fgPerStatementLiveness renamed lhsNode to asgnLclVar.

8 years agoDo loop cloning only if zero trip test can be ensured.
Russ Keldorph [Tue, 12 Jan 2016 00:51:49 +0000 (16:51 -0800)]
Do loop cloning only if zero trip test can be ensured.

The problem is our loop detection logic detects the loop structure, but it
doesnt know the code outside the loop structure, esp., nothing about the
edge from the "head" into the loop "entry" block.

In the bug case, there is no zero-trip test in the "head", so the entrance
into the loop is not guarded. Note that the other point of entrance into
the "entry" block is from the "top" block which will be guarded by the
loop "bottom" test.

One way to make sure is when we invert a while loop into a do-while with
an explicit compiler cloned zero trip test, in fgOptWhileLoop, i.e., we
mark it as good to optimize with a flag. The fix marks the loop as ZTT.

The caveat is the JIT doesnt always do loop inversion.

This change is more conservative than it needs to be in the interest of
managing risk.

8 years agoRemove volatile GC perf tests from the main run to provide more stable results. Also...
Sean Gillespie [Tue, 12 Jan 2016 23:05:21 +0000 (15:05 -0800)]
Remove volatile GC perf tests from the main run to provide more stable results. Also cause the GC perf framework to probe the current directory if the probe path is not set.

8 years agoMerge pull request #2619 from AndyAyersMS/MoreLocking
Andy Ayers [Tue, 12 Jan 2016 22:56:06 +0000 (14:56 -0800)]
Merge pull request #2619 from AndyAyersMS/MoreLocking

Set locked to true in project.lock.json

8 years agoMerge pull request #2492 from wtgodbe/memcpy2
William Godbe [Tue, 12 Jan 2016 21:56:40 +0000 (13:56 -0800)]
Merge pull request #2492 from wtgodbe/memcpy2

Audit usage of memcpy in PAL for Debug

8 years agoFix to github issue #2349.
sivarv [Tue, 12 Jan 2016 21:37:07 +0000 (13:37 -0800)]
Fix to github issue #2349.

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.

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.  This will leads to the following basic
block

tmp = GT_NODE(thisptr)
thisptr = tmp

Here we have both use and def of thisptr.  Lsra.cpp::SetLastUses() has
a bug in not properly accounting for thiptr, that leads to an assert failure.

Also, computeUpdateLifeVar()also needs be fixed to not consider
thisptr being born due to assignment of temp to thisptr.

8 years agoClean up build.sh
Bruce Forstall [Tue, 12 Jan 2016 21:11:20 +0000 (13:11 -0800)]
Clean up build.sh

Fix some typos. Make it more readable.

8 years agoAdd miscellaneous benchmarks
Andy Ayers [Tue, 12 Jan 2016 01:40:56 +0000 (17:40 -0800)]
Add miscellaneous benchmarks

Burgers and the three V8 benchmarks: Richards, Crypto, Deltablue.

8 years agoMerge pull request #2620 from janvorli/fix-few-gc-details
Jan Kotas [Tue, 12 Jan 2016 19:47:17 +0000 (11:47 -0800)]
Merge pull request #2620 from janvorli/fix-few-gc-details

Fix few details in the GC

8 years agoMerge pull request #2607 from pgavlin/Reenableb99969
Pat Gavlin [Tue, 12 Jan 2016 18:15:07 +0000 (10:15 -0800)]
Merge pull request #2607 from pgavlin/Reenableb99969

Re-enable b99969.

8 years agoFix few details in the GC
Jan Vorlicek [Tue, 12 Jan 2016 17:59:14 +0000 (18:59 +0100)]
Fix few details in the GC

- For Unix, the definition of __forceinline was missing the inline
- Allocation of GCThreadStubParams was missing a check for failure
- Removed few unnecessary #ifdefs for FEATURE_PAL from the GC sample
- Removed several obsolete functions from the GC sample

8 years agoMerge pull request #2618 from gkhanna79/TPALoadChanges
Gaurav Khanna [Tue, 12 Jan 2016 17:36:27 +0000 (09:36 -0800)]
Merge pull request #2618 from gkhanna79/TPALoadChanges

LoadByte/Path/NI support for Default Context

8 years agoSet locked to true in project.lock.json
Andy Ayers [Tue, 12 Jan 2016 17:02:42 +0000 (09:02 -0800)]
Set locked to true in project.lock.json

Otherwise it's not really locked.

8 years agoMerge pull request #2611 from JohnChen0/master
Jan Kotas [Tue, 12 Jan 2016 16:41:57 +0000 (08:41 -0800)]
Merge pull request #2611 from JohnChen0/master

Make CORCOMPILE_HEADER backward compatible

8 years agoMerge pull request #2586 from eerhardt/IgnoreSymbols2
Eric Erhardt [Tue, 12 Jan 2016 15:42:29 +0000 (09:42 -0600)]
Merge pull request #2586 from eerhardt/IgnoreSymbols2

CompareOptions.IgnoreSymbols only ignores punctuation on Unix, but not other symbols

8 years agoAdd support Load assemblies from explicit path/streams into default load context
Gaurav Khanna (CLR) [Tue, 12 Jan 2016 01:26:13 +0000 (17:26 -0800)]
Add support Load assemblies from explicit path/streams into default load context

8 years agoMerge pull request #2549 from AndyAyersMS/PerfTestX
Andy Ayers [Tue, 12 Jan 2016 07:45:11 +0000 (23:45 -0800)]
Merge pull request #2549 from AndyAyersMS/PerfTestX

More integer benchmarks for the jit: NDhrystone

8 years agoMerge pull request #2558 from AndyAyersMS/SciMark
Andy Ayers [Tue, 12 Jan 2016 07:44:41 +0000 (23:44 -0800)]
Merge pull request #2558 from AndyAyersMS/SciMark

Add SciMark benchmark

8 years agoMerge pull request #2540 from AndyAyersMS/RoslynBenchmark
Andy Ayers [Tue, 12 Jan 2016 07:43:47 +0000 (23:43 -0800)]
Merge pull request #2540 from AndyAyersMS/RoslynBenchmark

Add a simple Roslyn benchmarks

8 years agoMerge pull request #2613 from stephentoub/ifdef_stringbuilder
Jan Kotas [Tue, 12 Jan 2016 03:34:01 +0000 (19:34 -0800)]
Merge pull request #2613 from stephentoub/ifdef_stringbuilder

Add ifdef to suppress non-coreclr warning

8 years agoRemove StringBuilder allocation/usage from DateTimeFormat
stephentoub [Tue, 12 Jan 2016 01:54:22 +0000 (20:54 -0500)]
Remove StringBuilder allocation/usage from DateTimeFormat

ASP.NET uses DateTimeOffset.ToString("r") to format in accordance with RFC1123.  The implementation of "r", for which the format includes quotes, ends up allocating a StringBuilder and parsing into it, just to get the quoted contents.  With a minor transformation, this is unnecessary, allowing the StringBuilder and associated allocations and work to be removed.

8 years agoEnable the stack-protector compiler option for the entire coreclr
Sergiy Kuryata [Tue, 12 Jan 2016 01:37:45 +0000 (17:37 -0800)]
Enable the stack-protector compiler option for the entire coreclr
codebase.

8 years agoMerge pull request #2572 from ramarag/event_source_payload
Rama krishnan Raghupathy [Tue, 12 Jan 2016 01:37:25 +0000 (17:37 -0800)]
Merge pull request #2572 from ramarag/event_source_payload

Fixing use case of incomplete Event Source payload

8 years agoRe-enable b99969.
Pat Gavlin [Mon, 11 Jan 2016 18:15:48 +0000 (10:15 -0800)]
Re-enable b99969.

Now that #2286 has been fixed, b99969 can be re-enabled.

8 years agoAdd ifdef to suppress non-coreclr warning
stephentoub [Mon, 11 Jan 2016 23:25:17 +0000 (18:25 -0500)]
Add ifdef to suppress non-coreclr warning

My change to optimize AppDomain.Setup included moving a variable out of a loop, which also ended up moving it out of an ifdef.  That then causes an unused variable warning on some builds.

8 years agoMerge pull request #2592 from hoyMS/Bug2311
Hongtao Yu [Mon, 11 Jan 2016 23:16:59 +0000 (15:16 -0800)]
Merge pull request #2592 from hoyMS/Bug2311

Fix for issue 2311.

8 years agoMerge pull request #2609 from hoyMS/Bug2294
Hongtao Yu [Mon, 11 Jan 2016 23:15:02 +0000 (15:15 -0800)]
Merge pull request #2609 from hoyMS/Bug2294

Fix for bug 2294 [JitStress=2] Assertion failed 'curArgTabEntry->regN…

8 years agoMake CORCOMPILE_HEADER backward compatible
John Chen (CLR) [Mon, 11 Jan 2016 22:23:52 +0000 (14:23 -0800)]
Make CORCOMPILE_HEADER backward compatible

Resolve issue #2348 by reordering fields in CORCOMPILE_HEADER,
so that PEKind and Machines fields are in the same location as
in older versions of this struct.

8 years agoMerge pull request #2587 from BruceForstall/BuildAllCmd
Bruce Forstall [Mon, 11 Jan 2016 21:48:05 +0000 (13:48 -0800)]
Merge pull request #2587 from BruceForstall/BuildAllCmd

Add "all" command to build.cmd

8 years agoMerge pull request #2568 from sejongoh/bugfix_unsigned_16bit_cmp_codegen
Sejong Oh [Mon, 11 Jan 2016 20:58:40 +0000 (12:58 -0800)]
Merge pull request #2568 from sejongoh/bugfix_unsigned_16bit_cmp_codegen

Fix bad codegen for comparing 16-bit unsigned values

8 years agoMerge pull request #2601 from stephentoub/appdomain_setup_cleanup
Matt Ellis [Mon, 11 Jan 2016 19:56:25 +0000 (11:56 -0800)]
Merge pull request #2601 from stephentoub/appdomain_setup_cleanup

Perf tweaks/cleanup to AppDomain.Setup

8 years agoFix for bug 2294 [JitStress=2] Assertion failed 'curArgTabEntry->regNum == regNum...
Hongtao Yu [Mon, 11 Jan 2016 19:03:32 +0000 (11:03 -0800)]
Fix for bug 2294 [JitStress=2] Assertion failed 'curArgTabEntry->regNum == regNum' in 'BringUpTest Main() in morph.cpp

The bug is due to a misproper definition of LAST_FP_ARGREG for Unix. On Windows, we set LAST_FP_ARGREG to XMM3. On UNix, the value should be XMM7.

8 years agoMerge pull request #2400 from pgavlin/FixDebugTypes
Pat Gavlin [Mon, 11 Jan 2016 18:14:15 +0000 (10:14 -0800)]
Merge pull request #2400 from pgavlin/FixDebugTypes

Fix DebugType and Optimize values for JIT tests.

8 years agoCompareOptions.IgnoreSymbols only ignores punctuation on Unix, but not other symbols
Eric Erhardt [Fri, 8 Jan 2016 18:02:56 +0000 (12:02 -0600)]
CompareOptions.IgnoreSymbols only ignores punctuation on Unix, but not other symbols

By default, ICU alternate shifted collation handling only ignores punctuation, not all symbols, so change the "variable top" to include all symbols and currency characters.

Fix #4907

8 years agoAvoid int[] and string[] allocations from String.Split in AppDomain.Setup
stephentoub [Mon, 11 Jan 2016 02:09:58 +0000 (21:09 -0500)]
Avoid int[] and string[] allocations from String.Split in AppDomain.Setup

String.Split not only allocates the string[] to hold the results, it also allocates an int[inputString.Length] to hold the indices of the separators.  With not much more code, we can do the splitting manually and avoid both arrays.