platform/upstream/dotnet/runtime.git
5 years agoPreparatory changes for implementing Crossgen2 pipeline (dotnet/coreclr#26908)
Tomáš Rylek [Sun, 6 Oct 2019 13:01:10 +0000 (06:01 -0700)]
Preparatory changes for implementing Crossgen2 pipeline (dotnet/coreclr#26908)

1) Modify CoreCLR pipelines to use the zipping / unzipping templates
for manipulating the product build.

2) Pass the crossgen option to product build so that it crossgens the
framework assemblies.

3) After my recent split of native vs. managed test artifact build
build-job and xplat-test-job ended up with quite a few variable
duplications. I have just modified the two jobs
needing the common variables (build-job and
crossgen-comparison-job) to use the more specialized template
xplat-test-job instead of xplat-job they used before.

4) Optimize the pipeline to reuse *nix managed artifacts across
architectures. For Windows we're currently splitting managed
artifacts by bitness which matters for some reason I'll investigate
next.

Thanks

Tomas

Commit migrated from https://github.com/dotnet/coreclr/commit/6ab52d607a3e2a65030b8668a759f717a7bf6ee8

5 years agoNew fix for dotnet/coreclr#26417 - Don't allow the hoisting of GT_CLS_VARs that were...
Brian Sullivan [Sun, 6 Oct 2019 00:39:37 +0000 (17:39 -0700)]
New fix for dotnet/coreclr#26417 - Don't allow the hoisting of GT_CLS_VARs that were assigned a constant value. (dotnet/coreclr#26952)

* Fix issue dotnet/coreclr#26417 = Incorrect caching of loop variable
Contributes to issue  dotnet/coreclr#7147 - JIT: Loop hoisting re-ordering exceptions
Added the Test case for Issue 26417

Commit migrated from https://github.com/dotnet/coreclr/commit/da6edcd43fb83d6843208a82f719e49984b7e59e

5 years agoFix duplicate key failure in SuperIlc when using multiple runners (dotnet/coreclr...
Tomáš Rylek [Sat, 5 Oct 2019 18:44:05 +0000 (11:44 -0700)]
Fix duplicate key failure in SuperIlc when using multiple runners (dotnet/coreclr#27038)

Apologies about the inconvenience, it somehow slipped through
the cracks.

Thanks

Tomas

Commit migrated from https://github.com/dotnet/coreclr/commit/d364ea3043c45eb91b0b0f1d6bedba3cca129a96

5 years agoPut single-def CSEs into SSA (dotnet/coreclr#26986)
Andy Ayers [Sat, 5 Oct 2019 14:22:09 +0000 (07:22 -0700)]
Put single-def CSEs into SSA (dotnet/coreclr#26986)

If we create a single-def temp during SSE, add it into SSA so uses of the temp
can benefit from assertion prop and similar.

Follow-up from some work proposed for dotnet/coreclr#21973.

Commit migrated from https://github.com/dotnet/coreclr/commit/863b40ec595bc1db58d7000255d72180a43deacb

5 years agoRename rsMaskVars (dotnet/coreclr#27012)
Sinan Kaya [Fri, 4 Oct 2019 20:10:50 +0000 (16:10 -0400)]
Rename rsMaskVars (dotnet/coreclr#27012)

* find src/jit -type f -exec sed -i -e 's/rsMaskVars->/GetMaskVars()->/g' {} \;

* Remove dangling comment

* Format patch

* Move to next line

* Update regset.h

* delete the comment after `public:`.

We have found them useless in the past and here it corrupts the formatting.

Commit migrated from https://github.com/dotnet/coreclr/commit/9d92b3b23309ebb5f65707e206a004d2115a6f91

5 years agoRename lvOtherReg (dotnet/coreclr#27031)
Sinan Kaya [Fri, 4 Oct 2019 19:23:39 +0000 (15:23 -0400)]
Rename lvOtherReg (dotnet/coreclr#27031)

* find src/jit -type f -exec sed -i -e 's/->lvOtherReg/->GetOtherReg()/g' {} \;

* Format branch

Commit migrated from https://github.com/dotnet/coreclr/commit/82ed48cfbfc478c71890d60f993037d1208fb3c4

5 years agoapply StartsWith optimizations to EndsWith (dotnet/coreclr#26962)
Adam Sitnik [Fri, 4 Oct 2019 16:26:06 +0000 (18:26 +0200)]
apply StartsWith optimizations to EndsWith (dotnet/coreclr#26962)

Commit migrated from https://github.com/dotnet/coreclr/commit/7d2554f9df71aa5f2e05d0fda30531e2ff981038

5 years agoHandle AV caused by invalid IBC data (dotnet/coreclr#27029)
Fadi Hanna [Fri, 4 Oct 2019 16:03:03 +0000 (09:03 -0700)]
Handle AV caused by invalid IBC data (dotnet/coreclr#27029)

Make FindOrCreateAssociatedMethodDesc throw a type load exception instead of an AV, which can't be handled by EX_TRY/EX_CATCH on Unix systems.

Commit migrated from https://github.com/dotnet/coreclr/commit/187071c4c5cd258f922d67a19fb03a6980491b38

5 years agoAdd partial default interface method support (dotnet/coreclr#27026)
Jan Vorlicek [Fri, 4 Oct 2019 14:09:08 +0000 (16:09 +0200)]
Add partial default interface method support (dotnet/coreclr#27026)

Commit migrated from https://github.com/dotnet/coreclr/commit/b57915b0e6830c52c700f690f77dfd77f4511c93

5 years agoMake SuperIlc resilient towards JIT no-op compilation phase (dotnet/coreclr#27020)
Tomáš Rylek [Fri, 4 Oct 2019 09:57:35 +0000 (02:57 -0700)]
Make SuperIlc resilient towards JIT no-op compilation phase (dotnet/coreclr#27020)

Commit migrated from https://github.com/dotnet/coreclr/commit/ab953e35d2bfd762ff90e04d9a97e402cabd961e

5 years agoAdd two unsupported helpers to fail a method instead of the entire build (dotnet...
Tomáš Rylek [Fri, 4 Oct 2019 09:13:29 +0000 (02:13 -0700)]
Add two unsupported helpers to fail a method instead of the entire build (dotnet/coreclr#27019)

Commit migrated from https://github.com/dotnet/coreclr/commit/c118d040460293ea779a4f5744e0574f577c4de2

5 years agoFix crossgen2 to fix several Loader tests (dotnet/coreclr#27022)
Jan Vorlicek [Fri, 4 Oct 2019 09:05:30 +0000 (11:05 +0200)]
Fix crossgen2 to fix several Loader tests (dotnet/coreclr#27022)

Six Loader\classloader\TypeGeneratorTests (Generated612, Generated613,
Generated614, Generated681, Generated682 and Generated683) were failing
with System.BadImageFormatException. While investigating the issue, I've
found that it was caused by a fix made few months ago. That fix fixed
several hundreds of tests from the Loader category, but broken these
six. The fix was made in getCallInfo and it doesn't correspond to what
we have in the old crossgen.
This change reverts that fix and fixes all the issues by using proper
token at some places and converting MemberRefs and MethodSpecs at few
places to MethodDefs, exacty the same way like the old crossgen does.

Commit migrated from https://github.com/dotnet/coreclr/commit/335dcbdb99fbb0217d8d9d52b6e0c582eaef6716

5 years agoAdd ExceptionDispatchInfo.SetCurrentStackTrace (dotnet/coreclr#27004)
Stephen Toub [Fri, 4 Oct 2019 01:59:40 +0000 (21:59 -0400)]
Add ExceptionDispatchInfo.SetCurrentStackTrace (dotnet/coreclr#27004)

* Add ExceptionDispatchInfo.SetCurrentStackTrace

* Address PR feedback

Commit migrated from https://github.com/dotnet/coreclr/commit/3bdc9f625480f497adfcd2bbfae039fdfd1e73f3

5 years agoRename genFullPtrRegMap (dotnet/coreclr#27006)
Sinan Kaya [Fri, 4 Oct 2019 00:34:50 +0000 (20:34 -0400)]
Rename genFullPtrRegMap (dotnet/coreclr#27006)

* __declspec(property(get = getFullPtrRegMap, put = setFullPtrRegMap)) bool genFullPtrRegMap;

__declspec(property(get = doFullPtrRegMap, put = setFullPtrRegMap)) bool genFullPtrRegMap;

Add forgotten getFullPtrRegMap()

* Rename to IsFullPtrRegMapRequired

* Forgotten rename

* Format patch

* Rename

* More rename

Commit migrated from https://github.com/dotnet/coreclr/commit/66f8bcf64ad1d93a249e58be3fc2501e6fe7d4c6

5 years agoFix stackalloc reuse bug in Environment.UserDomainName (dotnet/coreclr#26994)
Stephen Toub [Fri, 4 Oct 2019 00:27:03 +0000 (20:27 -0400)]
Fix stackalloc reuse bug in Environment.UserDomainName (dotnet/coreclr#26994)

* Fix stackalloc reuse bug in Environment.UserDomainName

According to the comment, this code is never expected to be used (so it should either be deleted or the comment fixed), but in the meantime, if it were to be executed, things could go badly due to potentially passing the same buffer into LookupAccountNameW for two different arguments.

* Fix existing ValueStringBuilder usage to dispose the builder

Commit migrated from https://github.com/dotnet/coreclr/commit/814c282db30906a1de496aca4b2654b688be09b5

5 years agoUse const internally in corelib for Environment.NewLine (dotnet/coreclr#27013)
Stephen Toub [Thu, 3 Oct 2019 20:40:04 +0000 (16:40 -0400)]
Use const internally in corelib for Environment.NewLine (dotnet/coreclr#27013)

Commit migrated from https://github.com/dotnet/coreclr/commit/073ad7ef1b6a7112eefc965aed362c7b5923682a

5 years agoMore corelib cleanup (dotnet/coreclr#26993)
Stephen Toub [Thu, 3 Oct 2019 19:28:18 +0000 (15:28 -0400)]
More corelib cleanup (dotnet/coreclr#26993)

* Make relevant types static (mostly Interop)

* Fix a few stray semicolons

* Remove unnecessary locals

Some can be removed entirely, some can be replaced by discards.

* Remove unnecessary usings

* Move Unix-specific helper method to TimeZoneInfo.Unix.cs

* Remove duplicated code

* Remove duplicative checks

* Remove [ThreadStatic] initialization

These are all the default values and wouldn't be necessary for any static, but inline initialization for [ThreadStatic]s is particularly unuseful (and in non-default cases problematic) because the fields are only set to these values on the initializing thread.

* Fix methods whose return value is never used

* Use string.IsNullOrEmpty

* Remove unnecessary field initialization

All ctors overwrite these values.

* Address PR feedback

Commit migrated from https://github.com/dotnet/coreclr/commit/c203e048817b0a3233773cc52d79bf665f1bd8a4

5 years agoFix test/src/JIT/Intrinsics/MathCeiling*.cs copypaste (dotnet/coreclr#26963)
Tobias Thornfeldt Nissen [Thu, 3 Oct 2019 16:21:09 +0000 (18:21 +0200)]
Fix test/src/JIT/Intrinsics/MathCeiling*.cs copypaste (dotnet/coreclr#26963)

Fixes the tests tests/src/JIT/Intrinsics/MathCeilingDouble.cs and tests/src/JIT/Intrinsics/MathCeilingDouble.cs, making sure they actually use the Ceiling method.

Fix dotnet/coreclr#26941

Commit migrated from https://github.com/dotnet/coreclr/commit/474747baec1e528dd0367838908d32b76eaf869d

5 years agoUpdate FCall comment (dotnet/coreclr#27005)
Next Turn [Thu, 3 Oct 2019 16:15:52 +0000 (00:15 +0800)]
Update FCall comment (dotnet/coreclr#27005)

* Update FCall comment

* Add regparm(3)

Co-Authored-By: Jan Vorlicek <janvorli@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/1fad862fcb4c4d064f58c98bdacd93434494692b

5 years agoFix read ordering bug between buckets pointer and counter (dotnet/coreclr#26997)
Fadi Hanna [Thu, 3 Oct 2019 14:18:03 +0000 (07:18 -0700)]
Fix read ordering bug between buckets pointer and counter (dotnet/coreclr#26997)

* Fix read ordering bug between buckets pointer and counter

Use VolaiteLoad to read counter

Commit migrated from https://github.com/dotnet/coreclr/commit/d9e2079f6dc1d4de0761a08e6ccb8d6fd3103a00

5 years agoTry to pregenerate canonical method bodies (dotnet/coreclr#26991)
Michal Strehovský [Thu, 3 Oct 2019 12:15:11 +0000 (14:15 +0200)]
Try to pregenerate canonical method bodies (dotnet/coreclr#26991)

Instantiate both generic types and generic methods over `__Canon` if possible.

Commit migrated from https://github.com/dotnet/coreclr/commit/09293f7407c7704dd779c673ffa99629aee3eb2c

5 years ago[crossgen2] Handle Floor and Ceiling (dotnet/coreclr#27003)
Andrew Au [Thu, 3 Oct 2019 12:14:42 +0000 (05:14 -0700)]
[crossgen2] Handle Floor and Ceiling (dotnet/coreclr#27003)

Commit migrated from https://github.com/dotnet/coreclr/commit/8e4d98a34aaa115d8f8004aadfaa37716e06e3ae

5 years agoReplace lvRegNum with GetRegNum() (dotnet/coreclr#26977)
Sinan Kaya [Thu, 3 Oct 2019 09:09:52 +0000 (05:09 -0400)]
Replace lvRegNum with GetRegNum() (dotnet/coreclr#26977)

* find src/jit -type f -exec sed -i -e 's/->lvRegNum/->GetRegNum()/g' {} \;

* Format patch

* Fix multiline comments

* More multiline comments

* Forgotten variable

Commit migrated from https://github.com/dotnet/coreclr/commit/ecb47cfa455ab289cb8e44c679860b1171e1c60d

5 years agoStop using LIST nodes for FIELD_LIST (dotnet/coreclr#26800)
mikedn [Thu, 3 Oct 2019 06:36:01 +0000 (09:36 +0300)]
Stop using LIST nodes for FIELD_LIST (dotnet/coreclr#26800)

* Stop using LIST nodes for FIELD_LIST

* Change GT_FIELD_LIST type to TYP_STRUCT

* Smaller GenTreeField::Use

* Delete out of date comment

* Cleanup LowerArg duplicated code

* Add AddField/InsertField

Commit migrated from https://github.com/dotnet/coreclr/commit/0a00ee7fdfd113c8c2d47c85ed210de78cab4bdd

5 years agoTypos (dotnet/coreclr#26968)
John Doe [Wed, 2 Oct 2019 23:20:00 +0000 (16:20 -0700)]
Typos (dotnet/coreclr#26968)

* conveninet -> convenient

* disassambly -> disassembly

* disassebly -> disassembly

* dissassembly -> disassembly

* obsereved -> observed

* releavant -> relevant

* teh -> the

* thes -> these

* Instructio -> Instruction

Commit migrated from https://github.com/dotnet/coreclr/commit/f1d2cd463508a3fe437043979673fec427c8b0ff

5 years agoImprove TimeSpan precision (dotnet/coreclr#26992)
Boris Parfenenkov [Wed, 2 Oct 2019 21:08:43 +0000 (02:08 +0500)]
Improve TimeSpan precision (dotnet/coreclr#26992)

Change multiplying by (x * (1.0 / BigValue)) on (x / BigValue).

Fix dotnet/coreclr#41380

Commit migrated from https://github.com/dotnet/coreclr/commit/190888373afe4f526de2bd7f366ffe53cced0325

5 years agoChange PerfEventSource to be able to use 'using'. (dotnet/coreclr#26981)
Anubhav Srivastava [Wed, 2 Oct 2019 21:04:51 +0000 (14:04 -0700)]
Change PerfEventSource to be able to use 'using'. (dotnet/coreclr#26981)

* Change and reorganize PerfEventSource to be able to use using.

Commit migrated from https://github.com/dotnet/coreclr/commit/4e680b3d82effacd72d8394eee9cf01b501b9207

5 years agoCreate IL Rewriting Basics.md (dotnet/coreclr#26918)
David Mason [Wed, 2 Oct 2019 19:51:08 +0000 (12:51 -0700)]
Create IL Rewriting Basics.md (dotnet/coreclr#26918)

Commit migrated from https://github.com/dotnet/coreclr/commit/fcd2d3278ba2eb4da78ddee979fb4c475bd14b37

5 years agoMore SuperIlc changes to enable its use in CoreCLR CI pipelines (dotnet/coreclr#26978)
Tomáš Rylek [Wed, 2 Oct 2019 19:32:43 +0000 (12:32 -0700)]
More SuperIlc changes to enable its use in CoreCLR CI pipelines (dotnet/coreclr#26978)

1) Support for explicit specification of Crossgen path needed for
cross-targeting scenarios;

2) Make Corelib exclusion Crossgen2-specific to avoid regressing
legacy Crossgen testing;

3) Make SuperIlc "AnyCPU" so that it can run on ARM.

Thanks

Tomas

Commit migrated from https://github.com/dotnet/coreclr/commit/d2bba5450c03d5f8e6d0d6428ae59a79321364ca

5 years agofind src/jit -type f -exec sed -i -e 's/->lvOtherArgReg/->GetOtherArg… (dotnet/corecl...
Sinan Kaya [Wed, 2 Oct 2019 19:06:20 +0000 (15:06 -0400)]
find src/jit -type f -exec sed -i -e 's/->lvOtherArgReg/->GetOtherArg… (dotnet/coreclr#26975)

* find src/jit -type f -exec sed -i -e 's/->lvOtherArgReg/->GetOtherArgReg()/g' {} \;

GetOtherArgReg

* Format patch

* Add forgotten variable

Commit migrated from https://github.com/dotnet/coreclr/commit/f7776685fb9ee16f7aa11b74a08abd35eb671277

5 years agoFix assert while compiling CoreLib with optimizations (dotnet/coreclr#26987)
Michal Strehovský [Wed, 2 Oct 2019 15:52:49 +0000 (17:52 +0200)]
Fix assert while compiling CoreLib with optimizations (dotnet/coreclr#26987)

The thing that lead to the assert was the fact that we reported a containing type for an RVA static field as not being preinitialized.

The `!field.HasRva` is the bugfix. `!field.IsThreadStatic` is just something that we also should do to match crossgen.

Commit migrated from https://github.com/dotnet/coreclr/commit/2d62d2b19d3213b3b0b3d273f192b7b298a1e86a

5 years agoChange to use the arm32 armarch queue (dotnet/coreclr#26979)
Jarret Shook [Wed, 2 Oct 2019 03:42:57 +0000 (20:42 -0700)]
Change to use the arm32 armarch queue (dotnet/coreclr#26979)

Commit migrated from https://github.com/dotnet/coreclr/commit/ce66024ba7d60fc7bb72d5b780e395bd9d11719e

5 years agoEnable GC long running tests on ARM64 (dotnet/coreclr#26969)
Vladimir Sadov [Tue, 1 Oct 2019 23:40:54 +0000 (16:40 -0700)]
Enable GC long running tests on ARM64 (dotnet/coreclr#26969)

Commit migrated from https://github.com/dotnet/coreclr/commit/435c480cbbfb27815805af60ddb42cfffd7c32f3

5 years agooom (dotnet/coreclr#26457)
Maoni Stephens [Tue, 1 Oct 2019 23:03:41 +0000 (16:03 -0700)]
oom (dotnet/coreclr#26457)

+ when hardlimit is specified we should only retry when we didn't fail due to commit failure - if commit failed it means we simply didn't have as much memory as what the hardlimit specified. we should throw OOM in this case.

+ added some diag info around OOM history to help with future diagnostics.

Commit migrated from https://github.com/dotnet/coreclr/commit/7dca41fd36721068e610c537654765e8e42275d7

5 years agoUpdate to minimum CMake version of 3.14 (dotnet/coreclr#26777)
Jeremy Koritzinsky [Tue, 1 Oct 2019 19:36:17 +0000 (12:36 -0700)]
Update to minimum CMake version of 3.14 (dotnet/coreclr#26777)

* Update docker images to images with CMake 3.14+ installed.

* Update cmake native tools verison in global.json.

* Update to patched images.

* Upgrade minimum CMake version to 3.14

* Update Linux cross images.

* Init native tools on Windows test builds as well as product builds.

* Update container images used in documentation.

Commit migrated from https://github.com/dotnet/coreclr/commit/455f0a77a8fa76b2a0073d8d367ed7210a3d80df

5 years agoreplace isHfaRegArg with IsHfaRegArg() (dotnet/coreclr#26958)
Sinan Kaya [Tue, 1 Oct 2019 18:44:03 +0000 (14:44 -0400)]
replace isHfaRegArg with IsHfaRegArg() (dotnet/coreclr#26958)

* find src/jit -type f -exec sed -i -e 's/.*declspec.*isHfaRegArg.*//g' {} \;

* Forgotten instances

* Format patch

Commit migrated from https://github.com/dotnet/coreclr/commit/bcb2c9f0b62c1b991874bcf14b4eb8433d6e6e53

5 years agoSuperIlc improvements to facilitate its use in Crossgen2 pipeline (dotnet/coreclr...
Tomáš Rylek [Tue, 1 Oct 2019 17:44:31 +0000 (10:44 -0700)]
SuperIlc improvements to facilitate its use in Crossgen2 pipeline (dotnet/coreclr#26961)

1) New NoCrossgen2 option needed for using SuperIlc to build
the [legacy] Crossgen framework during native test component build;

2) Several hardenings in ProcessRunner that finally let me pass
framework build on Linux without null-refing. This would merit
a closer look at some point but for now this seems to do the trick.

3) Add exclusions for two framework assemblies that fail compiling
with Crossgen2.

Thanks

Tomas

Commit migrated from https://github.com/dotnet/coreclr/commit/e23ef738eac5262f650d78c59715fa54ca680816

5 years agoFixing AdvSimd.Arm64 to have an internal constructor in the "supported" file. (dotnet...
Tanner Gooding [Tue, 1 Oct 2019 16:25:37 +0000 (09:25 -0700)]
Fixing AdvSimd.Arm64 to have an internal constructor in the "supported" file. (dotnet/coreclr#26953)

Commit migrated from https://github.com/dotnet/coreclr/commit/59ebac9ef8bf5079fdfa414fe26d9ae08e654287

5 years agoFix JustMyCode stepping into jumps (dotnet/coreclr#26781)
Jakob Botsch Nielsen [Tue, 1 Oct 2019 16:24:37 +0000 (18:24 +0200)]
Fix JustMyCode stepping into jumps (dotnet/coreclr#26781)

We should not patch the next instruction in this scenario.

Commit migrated from https://github.com/dotnet/coreclr/commit/22779e52abe71ddad9f741961b8e5c3d15a6ac0e

5 years agoFix the problem with the VS2019 fix on x86 (dotnet/coreclr#26957)
Jan Vorlicek [Tue, 1 Oct 2019 14:46:11 +0000 (16:46 +0200)]
Fix the problem with the VS2019 fix on x86 (dotnet/coreclr#26957)

The x86 was missing the same treatment of the explicit frames chain as
the other architectures. The chain needs to be repaired when a GCFrame
is destroyed and it was on a chain that is not current, but that is
still used by the exception handling stack walk.

Commit migrated from https://github.com/dotnet/coreclr/commit/4081d86f221e6694f0dfd13b99e0d5b1045d2e89

5 years agoPartial Revert "Remove global locks from Exception stack trace handling (dotnet...
Jan Kotas [Tue, 1 Oct 2019 13:46:22 +0000 (06:46 -0700)]
Partial Revert "Remove global locks from Exception stack trace handling  (dotnet/coreclr#26823) (dotnet/coreclr#26950)

* Partial Revert "Remove global locks from Exception stack trace handling  (dotnet/coreclr#26823)"

The scalability improvement claimed by the change is not there after closer examination.
Reverting to avoid visible non pay-for-play overhead added by the change.

* Delete managed exception stacktrace lock

History: The original version of the code had just the managed lock. It was discovered that the managed lock is not enough to guarantee integrity of the system and so the unmanaged lock was added. The managed lock was left around even though it does not guarantee much anymore.

Commit migrated from https://github.com/dotnet/coreclr/commit/08423d04085c0fd52eef254722e1347b6abfe37b

5 years agoParenthesize macros (dotnet/coreclr#23982)
bdebaere [Tue, 1 Oct 2019 13:45:04 +0000 (08:45 -0500)]
Parenthesize macros (dotnet/coreclr#23982)

* Add parenthesis to parameters.

* Revert changes to IS_UNWINDING.

Commit migrated from https://github.com/dotnet/coreclr/commit/ce29457817253551f15d25d596c4837432cc472e

5 years agoReplace otherRegNum with GetOtherRegNum
Sinan Kaya [Tue, 1 Oct 2019 07:04:31 +0000 (03:04 -0400)]
Replace otherRegNum with GetOtherRegNum

Commit migrated from https://github.com/dotnet/coreclr/commit/8f719f2a37fd1741a4f55cf3026a3ce4d89f3bc6

5 years ago[CPAOT] Generating code for hardware intrinsic (dotnet/coreclr#26772)
Andrew Au [Tue, 1 Oct 2019 05:49:32 +0000 (22:49 -0700)]
[CPAOT] Generating code for hardware intrinsic (dotnet/coreclr#26772)

Commit migrated from https://github.com/dotnet/coreclr/commit/6ec78980083123ec82300cbcbaadbb34fd34ea0a

5 years agoallow ASCII equality ordinal fast path for en-* cultures (dotnet/coreclr#26905)
Adam Sitnik [Tue, 1 Oct 2019 01:25:29 +0000 (03:25 +0200)]
allow ASCII equality ordinal fast path for en-* cultures (dotnet/coreclr#26905)

* allow ASCII equality ordinal fast path for en-* cultures

* dont use StartsWith in the initialization execution path

* Update src/System.Private.CoreLib/shared/System/Globalization/CompareInfo.Unix.cs

Co-Authored-By: Jan Kotas <jkotas@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/87e4971a68114987d81a21ba6df9035e30255c51

5 years agoDisable nop padding in R2R images and remove jumpstamps from the runtime (dotnet...
David Mason [Mon, 30 Sep 2019 22:05:15 +0000 (15:05 -0700)]
Disable nop padding in R2R images and remove jumpstamps from the runtime (dotnet/coreclr#26740)

Jumpstamps were used to version methods before we had the tiered compilation versioning mechanism. Jumpstamps had some negatives, that it was only supported on x86 and x64, that it required padding methods (bloated on disk IL code size), and that it required a runtime suspension to write the jumpstamps. By consolidating to one code versioning scheme we can delete a lot of code and support all architectures that tiered compilation does for rejit.

Commit migrated from https://github.com/dotnet/coreclr/commit/7fd79859530d6d6a05ae3b69adf2e0ca8a746bab

5 years agoDelete fgArgTabEntry::node (dotnet/coreclr#24294)
mikedn [Mon, 30 Sep 2019 21:52:07 +0000 (00:52 +0300)]
Delete fgArgTabEntry::node (dotnet/coreclr#24294)

* Store the `this` call arg in the GenTreeCall::Use

* Store gtCallThisArg in fgArgTabEntry

* Do not store the node in fgArgTabEntry

* Cleanup fgArgInfo "copy constructor"

* Extract call compare code to a separate function

* Extra asserts

* Add UseIterator::GetUse()

Commit migrated from https://github.com/dotnet/coreclr/commit/afb9ca8808367c976fdd58a2d88f9aa53c89b81d

5 years agoMake ResolveEventArgs.Name not nullable (dotnet/corefxdotnet/coreclr#41415)
Santiago Fernandez Madero [Fri, 27 Sep 2019 23:23:20 +0000 (16:23 -0700)]
Make ResolveEventArgs.Name not nullable (dotnet/corefxdotnet/coreclr#41415)

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/5aef145649d95eb00dd0ca183d1e3d55ac9cd565

5 years agoStartsWith Linux perf improvements (dotnet/coreclr#26621)
Adam Sitnik [Mon, 30 Sep 2019 15:53:01 +0000 (17:53 +0200)]
StartsWith Linux perf improvements (dotnet/coreclr#26621)

* implement simple starts with using icu iterators

* remove IsFastSort() from StartsWith, implement simple lucky paths

* Revert "remove IsFastSort() from StartsWith, implement simple lucky paths"

This reverts commit dotnet/coreclr@ed443f16fc03bf3688e0b316b2c62c1962ba8241.

* handle combining characters properly

* code review fixes

* handle the ignorable character properly

Commit migrated from https://github.com/dotnet/coreclr/commit/8e4050a57a19df1cbc777c9b8a58b443602bbead

5 years agoFix URL to a sample perfcollect setup Dockerfile (dotnet/coreclr#26944)
Donatas Mačiūnas [Mon, 30 Sep 2019 14:04:35 +0000 (17:04 +0300)]
Fix URL to a sample perfcollect setup Dockerfile (dotnet/coreclr#26944)

Commit migrated from https://github.com/dotnet/coreclr/commit/57d13a30df0e05df45aefc3baa112d540899d35e

5 years agoFix grammar mistake (dotnet/coreclr#26943)
Donatas Mačiūnas [Mon, 30 Sep 2019 14:03:35 +0000 (17:03 +0300)]
Fix grammar mistake (dotnet/coreclr#26943)

Commit migrated from https://github.com/dotnet/coreclr/commit/e883f76bbaffe7fd3cba6a2b8b38529e7245fcc4

5 years agoFix crossgen2 handling of non-gc statics in generic classes (dotnet/coreclr#26802)
Jan Vorlicek [Mon, 30 Sep 2019 12:18:51 +0000 (14:18 +0200)]
Fix crossgen2 handling of non-gc statics in generic classes (dotnet/coreclr#26802)

* Fix crossgen2 handling of non-gc statics in generic classes

All such statics were being handled incorrectly in the
GetElementTypeInfo, leading to an incorrect offset being passed to the
JIT and a crash at runtime.

Commit migrated from https://github.com/dotnet/coreclr/commit/4d08f28b00067557924c94d2e80cc0f9500ce359

5 years agoRemove global locks from Exception stack trace handling (dotnet/coreclr#26823)
Ben Adams [Sat, 28 Sep 2019 17:32:00 +0000 (18:32 +0100)]
Remove global locks from Exception stack trace handling  (dotnet/coreclr#26823)

Commit migrated from https://github.com/dotnet/coreclr/commit/bef420a74e1a7ff81883b8bb3a36a9a452e0af61

5 years agoresolve several issues found by cppcheck (dotnet/coreclr#26885)
Ilya Shipitsin [Sat, 28 Sep 2019 14:21:00 +0000 (14:21 +0000)]
resolve several issues found by cppcheck (dotnet/coreclr#26885)

* src/utilcode/prettyprintsig.cpp: remove dead code
found by cppcheck

[src/utilcode/prettyprintsig.cpp:336] -> [src/utilcode/prettyprintsig.cpp:338]: (warning) Opposite inner 'if' condition leads to a dead code block.
[src/utilcode/prettyprintsig.cpp:750] -> [src/utilcode/prettyprintsig.cpp:752]: (warning) Opposite inner 'if' condition leads to a dead code block.

* src/dlls/dbgshim/dbgshim.cpp: resolve possible null pointer dereference
found by cppcheck

[src/dlls/dbgshim/dbgshim.cpp:1767] -> [src/dlls/dbgshim/dbgshim.cpp:1763]: (warning) Either the condition 'ppCordb==NULL' is redundant or there is possible null pointer dereference: ppCordb.

* src/utilcode/prettyprintsig.cpp: remove redundant check

* src/utilcode/prettyprintsig.cpp: remove another redundant condition

Commit migrated from https://github.com/dotnet/coreclr/commit/0f6fa8fb44f4c89e3c9a20bd2cf0364d2ce32aa0

5 years agoCheck for nullity of the context in FuncEval setup SP alignment checks (dotnet/corecl...
Juan Hoyos [Sat, 28 Sep 2019 08:21:55 +0000 (01:21 -0700)]
Check for nullity of the context in FuncEval setup SP alignment checks (dotnet/coreclr#26911)

Commit migrated from https://github.com/dotnet/coreclr/commit/1a0abb3f421e17df09569428e684464655b9eda5

5 years agoRemove duplicate enum SystemVClassificationType (dotnet/coreclr#26922)
Adeel Mujahid [Fri, 27 Sep 2019 23:31:28 +0000 (02:31 +0300)]
Remove duplicate enum SystemVClassificationType (dotnet/coreclr#26922)

Commit migrated from https://github.com/dotnet/coreclr/commit/830c607cf4975279dd1304f673374841022cef38

5 years agoDelete dead code (dotnet/coreclr#26926)
Jan Kotas [Fri, 27 Sep 2019 23:01:08 +0000 (16:01 -0700)]
Delete dead code (dotnet/coreclr#26926)

Commit migrated from https://github.com/dotnet/coreclr/commit/8f8528c5af2bbaf1fef5147398c08c8d14e417b2

5 years agoEnable GitHub_7147 (dotnet/coreclr#26884)
mikedn [Fri, 27 Sep 2019 20:30:50 +0000 (23:30 +0300)]
Enable GitHub_7147 (dotnet/coreclr#26884)

* Enable GitHub_7147

* Don't swallow exceptions

* Add another reordering test case

Commit migrated from https://github.com/dotnet/coreclr/commit/98125970356eed451fc29e0dbb790521d4ebe8e4

5 years agoReplace hfaType with GetHfaType() (dotnet/coreclr#26914)
Sinan Kaya [Fri, 27 Sep 2019 17:32:54 +0000 (13:32 -0400)]
Replace hfaType with GetHfaType() (dotnet/coreclr#26914)

* find src/jit -type f -exec sed -i -e 's/.*declspec.*hfaType.*//g' {} \;

More hfaTypes

* Compilation fix

Commit migrated from https://github.com/dotnet/coreclr/commit/321865f09c9f88f781d7b3ba09b3e8300e46ea3f

5 years agotypo and add language identifier (dotnet/coreclr#26923)
Youssef Victor [Fri, 27 Sep 2019 17:22:23 +0000 (19:22 +0200)]
typo and add language identifier (dotnet/coreclr#26923)

Commit migrated from https://github.com/dotnet/coreclr/commit/a1ec4f11787faa6080af11bc3436a102ce0709f6

5 years agoTypo: retreive => retrieve (dotnet/coreclr#26915)
Youssef Victor [Fri, 27 Sep 2019 13:27:30 +0000 (15:27 +0200)]
Typo: retreive => retrieve (dotnet/coreclr#26915)

Commit migrated from https://github.com/dotnet/coreclr/commit/3b15ddfb39defc5dbee58788ed896add9186edd6

5 years agoRefactoring the ARM Hardware Intrinsics based on the latest design decisions. (dotnet...
Tanner Gooding [Fri, 27 Sep 2019 12:06:24 +0000 (05:06 -0700)]
Refactoring the ARM Hardware Intrinsics based on the latest design decisions. (dotnet/coreclr#26895)

* Moving the Arm64 intrinsic files into the Arm folder.

* Refactoring the ARM Hardware Intrinsics based on the new design.

* Adding support for AdvSimd.Add

* Adding LoadVector64 and LoadVector128 APIs to Arm.AdvSimd

* Marking the LoadVector64 and LoadVector128 methods as unsafe

* Removing the ARM64 HWIntrinsic tests

* Renaming Arm.Base to Arm.ArmBase, as per the design

* Fixing Base.cs to ArmBase.cs in the shared projitems

* Fixing the doc comments for the AdvSimd.LoadVector methods

* Marking various IsSupported methods as new, now that they inherit from ArmBase

* Fixing a malformed doc comment that was missed

* Marking AdvSimd.Arm64 as [Intrinsic] and new

Commit migrated from https://github.com/dotnet/coreclr/commit/14b66ba36669ac002de415c4e8f19792e1c721e8

5 years agoRename GetIsVararg to IsVararg (dotnet/coreclr#26913)
Sinan Kaya [Fri, 27 Sep 2019 06:13:56 +0000 (02:13 -0400)]
Rename GetIsVararg to IsVararg (dotnet/coreclr#26913)

Commit migrated from https://github.com/dotnet/coreclr/commit/0d1c180164555513cbdb206dd4546007cbb3a42c

5 years agoFix Segfault in PerfInfo Image Logging (dotnet/coreclr#26900)
Brian Robbins [Thu, 26 Sep 2019 22:19:05 +0000 (15:19 -0700)]
Fix Segfault in PerfInfo Image Logging (dotnet/coreclr#26900)

Commit migrated from https://github.com/dotnet/coreclr/commit/db48b17fdfc3cca038e9695ec2d835eea4c9e204

5 years ago[Linux/x86] Use ebp from current context during unwinding (dotnet/coreclr#26789)
Konstantin Baladurin [Thu, 26 Sep 2019 17:06:57 +0000 (20:06 +0300)]
[Linux/x86] Use ebp from current context during unwinding (dotnet/coreclr#26789)

pCurrentContextPointers in REGDISPLAY can contain NULLs so we need to use
ebp value from pCurrentContext. This patch contains following changes:

- GetRegdisplayFP returns ebp from pCurrentContext
- GetRegdisplayFP is used instead of *GetEbpLocation()
- Set##reg##Location also updates register value in pCurrentContext

Commit migrated from https://github.com/dotnet/coreclr/commit/1e27a905a0081fe95dd7aaf5f9e99449b4811c1a

5 years agoCollectionsMarshal.AsSpan allow null refs (dotnet/coreclr#26903)
Ben Adams [Thu, 26 Sep 2019 04:27:10 +0000 (05:27 +0100)]
CollectionsMarshal.AsSpan allow null refs (dotnet/coreclr#26903)

Commit migrated from https://github.com/dotnet/coreclr/commit/d0ad04749905dab06251565f1dfdcfd26add77e8

5 years agoStop unloading the profiler on shutdown to prevent segfaults on background threads...
David Mason [Thu, 26 Sep 2019 04:03:29 +0000 (21:03 -0700)]
Stop unloading the profiler on shutdown to prevent segfaults on background threads (dotnet/coreclr#26762)

Commit migrated from https://github.com/dotnet/coreclr/commit/0df1edee35714c0e52b05581cc667455d7ebb0d4

5 years agoIntroduce Utf8Span, which is a span of UTF-8 text (dotnet/coreclr#26711)
Levi Broderick [Thu, 26 Sep 2019 00:36:44 +0000 (17:36 -0700)]
Introduce Utf8Span, which is a span of UTF-8 text (dotnet/coreclr#26711)

Commit migrated from https://github.com/dotnet/coreclr/commit/9dd5b1a0346a6876616541177a7ffb883b810b16

5 years agoReuse managed test components across all *nix flavors (dotnet/coreclr#26581)
Tomáš Rylek [Thu, 26 Sep 2019 00:35:57 +0000 (17:35 -0700)]
Reuse managed test components across all *nix flavors (dotnet/coreclr#26581)

Today CoreCLR pipelines build tests on the same OS flavors they are
supposed to run on. This is wasteful as we produce identical
managed test artifacts on OSX, Linux, Linux_musl and Linux_rhel6.

With this change, the pipeline construction analyzes the set of
OS / architecture combos to run tests on and picks the "best"
OS (or rather the OS that runs on the fastest lab HW) for build
of the managed test components.

Native test components are newly built as part of the product build
as these do need to be built separately for each targeting OS.
Product build zips them up and publishes them to Azure as an artifact
that gets subsequently downloaded and stitched together with
managed test components in the test run job.

Implementation-wise the change basically proceeds in two steps.
In platform-matrix.yml we first identify the exact set of OS / arch
combos to run. Using this information we subsequently identify
the OS to build managed components on for each combo; this information
is passed to test-job.yml which skips managed test build for those
OS-es that are expecting the managed components to be built on a
different OS.

Product build (build-job.yml) contains the additional logic to
build native test artifacts and publish the to Azure for perusal
by the test run job that downloads and unzips both managed and native
artifacts into the final test folder before publishing to Helix.

Thanks

Tomas

Commit migrated from https://github.com/dotnet/coreclr/commit/2a22180ac07feb519b462d5133f7079e72fa701e

5 years agoReplace lateArgInx with GetLateArgInx (dotnet/coreclr#26887)
Sinan Kaya [Thu, 26 Sep 2019 00:31:19 +0000 (20:31 -0400)]
Replace lateArgInx with GetLateArgInx (dotnet/coreclr#26887)

* find src/jit -type f -exec sed -i -e 's/->lateArgInx/->GetLateArgInx()/g' {} \;

* Format patch

Commit migrated from https://github.com/dotnet/coreclr/commit/e26d89335f18beac55c9ce1fe201fab958548753

5 years agoReplace isVararg with GetIsVararg() (dotnet/coreclr#26891)
Sinan Kaya [Thu, 26 Sep 2019 00:31:09 +0000 (20:31 -0400)]
Replace isVararg with GetIsVararg() (dotnet/coreclr#26891)

* find src/jit -type f -exec sed -i -e 's/->isVararg/->GetIsVararg()/g' {} \;

* Format patch dotnet/coreclr#2

Commit migrated from https://github.com/dotnet/coreclr/commit/c51f50bd234bce4f62cecbd3266d641203ff82cf

5 years agoReplace lvArgInitReg with GetArgInitReg (dotnet/coreclr#26888)
Sinan Kaya [Wed, 25 Sep 2019 23:52:58 +0000 (19:52 -0400)]
Replace lvArgInitReg with GetArgInitReg (dotnet/coreclr#26888)

* find src/jit -type f -exec sed -i -e 's/->lvArgInitReg/->GetArgInitReg()/g' {} \;

* Format patch

Commit migrated from https://github.com/dotnet/coreclr/commit/898b30a1dd43ec6729e0a55f4992f01d3fc7763f

5 years agoDisable test that timeouts in outerloop (dotnet/coreclr#26892)
Jarret Shook [Wed, 25 Sep 2019 21:54:53 +0000 (14:54 -0700)]
Disable test that timeouts in outerloop (dotnet/coreclr#26892)

Commit migrated from https://github.com/dotnet/coreclr/commit/5475aa6989960476a99cb6ed7aef6262e5157efc

5 years agoVarious tailcall test improvements (dotnet/coreclr#26818)
Jakob Botsch Nielsen [Wed, 25 Sep 2019 21:54:21 +0000 (14:54 -0700)]
Various tailcall test improvements (dotnet/coreclr#26818)

* Remove some illegal tailcall tests

These tests pass address of local stack frame to tail. prefixed calls.

* Add some more tailcall tests

* Tail calls to functions with small return values
* Tail calls to functions with retbuf
* Tail calls to functions with multi-reg returned structs
* Tail calls to functions with void returns
* Tail calls to abstract methods
* Tail calls to interface methods
* tail. calli sequences
* Tail calls to struct instance methods
* Tail calls involving refs
* Tail calls involving byrefs
* Tail calls involving generics

* Improve tailcall hijacking test

* Force this test to use helper on AMD64 too
* Instead of 3 tailcallers and 1 collector, just use 1 collector and 1
tailcaller. Additionally, run it for only 30 iterations of 1 second
sleeps. This should allow it to run for AMD64 and ARM32 in CI too.

* Clarify some reasons for some disabled tests

* Disable new test on everything except x86 Windows

* Add another arg to TailHelper2 to ensure helper-based tailcall on SysV

* Disable hijacking test on anything except x86/x64 Windows

* Update more tailcalls test and add source file

* Pinvoke printf for Unix in TailcallVerifyWithPrefix test

* Clean up TailcallVerifyWithPrefix test

Remove commented tests and tests that do not run from this file

* Clean up reasons for disabling TailcallVerifyWithPrefix

* Update a reason

* Remove more dead code in TailcallVerifyWithPrefix.il

* Fix wrong IL in TailcallVerifyWithPrefix test

* Add a comment describing more_tailcalls.cs

* Clarify issue number

Commit migrated from https://github.com/dotnet/coreclr/commit/2468ce3d56071290a8ac13d6970783dd56975330

5 years agoFix CoreRT build break
Jan Kotas [Tue, 24 Sep 2019 20:50:02 +0000 (13:50 -0700)]
Fix CoreRT build break

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/890b306cdc112354f932bdf28399b192ceeb912d

5 years agoInitialize variant return value. (dotnet/coreclr#26871)
Jeremy Koritzinsky [Wed, 25 Sep 2019 20:05:54 +0000 (13:05 -0700)]
Initialize variant return value. (dotnet/coreclr#26871)

* Initialize variant return value.

* Move VariantInit call.

Commit migrated from https://github.com/dotnet/coreclr/commit/163b30c625c4a3b080743af2fb60502a164740c7

5 years agoMore Corelib cleanup (dotnet/coreclr#26872)
Stephen Toub [Wed, 25 Sep 2019 14:05:48 +0000 (07:05 -0700)]
More Corelib cleanup (dotnet/coreclr#26872)

* Remove unnecessary asserts

* Make several classes static

* Use is instead of as+null check

* Use T? instead of Nullable<T>

* more static classes

* Mark locals as const

* Merge declaration and initialization of some variables

* Remove unnecessary casts

* Remove unnecessary "unsafe"s

* Simplify several lambda expressions

* Remove redundant parentheses

* Remove redundant '== true'

* Remove redundant empty lines

* Simplify boolean comparison with '== false'

* Replace if-statement with return statement

* Use while for infinite loop

* Add static to all partial static class declarations

* Use ++/-- operator instead of assignment

* Use string.IsNullOrEmpty

* Use coalesce expression

* Simplify lazy initialization

* Use coalese expression

* Join string expressions

* Use regular string literal instead of verbatim string literal

* Optimize StringBuilder.Append calls

* Remove redundant assignment

* Remove unnecessary unsafe context

* Merge processor directives

* Use String.Equals instead of String.Compare

* Use Debug.Fail instead of Debug.Assert(false

* Remove Attribute suffix

* Use predefined type

* Use compound assignment

* Use while statement to create an infinite loop

* Remove redundant base ctor call

* Avoid using catch (Exception)

* Remove empty regions

* Span comparison to null

* Avoid unnecessary boxing of value type

* Expression is always equal to 'true'

* Remove unused method

* update coalesce assignment

* fix unsafe

* fix redundant parens

* Fix whitespace errors introduced

Commit migrated from https://github.com/dotnet/coreclr/commit/5b1c001bc0fb5bb1ce035c02ec275763f66defc8

5 years agoReplace gtLclNum with GetLclNum() (dotnet/coreclr#26853)
Sinan Kaya [Wed, 25 Sep 2019 01:00:32 +0000 (21:00 -0400)]
Replace gtLclNum with GetLclNum() (dotnet/coreclr#26853)

* find src/jit -type f -exec sed -i -e 's/->gtLclNum/->GetLclNum()/g' {} \;

GetLclNum

GetLclNum

compile fixes

* Format patch

Commit migrated from https://github.com/dotnet/coreclr/commit/c8ad76dd8169238c085ee6e3f03d074aed4b76b2

5 years agoAdd CollectionsMarshal (dotnet/coreclr#26867)
Ben Adams [Wed, 25 Sep 2019 00:24:01 +0000 (01:24 +0100)]
Add CollectionsMarshal (dotnet/coreclr#26867)

* Add CollectionsMarshal

* Feedback

* Feedback

Commit migrated from https://github.com/dotnet/coreclr/commit/1432fe4faca1333eaeab3b41707af3c85a35888f

5 years agoresolve several issues found by cppcheck (dotnet/coreclr#26869)
Ilya Shipitsin [Wed, 25 Sep 2019 00:19:06 +0000 (00:19 +0000)]
resolve several issues found by cppcheck (dotnet/coreclr#26869)

* src/debug/daccess/nidump.cpp: remove dead code
found by cppcheck

[src/debug/daccess/nidump.cpp:2839] -> [src/debug/daccess/nidump.cpp:2841]: (warning) Opposite inner 'if' condition leads to a dead code block.

* src/dlls/dbgshim/dbgshim.cpp: resolve possible null pointer dereference
found by cppcheck

[src/dlls/dbgshim/dbgshim.cpp:1373] -> [src/dlls/dbgshim/dbgshim.cpp:1367]: (warning) Either the condition 'pHandleArray==NULL' is redundant or there is pointer arithmetic with NULL pointer.

* src/ilasm/assembler.cpp: resolve possible null pointer dereference
found by cppcheck

[src/ilasm/assembler.cpp:2331] -> [src/ilasm/assembler.cpp:2330]: (warning) Either the condition 'pMID==NULL' is redundant or there is possible null pointer dereference: pMID.

* src/jit/flowgraph.cpp: resolve possible null pointer dereference
found by cppcheck

[src/jit/flowgraph.cpp:11009] -> [src/jit/flowgraph.cpp:11005]: (warning) Either the condition 'block!=nullptr' is redundant or there is possible null pointer dereference: block.

* src/pal/src/debug/debug.cpp: resolve possible null pointer dereference
found by cppcheck

[src/pal/src/debug/debug.cpp:376] -> [src/pal/src/debug/debug.cpp:381]: (warning) Either the condition 'command_string' is redundant or there is possible null pointer dereference: command_string.

* src/pal/src/libunwind/src/arm/Gex_tables.c: resolve possible null pointer dereference
found by cppcheck

[src/pal/src/libunwind/src/arm/Gex_tables.c:159] -> [src/pal/src/libunwind/src/arm/Gex_tables.c:155]: (warning) Either the condition 'buf!=NULL' is redundant or there is pointer arithmetic with NULL pointer.

* src/pal/src/synchmgr/synchmanager.cpp: resolve possible null pointer dereference
found by cppcheck

[src/pal/src/synchmgr/synchmanager.cpp:2512] -> [src/pal/src/synchmgr/synchmanager.cpp:2510]: (warning) Either the condition 'NULL!=pWLNode' is redundant or there is possible null pointer dereference: pWLNode.

Commit migrated from https://github.com/dotnet/coreclr/commit/181523f28adf51de198e1772a35c54ec4819e6c9

5 years agoPack additional useful data into char's "Unicode categories" RVA static info (dotnet...
Levi Broderick [Tue, 24 Sep 2019 20:54:36 +0000 (13:54 -0700)]
Pack additional useful data into char's "Unicode categories" RVA static info (dotnet/coreclr#26848)

Also improves the performance of char.IsWhiteSpace / char.IsUpper / char.IsLower

Commit migrated from https://github.com/dotnet/coreclr/commit/cfcc757f12dcec99af74bb389946f5f8d9120639

5 years agoUse netcoreapp3.0 for building crossgen2 (dotnet/coreclr#26792)
David Wrighton [Tue, 24 Sep 2019 20:35:58 +0000 (13:35 -0700)]
Use netcoreapp3.0 for building crossgen2 (dotnet/coreclr#26792)

* Use netcoreapp3.0 for building crossgen2
- Enables better debugging support
- Enables use of netcoreapp3.0 surface area in crossgen2
- Should improve performance
- Initialize the PAL in the jit on Unix builds
- Enable crossgen2smoke on alpine

Commit migrated from https://github.com/dotnet/coreclr/commit/41471dc78816edffa072582f2f826210829bf0d1

5 years agoLower SSE compare scalar and test nodes (dotnet/coreclr#22043)
mikedn [Tue, 24 Sep 2019 20:03:01 +0000 (23:03 +0300)]
Lower SSE compare scalar and test nodes (dotnet/coreclr#22043)

* Lower SSE compare scalar and test nodes

* Remove bogus instructions from intrinsic table

* Cleanup genHWIntrinsic_R_RM

* Add tests

* Adjust comments

Commit migrated from https://github.com/dotnet/coreclr/commit/013e941c9ce45a57503c1ac3c43c081889e60ffa

5 years agoReplace genInterruptible with getInterruptible() (dotnet/coreclr#26854)
Sinan Kaya [Tue, 24 Sep 2019 19:56:42 +0000 (15:56 -0400)]
Replace genInterruptible with getInterruptible() (dotnet/coreclr#26854)

* find src/jit -type f -exec sed -i -e 's/genInterruptible->/getInterruptible()->/g' {} \;

Cleanup remaining getInterruptible()

* Format patch

* Change comment

Commit migrated from https://github.com/dotnet/coreclr/commit/1e26abb85f36615fb9b7a03c338571d53bd36373

5 years agoMerge pull request dotnet/coreclr#26860 from jkotas/revert
Jan Kotas [Tue, 24 Sep 2019 18:29:08 +0000 (11:29 -0700)]
Merge pull request dotnet/coreclr#26860 from jkotas/revert

Revert "Don't allow the hoisting of GT_CLS_VARs that were assigned a constant value. (dotnet/coreclr#26551)"

Commit migrated from https://github.com/dotnet/coreclr/commit/c0e58ac3a6a4436faac061eac286480d3860eb7a

5 years agoFix available memory extraction on Linux (dotnet/coreclr#26764)
Jan Vorlicek [Tue, 24 Sep 2019 18:00:39 +0000 (20:00 +0200)]
Fix available memory extraction on Linux (dotnet/coreclr#26764)

* Fix available memory extraction on Linux

The GlobalMemoryStatusEx in PAL is returning number of free physical pages in
the ullAvailPhys member. But there are additional pages that are allocated
as buffers and caches that get released when there is a memory pressure and
thus they are effectively available too.

This change extracts the available memory on Linux from the /proc/meminfo
MemAvailable row, which is reported by the kernel as the most precise
amount of available memory.

Commit migrated from https://github.com/dotnet/coreclr/commit/859f464d867c5529d4fc5ca747751dea06895da4

5 years agoFix managed test artifacts to be *nix flavor-agnostic (dotnet/coreclr#26817)
Tomáš Rylek [Tue, 24 Sep 2019 15:56:54 +0000 (08:56 -0700)]
Fix managed test artifacts to be *nix flavor-agnostic (dotnet/coreclr#26817)

After I finally managed to make my infra change to reuse managed
test artifacts across various *nix flavors work on the CoreCLR-CI
Pri0 pipeline, I proceeded to testing the official build which
uncovered a single Pridotnet/coreclr#1 test violating the independence principle:

<pre>
Loader\AssemblyDependencyResolver\AssemblyDependencyResolverTests\AssemblyDependencyResolverTests.csproj
</pre>

This test project uses the clause

<pre>
    &lt;RequiresMockHostPolicy&gt;true&lt;/RequiresMockHostPolicy&gt;
</pre>

which makes the script CLRTest.MockHosting.targets emit an
OS-specific name of the mock hosting dynamic library to the
execution .sh script which then becomes non-portable between
Linux and OSX because they use different extensions for dynamic
libraries (so / dylib).

My proposed change fixes this by modifying the targets file to
emit just the library name without the extension and append
the appropriate per-OS extension in CoreRun.

Thanks

Tomas

Commit migrated from https://github.com/dotnet/coreclr/commit/bd1ce0cc82afbf13f681b9be9a51ac26b9afc1c5

5 years agoAdd doc on JIT-EE interface changes (dotnet/coreclr#26858)
Michal Strehovský [Tue, 24 Sep 2019 15:44:08 +0000 (17:44 +0200)]
Add doc on JIT-EE interface changes (dotnet/coreclr#26858)

Fixes dotnet/coreclr#26841.

Commit migrated from https://github.com/dotnet/coreclr/commit/b9ded6a9a6774eb70b6b6ddbbc85c10bc183abc3

5 years agosrc/inc/apithreadstress.cpp: resolve possible null pointer dereference (dotnet/corecl...
Ilya Shipitsin [Tue, 24 Sep 2019 15:23:46 +0000 (15:23 +0000)]
src/inc/apithreadstress.cpp: resolve possible null pointer dereference (dotnet/coreclr#26843)

found by cppcheck

[src/inc/apithreadstress.cpp:72] -> [src/inc/apithreadstress.cpp:70]: (warning) Either the condition 'p!=NULL' is redundant or there is pointer arithmetic with NULL pointer.

Commit migrated from https://github.com/dotnet/coreclr/commit/1e5d498902a070bb5060f8ca962ca488bb2b3be9

5 years agoRevert "Don't allow the hoisting of GT_CLS_VARs that were assigned a constant value...
Jan Kotas [Tue, 24 Sep 2019 15:19:30 +0000 (08:19 -0700)]
Revert "Don't allow the hoisting of GT_CLS_VARs that were assigned a constant value. (dotnet/coreclr#26551)"

This reverts commit dotnet/coreclr@2342c8231f1b1b3c17baaefbd0357aa4f228f5d1.

Commit migrated from https://github.com/dotnet/coreclr/commit/0d834661b9f47631f16a1ace56606a2d49a6615c

5 years agoSkip the MethodRef optimization for ArrayMethod's (dotnet/coreclr#26850)
Tomáš Rylek [Tue, 24 Sep 2019 14:24:03 +0000 (07:24 -0700)]
Skip the MethodRef optimization for ArrayMethod's (dotnet/coreclr#26850)

As Jan Vorlicek discovered during his investigation of the remaining
CPAOT bugs, CoreCLR runtime doesn't support the MethodRef encoding
flavor for the special array methods. My understanding is that this
is due to the fact that array types are somewhat weird as they are
kind of "generic types in disguise".

Thanks

Tomas

Commit migrated from https://github.com/dotnet/coreclr/commit/43b9ce28e5042ab8cc009c3e3325575eef948ffb

5 years agoAllow containing ExtractVector128 into Store (dotnet/coreclr#22896)
mikedn [Tue, 24 Sep 2019 13:36:08 +0000 (16:36 +0300)]
Allow containing ExtractVector128 into Store (dotnet/coreclr#22896)

* Allow containing ExtractVector128 into Store

* Support contained address modes on ExtractVector128

Commit migrated from https://github.com/dotnet/coreclr/commit/f0a8b4d173810a6315036e31ca4ddfa5ae2998aa

5 years agoNew SuperIlc command "compile-framework" and some fixes (dotnet/coreclr#26804)
Tomáš Rylek [Tue, 24 Sep 2019 06:30:51 +0000 (23:30 -0700)]
New SuperIlc command "compile-framework" and some fixes (dotnet/coreclr#26804)

1) New command "compile-framework" does just what it says on the tin.
My thinking is that I'll use this option to build the CPAOT
framework during product build in the envisioned pipeline. I have
added hard-coded exclusions for assemblies that fail to build right
now - about half of them aren't interesting as framework assemblies
(e.g. R2RDump.dll), some other fail with IBC bugs and one other bug
I'm about to investigate.

2) Based on JanV's suggestion I have added a somewhat hacky logic
to exclude the "testhost" folder when building the entire Pridotnet/coreclr#1
test tree. I'm open to suggestions how to tackle this in a cleaner
manner, I have shared my thoughts on the subject in code comments
next to the problematic spots.

Thanks

Tomas

Commit migrated from https://github.com/dotnet/coreclr/commit/ddbdf5739bdfbcc94b245090806371afb3dbbef5

5 years agoReplace (val / 2) with (val * 0.5) in Jit (dotnet/coreclr#24584)
Egor Bogatov [Tue, 24 Sep 2019 05:41:50 +0000 (08:41 +0300)]
Replace (val / 2) with (val * 0.5) in Jit (dotnet/coreclr#24584)

* Replace "val / dcon" with "val * (1.0 / dcon)"

* fix formatting issue

* replace tree->gtOp.gtOp2 with op2

* Address feedback

* fix mantissa calculations

* fix double mantissa

* use frexp+isnormal

* use frexp

* rollback frexp impl

* Add isNormal(float/double)

* fix exponent in isPow2(double)

* cleanup

* Add tests

* cleanup

* drop _finitef

* improve tests

* rename to hasPreciseReciprocal

* Add comments

* fix formatting issues

* add more test cases

* undo some formatting changes

* undo some formatting changes

* Address mikedn's feedback

* forgot to replace c-cast with reinterpret_cast in IsNormal()

* add fixed seed to Random in DivToMul (to make potential failures reproducible)

* use TestLibrary.Generator.GetDouble() instead of Random

* Remove Random-based values

* Update utils.cpp

* Update utils.cpp

* Address feedback

Commit migrated from https://github.com/dotnet/coreclr/commit/40faef69c1d9e58e170af6c139b37b3fa56e1392

5 years agoAdd "inline" labels and rename IGF_EMIT_ADD to IGF_EXTEND (dotnet/coreclr#26819)
Jakob Botsch Nielsen [Tue, 24 Sep 2019 00:14:06 +0000 (17:14 -0700)]
Add "inline" labels and rename IGF_EMIT_ADD to IGF_EXTEND (dotnet/coreclr#26819)

This flag conceptually represents that the instruction group extends the
previous instruction group and means that the emitter will continue to
track GC info as if there was no label.

Commit migrated from https://github.com/dotnet/coreclr/commit/c7d247819f543944c4bf11f12f0351deb6004bc4

5 years agoDon't allow the hoisting of GT_CLS_VARs that were assigned a constant value. (dotnet...
Brian Sullivan [Mon, 23 Sep 2019 23:46:50 +0000 (16:46 -0700)]
Don't allow the hoisting of GT_CLS_VARs that were assigned a constant value. (dotnet/coreclr#26551)

* New fix - only disable GT_CLS_VAR's

* Fix typo

* Added back test:  JIT\Regression\JitBlue\GitHub_26417

Commit migrated from https://github.com/dotnet/coreclr/commit/2342c8231f1b1b3c17baaefbd0357aa4f228f5d1

5 years ago[skip -ci] Feedback on PerfScore design doc (dotnet/coreclr#26839)
Brian Sullivan [Mon, 23 Sep 2019 23:45:54 +0000 (16:45 -0700)]
[skip -ci] Feedback on PerfScore design doc (dotnet/coreclr#26839)

* Feedback on PerfScore design doc

* Additional feedback and grammer changes

* Added note on Benchmarks

Commit migrated from https://github.com/dotnet/coreclr/commit/50d0ca5917603213948f1fc6a138f0d397e74898

5 years agoReplace gtSsaNum with GetSsaNum (dotnet/coreclr#26836)
Sinan Kaya [Mon, 23 Sep 2019 23:23:57 +0000 (19:23 -0400)]
Replace gtSsaNum with GetSsaNum (dotnet/coreclr#26836)

* find ./ -type f -exec sed -i -e 's/\<gtSsaNum\>/GetSsaNum()/g' {} \;

* format patch

Commit migrated from https://github.com/dotnet/coreclr/commit/eeea730d09d5a7eeaf8c5bb036319ebec85819ea

5 years agoAdd switch to crossgen2 to ignore compile failures (dotnet/coreclr#26793)
David Wrighton [Mon, 23 Sep 2019 23:23:16 +0000 (16:23 -0700)]
Add switch to crossgen2 to ignore compile failures (dotnet/coreclr#26793)

* Add switch to crossgen2 to ignore compile failures
- the default failure behavior is good for most cases, but it is a problem when not actively working on codegen issues
- Method name printing is a risky process as it may throw. This changeset implements a ToString algorithm which attempts to print something even in the presence of errors

* Add back using statement removed in master branch

* Make ToString reslient to metadata loading failures
- Add a DiagnosticName property to type system constructs that have a Name property that may fail
- Workaround issue where Category cannot be reliably computed, and so instead use switch on type (as that is sufficient for this need)

* Switch to --resilient for switch name, and remove separate resilient name computation

* Review feedback

* More feedback

* More feedback

Commit migrated from https://github.com/dotnet/coreclr/commit/17f687ecf74eedd1ca80b2649381b8207178ba91

5 years agoReplace hasTailCalls with GetTailCalls()
Sinan Kaya [Mon, 23 Sep 2019 23:22:55 +0000 (19:22 -0400)]
Replace hasTailCalls with GetTailCalls()

find ./ -type f -exec sed -i -e 's/\<setTailCalls\>/SetTailCalls()/g' {} \;

Commit migrated from https://github.com/dotnet/coreclr/commit/bcd1aa2bfb83a9500dab2ed50c8477acf18dc474