platform/upstream/coreclr.git
7 years agoMerge pull request #11920 from briansull/crossgen-tuning
Brian Sullivan [Fri, 26 May 2017 18:08:01 +0000 (11:08 -0700)]
Merge pull request #11920 from briansull/crossgen-tuning

Remove the check that requires an instrumented flags for SPC when collecting IBC data

7 years agoFix BitSetUint64, clean and improve the surrounding code. (#11721)
Sergey Andreenko [Fri, 26 May 2017 16:13:08 +0000 (09:13 -0700)]
Fix BitSetUint64, clean and improve the surrounding code. (#11721)

1. Add the functions that were not implemented in bitsetasuint64inclass/
2. BitSetUint64: make copy_constructor public
3. delete VARSET_INIT_NOCOPY and ALLVARSET_INIT_NOCOPY
4. delete VARSET_INIT and ALLVARSET_INIT.
5. Use the correct const type for VARSET_TP.

7 years agoMerge pull request #11823 from hqueue/arm/ryujit/lsra_gc_helper
Carol Eidt [Fri, 26 May 2017 15:13:27 +0000 (08:13 -0700)]
Merge pull request #11823 from hqueue/arm/ryujit/lsra_gc_helper

[RyuJIT/ARM][LSRA] Update register mask for GC helper

7 years agoEETypeHashTable lookups can deadlock with GC during comparison with unrestored persis...
Jan Kotas [Fri, 26 May 2017 14:17:51 +0000 (07:17 -0700)]
EETypeHashTable lookups can deadlock with GC during comparison with unrestored persisted TypeHandles (#11922)

7 years agoFix compile with disabled FEATURE_READYTORUN option (#11875)
Petr Bred [Fri, 26 May 2017 14:17:05 +0000 (17:17 +0300)]
Fix compile with disabled FEATURE_READYTORUN option (#11875)

- just remove FEATURE_READYTORUN definitions
in clrdefinitions.cmake to turn off option

Signed-off-by: Petr Bred <bredpetr@gmail.com>
7 years ago[RyuJIT/ARM32] Update RMB for helper function
Hyung-Kyu Choi [Fri, 26 May 2017 07:12:33 +0000 (16:12 +0900)]
[RyuJIT/ARM32] Update RMB for helper function

Make RBM_CALLEE_TRASH be consistent with CORINFO_HELP_STOP_FOR_GC helper
which is JIT_RareDisableHelper defined in vm/arm/asmhelpers.S

Signed-off-by: Hyung-Kyu Choi <hk0110.choi@samsung.com>
7 years agoMerge pull request dotnet/corert#3709 from dotnet/nmirror
Michal Strehovský [Fri, 26 May 2017 01:24:34 +0000 (18:24 -0700)]
Merge pull request dotnet/corert#3709 from dotnet/nmirror

Merge nmirror to master

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
7 years agoMerge pull request #11917 from JosephTremoulet/RationalCall
Joseph Tremoulet [Fri, 26 May 2017 05:41:38 +0000 (01:41 -0400)]
Merge pull request #11917 from JosephTremoulet/RationalCall

Clear GTF_CALL from non-calls in rationalize

7 years agoRemove the check that requires an instrumented flags for mscorlib when collecting...
Brian Sullivan [Thu, 25 May 2017 22:27:15 +0000 (15:27 -0700)]
Remove the check that requires an instrumented flags for mscorlib when collecting IBC data
This is not needed for CoreCLR and blocks some valuable usage cases.

7 years agoMerge pull request #11878 from CarolEidt/ContainLclVars
Carol Eidt [Thu, 25 May 2017 22:01:33 +0000 (15:01 -0700)]
Merge pull request #11878 from CarolEidt/ContainLclVars

Make non-tracked lclVars contained

7 years agoMerge pull request #11919 from pgavlin/XunitTestResults
Pat Gavlin [Thu, 25 May 2017 21:55:27 +0000 (14:55 -0700)]
Merge pull request #11919 from pgavlin/XunitTestResults

Add XUnit results for Windows_NT x86 jobs.

7 years agoMerge pull request #11880 from mskvortsov/FixSetRegToCond
Pat Gavlin [Thu, 25 May 2017 21:35:24 +0000 (14:35 -0700)]
Merge pull request #11880 from mskvortsov/FixSetRegToCond

[RyuJIT/arm32] Fix genRegSetToCond() for FP case

7 years agoAdd XUnit results for Windows_NT x86 jobs.
Pat Gavlin [Thu, 25 May 2017 21:29:48 +0000 (14:29 -0700)]
Add XUnit results for Windows_NT x86 jobs.

7 years agoMake untracked lclVars contained
Carol Eidt [Fri, 28 Apr 2017 22:32:07 +0000 (15:32 -0700)]
Make untracked lclVars contained

Make untracked lclVars contained where possible.

7 years agoImplement Activity ID / Related Activity ID for EventSources Writing to EventPipe...
Brian Robbins [Thu, 25 May 2017 19:28:24 +0000 (12:28 -0700)]
Implement Activity ID / Related Activity ID for EventSources Writing to EventPipe (#11904)

* Implement thread-local storage of activity ids.

* Plumb the activity id and related activity id into the trace file.

7 years agoClear GTF_CALL from non-calls in rationalize
Joseph Tremoulet [Thu, 25 May 2017 19:14:48 +0000 (15:14 -0400)]
Clear GTF_CALL from non-calls in rationalize

Since rationalization hoists comma antecedents out into separate
statements, any side-effects that the antecedent had might no longer apply
to the comma's ancestor nodes.  Moreover, in LIR, side-effect flags need
only describe the immediate node; summary flags are computed when Ranges
are constructed.  So, update rationalize to clear the `GTF_CALL` flag from
any node that is not a call.  Failure to do so gives an
overly-conservative view of side-effects, which can inhibit dead store
removal.

7 years agoMerge pull request #11834 from jashook/renable_arm64_span_test
Jarret Shook [Thu, 25 May 2017 15:46:08 +0000 (08:46 -0700)]
Merge pull request #11834 from jashook/renable_arm64_span_test

[Arm64 Windows] Renable SpanBench

7 years ago[ARM32/Linux] Copy tests.zip only for CI test
Hyeongseok Oh [Tue, 16 May 2017 10:37:03 +0000 (19:37 +0900)]
[ARM32/Linux] Copy tests.zip only for CI test

Copy tests.zip only from x64 Windows build for CI test
We can reduce saved build results of linux/arm in CI machine

7 years agoAdds System.Runtime.CompilerServices.Runtimefeature.PortablePdb (#11845)
Tomáš Matoušek [Thu, 25 May 2017 06:48:05 +0000 (23:48 -0700)]
Adds System.Runtime.CompilerServices.Runtimefeature.PortablePdb (#11845)

7 years agoRemove g_fEEManagedEXEStartup and g_fEEIJWStartup. (#11907)
Aditya Mandaleeka [Thu, 25 May 2017 06:47:28 +0000 (23:47 -0700)]
Remove g_fEEManagedEXEStartup and g_fEEIJWStartup. (#11907)

7 years agoMark the EventPipe crst as host breakable. (#11899)
Brian Robbins [Thu, 25 May 2017 01:19:22 +0000 (18:19 -0700)]
Mark the EventPipe crst as host breakable. (#11899)

7 years agoUpdate CoreClr, CoreFx to preview1-25323-01, preview1-25323-02, respectively (master...
dotnet bot [Thu, 25 May 2017 01:15:00 +0000 (18:15 -0700)]
Update CoreClr, CoreFx to preview1-25323-01, preview1-25323-02, respectively (master) (#11809)

* Update CoreClr, CoreFx to preview1-25323-01, preview1-25323-02, respectively

* Update corefx package versions in projects

7 years ago[x86/Linux] Reentrant PEImage::Load (#11867)
Jonghyun Park [Thu, 25 May 2017 00:42:31 +0000 (09:42 +0900)]
[x86/Linux] Reentrant PEImage::Load (#11867)

* [x86/Linux] Reentrant PEImage::Load

* Use HasLoadedLayout and add comments

7 years agoMerge pull request #11894 from pgavlin/gh11804
Pat Gavlin [Wed, 24 May 2017 23:45:04 +0000 (16:45 -0700)]
Merge pull request #11894 from pgavlin/gh11804

Never enregister type-punned regStruct lclVars.

7 years agoFix Issue 11861 (#11886)
Xiang Fan [Wed, 24 May 2017 22:51:38 +0000 (15:51 -0700)]
Fix Issue 11861 (#11886)

* Fix issues exposed by building with MSVC and /permissive-.

Using full-qualified name to declare members inside class is ill-formed and incorrectly allowed by MSVC.
MSVC now gives error when /permissive- is used.

* Add a forward declaration for SafeAddRef from utilcode.h.
SafeAddRef in holder.h calls SafeAddRef in utilcode.h. The latter hasn't been declared yet, so it isn't a valid candidate during overload resolution.
It happens to work in MSVC default mode because of the lack of two phase name lookup.

7 years agoAllow RelativePointer::SetValue usage for non-DAC builds only (#11891)
gbalykov [Wed, 24 May 2017 22:50:26 +0000 (01:50 +0300)]
Allow RelativePointer::SetValue usage for non-DAC builds only (#11891)

7 years agoMerge pull request #11893 from JosephTremoulet/WeakenIBRAssert
Joseph Tremoulet [Wed, 24 May 2017 22:12:28 +0000 (18:12 -0400)]
Merge pull request #11893 from JosephTremoulet/WeakenIBRAssert

Weaken type assertion in gtNewLclNode

7 years agoMerge pull request #11883 from JosephTremoulet/PromotedStructRefs
Joseph Tremoulet [Wed, 24 May 2017 21:44:28 +0000 (17:44 -0400)]
Merge pull request #11883 from JosephTremoulet/PromotedStructRefs

Update full-struct references to promoted IBR args

7 years agoIndicate if thread time events are in managed or native code. (#11892)
Brian Robbins [Wed, 24 May 2017 21:43:54 +0000 (14:43 -0700)]
Indicate if thread time events are in managed or native code. (#11892)

7 years agoMerge pull request #11832 from jashook/add_1_mod_1_case
Jarret Shook [Wed, 24 May 2017 20:37:59 +0000 (13:37 -0700)]
Merge pull request #11832 from jashook/add_1_mod_1_case

Add the case 1 % 1 to our bringup test

7 years agoNever enregister type-punned regStruct lclVars.
Pat Gavlin [Wed, 24 May 2017 19:34:09 +0000 (12:34 -0700)]
Never enregister type-punned regStruct lclVars.

Type-punned lclVars--i.e. lclVars that are accessed via
`(INDIR Tx (ADDR (LCLVAR Ty V)))`--are currently considered
enregisterable if they are SIMD-typed, have not been the accessed by
field, and have not otherwise been declared unenregisterable. This
appears to be an oversight, as the JIT is not able to generate correct
code for the type-punned access if the lclVar is in fact enregistered.

This change removes the special case for these SIMD-typed lclVars.

Fixes #11804.

7 years agoWeaken type assertion in gtNewLclNode
Joseph Tremoulet [Wed, 24 May 2017 20:08:36 +0000 (16:08 -0400)]
Weaken type assertion in gtNewLclNode

Implicit byref parameters originally have struct type in both the lvaTable
and on their appearances in the IR.  In fgRetypeImplicitByRefArgs, the
types in the lvaTable are updated, and subsequently, during global morph,
in fgMorphImplicitByRefArgs, the types of their appearances in the IR are
updated.  Weaken an assertion in lcl var creation to allow the type
disagreement for implicit byref parameter references during global morph.

Fixes #11831.

7 years agoImprove comments around implicit byref rewrite
Joseph Tremoulet [Wed, 24 May 2017 19:37:15 +0000 (15:37 -0400)]
Improve comments around implicit byref rewrite

A number of fields on the LclVarDsc get hijacked during the multi-stage
rewrite of implicit-by-reference parameters; add comments at the fields'
declarations as well as the hijacking uses.

7 years ago[Arm64/Win] Revise JIT_MemSet (#11420)
Steve MacLean [Wed, 24 May 2017 18:31:44 +0000 (14:31 -0400)]
[Arm64/Win] Revise JIT_MemSet (#11420)

* [Arm64/Win] Revise JIT_MemSet

This is the Windows equivalent of #11217 which merged

* [Arm64/Win] Use csel<con> for csel

MS Assembler expects csel<cond> for the csel instruction

7 years ago[x86/Linux] Thread-safe UMThunkMarshInfo::RunTimeInit (#11864)
Jonghyun Park [Wed, 24 May 2017 17:34:59 +0000 (02:34 +0900)]
[x86/Linux] Thread-safe UMThunkMarshInfo::RunTimeInit (#11864)

7 years agoUpdate full-struct references to promoted IBR args
Joseph Tremoulet [Wed, 24 May 2017 16:23:52 +0000 (12:23 -0400)]
Update full-struct references to promoted IBR args

Update fgMorphImplicitByRefArgs to rewrite references to struct-promoted
implicit-by-reference parameters as references to the new struct temps
created in fgRetypeImplicitByRefArgs; fgMorphStructField isn't updating
these because it's only interested in field references, and runs upstream
of fgRetypeImplicitByRefArgs where the full struct temp is created,
anyway.
Invert the sense of lvPromoted for implicit byref args in the interim
between fgRetypeImplicitByRefArgs and fgMarkDemotedImplicitByRefArgs,
since now fgMarkDemotedImplicitByRefArgs needs to update both and would
look horribly backwards the other way around.

Fixes #11814.

7 years agoRyuJIT/arm32: Fix genRegSetToCond for FP cases
Mikhail Skvortcov [Wed, 24 May 2017 15:01:36 +0000 (18:01 +0300)]
RyuJIT/arm32: Fix genRegSetToCond for FP cases

7 years agoILLink performance: Disable Roslyn Test
Swaroop Sridhar [Tue, 23 May 2017 21:33:36 +0000 (14:33 -0700)]
ILLink performance: Disable Roslyn Test

Temporarily disable roslyn test, since it is failing in the lab.

7 years agoScale back [Serializable] on CoreCLR types (#11765)
Morgan Brown [Wed, 24 May 2017 00:11:24 +0000 (17:11 -0700)]
Scale back [Serializable] on CoreCLR types (#11765)

Removes SerializableAttribute from CoreCLR types not intended to be serializable as well as adding special handling to MulticastDelegate to prevent serializing delegates (which can't be correctly serialized cross platform/runtime).

7 years agoReturn early if EventPipeBuffer is empty. (#11855)
Brian Robbins [Tue, 23 May 2017 23:11:44 +0000 (16:11 -0700)]
Return early if EventPipeBuffer is empty. (#11855)

7 years agoDelete special handling of IJW RVA fields at NGen time (#11818)
Jan Kotas [Tue, 23 May 2017 22:09:03 +0000 (15:09 -0700)]
Delete special handling of IJW RVA fields at NGen time (#11818)

Mixed mode managed C++ is not supported by CoreCLR so this is not needed for anything.

Fixes #11761

7 years agoMerge pull request #11694 from JosephTremoulet/IconHoist
Joseph Tremoulet [Tue, 23 May 2017 21:57:56 +0000 (17:57 -0400)]
Merge pull request #11694 from JosephTremoulet/IconHoist

Don't hoist IConHandle statics above cctors

7 years ago[Arm64 Windows] Renable SpanBench
jashook [Tue, 23 May 2017 17:13:38 +0000 (10:13 -0700)]
[Arm64 Windows] Renable SpanBench

7 years agoAdd the case 1 % 1 to our bringup test
jashook [Tue, 23 May 2017 16:50:33 +0000 (09:50 -0700)]
Add the case 1 % 1 to our bringup test

Addresses lack of coverage shown in #7168.

7 years agoMerge pull request #11366 from ruben-ayrapetyan/remove-zap-code-relocs-for-linux...
Bruce Forstall [Tue, 23 May 2017 16:38:03 +0000 (09:38 -0700)]
Merge pull request #11366 from ruben-ayrapetyan/remove-zap-code-relocs-for-linux-arm32

Change relocations in ngen-ed code with PC-relative constants for Linux ARM32

7 years agoMerge pull request #10275 from mikedn/x86-cmp-long-lower
Pat Gavlin [Tue, 23 May 2017 15:29:45 +0000 (08:29 -0700)]
Merge pull request #10275 from mikedn/x86-cmp-long-lower

Lower long compares that are materialized into a register

7 years agoRemove "corerun" sos plugin command. (#11812)
Mike McLaughlin [Tue, 23 May 2017 15:01:25 +0000 (08:01 -0700)]
Remove "corerun" sos plugin command. (#11812)

It broke building on debug osx and isn't used or needed anymore.

7 years agoDirect mapping of IL-assembly images that don't contain writeable sections.
Ruben Ayrapetyan [Wed, 5 Apr 2017 18:08:32 +0000 (21:08 +0300)]
Direct mapping of IL-assembly images that don't contain writeable sections.

7 years agoExtract PEImage::CreateLayoutMapped and PEImage::CreateLayoutFlat from PEImage::GetLa...
Ruben Ayrapetyan [Fri, 7 Apr 2017 10:25:42 +0000 (13:25 +0300)]
Extract PEImage::CreateLayoutMapped and PEImage::CreateLayoutFlat from PEImage::GetLayoutInternal.

7 years ago[RyuJIT/ARM][LSRA] Update register mask for GC helper
Hyung-Kyu Choi [Tue, 23 May 2017 12:46:46 +0000 (21:46 +0900)]
[RyuJIT/ARM][LSRA] Update register mask for GC helper

CORINFO_HELP_STOP_FOR_GC helper preserves integer and double return register.

Signed-off-by: Hyung-Kyu Choi <hk0110.choi@samsung.com>
7 years agoMerge pull request #10990 from mikedn/narrow-test
Pat Gavlin [Tue, 23 May 2017 06:09:25 +0000 (23:09 -0700)]
Merge pull request #10990 from mikedn/narrow-test

Narrow TEST instructions when possible

7 years agoDelete long compare support from x86 codegen
Mike Danes [Sun, 19 Mar 2017 12:57:19 +0000 (14:57 +0200)]
Delete long compare support from x86 codegen

7 years agoLower long compares that are materialized into a register
Mike Danes [Sat, 18 Mar 2017 00:39:25 +0000 (02:39 +0200)]
Lower long compares that are materialized into a register

7 years agoIntroduce GT_CMP and GT_SETCC(condition)
Mike Danes [Sat, 18 Mar 2017 09:02:35 +0000 (11:02 +0200)]
Introduce GT_CMP and GT_SETCC(condition)

7 years agoUse sigInst.methInstCount != 0 to detect generic methods (#11780)
Michal Strehovský [Tue, 23 May 2017 01:27:19 +0000 (18:27 -0700)]
Use sigInst.methInstCount != 0 to detect generic methods (#11780)

`methInstCount` is the thing that RyuJIT uses to detect generic virtual
methods in another place. `CORINFO_CALLCONV_GENERIC` reporting was added
because nobody knew about `methInstCount`. We already report
`methodInstCount` in CoreRT. We can delete a couple of lines on the
CoreRT side by switching to this scheme.

7 years agoMerge pull request #11810 from BruceForstall/FixUninitWarning
Bruce Forstall [Tue, 23 May 2017 00:51:45 +0000 (17:51 -0700)]
Merge pull request #11810 from BruceForstall/FixUninitWarning

Fix VC++ C4201 warning on desktop build

7 years agoMerge pull request #11797 from BruceForstall/CommonizeAdr
Bruce Forstall [Tue, 23 May 2017 00:51:22 +0000 (17:51 -0700)]
Merge pull request #11797 from BruceForstall/CommonizeAdr

Handle INS_adr in emitIns_R_L on both arm32 and arm64

7 years agoBump the version of the xUnit-Performance package (#11793)
José Rivero [Mon, 22 May 2017 23:50:05 +0000 (16:50 -0700)]
Bump the version of the xUnit-Performance package (#11793)

- In a previous PR this was reverted and broke the Profile On/Off perf runs

7 years agoQuiet warning C2220
Joseph Tremoulet [Mon, 22 May 2017 21:27:30 +0000 (17:27 -0400)]
Quiet warning C2220

This warning reports "potentially uninitialized local variable
`fieldOffset` used".  The use is guarded by a check on `fieldHnd` being
non-null, and `fieldOffset` gets initialized properly on all paths that
set `fieldHnd` to something other than null, so the fix is simply to
initialize `fieldOffset` to 0 at its declaration so the compiler won't
complain.

Resolves #11800.

7 years agoFix VC++ C4201 warning on desktop build
Bruce Forstall [Mon, 22 May 2017 23:07:08 +0000 (16:07 -0700)]
Fix VC++ C4201 warning on desktop build

Fixes #11808

7 years agoFix off-by-one error
Joseph Tremoulet [Mon, 22 May 2017 21:23:50 +0000 (17:23 -0400)]
Fix off-by-one error

The code in loop hoisting visiting a comma for a static init helper call
and static field access tried to clear the childrenHoistable bit for the
field, but had an off-by-one error and was instead clearing the bit for
the helper call, which could lead to missed legal helper call hoists.
Update that code to simply assert that the flag is already set for the
field (using the correct index), which must be true since the check is
guarded by a check that childIsCctorDependent is true for it.

7 years agoRevert "Fixed tests build on Linux"
Russ Keldorph [Mon, 22 May 2017 18:24:09 +0000 (11:24 -0700)]
Revert "Fixed tests build on Linux"

7 years agoMerge pull request #11776 from parjong/fix/x86_STDMETHODCALLTYPE_as_cdecl
Bruce Forstall [Mon, 22 May 2017 20:08:42 +0000 (13:08 -0700)]
Merge pull request #11776 from parjong/fix/x86_STDMETHODCALLTYPE_as_cdecl

[x86/Linux] Set CDECL as STDMETHODCALLTYPE

7 years agoMerge pull request #11778 from hqueue/arm/ryujit/float_ld_st
Bruce Forstall [Mon, 22 May 2017 20:06:34 +0000 (13:06 -0700)]
Merge pull request #11778 from hqueue/arm/ryujit/float_ld_st

[RyuJIT/ARM32] Implement and add NYI assertion for load/store for float

7 years agoHandle INS_adr in emitIns_R_L on both arm32 and arm64
Bruce Forstall [Mon, 22 May 2017 18:34:15 +0000 (11:34 -0700)]
Handle INS_adr in emitIns_R_L on both arm32 and arm64

7 years agoMerge pull request #11750 from pgavlin/gh11734
Pat Gavlin [Mon, 22 May 2017 19:59:33 +0000 (12:59 -0700)]
Merge pull request #11750 from pgavlin/gh11734

Fix legality checks in SetRegOptionalForBinOp.

7 years agoUpdate Unix SafeHandle to throw NotFound correctly (#11757)
Jeremy Kuhne [Mon, 22 May 2017 19:49:08 +0000 (12:49 -0700)]
Update Unix SafeHandle to throw NotFound correctly (#11757)

* Update Unix SafeHandle to throw NotFound correctly

Need to match Windows semantics for missing files. This means throwing
FileNotFound only if the last segment of the path can't be found.

* Dispose handle and trim ending separator properly

7 years agoUse operator/operand size for legality checks.
Pat Gavlin [Mon, 22 May 2017 18:08:16 +0000 (11:08 -0700)]
Use operator/operand size for legality checks.

7 years agoMerge pull request #11542 from BruceForstall/RefactorXarchCodegen
Bruce Forstall [Mon, 22 May 2017 18:05:11 +0000 (11:05 -0700)]
Merge pull request #11542 from BruceForstall/RefactorXarchCodegen

Refactor xarch codegen

7 years ago[ARM32/RyuJIT] Enable passing struct argument that use stack only (#11541)
Hyeongseok Oh [Mon, 22 May 2017 16:42:10 +0000 (01:42 +0900)]
[ARM32/RyuJIT] Enable passing struct argument that use stack only (#11541)

* [ARM32/RyuJIT] Enable passing struct argument that use stack only

Enable passing struct argument when it uses stack only.
Cannot pass splitted struct argument that uses stack and register(s) yet.

* Remove redundant GC type assignment and fix internal register count

- Remove redundant GC type assignment in genPutArgStk
- Fix internal register count for ARM32: 2 -> 1

7 years agoFix FieldDesc::GetExactFieldType when FieldDesc doesn't exactly represent the owner...
Igor Kulaychuk [Mon, 22 May 2017 16:30:40 +0000 (19:30 +0300)]
Fix FieldDesc::GetExactFieldType when FieldDesc doesn't exactly represent the owner type (#10941)

* Fix FieldDesc::GetExactFieldType when FieldDesc doesn't exactly represent the owner type

To get the exact type from FieldDesc, field signature should point past the calling convention.

7 years agoDelete default copy/move constructors and assignment operators of RelativePointer...
Ruben Ayrapetyan [Mon, 22 May 2017 14:38:20 +0000 (17:38 +0300)]
Delete default copy/move constructors and assignment operators of RelativePointer and RelativeFixupPointer. (#11745)

7 years agoRefactor genCodeForTreeNode for xarch to match arm32/arm64
Bruce Forstall [Fri, 12 May 2017 06:39:39 +0000 (23:39 -0700)]
Refactor genCodeForTreeNode for xarch to match arm32/arm64

Almost all code in genCodeForTreeNode() has been placed in
separate functions, that match the names of function for
arm32/arm64.

7 years agoMerge pull request #11710 from sjsinju/jump
Bruce Forstall [Mon, 22 May 2017 14:07:45 +0000 (07:07 -0700)]
Merge pull request #11710 from sjsinju/jump

[RyuJit/ARM32] Enable loading arguments when jump instruction

7 years agoReport Span/ReadOnlySpan intrinsics to RyuJIT (dotnet/corert#3669) (#11775)
dotnet bot [Mon, 22 May 2017 14:02:09 +0000 (07:02 -0700)]
Report Span/ReadOnlySpan intrinsics to RyuJIT (dotnet/corert#3669) (#11775)

This lets RyuJIT optimize range checks on Span same way as it does for
arrays.

* Annotate the intrinsics
* Uncomment them in the table
* Report `sigInst` for all intrinsics

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
7 years ago[RyuJIT/ARM32] Implement and add NYI assertion for load/store for float
Hyung-Kyu Choi [Mon, 22 May 2017 07:03:26 +0000 (16:03 +0900)]
[RyuJIT/ARM32] Implement and add NYI assertion for load/store for float

- Implement load/store for float where address is [base + index * scale]
- Add NYI assertion for not implemented cases to enable AltJit

Signed-off-by: Hyung-Kyu Choi <hk0110.choi@samsung.com>
7 years ago[x86/Linux] Use CDECL (instead of STDCALL) as STDMETHODCALLTYPE
Jonghyun Park [Tue, 16 May 2017 05:30:36 +0000 (14:30 +0900)]
[x86/Linux] Use CDECL (instead of STDCALL) as STDMETHODCALLTYPE

7 years agoMerge pull request #11526 from mskvortsov/MulLong
Bruce Forstall [Mon, 22 May 2017 05:09:20 +0000 (22:09 -0700)]
Merge pull request #11526 from mskvortsov/MulLong

[RyuJIT/ARM32] Enable GT_MUL_LONG codegen

7 years agoImplement HasSameMetadataDefinitionAs() on CoreCLR (#11774)
Atsushi Kanamori [Mon, 22 May 2017 04:52:23 +0000 (21:52 -0700)]
Implement HasSameMetadataDefinitionAs() on CoreCLR (#11774)

This api was approved here:

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

and is a necessary step to fixing the System.Dynamic.Runtime.Tests
failure:

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

which is caused by Microsoft.CSharp trying to do the impossible
and emulate this api without GetMetadataToken() support.

This approach opts for the most straightforward and efficient
implementation without any special-casing for weird situations
(this is also what Microsoft.CSharp implements today as
well as what someone else trying to trampoline members
across generic instantaitions is like to do.)

This results in the following behavior for these
corner cases. With the possible exception of #3,
I think they are tolerable enough to accept and codify:

1. "other" implemented by an entirely different Reflection
   provider than "this".

   Behavior:
     returns false without invoking any methods on the
     "other" Member.

   To change it to throw an ArgumentException would
   mean extra cast checks against the 6 possible
   Runtime types (or having said RuntimeTypes implement
   a sentinel interface.)

   Given that HasSameMetadataDefinitionAs() is a
   "looser cousin of Equals()" and "Equals()"
   doesn't throw for objects from a different universe,
   this seems reasonable.

2. Arrays, ByRefs, Pointers and Types from GetTypeFromCLSID()

   Behavior:
     Arrays, ByRefs, Pointers all return token 0x0600000
     and so they'll return "true" wrt to each other (provided
     both types are implemented by the same provider.)

     CLSID types all return the typedef of __ComObject
     so they'll return "true" wrt to each other.

     The constructor exposed by CLSID types all return
     the typedef of some constructor on __ComObject so
     they'll return "true" wrt to each other.

   I do not think these are interesting cases that merit
   special handling. These types will never appear
   in an enumeration of the members of a type. (The
   fact that Reflection surfaces them in objects
   that are assignable to MemberInfo is a structural
   flaw in Reflection's object model.)

3. Synthesized constructors and methods on array types.

   Behavior:
     These methods all return 0x06000000 as a token
     so the constructors will all compare true wrt
     each other, and likewise with the methods.

   This is a bit crummy though it's not clear
   what the "right" policy should look like.
   I could be persuaded to throw NotSupported
   for these, to leave the possibility open
   for a better story later. On the other hand,
   I wouldn't demand it either.

7 years ago[RyuJit/ARM32] Enable loading arguments when jump instruction
sjsujinkim [Thu, 18 May 2017 10:27:26 +0000 (19:27 +0900)]
[RyuJit/ARM32] Enable loading arguments when jump instruction

There was no code generation for GT_JMP node on ARM32. So it has made 'NYI: Unimplemented node type jump' message.
That was implemented as genJmpMethod() on other archtectures.

It is about loading arguments node when jump instruction. and the implementation of that for ARM64 seems not much different from that.

So it just merged genJmpMethod from codegenarm64.cpp to codegenarmarch.cpp after some modification.

7 years agoMerge pull request #11718 from jashook/add_nyi_typ_struct_fast_tail_call
Jarret Shook [Sun, 21 May 2017 15:46:52 +0000 (08:46 -0700)]
Merge pull request #11718 from jashook/add_nyi_typ_struct_fast_tail_call

[*64] NYI: TYP_STRUCT, fastTailCall stack fixup

7 years agoRemove explicit passing of ConfigurationGroup=Release from pipebuild (#11751)
William Godbe [Sun, 21 May 2017 14:47:54 +0000 (07:47 -0700)]
Remove explicit passing of ConfigurationGroup=Release from pipebuild (#11751)

7 years agoFix ReadMemory error reading DSO link_map name. (#11759)
Mike McLaughlin [Sun, 21 May 2017 00:18:30 +0000 (17:18 -0700)]
Fix ReadMemory error reading DSO link_map name. (#11759)

7 years agoFix package Publish in official builds (#11767)
Gaurav Khanna [Sat, 20 May 2017 16:48:01 +0000 (09:48 -0700)]
Fix package Publish in official builds (#11767)

7 years ago[Arm64/Win] Revise JIT_MemCpy (#11261)
Steve MacLean [Sat, 20 May 2017 16:10:00 +0000 (12:10 -0400)]
[Arm64/Win] Revise JIT_MemCpy (#11261)

* [Arm64/Win] Revise JIT_MemCpy

This is the Windows equivalent of #11143 which merged

* [Arm64/Win] Use b<cond> instead of newer b.<cond>

Looks like Windows arm64 assembler does not support the newer assembly mnemonic

7 years agoLinux/x86: Fix clang 4.0 build (#11610)
mskvortsov [Sat, 20 May 2017 14:51:54 +0000 (17:51 +0300)]
Linux/x86: Fix clang 4.0 build (#11610)

7 years agoMerge pull request #10453 from JosephTremoulet/ImplicitByRef
Joseph Tremoulet [Sat, 20 May 2017 13:52:46 +0000 (09:52 -0400)]
Merge pull request #10453 from JosephTremoulet/ImplicitByRef

Promote implicit-byref struct arguments

7 years agoNO_WRITE_BARRIER hasn't been used in ages and we don't think it will be used (#11762)
Maoni Stephens [Sat, 20 May 2017 04:51:52 +0000 (21:51 -0700)]
NO_WRITE_BARRIER hasn't been used in ages and we don't think it will be used (#11762)

7 years agoMerge pull request #11521 from JosephTremoulet/SpanAssert
Joseph Tremoulet [Sat, 20 May 2017 02:25:50 +0000 (22:25 -0400)]
Merge pull request #11521 from JosephTremoulet/SpanAssert

Propagate assertions for more checked bounds

7 years ago[RyuJIT/ARM32] Fix src register trashing in genFloatToIntCast (#11644)
mskvortsov [Sat, 20 May 2017 01:23:58 +0000 (04:23 +0300)]
[RyuJIT/ARM32] Fix src register trashing in genFloatToIntCast (#11644)

RyuJIT/ARM32: Fix src register trashing in genFloatToIntCast

7 years agoDon't hoist IConHandle statics above cctors
Joseph Tremoulet [Wed, 17 May 2017 20:32:14 +0000 (16:32 -0400)]
Don't hoist IConHandle statics above cctors

These constants appear loop invariant, hence so do their dereferences
when a loop has no memory side-effects.  Add flag `GTF_ICON_INITCLASS`
similar to `GTF_FLD_INITCLASS`/`GTF_CLS_VAR_INITCLASS`, and use it to
prevent hoisting such references without also hoisting their static
init helper calls.

Resolves #11689

7 years agoMerge pull request #10946 from JosephTremoulet/RationalFlags
Joseph Tremoulet [Sat, 20 May 2017 00:20:12 +0000 (20:20 -0400)]
Merge pull request #10946 from JosephTremoulet/RationalFlags

Clear GTF_ASG from non-stores in rationalize

7 years agoMerge pull request #10532 from rartemev/fix_tests_build
Roman Artemev [Fri, 19 May 2017 23:30:23 +0000 (16:30 -0700)]
Merge pull request #10532 from rartemev/fix_tests_build

Made possible to build tests on Linux too

7 years ago[ARM32] Simplify getting aligment value when remorphing (#11709)
Hyeongseok Oh [Fri, 19 May 2017 23:12:09 +0000 (08:12 +0900)]
[ARM32] Simplify getting aligment value when remorphing (#11709)

* [ARM32] Skip getting aligment when remorphing

Skip aligment computation in morphing phase when remorphing
It simplify getting alignment value for struct
morphed to FIELD_LIST in ARM32/RyuJIT

* Move comment

Move comment about `InferOpSizeAlign`

7 years agoTest build fixes for Linux
Roman Artemev [Wed, 8 Mar 2017 23:37:31 +0000 (15:37 -0800)]
Test build fixes for Linux

7 years agoMerge pull request dotnet/corert#3654 from dotnet/nmirror
Michal Strehovský [Fri, 19 May 2017 04:47:46 +0000 (21:47 -0700)]
Merge pull request dotnet/corert#3654 from dotnet/nmirror

Merge nmirror to master

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
7 years agoMerge pull request #11714 from hqueue/arm/ryujit/init_val
Bruce Forstall [Fri, 19 May 2017 22:50:10 +0000 (15:50 -0700)]
Merge pull request #11714 from hqueue/arm/ryujit/init_val

[RyuJIT/ARM32] Implement GT_INIT_VAL

7 years agoMerge pull request #11713 from mskvortsov/Ckfinite
Bruce Forstall [Fri, 19 May 2017 22:48:46 +0000 (15:48 -0700)]
Merge pull request #11713 from mskvortsov/Ckfinite

[RyuJIT/ARM32] Ckfinite codegen

7 years agoMerge pull request #11209 from erozenfeld/MorphCastNarrowing
Eugene Rozenfeld [Fri, 19 May 2017 22:38:04 +0000 (15:38 -0700)]
Merge pull request #11209 from erozenfeld/MorphCastNarrowing

Add missing opcodes for morph cast narrowing.

7 years agoMerge pull request #11680 from mskvortsov/CleanupLongNYIs
Bruce Forstall [Fri, 19 May 2017 22:36:41 +0000 (15:36 -0700)]
Merge pull request #11680 from mskvortsov/CleanupLongNYIs

[RyuJIT/ARM32] Clean up remaining GT_LONG NYIs