platform/upstream/coreclr.git
8 years agoMerge pull request #3244 from erozenfeld/SIMDInit
Eugene Rozenfeld [Mon, 22 Feb 2016 21:12:18 +0000 (13:12 -0800)]
Merge pull request #3244 from erozenfeld/SIMDInit

Fix for SIMD Initialize intrinsic expansion.

8 years agoMerge pull request #3259 from sejongoh/add_corefx_minopts
Sejong Oh [Mon, 22 Feb 2016 20:36:12 +0000 (12:36 -0800)]
Merge pull request #3259 from sejongoh/add_corefx_minopts

Add minopts and fix few bugs

8 years agoAdd minopts and fix few bugs
Sejong Oh [Fri, 19 Feb 2016 20:55:53 +0000 (12:55 -0800)]
Add minopts and fix few bugs

8 years agoMerge pull request #3294 from jkotas/delete-zero-offset-allowed
Jan Kotas [Mon, 22 Feb 2016 19:42:58 +0000 (11:42 -0800)]
Merge pull request #3294 from jkotas/delete-zero-offset-allowed

Delete FEATURE_REF_ZERO_OFFSET_ALLOWED

8 years agoMerge pull request #3266 from rahku/Helix
Rahul Kumar [Mon, 22 Feb 2016 19:37:11 +0000 (11:37 -0800)]
Merge pull request #3266 from rahku/Helix

add helix run support to coreclr repo

8 years agoadd helix run support to coreclr repo
Rahul Kumar [Mon, 25 Jan 2016 22:50:20 +0000 (14:50 -0800)]
add helix run support to coreclr repo

8 years agoMerge pull request #3270 from CarolEidt/x86TypeCtxtOnFrame
Carol Eidt [Mon, 22 Feb 2016 18:47:28 +0000 (10:47 -0800)]
Merge pull request #3270 from CarolEidt/x86TypeCtxtOnFrame

Mark compTypeCtxtArg as lvOnFrame

8 years agoMerge pull request #3282 from gkhanna79/WinX86Nuget
Gaurav Khanna [Mon, 22 Feb 2016 18:10:06 +0000 (09:10 -0900)]
Merge pull request #3282 from gkhanna79/WinX86Nuget

Generate WinX86 Nuget package

8 years agoDelete FEATURE_REF_ZERO_OFFSET_ALLOWED
Jan Kotas [Mon, 22 Feb 2016 17:47:53 +0000 (09:47 -0800)]
Delete FEATURE_REF_ZERO_OFFSET_ALLOWED

8 years agoMerge pull request #3289 from AndyAyersMS/InlineRefactor4e
Andy Ayers [Mon, 22 Feb 2016 17:38:39 +0000 (09:38 -0800)]
Merge pull request #3289 from AndyAyersMS/InlineRefactor4e

Inline refactoring: split up depth and recursion checks

8 years agoGenerate WinX86 Nuget package
Gaurav Khanna [Sun, 21 Feb 2016 01:35:42 +0000 (17:35 -0800)]
Generate WinX86 Nuget package

8 years agoMerge pull request #3286 from sejongoh/add_export
Matt Mitchell [Mon, 22 Feb 2016 16:10:48 +0000 (08:10 -0800)]
Merge pull request #3286 from sejongoh/add_export

Add export to define environment variables

8 years agoMerge pull request #3255 from juergenhoetzel/build_script_fixes
Jan Vorlicek [Mon, 22 Feb 2016 12:37:36 +0000 (13:37 +0100)]
Merge pull request #3255 from juergenhoetzel/build_script_fixes

Handle CMakeArgs correctly

8 years agoMerge pull request #3260 from gkhanna79/CentOS
Matt Ellis [Mon, 22 Feb 2016 06:19:14 +0000 (22:19 -0800)]
Merge pull request #3260 from gkhanna79/CentOS

Fixes to build CentOS CoreCLR Nuget Package

8 years agoMerge pull request #3290 from krytarowski/netbsd-support-55
Jan Kotas [Mon, 22 Feb 2016 02:36:30 +0000 (18:36 -0800)]
Merge pull request #3290 from krytarowski/netbsd-support-55

PAL tests on NetBSD: Clean-up

8 years agoTemporarily disable paltest_pal_sxs_test1 on NetBSD
Kamil Rytarowski [Mon, 22 Feb 2016 00:01:04 +0000 (01:01 +0100)]
Temporarily disable paltest_pal_sxs_test1 on NetBSD

This test has been also disabled on FreeBSD as hardware exceptions
always seem to abort on NetBSD as well.

Related issues: dotnet/coreclr#2090 dotnet/coreclr#3287

8 years agoFix typo in the name of the paltest_getcurrentthread_test2 test
Kamil Rytarowski [Sun, 21 Feb 2016 23:43:15 +0000 (00:43 +0100)]
Fix typo in the name of the paltest_getcurrentthread_test2 test

It was recently disabled on NetBSD and due to pasto it reports a wrong name.

8 years agoInline refactoring: split up depth and recursion checks
Andy Ayers [Sat, 20 Feb 2016 19:21:08 +0000 (11:21 -0800)]
Inline refactoring: split up depth and recursion checks

Separate out the recursive inline and inline too deep obervations.
Have the checker update the inline result directly rather than
deferring to the caller.

Add a bit more commentary on how the various inline classes
are used during compilation.

8 years agoMerge pull request #3275 from AndyAyersMS/InlineRefactor4d
Andy Ayers [Sun, 21 Feb 2016 19:37:42 +0000 (11:37 -0800)]
Merge pull request #3275 from AndyAyersMS/InlineRefactor4d

InlineRefactoring: start to capture failures in the inline tree

8 years agoMerge pull request #3278 from jamesqo/patch-7
Jan Kotas [Sun, 21 Feb 2016 14:22:06 +0000 (06:22 -0800)]
Merge pull request #3278 from jamesqo/patch-7

Short-circuit for empty strings in string.Insert and Remove

8 years agoMerge pull request #3285 from krytarowski/netbsd-support-54
Jan Kotas [Sun, 21 Feb 2016 14:11:54 +0000 (06:11 -0800)]
Merge pull request #3285 from krytarowski/netbsd-support-54

Fix test issue on NetBSD: Walk-around getrusage(2) implementation nits

8 years agoAdd export to define environment variables
Sejong Oh [Sun, 21 Feb 2016 07:51:26 +0000 (23:51 -0800)]
Add export to define environment variables

8 years agoFix test issue on NetBSD: Walk-around getrusage(2) implementation nits
Kamil Rytarowski [Sun, 21 Feb 2016 04:36:03 +0000 (05:36 +0100)]
Fix test issue on NetBSD: Walk-around getrusage(2) implementation nits

The following code:

int main(int argc, char **argv)
{
    int i, j, k, total;
    struct rusage resUsage1, resUsage2;

    if (getrusage (RUSAGE_SELF, &resUsage1) == -1)
        errx(1, "getrusage");

    /* simulate some activity */
    for( i=0; i<1000; i++ )
    {
        for( j=0; j<1000; j++ )
        {
            total = j * i;
            for( k=0; k<1000; k++ )
            {
                total += k + i;
            }
        }
    }

    if (getrusage (RUSAGE_SELF, &resUsage2) == -1)
        errx(1, "getrusage");

    printf("kernel1 %ld.%06ld\n", resUsage1.ru_stime.tv_sec, resUsage1.ru_stime.tv_usec);
    printf("kernel2 %ld.%06ld\n", resUsage2.ru_stime.tv_sec, resUsage2.ru_stime.tv_usec);

    printf("user1 %ld.%06ld\n", resUsage1.ru_utime.tv_sec, resUsage1.ru_utime.tv_usec);
    printf("user2 %ld.%06ld\n", resUsage2.ru_utime.tv_sec, resUsage2.ru_utime.tv_usec);

    return 0;
}

Returns the following values:

$ ./test
kernel1 0.000262
kernel2 0.000000
user1 0.000262
user2 2.279965

The reason for it is as follows:

    The reason is that the scheduler keeps a precise total cpu time of
    a process but the systime/usertime is only sampled by a much slower
    clock. The ratio systime/usertime is then used to return an approximation
    so that systime and usertime sum up to the total time(*).

    As a result it is possible that usertime or systime go backwards.

    FreeBSD has implemented a workaround by remembering reported
    usertime/systime values for a process and clamping getrusage()
    against these values. As a result the usertime/systime value
    is usually too high but it is monotonic.

    Another approach would be to round down the usertime/systime values,
    by not approximating 'measurments' that do not exist. The result
    would be that usertime/systime values that are too low and don't
    sum up to the total CPU time but are again monotonic.

    The approximation is done in kern_resource/calc().
    (*) The sampled interrupt time is also included.

-- by Michael van Elst
-- http://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=30115

Walkaround it by doing kernel-work with subsequent malloc(3) and free(3) calls.
Note that doing these calls for smaller chunks (it looks like a compiler/libc
can optimize it without going to the host kernel) or just 1000 times is not
sufficient.

8 years agoShort-circuit for empty strings in Insert/Remove
James Ko [Sun, 21 Feb 2016 02:44:23 +0000 (21:44 -0500)]
Short-circuit for empty strings in Insert/Remove

8 years agoMerge pull request #3280 from jamesqo/patch-8
Jan Kotas [Sun, 21 Feb 2016 02:27:09 +0000 (18:27 -0800)]
Merge pull request #3280 from jamesqo/patch-8

Avoid string allocations in some Concat overloads

8 years agoMerge pull request #3279 from krytarowski/netbsd-support-53
Jan Kotas [Sun, 21 Feb 2016 01:01:42 +0000 (17:01 -0800)]
Merge pull request #3279 from krytarowski/netbsd-support-53

Disable not relevant tests for NetBSD: SCHED_OTHER may not be reassignable

8 years agoRemove trailing whitespace
Kamil Rytarowski [Sat, 20 Feb 2016 23:44:02 +0000 (00:44 +0100)]
Remove trailing whitespace

8 years agoAvoid string allocations in some Concat overloads
James Ko [Sat, 20 Feb 2016 23:47:24 +0000 (18:47 -0500)]
Avoid string allocations in some Concat overloads

8 years agoDisable not relevant tests for NetBSD: SCHED_OTHER may not be reassignable
Kamil Rytarowski [Sat, 20 Feb 2016 23:41:04 +0000 (00:41 +0100)]
Disable not relevant tests for NetBSD: SCHED_OTHER may not be reassignable

This addresses the following issues:

threading/GetCurrentThread/test1/paltest_getcurrentthread_test1. Exit code: 1
threading/GetCurrentThread/test2/paltest_getcurrentthread_test2. Exit code: 1
threading/GetProcessTimes/test2/paltest_getprocesstimes_test2. Exit code: 1

8 years agoMerge pull request #3265 from wtgodbe/coverage
Sergiy Kuryata [Sat, 20 Feb 2016 21:56:34 +0000 (13:56 -0800)]
Merge pull request #3265 from wtgodbe/coverage

Add option to runtest.sh to generate code coverage reports for coreclr

8 years agoMerge pull request #3262 from wtgodbe/disable
Jan Kotas [Sat, 20 Feb 2016 19:39:27 +0000 (11:39 -0800)]
Merge pull request #3262 from wtgodbe/disable

Delete poorly-written tests failing on OSX

8 years agoMerge pull request #3274 from jamesqo/patch-5
Jan Kotas [Sat, 20 Feb 2016 19:38:04 +0000 (11:38 -0800)]
Merge pull request #3274 from jamesqo/patch-5

Remove unnecessary ref parameters from String.cs

8 years agoRemove unnecessary ref parameters from String.cs
James Ko [Sat, 20 Feb 2016 17:24:02 +0000 (12:24 -0500)]
Remove unnecessary ref parameters from String.cs

For some reason, there seems to be some code in String.Split that takes ref parameters, even though they aren't actually assigned to.

This commit removes the `ref` annotations from the methods and their callers.

8 years agoMerge pull request #3221 from jamesqo/patch-5
Jan Kotas [Sat, 20 Feb 2016 16:34:38 +0000 (08:34 -0800)]
Merge pull request #3221 from jamesqo/patch-5

Optimize String.Replace when the chars are the same

8 years agoMerge pull request #3269 from JoshVarty/master
Jan Kotas [Sat, 20 Feb 2016 16:29:28 +0000 (08:29 -0800)]
Merge pull request #3269 from JoshVarty/master

Fix ecma-spec link

8 years agoMerge pull request #3273 from krytarowski/netbsd-support-52
Jan Kotas [Sat, 20 Feb 2016 16:27:46 +0000 (08:27 -0800)]
Merge pull request #3273 from krytarowski/netbsd-support-52

Disallow setting of priority for SCHED_OTHER threads on NetBSD

8 years agoDisallow setting of priority for SCHED_OTHER threads on NetBSD
Kamil Rytarowski [Sat, 20 Feb 2016 14:51:18 +0000 (15:51 +0100)]
Disallow setting of priority for SCHED_OTHER threads on NetBSD

There are 7 PAL tests that are falling down due to calling
pthread_setschedparam(3) on NetBSD.

Diving into the kernel code I have found that SCHED_OTHER does not support
setting priorities other than PRI_NONE.

        /* Disallow setting of priority for SCHED_OTHER threads */
        if (lpolicy == SCHED_OTHER && pri != PRI_NONE) {
            lwp_unlock(t);
            error = EINVAL;
            break;
        }

-- NetBSD sources sys/kern/sys_sched.c Line 167

/usr/include/sys/param.h:#define    PRI_NONE        (-1)

It looks like the same rule applies for Linux:

       SCHED_OTHER is the default universal time-sharing scheduler policy used
       by most processes, SCHED_FIFO and SCHED_RR  are  intended  for  special
       time-critical  applications  that  need precise control over the way in
       which runnable processes are selected for execution.  Processes  sched-
       uled with SCHED_OTHER must be assigned the static priority 0, processes
       scheduled under SCHED_FIFO or SCHED_RR can have a  static  priority  in
       the  range  1 to 99. Only processes with superuser privileges can get a
       ordering within the list of runnable processes with equal static prior-
       ity.

-- http://ccrma.stanford.edu/planetccrma/man/man2/sched_setscheduler.2.html

Standard says:

    The pthread_getschedparam() and pthread_setschedparam() functions shall,
    respectively, get and set the scheduling policy and parameters of individual
    threads within a multi-threaded process to be retrieved and set. For
    SCHED_FIFO and SCHED_RR, the only required member of the sched_param
    structure is the priority sched_priority. For SCHED_OTHER, the affected
    scheduling parameters are implementation-defined.

    The policy parameter may have the value SCHED_OTHER, SCHED_FIFO, or
    SCHED_RR. The scheduling parameters for the SCHED_OTHER policy are
    implementation-defined. The SCHED_FIFO and SCHED_RR policies shall have a
    single scheduling parameter, priority.

http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_getschedparam.html

The culprit code is here: src/pal/src/thread/thread.cpp Line 1276

Fix #3272

8 years agoFix misleading typo
Juergen Hoetzel [Sat, 20 Feb 2016 09:58:03 +0000 (10:58 +0100)]
Fix misleading typo

8 years agoHandle CMakeArgs correctly
Juergen Hoetzel [Fri, 19 Feb 2016 14:38:24 +0000 (15:38 +0100)]
Handle CMakeArgs correctly

CMakeArgs were not passed correctly to (included initial whitespace).
Also unquote CMakeArgs to allow us to pass multiple cmake arguments.

8 years agoMark compTypeCtxtArg as lvOnFrame
Carol Eidt [Sat, 20 Feb 2016 05:55:47 +0000 (21:55 -0800)]
Mark compTypeCtxtArg as lvOnFrame

The type context argument must be initialized to lvOnFrame if it is
not a register argument (as on x86, since it is passed after user
arguments).

8 years agoFix ecma-spec link
Josh Varty [Sat, 20 Feb 2016 05:10:15 +0000 (00:10 -0500)]
Fix ecma-spec link

8 years agoMerge pull request #2998 from ramarag/LongFileSupport
Rama krishnan Raghupathy [Sat, 20 Feb 2016 03:31:15 +0000 (19:31 -0800)]
Merge pull request #2998 from ramarag/LongFileSupport

Initial Support  for LongFile in the VM

8 years agoInlineRefactoring: start to capture failures in the inline tree
Andy Ayers [Fri, 19 Feb 2016 19:57:41 +0000 (11:57 -0800)]
InlineRefactoring: start to capture failures in the inline tree

This change starts capturing information about failed inlines in the
inline tree. Not all failures are captured yet; see below for notes.

Sample trees showing a failure:
```
Inlines into Secant:Inner(byref,byref,double,double,int,byref)
  [IL=0004 TR=000008] [FAILED: exceeds profit threshold] Secant:FF(double):double
  [IL=0023 TR=000036] [native size estimate ok] Secant:FF(double):double
```

InlineContext is revised to have 3 static constructors: one for the
root context, one for successful inlines, and one for failed inlines.
Successful inlines are always captured in the tree, since they are used
to track inline depth and recursion. Failures are only captured in
DEBUG and are just there for diagnostic purposes. The success and
failure constructors also link the new contexts into the tree at the
proper spot.

With this the jit can now capture failures for calls that were
initially identified as candidates. Top-level non-candidates are still
screened out in fgInline, and lower-level non-candidates simply aren't
seen at all by the current code. This will be addressed in a subsequent
change.

New calls can appear in the gap between caller and callee, as the code
for the two is stitched together. These are never candidates and never
given candidate screening. For now, if a new failing context is unable
to find a parent context from the IR, the code assumes the IR was
created in this gap. Down the road we may want to insist that all IR be
covered by some InlineContext (eg for improved debugging of optimized
code).

The InlineContext now also captures and prints the tree ID of the call
to make it easier to relate back to IR dumps.

8 years agoThis Change Adds initial Support for LongFiles in the VM,
Rama Krishnan Raghupathy [Fri, 19 Feb 2016 02:21:18 +0000 (18:21 -0800)]
This Change Adds initial Support for LongFiles in the VM,
They are:
1. Wrappers for OS APIs which  take or return PATHS

2. Fixing the usage of following Api's:

GetEnvironmentVariableW
SearchPathW
GetShortPathNameW
GetLongPathNameW
GetModuleFileName

Work remaining:
Remove fixed size buffers in the VM

8 years agoFix for SIMD intrinsic Initialize expansion.
Eugene Rozenfeld [Fri, 19 Feb 2016 01:46:38 +0000 (17:46 -0800)]
Fix for SIMD intrinsic Initialize expansion.

Initialize expansion was missing register zero initialization
in some cases. This caused silent bad codegen in #3208.

Closes #3208.

8 years agoMerge pull request #3257 from kyulee1/cleanbuild
Kyungwoo Lee [Sat, 20 Feb 2016 01:31:51 +0000 (17:31 -0800)]
Merge pull request #3257 from kyulee1/cleanbuild

Fix clean test build

8 years agoFixes to build CentOS CoreCLR Nuget Package
Gaurav Khanna (CLR) [Fri, 19 Feb 2016 10:20:17 +0000 (02:20 -0800)]
Fixes to build CentOS CoreCLR Nuget Package

8 years agoMerge pull request #3236 from mikedn/noinline-new
Jan Kotas [Sat, 20 Feb 2016 00:16:16 +0000 (16:16 -0800)]
Merge pull request #3236 from mikedn/noinline-new

Do not define global inline new/delete operators

8 years agoAdd option to runtest.sh to generate code coverage reports for coreclr
William Godbe [Wed, 10 Feb 2016 22:41:03 +0000 (14:41 -0800)]
Add option to runtest.sh to generate code coverage reports for coreclr

8 years agoMerge pull request #3256 from ellismg/add-rhel72-badge
Matt Ellis [Fri, 19 Feb 2016 23:43:59 +0000 (15:43 -0800)]
Merge pull request #3256 from ellismg/add-rhel72-badge

Add RHEL Badges

8 years agoMerge pull request #3264 from dotnet/revert-3253-add_pr_trigger_for_stress_test_on_ubuntu
Matt Mitchell [Fri, 19 Feb 2016 23:43:00 +0000 (15:43 -0800)]
Merge pull request #3264 from dotnet/revert-3253-add_pr_trigger_for_stress_test_on_ubuntu

Revert "Fix PR trigger for ubuntu/osx corefx testing"

8 years agoRevert "Fix PR trigger for ubuntu/osx corefx testing"
Matt Mitchell [Fri, 19 Feb 2016 23:42:21 +0000 (15:42 -0800)]
Revert "Fix PR trigger for ubuntu/osx corefx testing"

8 years agoMerge pull request #3254 from hoyMS/bug2388
Hongtao Yu [Fri, 19 Feb 2016 23:24:02 +0000 (15:24 -0800)]
Merge pull request #3254 from hoyMS/bug2388

Bug 2388 Do not transform user-implemented math intrinsics that are tail calls.

8 years agoFix clean test build
Kyungwoo Lee [Fri, 19 Feb 2016 19:06:41 +0000 (11:06 -0800)]
Fix clean test build

I often fall into a build failure like the following when passing /clean
E:\Github\coreclr\tests\runtest.proj : error MSB4057: The target "rebuild"
does not exist in the project.
runtest.proj is actually invoked in two places one from a part of
build.cmd targeting CreateTestOverlay only, and the other from
runtest.cmd, which creates wrapper and actually running the tests.
So, definining "rebuild" target that does "clean" and "build" doesn't
solve this problem.
The fix is to not target "rebuild" in the former case since we are
explicitly targeting "CreateTestOverlay" only. Instead of putting "/t:rebuild"
in the common msbuild argument, I added it to each instance except this case.

8 years agoDo not transform user-implemented math intrinsics that are tail calls
Hongtao Yu [Fri, 19 Feb 2016 17:22:12 +0000 (09:22 -0800)]
Do not transform user-implemented math intrinsics that are tail calls

Intrinsics that are not implemented directly by target instructions will be rematerialized as users calls in rationalizer. For prefixed tail calls, don't do this optimization, because
       1. Languages like F# requires a mandatory tail call optimization. A tail call converted to an intrinsic and then converted back to a call will miss out the tail call optimization.
       2. Tail call optimization may be more beneficial.

8 years agoDisable tests failing on OSX
William Godbe [Fri, 19 Feb 2016 22:06:07 +0000 (14:06 -0800)]
Disable tests failing on OSX

8 years agoAdd RHEL Badges
Matt Ellis [Fri, 19 Feb 2016 17:37:27 +0000 (09:37 -0800)]
Add RHEL Badges

The table was starting to get a little wide (so wide in fact that we had
moved away from markdown to HTML in order to be able to specify
widths).

I've pivoted the table so it grows "down" instead of "across" as we add
more platforms.  I've also unified on shields.io badges instead of the
mix of that plus the raw Jenkins badges.

8 years agoMerge pull request #3253 from sejongoh/add_pr_trigger_for_stress_test_on_ubuntu
Matt Mitchell [Fri, 19 Feb 2016 21:24:19 +0000 (13:24 -0800)]
Merge pull request #3253 from sejongoh/add_pr_trigger_for_stress_test_on_ubuntu

Fix PR trigger for ubuntu/osx corefx testing

8 years agoMerge pull request #3247 from AndyAyersMS/InlineRefactor4c
Andy Ayers [Fri, 19 Feb 2016 19:57:29 +0000 (11:57 -0800)]
Merge pull request #3247 from AndyAyersMS/InlineRefactor4c

InlineRefactoring: rename inlExpLst to InlineContext

8 years agoMerge pull request #3241 from wtgodbe/cscbench
Sergiy Kuryata [Fri, 19 Feb 2016 19:43:26 +0000 (11:43 -0800)]
Merge pull request #3241 from wtgodbe/cscbench

Stop copying of bad System.Runtime version

8 years agoMerge pull request #3250 from janvorli/fix-explicit-frames-popping-2
Sergiy Kuryata [Fri, 19 Feb 2016 18:44:16 +0000 (10:44 -0800)]
Merge pull request #3250 from janvorli/fix-explicit-frames-popping-2

Fix the explicit frames unwinding on Unix

8 years agoMerge pull request #3242 from briansull/arm64conds
Brian Sullivan [Fri, 19 Feb 2016 18:12:52 +0000 (10:12 -0800)]
Merge pull request #3242 from briansull/arm64conds

Refactor of conditional branches for the ARM architecture

8 years agoMerge pull request #3238 from tarekgh/DateTimeRefactor
Tarek Mahmoud Sayed [Fri, 19 Feb 2016 17:08:44 +0000 (09:08 -0800)]
Merge pull request #3238 from tarekgh/DateTimeRefactor

Small refactoring in DateTime comparing methods

8 years agoFix PR trigger for ubuntu/osx corefx testing
Sejong Oh [Fri, 19 Feb 2016 13:00:27 +0000 (05:00 -0800)]
Fix PR trigger for ubuntu/osx corefx testing

8 years agoFix the explicit frames unwinding on Unix
Jan Vorlicek [Thu, 18 Feb 2016 22:36:43 +0000 (23:36 +0100)]
Fix the explicit frames unwinding on Unix

This change fixes a problem when exception unwinds native frames of code that contains
explicit frames. There were two issues. First, the destructor of the explicit frame
base class Frame that was responsible for popping the frames was missing switch to
GC cooperative mode and so it could pop frames that GC was currently walking.
And second, after adding the switch to cooperative mode, it turned out that if a
thread gets blocked in the Frame destructor due to GC and the stack walker tries to
get stack cookie from FrameWithCookie wrapper of a class derived from the Frame,
it fails since the vtable pointer was already reset to the vtable of the base Frame
class and it detects that as an invalid case.

The fix was to add destructors to all final classes derived from Frame and perform
the frame popping from there.

8 years agoMerge pull request #3243 from LLITCHEV/structDesc-clone
Lubomir Litchev [Fri, 19 Feb 2016 07:47:11 +0000 (23:47 -0800)]
Merge pull request #3243 from LLITCHEV/structDesc-clone

Added code to clone the structDesc member of GT_CALL.

8 years agoMerge pull request #3135 from CarolEidt/x86VirtualStubDirect
Carol Eidt [Fri, 19 Feb 2016 05:33:20 +0000 (21:33 -0800)]
Merge pull request #3135 from CarolEidt/x86VirtualStubDirect

Enable Virtual Stub calls that are direct for x86

8 years agoAdded code to clone the structDesc member of GT_CALL.
Lubomir Litchev [Fri, 19 Feb 2016 00:22:36 +0000 (16:22 -0800)]
Added code to clone the structDesc member of GT_CALL.

Adds code to clone the structDesc member of GT_CALL. It modifies the
importer to get the structDesc directly in this field, instead of using a
separate local and eliminates the obsolete SetRegisterReturningStructState
method of GenTreeCall.

Fixes 3239.

8 years agoInlineRefactor: rename inlExpLst to InlineContext
Andy Ayers [Thu, 18 Feb 2016 23:28:08 +0000 (15:28 -0800)]
InlineRefactor: rename inlExpLst to InlineContext

Rename inlExpLst to InlineContext, and move the code for it into
the inlining files. Expand the context to capture the observation
leading to success. Defer generating the method names until the
context is dumped to avoid unnecessary debug/check allocations.

Make sure observation field on GenTreeCall is properly initialized
and copied, and give it the right type via an opaque forward
declaration.

8 years agoMerge pull request #3237 from AndyAyersMS/InlineRefactor4b
Andy Ayers [Fri, 19 Feb 2016 03:29:21 +0000 (19:29 -0800)]
Merge pull request #3237 from AndyAyersMS/InlineRefactor4b

Inline refactoring: capture failing observation for non-candidates

8 years agoMade the changes suggested fromn code reviewers
Brian Sullivan [Fri, 19 Feb 2016 02:34:44 +0000 (18:34 -0800)]
Made the changes suggested fromn code reviewers

8 years agostop copying of bad System.Runtime version
William Godbe [Thu, 18 Feb 2016 23:51:38 +0000 (15:51 -0800)]
stop copying of bad System.Runtime version

8 years agoAdded enum CompareKind as input to genJumpKindForOper()
Brian Sullivan [Thu, 18 Feb 2016 23:33:54 +0000 (15:33 -0800)]
Added enum CompareKind as input to genJumpKindForOper()

Record the result of genJumpKindForOper() in a local before generating the jump instruction
Added support for using Logical instructions with genJumpKindForOper()

8 years agoInline refactoring: capture failing observation for non-candidates
Andy Ayers [Thu, 18 Feb 2016 20:48:37 +0000 (12:48 -0800)]
Inline refactoring: capture failing observation for non-candidates

Refactor the InlineResult to take a `GenTreeCall` instead of artifacts
derived from the call. Use this to decorate the call (in DEBUG) if
an inline fails with the observation that lead to the failure. Move
this constructor out of the header since we now need it to invoke
methods on types that are header-opaque.

Try and pick this reason up later on when non-candidate call sites are
encountered during inlining.

Introduce a second constructor for the pre-jit use case, where we are
evaulating a method to see if we can mark it as never inline to save
work in any subsequent compilation. Put this into the cpp file too for
symmetry.

Type the backing field in GenTreeCall as unsigned to avoid creating
more deeply entangled include circularities. Happy to reconsider if
this seems ill-advised.

Reword a few more uses of inlinee to callee (similarly inliner to
caller). Make `inlIsValidObservation` globally visible and enable
a prior commented-out assert.

8 years agoEnable Virtual Stub calls that are direct for x86
Carol Eidt [Thu, 11 Feb 2016 18:39:36 +0000 (10:39 -0800)]
Enable Virtual Stub calls that are direct for x86

On x86, direct virtual stub calls must be done with a relative address, NOT through a register.

8 years agoSmall refactoring in DateTime comparing methods
Tarek Mahmoud Sayed [Thu, 18 Feb 2016 22:19:09 +0000 (14:19 -0800)]
Small refactoring in DateTime comparing methods

8 years agoDo not define global inline new/delete operators
Mike Danes [Thu, 18 Feb 2016 21:42:35 +0000 (23:42 +0200)]
Do not define global inline new/delete operators

VS2015 Update 2 generates C4595 for such code and the build fails due to /WX

8 years agoMerge pull request #3229 from AndyAyersMS/InlineRefactor4a
Andy Ayers [Thu, 18 Feb 2016 21:34:09 +0000 (13:34 -0800)]
Merge pull request #3229 from AndyAyersMS/InlineRefactor4a

Inline refactoring: add candidate observations

8 years agoMerge pull request #3219 from adityamandaleeka/twowaypipe_cleanup
Aditya Mandaleeka [Thu, 18 Feb 2016 20:45:45 +0000 (12:45 -0800)]
Merge pull request #3219 from adityamandaleeka/twowaypipe_cleanup

Clean up Unix twowaypipe code

8 years agoMerge pull request #3222 from richardlford/testswithrefs0216
Richard L Ford [Thu, 18 Feb 2016 20:43:09 +0000 (12:43 -0800)]
Merge pull request #3222 from richardlford/testswithrefs0216

Port desktop tests that had references

8 years agoMerge pull request #3231 from ellismg/add-back-push-triggers
Matt Ellis [Thu, 18 Feb 2016 20:07:26 +0000 (12:07 -0800)]
Merge pull request #3231 from ellismg/add-back-push-triggers

Add back push triggers

8 years agoMerge pull request #3230 from jkotas/jitee-cleanup
Jan Kotas [Thu, 18 Feb 2016 19:31:19 +0000 (11:31 -0800)]
Merge pull request #3230 from jkotas/jitee-cleanup

Delete NetCF quirk and MDIL generation support from RyuJIT and JIT-EE interface

8 years agoDelete 'do not port' test, add non-windows exclusions
Richard L Ford [Thu, 18 Feb 2016 19:14:30 +0000 (11:14 -0800)]
Delete 'do not port' test, add non-windows exclusions

8 years agoAdd back push triggers
Matt Ellis [Thu, 18 Feb 2016 18:54:42 +0000 (10:54 -0800)]
Add back push triggers

Do {debug|checked|release} builds for all platforms on push. Upstack
projects (e.g CoreFX) take some of these as inputs and we use the
results in building out the badge links.

For the jobs which have flow's, just build the folow (which will trigger
the non flow builds).

8 years agoDelete unused files
Jan Kotas [Thu, 18 Feb 2016 17:27:35 +0000 (09:27 -0800)]
Delete unused files

8 years agoDelete MDIL generation support from JIT-EE interface
Jan Kotas [Thu, 18 Feb 2016 17:21:04 +0000 (09:21 -0800)]
Delete MDIL generation support from JIT-EE interface

8 years agoMerge pull request #3224 from gkhanna79/UpdateNugetPkg
Gaurav Khanna [Thu, 18 Feb 2016 17:59:41 +0000 (08:59 -0900)]
Merge pull request #3224 from gkhanna79/UpdateNugetPkg

Update CoreCLR Nuget package

8 years agoDelete NetCF quirks from RyuJIT
Jan Kotas [Thu, 18 Feb 2016 17:17:52 +0000 (09:17 -0800)]
Delete NetCF quirks from RyuJIT

8 years agoInline refactoring: add candidate observations
Andy Ayers [Wed, 17 Feb 2016 20:46:29 +0000 (12:46 -0800)]
Inline refactoring: add candidate observations

Add candidate observations and update the InlineResult to hold
onto the observation rather than the reason string.

8 years agoMerge pull request #3196 from AndyAyersMS/InlineRefactor4
Andy Ayers [Thu, 18 Feb 2016 16:43:15 +0000 (08:43 -0800)]
Merge pull request #3196 from AndyAyersMS/InlineRefactor4

Inline refactoring: header cleanup and some renaming

8 years agoUpdate CoreCLR Nuget package version to be 1.0.2.
Gaurav Khanna [Thu, 18 Feb 2016 04:53:59 +0000 (20:53 -0800)]
Update CoreCLR Nuget package version to be 1.0.2.

8 years agoMerge pull request #3191 from manu-silicon/absolute_path
Jan Vorlicek [Thu, 18 Feb 2016 09:23:10 +0000 (10:23 +0100)]
Merge pull request #3191 from manu-silicon/absolute_path

Fix absolute path on Linux

8 years agoFix typo in genXplatEventing.py.
Aditya Mandaleeka [Thu, 18 Feb 2016 02:35:13 +0000 (18:35 -0800)]
Fix typo in genXplatEventing.py.

8 years agoUse pal.h directly in Unix twowaypipe code and remove windefs.h.
Aditya Mandaleeka [Thu, 18 Feb 2016 00:56:28 +0000 (16:56 -0800)]
Use pal.h directly in Unix twowaypipe code and remove windefs.h.

8 years agoPort desktop tests that had references
Richard L Ford [Tue, 16 Feb 2016 23:13:32 +0000 (15:13 -0800)]
Port desktop tests that had references

This change ports desktop tests that had references to dlls.
It also fixes some of the dll project files.
In addition there are some additional tests that were not
previously ported (but that do not reference dlls).

There are 4 tests that are excluded because of issue #3216.

8 years agoMerge pull request #3218 from sergiy-k/niimageloading
Jan Kotas [Thu, 18 Feb 2016 04:06:07 +0000 (20:06 -0800)]
Merge pull request #3218 from sergiy-k/niimageloading

Change MAPMapPEFile to use ExecutableAllcator instead of mmap to reserve VA

8 years agoMerge pull request #3220 from dotnet-bot/from-tfs
Jan Kotas [Thu, 18 Feb 2016 04:04:15 +0000 (20:04 -0800)]
Merge pull request #3220 from dotnet-bot/from-tfs

Merge changes from TFS

8 years agoOptimize String.Replace when the chars are the same
James Ko [Thu, 18 Feb 2016 03:41:42 +0000 (22:41 -0500)]
Optimize String.Replace when the chars are the same

8 years agoport fix for pad ratio
Maoni Stephens [Thu, 18 Feb 2016 02:34:21 +0000 (18:34 -0800)]
port fix for pad ratio

[tfs-changeset: 1576135]

8 years agoRefactor the Conditional branches on Arm to match the Arm condition codes
Brian Sullivan [Thu, 18 Feb 2016 02:03:17 +0000 (18:03 -0800)]
Refactor the Conditional branches on Arm to match the Arm condition codes

Updated the enum emitJumpKInd to use Arm condition codes rather than x86 conditional branches
This change  impacts the Arm32 JIT and verified to have no asm diffs using the for Arm32

Implemented and tested for Arm64 the full set of ordered and unordered floating point branches
Implemented and tested for Arm64 genSetRegToCond for ordered and unordered floating point compares
On Arm64 we now use the genJumpKIndsForTree to return up to two conditional branches for floating point compares

Cleanup we now use genJumpKindForOper to select conditional branches and prefer
 using isUnsigned=false for creating branches for GT_EQ and GT_NE

 Removed the unused fourth 'condcode' portion of the JMP_SMALL macro and
 the fourth column from the Arm/ARm64 part of "emitjmps.cpp"

 Unified Arm32 and Arm64 conditionals in "emitjmps.cpp"
 Reordered the Arm32 and Arm64 conditionals in "emitjmps.cpp" to matchthe ARMV8 docs