Kyungwoo Lee [Thu, 12 May 2016 04:48:40 +0000 (21:48 -0700)]
ARM64: Switch Expansion Using Jump Table
Fixes #3332
To validate various addressing in #4896, I just enable this.
Previously, we only allow a load operation to JIT data (`ldr` or
`IF_LARGELDC`).
For switch expansion, jump table is also recorded into JIT data.
In this case, we only get the address of jump table head, and
load the right entry after computing offset. So, basically `adr` or
`IF_LARGEADR` is used to not only load label within code but also refer to
the location of JIT data.
The typical code sequence for switch expansion is like this:
```
adr x8, [@RWD00] // load address of jump table head
ldr w8, [x8, x0, LSL #2] // load jump entry from table addr + x0 * 4
adr x9, [G_M56320_IG02] // load address of current baisc block
add x8, x8, x9 // Add them to compute the final target
br x8 // Indirectly jump to the target
```
Kyungwoo Lee [Thu, 12 May 2016 04:37:47 +0000 (21:37 -0700)]
Merge pull request #4896 from kyulee1/longjmp
ARM64: Enable Long Address
Pat Gavlin [Thu, 12 May 2016 04:21:47 +0000 (21:21 -0700)]
Merge pull request #4920 from pgavlin/JitStandaloneDefs
Remove the use of `CROSSGEN_COMPILE` in jitconfigvalues.h.
Kyungwoo Lee [Fri, 6 May 2016 15:11:08 +0000 (08:11 -0700)]
ARM64: Enable Long Address
Fixes https://github.com/dotnet/coreclr/issues/3668
Currently ARM64 codegen can have reference within +/-1 MB due to encoding
restriction in `b<cond>/adr/ldr` instructions. This is normally okay
assuming each function is reasonably small, but certainly not working for large method which also
can be formed with an aggressive inlining probably like crossgen/corert scenarios.
In addition, for hot/cold code separation long address is a prerequisite
since reference can be across different regions which are arbitrary.
In fact, we need additional relocations which are not in this change yet.
In details, this supports long address for conditional jump/address loading/constant
loading operations by default while they can be shortened later by
`emitJumpDistBind()` if they can fit into the smaller encoding. Logically
those operations now can reach within +/-4GB address range.
Note I haven't extended unconditional jump in this change for simplicity
so it can reach within +/-128MB same as before.
`emitOutputLJ` is extended to finally encode these operations.
There are 3 pseudo instructions introduced. These can be expanded either
short/long form.
1. Conditional jump. See `emitIns_J()`
a. Short form(`IF_BI_0B`): `b<cond> rel_addr`
b. Long form(`IF_LARGEJMP`):
```
b<rev cond> $LABEL
b rel_addr (unconditional jump)
$LABEL:
```
2. Load label(address computation). See `emitIns_R_L()`
a. Short form(`IF_DI_1E`): `adr x, [rel_addr]`
b. Long form(`IF_LARGEADR`):
```
adrp x, [rel_page_addr]
add x, x, page_offs
```
3. Load constant (from JIT data). See `emitIns_R_C()`
a. Short form(`IF_LS_1A`): `ldr x, [rel_addr]`
b. Long form(`IF_LARGLDC`):
```
adrp x, [rel_page_addr]
ldr x, [x, page_offs]
(fmov v, x in case loading vector constant)
```
In addition, JIT data is aligned on 8 byte to be accessible from large
load. Replaced JitLargeBranches by JitLongAddress to test stress on these
operations.
Lubomir Litchev [Thu, 12 May 2016 02:10:31 +0000 (19:10 -0700)]
Merge pull request #4917 from LLITCHEV/Issue2329
Increase timeout for GCStress jobs. Set the gcstress15_pri1r2r to be a
Pat Gavlin [Wed, 11 May 2016 22:18:54 +0000 (15:18 -0700)]
Remove the use of `CROSSGEN_COMPILE` in jitconfigvalues.h.
This symbol was previously used to ensure that noway failures did not trigger
debugger breaks when running non-release builds of the JIT in crossgen on the
desktop CLR. We believe that this behavior is no longer necessary nor desirable.
Bruce Forstall [Wed, 11 May 2016 22:23:37 +0000 (15:23 -0700)]
Merge pull request #4916 from BruceForstall/TweakLongs
Small tweaks to RyuJIT/x86 LONG handling
Lubomir Litchev [Wed, 11 May 2016 18:46:31 +0000 (11:46 -0700)]
Increase timeout for GCStress jobs. Set the gcstress15_pri1r2r to be a
GCStress job.
Rama krishnan Raghupathy [Wed, 11 May 2016 21:15:11 +0000 (14:15 -0700)]
Merge pull request #4809 from ramarag/ZapUnwindInfo
[Arm64]: Implement GetUnwindDataBlob
Bruce Forstall [Wed, 11 May 2016 18:39:04 +0000 (11:39 -0700)]
Merge pull request #1241 from mikedn/modopt
Extend the DIV/MOD dividend into RDX:RAX only if needed
Geoff Kizer [Wed, 11 May 2016 18:29:50 +0000 (11:29 -0700)]
Merge pull request #4762 from geoffkizer/ecsopt
Optimize async invocation
Carol Eidt [Wed, 11 May 2016 18:21:07 +0000 (11:21 -0700)]
Merge pull request #4848 from mikedn/lsra-counts
Remove unnecessary LSRA members
Bruce Forstall [Wed, 11 May 2016 17:35:47 +0000 (10:35 -0700)]
Small tweaks to RyuJIT/x86 LONG handling
1. Display GT_LONG trees in JitDump as gt_long, not just "long". This
helps distinguish them from the pervasive "long" type, making them easier
to see and search for.
2. Change the "hi" operator GT_* node definition to not include GTK_EXOP.
3. Dump the lva table after lvaPromoteLongVars().
Wes Haggard [Wed, 11 May 2016 17:22:29 +0000 (10:22 -0700)]
Merge pull request #4890 from AlexGhiondea/BuildRefAssemblyPerTargetOS
Fix the reference assembly for mscorlib to match the surface area of the OS
Bruce Forstall [Wed, 11 May 2016 17:13:06 +0000 (10:13 -0700)]
Merge pull request #4903 from BruceForstall/MoveToLegacy
Move some LEGACY_BACKEND code to codegenlegacy.cpp
Bruce Forstall [Wed, 11 May 2016 17:12:39 +0000 (10:12 -0700)]
Merge pull request #4900 from BruceForstall/PartialFix4817c
Fix kill set of rep stos to include ECX
tijoytom [Wed, 11 May 2016 16:57:46 +0000 (09:57 -0700)]
Merge pull request #4895 from tijoytom/master
Cleaning up a bunch of warnings.
Jan Kotas [Wed, 11 May 2016 11:17:04 +0000 (04:17 -0700)]
Merge pull request #4898 from dotnet-bot/from-tfs
Merge changes from TFS
Geunsik Lim [Wed, 11 May 2016 08:44:36 +0000 (17:44 +0900)]
Linux/ARM: Use -O1 level to avoid segfault in release-build for Linux/ARM (#4904)
We cannot still run 'hello world' console application even though
the cross compilation of CoreCLR is successfully completed.
In release-build, the segmentation fault of 'hello world'
is made by the misalignment of thread local storage (TLS) section
because of the aggressive optimization level of clang compiler for
code optimization(e.g., file size and execution speed).
It means that Clang/LLVM has a bug in case of the usage of O2/O3 flag.
Below is the major difference among the optimization levels of Clang.
* -O2 is based on -O1:
.adding: -gvn -constmerge -globaldce -slp-vectorizer -mldst-motion -inline
.removing: -always-inline
* -O3 is based on -O2:
.adding: -argpromotion
ver2:
- Corerun is loading 'libcoreclr.so' using dlopen() library call. So, we can not
use initial-exec TLS model (ver1) because of the thread-safe issue of
the multi-threaded. (Reported by @janvorli)
- In the release-build, Let's replace -O3 with -O1 to avoid the segmentation
fault due to the aggressive optimization level of the Clang until fixing
the bug of the Clang/LLVM.
ver1:
- The default value of clang is "global-dynamic". However, the thread-local
storage (TLS) model of Clang/LLVM does not guarantee the normal execution
of TLS's symbol relocation due to the misaligned __tls_get_addr symbol in
case of the aggressive optimizations of Clang on Linux/ARM.
- Let's enable initial-exec TLS model instead of the dynamic TLS model.
Signed-off-by: Geunsik Lim <geunsik.lim@samsung.com>
CC: Jan Kotas <jkotas@microsoft.com>
CC: Jan Vorlicek <janvorli@microsoft.com>
geoffkizer [Thu, 11 Feb 2016 19:44:19 +0000 (11:44 -0800)]
Improve performance of ExecutionContextSwitcher to help async invocation perf
Rama Krishnan Raghupathy [Thu, 5 May 2016 22:45:22 +0000 (15:45 -0700)]
[Arm64]: Implement GetUnwindDataBlob
Bruce Forstall [Wed, 11 May 2016 00:33:09 +0000 (17:33 -0700)]
Move some LEGACY_BACKEND code from codegencommon.cpp to codegenlegacy.cpp
And, move some header file changes from codegen.h to codegenclassic.h.
The code moved were whole functions with no apparent tight coupling with
other code already in codegencommon.cpp.
The code moved had some #ifndef LEGACY_BACKEND portions, no longer
needed, removed.
Jan Vorlicek [Wed, 11 May 2016 00:15:45 +0000 (02:15 +0200)]
Change hosting API string encoding to UTF-8 on Windows (#4894)
This change fixes a problem with the string encoding in the hosting API
using CP_ACP, which causes problem when the input is a string in other
language than the current Windows one. In such case, it loses some
characters.
The fix is to use UTF-8 encoding (which is what CP_ACP means on Unix
PAL too).
Bruce Forstall [Tue, 10 May 2016 23:43:55 +0000 (16:43 -0700)]
Fix kill set of rep stos to include ECX
There was a very strange condition in the existing code to only
conditionally include ECX in the kill set. I convinced myself that
for AMD64, this condition always holds in this code path (which
makes a lot more sense anyway), so I removed the condition, and
also made all this code execute for x86 as well.
Fixes #4817
Jan Kotas [Tue, 10 May 2016 23:26:42 +0000 (16:26 -0700)]
Fix razzle build breaks
[tfs-changeset: 1603547]
Alex Ghiondea [Tue, 10 May 2016 21:53:35 +0000 (14:53 -0700)]
Build the reference assembly and the facade for mscorlib.
Make sure that the facade projects generates pdbs when possible.
Alex Ghiondea [Tue, 10 May 2016 19:46:55 +0000 (12:46 -0700)]
Create a Nuget package that will contain the reference assembly for mscorlib.
tijoytk [Tue, 10 May 2016 22:19:24 +0000 (15:19 -0700)]
Cleaning up a bunch of warnings.
Alex Ghiondea [Tue, 10 May 2016 18:21:17 +0000 (11:21 -0700)]
Fix the reference assembly for mscorlib to match the surface area of the OS on which it builds.
Bruce Forstall [Tue, 10 May 2016 21:51:44 +0000 (14:51 -0700)]
Merge pull request #4891 from BruceForstall/PartialFix4817
Block ops using rep on x86 need to kill edi/esi/ecx, same as x64
Andy Ayers [Tue, 10 May 2016 20:54:13 +0000 (13:54 -0700)]
Merge pull request #4878 from AndyAyersMS/AddMissingBenchmarkAttrs
Add missing xunit performance attributes
Bruce Forstall [Tue, 10 May 2016 18:52:30 +0000 (11:52 -0700)]
Block ops using rep on x86 need to kill edi/esi/ecx, same as x64
AlexGhiondea [Tue, 10 May 2016 18:36:05 +0000 (11:36 -0700)]
Merge pull request #4833 from AlexGhiondea/StringBuilderFixes
Improve detection of error condition when using StringBuilder
Mike Danes [Mon, 9 May 2016 22:01:12 +0000 (01:01 +0300)]
Optimize integer div/mod by const power of 2 in lowering
Optimizing GT_DIV/GT_UDIV/GT_MOD/GT_UMOD by power of 2 in codegen is problematic because the xarch DIV instruction has special register requirements. By the time codegen decides to perform the optimization the rax and rdx registers have been already allocated by LSRA even though they're not always needed (as it happens in the case of unsigned division where CDQ isn't used).
Since the JIT can't represent a CDQ instruction in its IR an arithmetic shift (GT_RSH) has been instead to extract the dividend sign. xarch's SAR is larger than CDQ but it has the advantage that it doesn't require specific registers. Also, arithmetic shifts are available on architectures other than xarch.
Example: method "static int foo(int x) => x / 8;" is now compiled to
mov eax, ecx
mov edx, eax
sar edx, 31
and edx, 7
add edx, eax
mov eax, edx
sar eax, 3
instead of
mov eax, ecx
cdq
and edx, 7
add eax, edx
sar eax, 3
As a side-effect of this change the optimization now also works when the divisor is too large to be contained. Previously this wasn't possible because the divisor constant needed to be modified during codegen but the constant was already loaded into a register.
Example: method "static ulong foo(ulong x) => x /
4294967296;" is now compiled to
mov rax, rcx
shr rax, 32
whereas before a DIV instruction was used.
This change also fixes an issue in fgShouldUseMagicNumberDivide. The optimization that is done in lower can handle negative power of 2 divisors but fgShouldUseMagicNumberDivide handled those cases because it didn't check the absolute value of the divisor.
Example: method "static int foo(int x) => return x / -2;" is now compiled to
mov eax, ecx
mov edx, eax
shr edx, 31
add edx, eax
sar edx, 1
mov eax, edx
neg eax
instead of
mov eax, 0x7FFFFFFF
imul edx:eax, ecx
mov eax, edx
sub eax, ecx
mov edx, eax
shr edx, 31
add eax, edx
tijoytom [Tue, 10 May 2016 17:33:36 +0000 (10:33 -0700)]
Merge pull request #4793 from tijoytom/master
UTF8 Marshaling support(UnmanagedType.LPUTF8Str)
Hugh Bellamy [Tue, 10 May 2016 14:52:05 +0000 (15:52 +0100)]
Fix ArgumentNullException messages passed as parameter names (#2889)
Fixed several ArgumentNullExceptions that throw with the message as the parameter name, leading to potential confusion for developers.
Jonghyun Park [Tue, 10 May 2016 14:51:26 +0000 (23:51 +0900)]
Adjust relative offsets in UMThunkStub (#4888)
* Adjust relative offsets in UMThunkStub
This commit updates the relative offsets inside UMThunkStub according to the recent changes in
UMThunkStub (for stack unwinding).
* Uses 'UMThunkStub_StackArgsSize' instead of 'UMThunkStub_StackArgsOffset'
This commit revises 'UM2MThunk_WrapperHelper' to use 'UMThunkStub_StackArgsSize'
instead of 'UMThunkStub_StackArgsOffset'.
Jan Kotas [Tue, 10 May 2016 13:34:17 +0000 (06:34 -0700)]
Merge pull request #4713 from myungjoo/fix/4712
Match Inconsistent CMake/MSBuild Compiler Definitions 2
Jan Kotas [Tue, 10 May 2016 13:15:00 +0000 (06:15 -0700)]
Merge pull request #4870 from RussKeldorph/illicense
Update license header in most .il files.
Jan Kotas [Tue, 10 May 2016 13:10:55 +0000 (06:10 -0700)]
Merge pull request #4886 from dotnet-bot/from-tfs
Merge changes from TFS
Valery [Tue, 10 May 2016 12:57:47 +0000 (15:57 +0300)]
Fixed typo in jitinterface.cpp (#4889)
John Chen [Tue, 10 May 2016 06:20:49 +0000 (23:20 -0700)]
Merge pull request #4883 from JohnChen0/r2r
Fix CrossGen to skip some methods that require generic dictionary
John Chen [Tue, 10 May 2016 06:19:56 +0000 (23:19 -0700)]
Merge pull request #4829 from JohnChen0/master
Increase a test timeout
Jan Kotas [Tue, 10 May 2016 05:58:01 +0000 (22:58 -0700)]
JIT-EE interface changes to support CoreRT
- Add flags and constants for reverse PInvoke transitions (https://github.com/dotnet/corert/issues/611)
- Add new multi-dim array constructor that does not use varargs
[tfs-changeset: 1603336]
Matt Ellis [Tue, 10 May 2016 05:33:20 +0000 (22:33 -0700)]
Fix call to GetSortHandle (#4882)
GlobalizationNatvie_GetSortHandle takes a UTF8 encoded string for the
locale name we want to construct a handle to, which is passed to ICU to
open some locale data.
We converted the UTF-16 encoded locale name to UTF8 in managed code, but
neglected to actually ensure the resulting value was null terminated.
Fixes #4784
Bruce Forstall [Tue, 10 May 2016 04:05:35 +0000 (21:05 -0700)]
Merge pull request #4865 from BruceForstall/JitDumpAssertPtrs
Don't print pointers to the JitDump
Andy Ayers [Tue, 10 May 2016 01:44:14 +0000 (18:44 -0700)]
Add missing xunit performance attributes
We were not getting instructions retired data for these benchmarks
because the attribute to trigger measurement was missing.
AlexGhiondea [Tue, 10 May 2016 01:33:32 +0000 (18:33 -0700)]
Merge pull request #4866 from AlexGhiondea/mscorlibUpdates
Create facade and reference assembly for mscorlib.
Andy Ayers [Tue, 10 May 2016 01:05:36 +0000 (18:05 -0700)]
Merge pull request #4867 from AndyAyersMS/FixBenchmarkNames
Fix class names for benchmarks
Rahul Kumar [Tue, 10 May 2016 01:04:29 +0000 (18:04 -0700)]
Merge pull request #4864 from dotnet-bot/from-tfs
Merge changes from TFS
John Chen (CLR) [Mon, 9 May 2016 23:38:54 +0000 (16:38 -0700)]
Fix CrossGen to skip some methods that require generic dictionary
Resolves issue #4801.
tijoytk [Mon, 9 May 2016 23:23:52 +0000 (16:23 -0700)]
Taking care of review comments.
Let out some of the review comments
since they are optimizations.
Mike Danes [Sat, 14 Nov 2015 08:46:20 +0000 (10:46 +0200)]
Add tests for integer div/mod by const
Russ Keldorph [Mon, 9 May 2016 21:25:36 +0000 (14:25 -0700)]
Update license header in most .il files.
Andy Ayers [Mon, 9 May 2016 20:21:07 +0000 (13:21 -0700)]
Fix class names for benchmarks
Fix a couple of class names for benchmarks so they more accurately
describe the benchmark.
Russ Keldorph [Mon, 9 May 2016 20:19:32 +0000 (13:19 -0700)]
Merge pull request #4862 from RussKeldorph/pending3
Fix conv_ovf_i8_i test
Alex Ghiondea [Mon, 9 May 2016 20:03:14 +0000 (13:03 -0700)]
Create the project that will generate the facade project
Alex Ghiondea [Fri, 6 May 2016 20:35:15 +0000 (13:35 -0700)]
Create a reference assembly for mscorlib
Bruce Forstall [Mon, 9 May 2016 20:03:50 +0000 (13:03 -0700)]
Don't print pointers to the JitDump; output the assertion bitvector as a string.
Carol Eidt [Mon, 9 May 2016 19:50:51 +0000 (12:50 -0700)]
Merge pull request #4852 from mikedn/lsra-reftype
Define LSRA's RefType enum via macros
Jan Vorlicek [Mon, 9 May 2016 19:09:55 +0000 (21:09 +0200)]
Let all signals be unblocked on Unix (#4863)
This change removes blocking of all of the 17 signals that we were
blocking. I have looked at the default behavior of their handlers
and we should be fine with it.
Jeremy Kuhne [Mon, 9 May 2016 18:50:47 +0000 (11:50 -0700)]
Fix desktop build break.
[tfs-changeset: 1603043]
John Chen (CLR) [Fri, 6 May 2016 17:26:46 +0000 (10:26 -0700)]
Increase a test timeout
Test case tests/src/GC/Regressions/v2.0-beta2/462651 occasionally fails
due to time out (see issue #3691). Mark it with IsLongRunningGCTest.
AlexGhiondea [Mon, 9 May 2016 17:28:44 +0000 (10:28 -0700)]
Merge pull request #4828 from AlexGhiondea/systemprivatecorelib
Create System.Private.CoreLib assembly
Rahul Kumar [Mon, 9 May 2016 17:26:50 +0000 (10:26 -0700)]
Merge pull request #4837 from rahku/crossgen
Helpers for ReadyToRun
Rahul Kumar [Thu, 5 May 2016 22:53:07 +0000 (15:53 -0700)]
[Arm64] Helpers for ReadyToRun
Mike Danes [Sun, 8 May 2016 17:41:31 +0000 (20:41 +0300)]
Define LSRA's RefType enum via macros
Russ Keldorph [Fri, 6 May 2016 23:27:37 +0000 (16:27 -0700)]
Fix conv_ovf_i8_i test
Test has at least four problems:
- It assumes native int = int32, so disable it for 64-bit
- It is just wrong in a couple of its assumptions about when overflow
happens during unsigned conversions.
- On success, it returns 0xAAAA instead of the commonly accepted 100
- It has no copyright header
Also piggybacking a copyright fix for rem_r4.il that I missed earlier
Gaurav Khanna [Mon, 9 May 2016 14:36:36 +0000 (07:36 -0700)]
Merge pull request #4834 from gkhanna79/RemoveSxSJIT
Cleanup sxsJitStartup from codemanager
Davis Goodin [Mon, 9 May 2016 13:20:55 +0000 (08:20 -0500)]
Fix incremental build restore: move generated test_runtime project.json to bin (#4764)
* Move generated test_runtime project.json to bin.
* Update helix tasks to point to moved test_runtime files.
* Remove unnecessary TestRuntimeDependenciesJson property.
Jonghyun Park [Mon, 9 May 2016 09:46:10 +0000 (18:46 +0900)]
Do NOT overwrite the stack frame pointer (#4857)
CallEHFunclet currently overwrite the stack frame pointer (R7) while
recovering the registers.
This commit revises CallEHFunclet not to overwrite R7 when recoverint
the registers.
MyungJoo Ham [Mon, 9 May 2016 06:55:46 +0000 (15:55 +0900)]
Linux/ARM: fix stack alignment breaks (#4858)
ehhelper.S: the function no more requires dummy stack add.
memcpy.S: C_FUNC(memcpy) has misaligned stack.
(memcpy.S is not directly related with the issue #4779.
However, this requires the same fix with ehhelper.S)
Fix #4779
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Russ Keldorph [Mon, 9 May 2016 04:44:05 +0000 (21:44 -0700)]
Merge pull request #4845 from RussKeldorph/pending
Fix some tests where the only problem was incorrect retval
Lubomir Litchev [Mon, 9 May 2016 01:08:08 +0000 (18:08 -0700)]
Update unix-test-instructions.md
Updated run coreclr tests instructions for Linux. Included the new semicolon separated paths for the coreFxBinDir.
Russ Keldorph [Fri, 6 May 2016 23:27:37 +0000 (16:27 -0700)]
Fix some tests where the only problem was incorrect retval
The following tests return values other than 100 on success. Modify the
harness to expect the values that they return:
```
JIT\jit64\regress\vsw\102754\test1\test1.cmd
JIT\Regression\CLR-x86-JIT\V1-M09\b16102\b16102\b16102.cmd
```
The following test is identical to `test1` in the same directory. Delete
it.
```
JIT\jit64\regress\vsw\102754\test2\test2.cmd
```
`rem_r4` returns a non-Unix-compatible 0xAAAA (>255). Change it to the
standard 100.
```
JIT\IL_Conformance\Old\Conformance_Base\rem_r4\rem_r4.cmd
```
The following were using the non-functional Environment.ExitCode.
Switched to Environment.Exit(Environment.ExitCode):
```
JIT\Methodical\switch\switch1\switch1.cmd
JIT\Methodical\switch\switch10\switch10.cmd
JIT\Methodical\switch\switch11\switch11.cmd
JIT\Methodical\switch\switch2\switch2.cmd
JIT\Methodical\switch\switch3\switch3.cmd
JIT\Methodical\switch\switch4\switch4.cmd
JIT\Methodical\switch\switch5\switch5.cmd
JIT\Methodical\switch\switch6\switch6.cmd
JIT\Methodical\switch\switch7\switch7.cmd
JIT\Methodical\switch\switch8\switch8.cmd
JIT\Methodical\switch\switch9\switch9.cmd
JIT\Methodical\tailcall\_il_dbgrecurse_ep_void\_il_dbgrecurse_ep_void.cmd
JIT\Methodical\tailcall\_il_dbgtest_void\_il_dbgtest_void.cmd
JIT\Methodical\tailcall\_il_relrecurse_ep_void\_il_relrecurse_ep_void.cmd
JIT\Methodical\tailcall\_il_reltest_void\_il_reltest_void.cmd
JIT\Regression\CLR-x86-JIT\V1-M12-Beta2\b65423\b65423\b65423.cmd
JIT\Regression\CLR-x86-JIT\V1.2-M01\b08046\b08046\b08046.cmd
```
Note that `b08046.cmd` is left disabled because it is still failing.
Koundinya Veluri [Sun, 8 May 2016 18:45:14 +0000 (11:45 -0700)]
Merge pull request #4773 from kouvel/CardTableGrowFix3
Fix recently introduced timing issue when growing the card table
SaeHie Park [Sun, 8 May 2016 18:24:26 +0000 (03:24 +0900)]
ARM: Fix SOS stack dump command failure (#4774)
Dumping address pointer for 32bit system needs adjusting for current implementation
while it assumes %p argument is 64bit. This patch changes (ULONG64) casting to SOS_PTR()
so that it will be safe for both 64 and 32bit.
This will fix DumpStack and EEStack segmentation fault problem.
Related issue: #4672
Mike Danes [Sun, 8 May 2016 16:55:11 +0000 (19:55 +0300)]
Remove unnecessary LSRA members
RefPositions and Intervals are never removed. We can use list::size() instead of tracking the count manually.
Jan Kotas [Sun, 8 May 2016 12:02:50 +0000 (05:02 -0700)]
Disable flaky test (#4846)
Jan Kotas [Sun, 8 May 2016 04:21:50 +0000 (21:21 -0700)]
RyuJIT - throughput improvements, PInvoke transitions tweaks: (#4842)
* RyuJIT - throughput improvements, PInvoke transitions tweaks:
- Minor compilation throughput improvements:
- Avoid redundant calls to getMethodAttribs in impMarkInlineCandidate by reusing the value from CALL_INFO
- Avoid redundant calls to getFunctionEntryPoint in codegen by reusing the value computed during lower
- Stop checking CORINFO_FLG_NATIVE flag for inliner observations. It is dead flag, not set anywhere
- Tweaks for helper-based PInvoke transitions (used CoreRT only today):
- Stop emitting CORINFO_HELP_INIT_PINVOKE_FRAME. Just having the two simple begin/end helpers is better.
- Stop passing size of arguments in secret register.
- Enable direct calls for PInvoke targets
* Codereview feedback
Aditya Mandaleeka [Sat, 7 May 2016 20:51:11 +0000 (13:51 -0700)]
Merge pull request #4747 from krytarowski/netbsd-support-75
NetBSD: Fix build with LLVM-3.9
Aditya Mandaleeka [Sat, 7 May 2016 20:28:58 +0000 (13:28 -0700)]
Merge pull request #4843 from dotnet-bot/from-tfs
Merge changes from TFS
Jan Kotas [Sat, 7 May 2016 18:00:15 +0000 (11:00 -0700)]
Delete left-over uses of FeatureHostedBinder
[tfs-changeset: 1602735]
Bruce Forstall [Sat, 7 May 2016 15:52:07 +0000 (08:52 -0700)]
Merge pull request #4742 from lemmaa/fix-unit-test-script
Fix 'runtest.sh' script
Sivarv [Sat, 7 May 2016 15:20:57 +0000 (08:20 -0700)]
Merge pull request #4836 from sivarv/simdPromotion
Mark simd type vars as lvRegStruct accurately.
Rahul Kumar [Sat, 7 May 2016 14:21:37 +0000 (07:21 -0700)]
Fixes multidim array Get Accessor for enum datatype (#4808)
James Ko [Sat, 7 May 2016 14:20:18 +0000 (10:20 -0400)]
Use Buffer.BlockCopy in System.Reflection.Emit (#4812)
Thomas Klausner [Sat, 7 May 2016 14:14:55 +0000 (16:14 +0200)]
Fix a typo in NetBSD documentation. (#4841)
James Ko [Sat, 7 May 2016 14:14:06 +0000 (10:14 -0400)]
Buffer.BlockCopy: Avoid double-typechecks for arrays of same type (#4807)
Jan Vorlicek [Sat, 7 May 2016 08:47:59 +0000 (10:47 +0200)]
Remove FEATURE_HOSTED_BINDER definition (#4838)
The FEATURE_HOSTED_BINDER is always on so remove it from all the sources.
Tijoy Tom Kalathiparambil [Tue, 3 May 2016 21:25:22 +0000 (14:25 -0700)]
UTF8 Marshaling support(UnmanagedType.LPUTF8Str)
Usage: [MarshalAs(UnmanagedType.LPUTF8Str)] applied to string
and stringbuilder.
Implementation mostly use Encoding.UTF8 API to do the byte buffer
to string roundtripping. Introducing two new marshalers,
UTF8StringMarshaler and UTF8BufferMarshaler which handle string
and StringBuilder respectively. [Out] StringBuilder marshaling use
builder capacity as the buffer size ie (builder. Capacity + 1) *3
which is enough for any UTF8 char in BMP plane, infact Encoding.UTF8
mscorlib APIs use the same length.All marshaling flags(ThrowOnUnmapable,
defaultchar) are ignored since they do not make sense in UTF16 to UTD8
context.
The public contracts are not yet updated, the public contracts and
public marshaling API (Marshal.PtrToStringUtf8 and StringToHGlobalUtf8)
will be added once the implementation is in. The marshal api are anyway
going to be a wrapper around Encoding.GetBytes and GetChars.
sivarv [Fri, 6 May 2016 21:36:58 +0000 (14:36 -0700)]
Mark simd type vars as lvRegStruct accurately.
Pat Gavlin [Fri, 6 May 2016 23:32:18 +0000 (16:32 -0700)]
Merge pull request #4803 from pgavlin/RootBinDir
Add a `bindir` parameter to build.sh.
Pat Gavlin [Fri, 6 May 2016 23:23:26 +0000 (16:23 -0700)]
Merge pull request #4831 from pgavlin/gh2300
Move b12011 into testsUnsupportedOutsideWindows.
Russ Keldorph [Fri, 6 May 2016 22:57:36 +0000 (15:57 -0700)]
Merge pull request #4826 from RussKeldorph/vararg
Move Windows-only vararg/arglist tests to the appropriate exclusion file
Andy Ayers [Fri, 6 May 2016 22:22:03 +0000 (15:22 -0700)]
Merge pull request #4815 from AndyAyersMS/LegacyPolicyInlineLimit
Inliner: add JitInlineLimit check to LegacyPolicy under debug
Maoni Stephens [Fri, 6 May 2016 21:53:23 +0000 (14:53 -0700)]
Merge pull request #4770 from Maoni0/affi
enable affinity for GC threads and some bug fixes
Jan Vorlicek [Fri, 6 May 2016 21:51:25 +0000 (23:51 +0200)]
Fix Windows x86 exception handling issue (#4830)
This change fixes an exception handling issue that happens on x86 on Windows
when exception is raised in System.RuntimeType.MakeGenericType.
The problem was caused by GCPROTECT_HOLDER macro in RuntimeTypeHandle::GetTypeByName
that causes popping of GCFrame (and zeroing its m_next field) that's in the middle of the thread's frames list during
the stack unwinding.
That breaks the list and when UnwindFrames happen later and tries to walk the stack, the StackFrameIterator::NextRaw
asserts when checking the validity of the list.
The fix is to move the keepAlive to the managed caller of the RuntimeTypeHandle::GetTypeByName QCall, which removes
the need for the GCPROTECT_HOLDER.
Since it was the only usage of that holder and of the underlying FrameWithCookieHolder class, I've removed those.
In addition to that, I've modified COMModule::GetType and AssemblyNative::GetType to use the same pattern, since
they could also suffer from the problem the GCPROTECT_HOLDER was attempting to fix.
Gaurav Khanna [Fri, 6 May 2016 21:28:38 +0000 (14:28 -0700)]
Cleanup sxsJitStartup from codemanager
Sejong Oh [Fri, 6 May 2016 21:25:40 +0000 (14:25 -0700)]
Merge pull request #4690 from sejongoh/use_rax_for_ret_buf
Return RetBuf address via RAX for Windows 64