platform/upstream/coreclr.git
6 years agoImplement AVX2 Gather intrinsic in JIT
Fei Peng [Fri, 31 Aug 2018 21:15:45 +0000 (14:15 -0700)]
Implement AVX2 Gather intrinsic in JIT

6 years agoAdd test for AVX2 gather intrinsic
Fei Peng [Thu, 9 Aug 2018 21:57:39 +0000 (14:57 -0700)]
Add test for AVX2 gather intrinsic

6 years agoAdd managed non-const fall-back for AVX2 gather intrinsic
Fei Peng [Thu, 9 Aug 2018 21:57:22 +0000 (14:57 -0700)]
Add managed non-const fall-back for AVX2 gather intrinsic

6 years agoRename CarryLessMultiply to CarrylessMultiply
Fei Peng [Tue, 4 Sep 2018 22:50:16 +0000 (15:50 -0700)]
Rename CarryLessMultiply to CarrylessMultiply

6 years agoFix ServiceController name population perf (dotnet/corefx#32072)
Dan Moseley [Tue, 4 Sep 2018 22:21:28 +0000 (15:21 -0700)]
Fix ServiceController name population perf (dotnet/corefx#32072)

* Fix ServiceController name population perf

* Split tests

* Remove dead field

* Remove new use of DangerousGetHandle

* SafeHandle all the things!

* VSB #1

* VSB #2

* Fix GLE

* Initialize machineName in ctor

* Test for empty name ex

* Null names

* Inadvertent edit

* Unix build

* Move interop into class

* Reverse SafeHandle for HAllocGlobal

* Fix tests

* Disable test for NETFX

* CR feedback

* Pattern matching on VSB

* Direct call

* typo

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
6 years agoFix UAP build break (dotnet/corert#6287)
Michal Strehovský [Tue, 4 Sep 2018 14:26:36 +0000 (16:26 +0200)]
Fix UAP build break (dotnet/corert#6287)

Kick registry related files out of UAP builds.

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
6 years agoJIT: add option to dump jit-generated debug info (#19808)
Andy Ayers [Tue, 4 Sep 2018 18:43:50 +0000 (11:43 -0700)]
JIT: add option to dump jit-generated debug info (#19808)

Add dump option for debug info (like the ones we have for gc info,
eh, unwind, etc) so we can more readily verify jit changes that are
might impact debug info generation.

6 years agoVirtual AttributeType property and signature generic types (#19818)
Atsushi Kanamori [Tue, 4 Sep 2018 18:24:00 +0000 (11:24 -0700)]
Virtual AttributeType property and signature generic types (#19818)

* Virtual AttributeType property and signature generic types

https://github.com/dotnet/corefx/issues/31614

1. This will allow Reflection providers the option
to supply the attribute type without building
an entire constructor.

https://github.com/dotnet/corefx/issues/31798

2. This will permit other Reflection providers
to support Type.MakeGenericMethodParameter()
in their implementations.

* More robust argument validation.

* Change parameter name

6 years agoDeal with cross-bitness compilation warnings Pt.2 (#19781)
Egor Chesakov [Tue, 4 Sep 2018 03:19:50 +0000 (20:19 -0700)]
Deal with cross-bitness compilation warnings Pt.2 (#19781)

* Disable ASMCONSTANTS_C_ASSERT in cross-bitness scenario in src/vm/ceeload.cpp

* Adjust MAXFIELDMARSHALERSIZE for cross-bitness scenario in src/vm/arm/cgencpu.h

* Make ALLOC_ALIGN_CONSTANT host specific in src/inc/stdmacros.h

* Make PRECODE_ALIGNMENT host specific in src/vm/arm/cgencpu.h

* Disable unreachable code in src/vm/arm/stubs.cpp

* Adjust CorDBIPC_BUFFER_SIZE for cross-bitness scenario in src/debug/inc/dbgipcevents.h

* Disable warning C4359 in src/vm/arm/cgencpu.h

* Deal with warning C4267: 'initializing': conversion from 'size_t' to 'int' in src/vm/stublink.cpp

* Deal with warning C4267: 'initializing': conversion from 'size_t' to 'int' in src/vm/callingconvention.h

* Disable unreachable REGDISPLAY constructor in src/inc/regdisp.h

6 years agoAdd modules to the heap only dump in order to have: (#19761)
chrisnas [Sun, 2 Sep 2018 17:17:31 +0000 (19:17 +0200)]
Add modules to the heap only dump in order to have: (#19761)

+ types in with sos.dumpheap -stat instead of UNKNOWN
  + complete stack with sos.dumpstack On a dual core machine, full=11GB, withheap=226MB, withheap(+patch)=269MB

6 years agoi386: Fixed definition with declaration in eetoprofinterfaceimpl.cpp (#18792)
sergey ignatov [Sat, 1 Sep 2018 14:40:44 +0000 (17:40 +0300)]
i386: Fixed definition with declaration in eetoprofinterfaceimpl.cpp (#18792)

6 years agoFix callKillSet for CORINFO_HELP_ASSIGN_BYREF on x64. (#19780)
Sergey Andreenko [Fri, 31 Aug 2018 23:16:57 +0000 (16:16 -0700)]
Fix callKillSet for CORINFO_HELP_ASSIGN_BYREF on x64. (#19780)

* Fix callKillSet for CORINFO_HELP_ASSIGN_BYREF.

on x64.

* Fix typos.

6 years agoAdd Avx2.Permute4x64 template based tests
Jacek Blaszczynski [Thu, 23 Aug 2018 21:01:29 +0000 (23:01 +0200)]
Add Avx2.Permute4x64 template based tests

6 years agoImplement Avx2.Permute4x64 intrinsics
Jacek Blaszczynski [Thu, 23 Aug 2018 20:50:57 +0000 (22:50 +0200)]
Implement Avx2.Permute4x64 intrinsics

6 years agoFix build-test.sh wrapper build (#19779)
Jarret Shook [Fri, 31 Aug 2018 18:25:20 +0000 (11:25 -0700)]
Fix build-test.sh wrapper build (#19779)

* Fix build-test.sh wrapper build

In addition this change creates a json file with the build info so that the wrapper build
may be skipped if it was built on the same os/arch/buildtype.

* Address pr feedback

6 years agoRevert "Remove not necessary type forwarded from attributes when type comes from...
Santiago Fernandez Madero [Fri, 31 Aug 2018 18:16:19 +0000 (11:16 -0700)]
Revert "Remove not necessary type forwarded from attributes when type comes from mscorlib in netfx" (#19784)

This reverts commit 4fb001d431e0f44df15709f02f776e565fec14c7.

6 years agoFix build break in CoreRT/ProjectN
Jan Kotas [Fri, 31 Aug 2018 04:06:51 +0000 (21:06 -0700)]
Fix build break in CoreRT/ProjectN

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
6 years agoMerge pull request #19772 from fiigii/insxor
Carol Eidt [Fri, 31 Aug 2018 17:21:36 +0000 (10:21 -0700)]
Merge pull request #19772 from fiigii/insxor

Fix target register false dependency of lzcnt, tzcnt, and popcnt

6 years agoJIT: don't allocate promoted struct death vars map for clear or lookup (#19753)
Andy Ayers [Fri, 31 Aug 2018 15:20:53 +0000 (08:20 -0700)]
JIT: don't allocate promoted struct death vars map for clear or lookup (#19753)

Only allocate this map if we're adding something. Refactor clearing and
lookup to do minimal work if the map hasn't been allocated (and it won't
have been in debug / minopts).

Saves a tiny bit of throughput and memory.

6 years agoIndexOf(char, Ordinal) use fast path (#19788)
Ben Adams [Fri, 31 Aug 2018 15:19:10 +0000 (16:19 +0100)]
IndexOf(char, Ordinal) use fast path (#19788)

6 years agoEnable gc_profiling for local gc (#19777)
David Mason [Fri, 31 Aug 2018 10:44:11 +0000 (03:44 -0700)]
Enable gc_profiling for local gc (#19777)

6 years ago[local gc] move DacNotifyGCMarkEnd and AnalyzeSurvivorsRequested to GCToEEInterface...
David Mason [Fri, 31 Aug 2018 10:43:51 +0000 (03:43 -0700)]
[local gc]  move DacNotifyGCMarkEnd and AnalyzeSurvivorsRequested to GCToEEInterface  (#19774)

6 years agoUpdating runtest.py so that it works with Python 3
Tanner Gooding [Thu, 30 Aug 2018 18:41:21 +0000 (11:41 -0700)]
Updating runtest.py so that it works with Python 3

6 years agoAdd startup hook in System.Private.CoreLib (#19486)
Sven Boemer [Fri, 31 Aug 2018 00:24:11 +0000 (17:24 -0700)]
Add startup hook in System.Private.CoreLib (#19486)

* Add startup hook in System.Private.CoreLib

ProcessStartupHooks can be called from the host before the user's Main
entry point. It receives a list of dlls and types containing
Initialize() methods that will be called, making it possible to inject
managed code early during startup.

* Allow ! in assembly path for startup hook and other changes

Also:
- Report full assembly path when startup hook assembly is not found
- Remove unnecessary assert
- use Type.Delimiter instead of "."

* Use C# 7 tuple syntax and remove assert

* Improve error handling

Throw MissingMethodException only when there aren't any Initialize
methods at all.

When there are Initialize methods with incorrect
signatures (parameters, return type, visibility, or instance methods),
throw invalid signature error.

This should improve diagnosability of this feature.

* Remove eager check for missing startup hook assemblies

* Require full assembly path and use Split(char) overload.

* Remove startup hook type syntax

The type is now required to be "StartupHook" (in the global
namespace).

* Add assembly path to startup signature exception

With a hard-coded type name, printing the type.method of the startup
hook in the exception will no longer be much of an aid in debugging
startup hook signature issues. Adding the assembly path makes it clear
which startup hook had the problem.

* Use const strings

* Call startup hook inside ExecuteMainMethod

This way it will be called when the application is executed, but not
during other uses of hosting apis that go through
coreclr_create_delegate. This change will ensure that the threading
state is set based on attributes in the main method, before the
startup hooks run.

* Run startup hooks after setting root assembly and other fixes

- Run startup hooks after setting the appdomain's root
  assembly (visible in Assembly.GetEntryAssembly()
- Make the class static
- Remove debug output
- Don't allocate an empty ARG_SLOT array

* Allow non-public Initialize method, adjust coding style

* Remove overly-specific assert

6 years agoUpdate existing COM test assets (native/managed) to share CLSIDs with… (#19756)
Aaron Robinson [Thu, 30 Aug 2018 22:01:12 +0000 (15:01 -0700)]
Update existing COM test assets (native/managed) to share CLSIDs with… (#19756)

* Update existing COM test assets (native/managed) to share CLSIDs with other projects.

* Update Interop.settings.targets

None of these test changes apply to Ubuntu ARM

6 years agoFix target register false dependency of lzcnt, tzcnt, and popcnt
Fei Peng [Thu, 30 Aug 2018 20:23:37 +0000 (13:23 -0700)]
Fix target register false dependency of lzcnt, tzcnt, and popcnt

6 years agoFix CoreCLR debug launch (#19730)
Andrew Au [Thu, 30 Aug 2018 16:31:53 +0000 (09:31 -0700)]
Fix CoreCLR debug launch (#19730)

6 years agoJIT: don't compute edge weights if not optimizing (#19736)
Andy Ayers [Thu, 30 Aug 2018 15:01:46 +0000 (08:01 -0700)]
JIT: don't compute edge weights if not optimizing (#19736)

We were spending a bit less than 1% of jit time computing edge weights
for minopts an debug codegen, but then never using them.

Also when optimizing we wanted to just compute edge weights but ran
through a bit more code than that.

Restructure the code so it's clearer what runs when, and bypass the
edge weight computations for minopts and debug codegen.

6 years agotypo fix (#19763)
Mark Jung [Thu, 30 Aug 2018 10:00:02 +0000 (05:00 -0500)]
typo fix (#19763)

6 years agoFix test folder register (#19749)
Sergey Andreenko [Thu, 30 Aug 2018 04:56:43 +0000 (21:56 -0700)]
Fix test folder register (#19749)

rename test

6 years agoDelete code that tracks stack level in morph. (#19703)
Sergey Andreenko [Thu, 30 Aug 2018 02:55:24 +0000 (19:55 -0700)]
Delete code that tracks stack level in morph. (#19703)

* call fgCheckArgCnt only from stackLevelSetter

* delete changing fgPtrArgCntMax from codegencommon

* delete fgPtrArgCntCur

* reset write phase only once

* delete gtStkDepth

* add headers for the new fucntions

* fix comments

6 years agofix merge conflict in build-test.sh (#19744)
Sergey Andreenko [Thu, 30 Aug 2018 02:54:42 +0000 (19:54 -0700)]
fix merge conflict in build-test.sh (#19744)

6 years agoDefine T_RUNTIME_FUNCTION in cross-bitness crossgen ARM32 (#19718)
Egor Chesakov [Thu, 30 Aug 2018 02:51:51 +0000 (19:51 -0700)]
Define T_RUNTIME_FUNCTION in cross-bitness crossgen ARM32 (#19718)

* Allow 'Non-ARM Host managing ARM related code' scenario in src/inc/crosscomp.h
* Restrict RtlUnwindEx RtlVirtualUnwind to X86 || FEATURE_PAL in src/inc/clrnt.h
* Define PTR_RUNTIME_FUNCTION via T_RUNTIME_FUNCTION in src/inc/daccess.h

6 years agoMerge pull request #19742 from CarolEidt/Disable19397Arm64
Carol Eidt [Thu, 30 Aug 2018 01:08:34 +0000 (18:08 -0700)]
Merge pull request #19742 from CarolEidt/Disable19397Arm64

Disable Failing test on Arm64

6 years agoMerge pull request #19727 from echesakovMSFT/ConstantPropImmedValNeedsReloc
Egor Chesakov [Thu, 30 Aug 2018 00:26:41 +0000 (17:26 -0700)]
Merge pull request #19727 from echesakovMSFT/ConstantPropImmedValNeedsReloc

Do not Constant-Prop immediate values that require relocation on ARM32

6 years agoUpdate floatdouble and floatsingle to use `floatcontrol(precise, value push)` and...
Tanner Gooding [Wed, 29 Aug 2018 20:08:33 +0000 (13:08 -0700)]
Update floatdouble and floatsingle to use `floatcontrol(precise, value push)` and `floatcontrol(precise, pop)`

6 years agoUpdating floatdouble and floatsingle to work around an incorrect result under /fp...
Tanner Gooding [Wed, 29 Aug 2018 00:28:20 +0000 (17:28 -0700)]
Updating floatdouble and floatsingle to work around an incorrect result under /fp:fast

6 years agoMerge pull request #19726 from briansull/vn-dumping
Brian Sullivan [Wed, 29 Aug 2018 21:47:42 +0000 (14:47 -0700)]
Merge pull request #19726 from briansull/vn-dumping

Value Numbering dumping changes and documentation on normal and excSet value numbers

6 years agoTypos (#19737)
John Doe [Wed, 29 Aug 2018 21:46:52 +0000 (14:46 -0700)]
Typos (#19737)

* testsing -> testing

* reclaming -> reclaiming

* oppurtunity -> opportunity

* implemenation -> implementation

* indicaates -> indicates

* enregisterd -> enregistered

* compuations -> computations

* convinient -> convenient

* intution -> intuition

* Communicaton -> Communication

6 years agoFix typo
Brian Sullivan [Wed, 29 Aug 2018 21:37:48 +0000 (14:37 -0700)]
Fix typo

6 years agoRemove not necessary type forwarded from attributes when type comes from mscorlib...
Santiago Fernandez Madero [Fri, 24 Aug 2018 19:30:27 +0000 (12:30 -0700)]
Remove not necessary type forwarded from attributes when type comes from mscorlib in netfx

6 years agoDisable Failing test on Arm64
Carol Eidt [Wed, 29 Aug 2018 20:20:55 +0000 (13:20 -0700)]
Disable Failing test on Arm64

6 years agoValue Numbering dumping changes and documentation on normal and excSet value numbers
Brian Sullivan [Wed, 29 Aug 2018 01:03:56 +0000 (18:03 -0700)]
Value Numbering dumping changes and documentation on normal and excSet value numbers

Support the dumping of exception set
Added full method header comments for VNNormVal and VNWithExc
Removed extra spew for fieldSeq
Removed several unnecessary fgCurMemoryVN assigned printf
Added noway_asserts when dealing with a GT_ASG for a LHS that is a GT_PHI_ARG, GT_BLK or GT_OBJ

6 years agousing struct for VectorPacket in PacketTracer benchmark
Fei Peng [Tue, 28 Aug 2018 20:36:27 +0000 (13:36 -0700)]
using struct for VectorPacket in PacketTracer benchmark

6 years agoMerge pull request #19695 from CarolEidt/Fix19397
Carol Eidt [Wed, 29 Aug 2018 17:54:39 +0000 (10:54 -0700)]
Merge pull request #19695 from CarolEidt/Fix19397

Handle multiReg COPY

6 years agoMerge pull request #19205 from vancem/EventSourceUIntFix
Vance Morrison [Wed, 29 Aug 2018 17:12:48 +0000 (10:12 -0700)]
Merge pull request #19205 from vancem/EventSourceUIntFix

Event source uint fix

6 years agoEnable ibc official build (#19586)
Michelle McDaniel [Wed, 29 Aug 2018 16:41:15 +0000 (09:41 -0700)]
Enable ibc official build (#19586)

Enable IBCOptimize for x86 and x64 Release builds

6 years agoImprove struct promotion for 256-bit SIMD fields
Fei Peng [Fri, 24 Aug 2018 21:48:43 +0000 (14:48 -0700)]
Improve struct promotion for 256-bit SIMD fields

6 years agoFix IJW test failing on Linux (#19729)
Morgan Brown [Wed, 29 Aug 2018 11:25:57 +0000 (04:25 -0700)]
Fix IJW test failing on Linux (#19729)

Disables the IJW test on Linux and ARM64

6 years agoCast gtIconVal to target_ssize_t in src/jit/assertionprop.cpp
Egor Chesakov [Wed, 29 Aug 2018 01:24:57 +0000 (18:24 -0700)]
Cast gtIconVal to target_ssize_t in src/jit/assertionprop.cpp

6 years agoDo not Constant-Prop immediate values that require relocation on ARM32
Egor Chesakov [Wed, 29 Aug 2018 01:24:22 +0000 (18:24 -0700)]
Do not Constant-Prop immediate values that require relocation on ARM32

6 years agoMerge pull request #19619 from echesakovMSFT/Mov32RelocatableDisplacementARM32
Egor Chesakov [Wed, 29 Aug 2018 01:17:06 +0000 (18:17 -0700)]
Merge pull request #19619 from echesakovMSFT/Mov32RelocatableDisplacementARM32

[ARM32] Split IF_T2_N3 into relocatable and non-relocatable cases

6 years agoMerge pull request #19053 from riverar/riverar/r2r_size_unavail
Simon Nattress [Wed, 29 Aug 2018 01:09:04 +0000 (18:09 -0700)]
Merge pull request #19053 from riverar/riverar/r2r_size_unavail

Set function size to -1 if sizing info unavailable

6 years agoUpdate BuildTools, CoreClr, CoreFx, CoreSetup, PgoData to preview1-03127-01, preview1...
dotnet-maestro-bot [Wed, 29 Aug 2018 00:57:57 +0000 (17:57 -0700)]
Update BuildTools, CoreClr, CoreFx, CoreSetup, PgoData to preview1-03127-01, preview1-26827-04, preview1-26827-04, preview1-26827-01, master-20180827-0150, respectively (master) (#19543)

* Update BuildTools, CoreClr, CoreFx, CoreSetup, PgoData to preview1-03127-01, preview1-26827-04, preview1-26827-04, preview1-26827-01, master-20180827-0150, respectively

* Undo buildtools update

* Use older version of CoreFx.Private.TestUtilities

* Disable outdated test

* Disable failing test against #19537

6 years agoEnable mixed mode assembly loading (#19542)
Morgan Brown [Wed, 29 Aug 2018 00:29:40 +0000 (17:29 -0700)]
Enable mixed mode assembly loading (#19542)

Bring back functionality for loading IJW assemblies and calling managed->native. Also add workaround to test case for the C++ compiler inserting calls to mscoree.

6 years agoMerge pull request #19712 from briansull/remove-unused-arg
Brian Sullivan [Tue, 28 Aug 2018 23:10:59 +0000 (16:10 -0700)]
Merge pull request #19712 from briansull/remove-unused-arg

Removed unused argument 'evalAsgLhsInd' in Value Numbering

6 years agoMerge pull request #19716 from BruceForstall/Fix19715
Bruce Forstall [Tue, 28 Aug 2018 22:39:01 +0000 (15:39 -0700)]
Merge pull request #19716 from BruceForstall/Fix19715

Fix warning C4723 potential divide by zero

6 years agoreturn NETClientPrimitives to the exluce list for all platforms (#19717)
Sergey Andreenko [Tue, 28 Aug 2018 22:24:09 +0000 (15:24 -0700)]
return NETClientPrimitives to the exluce list for all platforms (#19717)

6 years agoReplacing the IsDstSrcSrcAVXInstruction jump table with a flag.
Tanner Gooding [Tue, 28 Aug 2018 03:32:40 +0000 (20:32 -0700)]
Replacing the IsDstSrcSrcAVXInstruction jump table with a flag.

6 years agoReplacing the IsDstDstSrcAVXInstruction jump table with a flag.
Tanner Gooding [Tue, 28 Aug 2018 03:32:09 +0000 (20:32 -0700)]
Replacing the IsDstDstSrcAVXInstruction jump table with a flag.

6 years agoBreak into debugger on assertion failures (#19702)
Jan Kotas [Tue, 28 Aug 2018 22:04:04 +0000 (15:04 -0700)]
Break into debugger on assertion failures (#19702)

* Break into debugger on assertion failures

Assertion failures terminated the process by default that made them hard to debug. Changed them to
break into debugger or trigger fail fast when the debugger is not attached. This should make the day-to-day
CoreCLR developer experience better and it is simular to what we had on .NET Framework in the past.

* Fix Unix build break

Add RaiseFailFastException to Unix PAL

6 years agoMerge pull request #19701 from BruceForstall/FixLinuxNonJitBuild
Bruce Forstall [Tue, 28 Aug 2018 20:35:00 +0000 (13:35 -0700)]
Merge pull request #19701 from BruceForstall/FixLinuxNonJitBuild

Fix Linux/x86 altjit

6 years agoHandle multiReg COPY
Carol Eidt [Mon, 27 Aug 2018 21:04:19 +0000 (14:04 -0700)]
Handle multiReg COPY

On x86, `MUL_LONG` wasn't considered a multi-reg node, as it should be, so that when it gets spilled or copied, the additional register will be correctly handled.
Also, the ARM and X86 versions of genStoreLongLclVar should be identical and shared (neither version were handling the copy of a `MUL_LONG`).
Finally, fix the LSRA dumping of multi-reg nodes.

Fix #19397

6 years agoMerge pull request #19709 from acmyu/docs
Simon Nattress [Tue, 28 Aug 2018 20:17:05 +0000 (13:17 -0700)]
Merge pull request #19709 from acmyu/docs

R2RDump - Add tables describing which architectures have been tested

6 years agoFix warning C4723 potential divide by zero
Bruce Forstall [Tue, 28 Aug 2018 19:00:37 +0000 (12:00 -0700)]
Fix warning C4723 potential divide by zero

Appears in VS 15.8 for arm64 builds.

Fixes #19715

6 years agoRemoved unused argument 'evalAsgLhsInd' in Value Numbering
Brian Sullivan [Mon, 27 Aug 2018 23:09:16 +0000 (16:09 -0700)]
Removed unused argument 'evalAsgLhsInd' in Value Numbering
It was previously used for Assign-Op forms of assignment
which we no longer use in the RyuJIT.

6 years agofix build break when STUB_LOGGING is defined (#19707)
Andy Ayers [Tue, 28 Aug 2018 13:43:11 +0000 (06:43 -0700)]
fix build break when STUB_LOGGING is defined (#19707)

6 years agoAdd missing license headers. (#19693)
Brian Robbins [Tue, 28 Aug 2018 04:27:57 +0000 (21:27 -0700)]
Add missing license headers. (#19693)

6 years agore-enable com for local gc (#19681)
David Mason [Tue, 28 Aug 2018 04:27:03 +0000 (21:27 -0700)]
re-enable com for local gc (#19681)

* re-enable com for local gc

* Use RefCountedHandleCallbacks instead of new api

6 years agoAdd architectures supported table
Amy Yu [Tue, 28 Aug 2018 04:03:47 +0000 (00:03 -0400)]
Add architectures supported table

6 years agoMerging the instrsxarch fp, rf, and wf parameters into a single flags parameter
Tanner Gooding [Thu, 23 Aug 2018 23:18:33 +0000 (16:18 -0700)]
Merging the instrsxarch fp, rf, and wf parameters into a single flags parameter

6 years agoRemove reflection from RuntimeEventSource test. (#19692)
Brian Robbins [Tue, 28 Aug 2018 01:22:10 +0000 (18:22 -0700)]
Remove reflection from RuntimeEventSource test. (#19692)

6 years agoUsing shared copy of registryvalueKind (dotnet/corefx#31922)
Anirudh Agnihotry [Mon, 27 Aug 2018 04:03:12 +0000 (21:03 -0700)]
Using shared copy of registryvalueKind (dotnet/corefx#31922)

* using local copy of registryvaluekind and advapi32

* Moving complete file to shared

* name changed

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
6 years agoFix Linux/x86 altjit
Bruce Forstall [Mon, 27 Aug 2018 22:58:09 +0000 (15:58 -0700)]
Fix Linux/x86 altjit

This is a Linux/x86-targeting, Windows/x86-hosted altjit.
Fix the build so it uses an appropriate gcinfo library, built
with the appropriate defines. Currently, this eliminates a single assert.

6 years agoSome fixes for the interpreter (#19678)
Andy Ayers [Mon, 27 Aug 2018 18:10:26 +0000 (11:10 -0700)]
Some fixes for the interpreter (#19678)

A number of fixes to the interpreter so it can run many pri0 basic tests.

* fix build break
* fix new array
* fix small struct return assert
* implement must-expand `ByReference<T>` intrinsics
* add some missing null checks
* fix `stobj` type check assert
* basic SIMD support
* obey `COMPlus_FeatureSIMD` setting

HW Intrinsics are still not supported / implemented.

6 years agoDeal with compilation warnings in JIT in cross-bitness scenario (#19590)
Egor Chesakov [Mon, 27 Aug 2018 18:00:01 +0000 (11:00 -0700)]
Deal with compilation warnings in JIT in cross-bitness scenario  (#19590)

* Fix warnings due to "strlen return type is size_t" in src/jit/emitarm.cpp src/jit/unwindarm.cpp

* Use ptrdiff_t disp in emitter::emitOutputInstr in src/jit/emitarm.cpp

* Compiler::gtHashValue should depend on host-bitness in src/jit/gentree.cpp

* Simplify checking using ImmedValNeedsReloc() in src/jit/lowerarmarch.cpp

* Use target_ssize_t immVal in Lowering::IsContainableImmed in src/jit/lowerarmarch.cpp

* Remove int offs and use BYTE* addr and %p specifier in emitter::emitDispInsHelp in IF_T2_J3 case in src/jit/emitarm.cpp

* Cast gtIconVal to target_size_t in CodeGen::genLclHeap in src/jit/codegenarm.cpp

* Use int argSize in CodeGen::genEmitCall in src/jit/codegen.h src/jit/codegenlinear.cpp

* Use ssize_t disp in emitter::emitIns_Call in src/jit/emitarm.cpp src/jit/emitarm.h

* Use int argSize in emitter::emitIns_Call in src/jit/emitarm.cpp src/jit/emitarm.h

* Use target_size_t return type in Compiler::eeGetPageSize Compiler::getVeryLargeFrameSize in src/jit/codegencommon.cpp src/jit/compiler.h

* Cast gtIconVal to unsigned in CodeGen::genCodeForShift CodeGen::genCodeForShiftLong in src/jit/codegenarm.cpp src/jit/codegenarmarch.cpp

* Cast gtIconVal to unsigned in DecomposeLongs::DecomposeRotate in src/jit/decomposelongs.cpp

* Use unsigned size in CodeGen::genConsumePutStructArgStk in src/jit/codegenlinear.cpp

* Use target_ssize_t stmImm in cast in CodeGen::genZeroInitFrame in src/jit/codegencommon.cpp

* Cast to target_ssize_t in Compiler::gtSetEvalOrder in src/jit/gentree.cpp

* Address PR feedbask - use dspPtr(addr) in src/jit/emitarm.cpp

6 years agoRevert "Cleanup netfx-specific code from projects that no longer build in netfx confi...
Jan Kotas [Sun, 26 Aug 2018 14:34:04 +0000 (07:34 -0700)]
Revert "Cleanup netfx-specific code from projects that no longer build in netfx configurations (#31818)"

This reverts commit 21eb9aa89fae41b73f87c073abd95041ecf1b0e0.

6 years agoCleanup netfx-specific code from projects that no longer build in netfx configuration...
Tim Lovell-Smith [Sun, 26 Aug 2018 13:29:51 +0000 (06:29 -0700)]
Cleanup netfx-specific code from projects that no longer build in netfx configurations (#31818)

* Remove Crc32Helper.Managed.cs and '$(TargetGroup)' == 'netfx' conditionals from System.IO.Compression.csproj

* Remove netfx conditionals from System.Data.Common.csproj

* Remove netfx conditionals from System.Diagnostics.StackTrace.csproj

* Remove 'netfx' and 'net46' conditionals from System.Net.Http.csproj

* Remove 'netfx' conditionals from System.Net.Sockets.csproj

* Remove 'netfx', 'net462' and 'net47' conditionals from System.Runtime.InteropServices.RuntimeInformation.csproj

* Remove 'netfx' conditionals from System.Runtime.Serialization.Primitives.csproj

* Remove 'netfx' conditionals from System.Runtime.Serialization.Xml.csproj

* Remove 'netfx' and 'net47' conditionals from System.Security.Cryptography.Algorithms.csproj

* Remove 'netfx' conditionals from System.Security.SecureString.csproj

* Remove 'netfx' conditionals from System.Threading.Overlapped.csproj

* Remove 'netfx' conditionals from System.Xml.XPath.XDocument.csproj

* Trim out unused source file DeferredDisposableLifetime.cs

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
6 years agoR2RDump - Non-Windows machine code (#19638)
Amy [Sun, 26 Aug 2018 03:55:56 +0000 (20:55 -0700)]
R2RDump - Non-Windows machine code (#19638)

* Get machine architecture for non-Windows images

* Update readme

* Throw exception if machine is invalid, output OS

* Capitalization

6 years agoR2RDump - Fix errors caused by ExportedTypes rids in AvailableTypes section (#19647)
Amy [Sun, 26 Aug 2018 03:55:29 +0000 (20:55 -0700)]
R2RDump - Fix errors caused by ExportedTypes rids in AvailableTypes section (#19647)

* Fix error caused by exportedType in AvailableTypes section

* TypeDef and ExportedType can both have the same rid

* Use HashSet instead of Dictionary

6 years agoR2RDump - Check disassembler support (#19664)
Amy [Sun, 26 Aug 2018 03:55:04 +0000 (20:55 -0700)]
R2RDump - Check disassembler support (#19664)

* Determine if disasm is supported on architectures instead of match

* Readme changes

6 years agoRemove some GT_ASG_op leftovers (#18205)
mikedn [Sat, 25 Aug 2018 22:30:57 +0000 (01:30 +0300)]
Remove some GT_ASG_op leftovers (#18205)

6 years agoStreamline fgExcludeFromSsa (#15351)
mikedn [Sat, 25 Aug 2018 22:29:28 +0000 (01:29 +0300)]
Streamline fgExcludeFromSsa (#15351)

This function is relatively expensive due to the many checks it does. Adding an LclVarDsc "in SSA" bit that is set during SSA construction by calling fgExcludeFromSsa only once per variable results in 0.35% drop in instructions retired.

Most of the checks done in fgExcludeFromSsa are implied by lvTracked and they could probably be converted to asserts. But lvOverlappingFields is not implied by lvTracked so even if all redundant checks are converted to asserts fgExcludeFromSsa still needs 2 checks rather than just one.

Incidentally, this difference between tracked variables and SSA variables results in SSA and value numbers being assigned to some variables that are actually excluded from SSA - SsaBuilder::RenameVariables and fgValueNumber assign numbers to all live in fgFirstBB variables that require initialization without checking fgExcludeFromSsa first. Structs with overlapping fields are not common but properly excluding them is still enough to save 0.15% memory when compiling corelib.

- Replace calls to fgExcludeFromSsa with calls to lvaInSsa (the old name is kind of weird, it has nothing to do with the flow graph and "exclude" results in double negation)
- Move fgExcludeFromSsa logic to SsaBuild::IncludeInSsa and use it to initialize LclVarDsc::lvInSsa for all variables
- Change RenameVariables and fgValueNumber to call lvaInSsa before assigning numbers to live in fgFirstBB variables

6 years agoRemove NumaNodeInfo, CPUGroupInfo, AppDomain, SystemDomain, and EEConfig stubs from...
David Mason [Sat, 25 Aug 2018 19:24:35 +0000 (12:24 -0700)]
Remove NumaNodeInfo, CPUGroupInfo, AppDomain, SystemDomain, and EEConfig stubs from local gc (#19500)

* Switch NumaNodeInfo and CPUGroupInfo to the interface

* Remove AppDomain/SystemDomain stubs

* remove EEConfig methods

* Port numa code to the coreclr side

* add numa back to PAL and standalone builds

* enable numa for PAL/Standalone builds, and fix BOOL warnings

* remove unused defines, and fix linux build errors

* building on windows

* about to delete numa work from unix and want a backup

* add stubs for unix numa/cpugroup

* Code review feedback

* Code review feedback

6 years agoVery small cleanup of various comments and code formatting (#19665)
Vitek Karas [Sat, 25 Aug 2018 05:37:44 +0000 (22:37 -0700)]
Very small cleanup of various comments and code formatting (#19665)

* Very small cleanpu of various comments and code formatting

Fixed couple of comments to match the code and the wording.
Fixed indentation in several places.
Removed unused local variable in AppDomain::BindAssemblySpec

* Remove unused enum in the binder

6 years agoFix long spmi file names/clean few functions. (#19656)
Sergey Andreenko [Sat, 25 Aug 2018 05:12:25 +0000 (22:12 -0700)]
Fix long spmi file names/clean few functions. (#19656)

* delete extern functions

* extract LoadRealJitLib func

* extract getResultFileName

6 years agoDisable System.Numerics.Vectors.Tests (#19537)
Egor Chesakov [Fri, 24 Aug 2018 00:42:30 +0000 (17:42 -0700)]
Disable System.Numerics.Vectors.Tests (#19537)

6 years agoUse runtest.py to run tests for all platforms (#19213)
Jarret Shook [Sat, 25 Aug 2018 04:19:58 +0000 (21:19 -0700)]
Use runtest.py to run tests for all platforms (#19213)

Change build-test.sh to always build the xunit wrappers. Before it would drop a token and check the existence of the token.

Unify x64 linux/OSX/Windows excludes into one file, issues.targets. Includes different locations in the file which show where to put excludes.

Remove all target specific aspects of issues.targets, all tests are excluded now via wildcard, this allows expanding to .cmd and .sh based on the built platform.

Unify path separators to forward slash(/) in issues.targets to support both platforms

Clean up issues.targets by removing long standing exclude tests, specifically tests that have been excluded due to missing features like rva_statics.
Add DisableProjectBuild to tests which have been removed from issues.targets

Conditionally add DisableProjectBuild to tests which have been marked as unsupported on unix. This is mostly a port of the unsupportedOnUnix.txt list. Instead of excluding the tests, unix will simply not build them. If tests are built on windows, they will be run but they will return pass, the test wrapper will check return instantly.

All exclusions ported to issues.targets for linux targets.
Expand runtest.py, this includes simple issues that made it past the original CR. In addition it adds more optional features to help with inner loop dev work such as: creating a repro folder under bin/repro/.. which sets up the env and calls the failing test. In addition a launch.json will now be created under bin/repro/.. which can be used to easily debug using vscode. More logging, such as printing failures, longest running tests ect.
Initial excludes ported for arm64 windows

Arm64 linux, armhf unix excludes and enables running runtest.sh for these targets.
arm64 windows and arm32 windows excludes and enables running runtest.cmd on arm64 targets
init-tools.sh changes to pull armhf and aarch64 dotnetcli

init-tools.cmd changes to pull x86 packages for dotnetcli for arm64 windows
runtest.cmd for almost all scenarios will call runtest.py
runtest.sh for almsot all scenarios will call runtest.py
Removes all logic for running tests using runtest.sh

6 years agoFix FileStream in WinRT build (#19659)
Jeremy Kuhne [Sat, 25 Aug 2018 00:25:55 +0000 (17:25 -0700)]
Fix FileStream in WinRT build (#19659)

6 years agoFix typo
Jan Kotas [Fri, 24 Aug 2018 22:21:13 +0000 (15:21 -0700)]
Fix typo

6 years agoUpdate version in documentation samples to 3.0
Jan Kotas [Fri, 24 Aug 2018 22:19:44 +0000 (15:19 -0700)]
Update version in documentation samples to 3.0

6 years agoFix JitBench (#19584)
Koundinya Veluri [Fri, 24 Aug 2018 19:33:56 +0000 (12:33 -0700)]
Fix JitBench (#19584)

Fix JitBench

Fixes https://github.com/dotnet/coreclr/issues/19569
- I believe the issue was that JitBench (which was an netstandard1.6 project) was running against a netcoreapp3.0 layout with corerun (layout built by build + recent packages), and XmlDocument is in a different place now
- Copied the unofficial project and replaced the official one
- Switched to netcoreapp3.0 along with other miscellaneous fixes to get it working
- I haven't figured out yet how to get one project that builds with the test build and works with dotnet. TargetFramework would have to be different anyway if running with dotnet runtime 2.1. So the unofficial project is still there for use with dotnet.
- Also retargeted the empty console project and changed to always set ExePath (when using existing setup for instance)

6 years agoMerge pull request #19556 from mikedn/dmp-speed
Bruce Forstall [Fri, 24 Aug 2018 19:14:58 +0000 (12:14 -0700)]
Merge pull request #19556 from mikedn/dmp-speed

Speed-up JIT dump

6 years agoUpdate interop test xplat header (#19576)
Aaron Robinson [Fri, 24 Aug 2018 18:19:28 +0000 (11:19 -0700)]
Update interop test xplat header (#19576)

* Remove no-op #define logic for Interop tests
Remove single usage of #define for function remap

* Consolidate all uses of CoTaskMem* functions into new CoreClr* functions
for the Interop native tests.

* Remove unused functions and make formatting consistent.

* Remove '_cdecl' and replace all uses with '__cdecl'

* Convert '__stdcall' to 'STDMETHODCALLTYPE' for all non-calling convention dependent tests

* Replace 'CALLBACK' and 'NATIVEAPI' calling convention macros will well-defined 'STDMETHODCALLTYPE'

6 years agoImplement Intel AES intrinsic
Fei Peng [Thu, 23 Aug 2018 20:50:07 +0000 (13:50 -0700)]
Implement Intel AES intrinsic

6 years agoAdd test cases for AES intrinsic
Fei Peng [Thu, 23 Aug 2018 20:50:02 +0000 (13:50 -0700)]
Add test cases for AES intrinsic

6 years agoR2RDump - ARM and ARM64 UnwindInfo (#19618)
Amy [Fri, 24 Aug 2018 16:25:42 +0000 (09:25 -0700)]
R2RDump - ARM and ARM64 UnwindInfo (#19618)

* UnwindInfo for Arm

* ARM64 unwindInfo, change Machine.Arm to Machine.ArmThumb2

* Fix incorrect location of UnwindCode and GcTransition in the disasm

* Use x64 GcInfo for Arm and Arm64

* Cleanup, update readme

6 years agoMerge pull request #19636 from jakobbotsch/fix-shift-value-executed
Carol Eidt [Fri, 24 Aug 2018 15:04:41 +0000 (08:04 -0700)]
Merge pull request #19636 from jakobbotsch/fix-shift-value-executed

Mask shift value for shift [mem], const

6 years agoFix superpmi-shim-counter (#19639)
Sergey Andreenko [Fri, 24 Aug 2018 05:54:52 +0000 (22:54 -0700)]
Fix superpmi-shim-counter (#19639)

* fix the issue

* improve counter perfomance

do not rewrite output file after each method

6 years agoJIT: fix handling of newarr size (#19633)
Andy Ayers [Fri, 24 Aug 2018 02:35:33 +0000 (19:35 -0700)]
JIT: fix handling of newarr size (#19633)

`newarr` accepts either an int or native int for array size, and the
newarr helper the jit invokes takes a native int.

If the value on the stack is an int and the jit is running on a platform
where native int is larger than int, the jit must explicitly widen the
int to native int.

Found this while running some code through the interpreter -- the path
the interpreter uses to invoke jitted code doesn't guarantee that int args
are 64 bit clean.