Jan Kotas [Sun, 15 May 2016 04:20:09 +0000 (21:20 -0700)]
Fix build breaks in arm64 and legacy internal amd64 builds
[tfs-changeset: 1604829]
Commit migrated from https://github.com/dotnet/coreclr/commit/
e1bb404b8d22a1f4c53176a12b4e0333adfdab1f
AlexGhiondea [Sun, 15 May 2016 04:15:16 +0000 (21:15 -0700)]
Use different value for win32resource for System.Private.CoreLib. (dotnet/coreclr#4964)
When building both mscorlib and System.Private.CoreLib we should use a different name to avoid conflicting on this file.
Commit migrated from https://github.com/dotnet/coreclr/commit/
8f5e355eb3dc7d03c84a342c4bc42c9f561810fd
Russ Keldorph [Sun, 15 May 2016 00:41:18 +0000 (17:41 -0700)]
Merge pull request dotnet/coreclr#4972 from RussKeldorph/fix2235
Re-enable arrres.il test
Commit migrated from https://github.com/dotnet/coreclr/commit/
0c0921a5191a8a075f02885cb51521ed9bc5d518
Jan Kotas [Sat, 14 May 2016 06:40:00 +0000 (23:40 -0700)]
Add support for reverse PInvoke callouts to the JIT (dotnet/coreclr#4952)
Commit migrated from https://github.com/dotnet/coreclr/commit/
2e30f2e2cbea5b9a97e1ecc55009706606d5d13b
Rama krishnan Raghupathy [Sat, 14 May 2016 05:32:52 +0000 (22:32 -0700)]
Merge pull request dotnet/coreclr#4927 from ramarag/ModifyBuildOnly
Removing Redundant Projects that are BuildOnly:
Commit migrated from https://github.com/dotnet/coreclr/commit/
04a5d3bafeaa5d67a2d91b9753b540c6ccd36931
Russ Keldorph [Sat, 14 May 2016 04:19:36 +0000 (21:19 -0700)]
Re-enable arrres.il test
arrres.il is a quesionable test case because it relies on finalizers being
run even though the JIT is allowed to extend the lifetime of objects
beyond the point where finalizer effects are checked. The test could be
fixed, but for now I'm just marking it as requiring optimization, which is
what has been done previously. I'm deleting the "dbg" project because it
is the same as the "rel" project except that it disables optimization.
Fixes dotnet/coreclr#2330
Commit migrated from https://github.com/dotnet/coreclr/commit/
195baf674a92c7ddb0ba4dac425abf1a8b0402cf
Fadi Hanna [Sat, 14 May 2016 03:35:54 +0000 (20:35 -0700)]
Initial implementation of generic dictionary access for R2R. (dotnet/coreclr#4519)
For now, only TypeHandle dictionary entry slots are supported and encoded in a R2R version resilient format (the rest to come soon).
Support is only limited for x64 Windows platforms (rest is still TODO)
The basic idea: each dictionary access is initally a call to a DynamicHelper R2R cell that computes the dictionary signature, and patches the R2R cell address with an assembly stub that performs the dictionary lookup.
Commit migrated from https://github.com/dotnet/coreclr/commit/
97b4ff0b438261ba11b357008630076054a6f25d
Rama krishnan Raghupathy [Thu, 12 May 2016 06:56:29 +0000 (23:56 -0700)]
Removing Redundant Projects that are BuildOnly :
RunOnly Projects should refer to only BuildAndRun projects
BuildOnly projects are to be used only for Non-Execution cases
and custom execution drivers
Commit migrated from https://github.com/dotnet/coreclr/commit/
73c24cbc657182e2c8c82be18222d4ac0ec788a9
Bruce Bowyer-Smyth [Sat, 14 May 2016 02:25:22 +0000 (12:25 +1000)]
Port string.PadLeft and string.PadRight from CoreRT (dotnet/coreclr#4968)
Commit migrated from https://github.com/dotnet/coreclr/commit/
5b065284dc57bc3a9eaee9f86b0df258b1d3d7af
Jan Kotas [Sat, 14 May 2016 02:24:38 +0000 (19:24 -0700)]
Merge pull request dotnet/coreclr#4970 from dotnet-bot/from-tfs
Merge changes from TFS
Commit migrated from https://github.com/dotnet/coreclr/commit/
d82876a944b1ad1ce7fc0d495f6227c7f3df9b2f
Pat Gavlin [Fri, 13 May 2016 23:39:52 +0000 (16:39 -0700)]
Fix a PCH-related issue in the jitstdout change.
[tfs-changeset: 1604771]
Commit migrated from https://github.com/dotnet/coreclr/commit/
4e2571ba5ae0a7c89a323e619c47eedaca04a261
Jarret Shook [Fri, 13 May 2016 23:37:32 +0000 (16:37 -0700)]
Merge pull request dotnet/coreclr#4901 from LLITCHEV/Issue4801
Add a issues target file with tests to be excluded on jit32 x86.
Commit migrated from https://github.com/dotnet/coreclr/commit/
c3ac14007711b8e1286da159f6a6f2153ead443d
Lubomir Litchev [Tue, 10 May 2016 23:44:40 +0000 (16:44 -0700)]
Add a issues target file with thests to be excluded on jit32 x86.
Commit migrated from https://github.com/dotnet/coreclr/commit/
864725509ecf3a17e9e12b6321c1ce17204003b6
Aditya Mandaleeka [Fri, 13 May 2016 21:45:27 +0000 (14:45 -0700)]
Merge pull request dotnet/coreclr#4922 from adityamandaleeka/remove_getfilenamefromsymlink
Change how PAL file I/O functions treat symbolic links
Commit migrated from https://github.com/dotnet/coreclr/commit/
ec35fab57dbb9f245558ffe5dc08aeb3d1769f2f
Sean Gillespie [Fri, 13 May 2016 21:13:21 +0000 (14:13 -0700)]
Merge pull request dotnet/coreclr#4958 from swgillespie/disable-gcstress
Exclude from GCStress a few tests that take an unreasonably long time to complete
Commit migrated from https://github.com/dotnet/coreclr/commit/
cbe00c286f955fa9bd22c951535c2eb17948949c
Pat Gavlin [Fri, 13 May 2016 21:02:56 +0000 (14:02 -0700)]
Merge pull request dotnet/coreclr#4942 from pgavlin/gh4832
Use a JIT-specific stdout `FILE*`.
Commit migrated from https://github.com/dotnet/coreclr/commit/
7168c76d4268005fb5be533d6961644af67c0b36
Russ Keldorph [Fri, 13 May 2016 20:55:41 +0000 (13:55 -0700)]
Merge pull request dotnet/coreclr#4957 from RussKeldorph/fix2235
Reenable passing tests
Commit migrated from https://github.com/dotnet/coreclr/commit/
b64dedc8538063c6ee0a9ce6da69c750c51611b5
Andy Ayers [Fri, 13 May 2016 20:23:49 +0000 (13:23 -0700)]
Merge pull request dotnet/coreclr#4961 from AndyAyersMS/RandomInlineBudgetLimit
Add budget check to RandomPolicy
Commit migrated from https://github.com/dotnet/coreclr/commit/
b30ca193dc02aa96a3a0ea16f643c134d599cfcb
Brian Sullivan [Fri, 13 May 2016 19:51:37 +0000 (12:51 -0700)]
Merge pull request dotnet/coreclr#4955 from briansull/fix-asmdiff
Fix issue with Arm64 AsmDiffs
Commit migrated from https://github.com/dotnet/coreclr/commit/
90a3a4b90fc755729e546d8afb6536852eb96597
Matt Mitchell [Fri, 13 May 2016 19:02:43 +0000 (12:02 -0700)]
Merge pull request dotnet/coreclr#4956 from mmitche/gcstress-no-push
Run gcstress pri1r2r only a few times a week
Commit migrated from https://github.com/dotnet/coreclr/commit/
545810cbf2802290c8d697b897c6538b94a27cfb
tijoytom [Fri, 13 May 2016 18:44:26 +0000 (11:44 -0700)]
Merge pull request dotnet/coreclr#4959 from tijoytom/master
Renaming to StringToCoTaskMemUTF8
Commit migrated from https://github.com/dotnet/coreclr/commit/
f2465a8edf78841a70dac3b3945a0481a28e79ff
Andy Ayers [Fri, 13 May 2016 18:32:49 +0000 (11:32 -0700)]
Add budget check to RandomPolicy
Prevents RandomPolicy from being overly aggressive with small methods
that can lead to excessive inlining.
Closes dotnet/coreclr#4711. Undoes dotnet/coreclr#4704.
Commit migrated from https://github.com/dotnet/coreclr/commit/
441934212c3c20c930c05d5e1a5282f1fc2369c4
tijoytk [Fri, 13 May 2016 18:07:28 +0000 (11:07 -0700)]
Renaming the API StringToCoTaskMemUTF8 since we
need to be consistent with existing one.Also
fixing a merge conflict.
Commit migrated from https://github.com/dotnet/coreclr/commit/
6c0426b7b5b2529eeb39712f7aca7a652254ba55
Sean Gillespie [Fri, 13 May 2016 17:38:19 +0000 (10:38 -0700)]
Exclude from GCStress a few tests that take an unreasonably long time to complete
Commit migrated from https://github.com/dotnet/coreclr/commit/
0e7493e6f39c9a75cbb7ba685149552ce44d1d22
Matt Mitchell [Fri, 13 May 2016 17:19:57 +0000 (10:19 -0700)]
Run gcstress pri1r2r only a few times a week
Currently this is set on push, but since it can take days to run this is a bad idea
Commit migrated from https://github.com/dotnet/coreclr/commit/
6b07b266fd6ef9bd865864a9d6c65a1afd2c2119
Russ Keldorph [Fri, 13 May 2016 17:12:52 +0000 (10:12 -0700)]
Reenable passing tests
Many of the tests listed in dotnet/coreclr#2235 are now passing since their dependencies
have been fixed. b57367 is a notable exception; it's static dependency is
now satisfied, but at runtime it loads a type that is not present in .NET
Core. I'm deleting it because I verified there are other tests that test
the same load/invoke pattern (on different types).
The rest of the tests listed in dotnet/coreclr#2235 have already been deleted for other
reasons.
Fixes dotnet/coreclr#2235
Commit migrated from https://github.com/dotnet/coreclr/commit/
340bde10e86e514d2d53180997f8eedea10c1b3f
Brian Sullivan [Fri, 13 May 2016 17:11:58 +0000 (10:11 -0700)]
Fix issue with Arm64 AsmDiffs
Commit migrated from https://github.com/dotnet/coreclr/commit/
ede046b68183e228d9a7b3753542c8f4a1bea017
tijoytom [Fri, 13 May 2016 17:08:23 +0000 (10:08 -0700)]
Merge pull request dotnet/coreclr#4911 from tijoytom/master
Marshaling helpers for MarshalAs LPUTF8Str.
Commit migrated from https://github.com/dotnet/coreclr/commit/
6f1beecd22f586e052556b6838e7ffd91182d872
Pat Gavlin [Fri, 13 May 2016 13:30:46 +0000 (06:30 -0700)]
Merge pull request dotnet/coreclr#4813 from pgavlin/gh3058
Disable FEATURE_MERGE_JIT_AND_ENGINE on *nix.
Commit migrated from https://github.com/dotnet/coreclr/commit/
beef595f0357128233caae1b0a0eb89cdc540bbb
Andy Ayers [Fri, 13 May 2016 07:34:40 +0000 (00:34 -0700)]
Merge pull request dotnet/coreclr#4921 from AndyAyersMS/InlineReplay
Inliner: introduce ReplayPolicy
Commit migrated from https://github.com/dotnet/coreclr/commit/
57d1b4c3e0c3e446609fb000646ab4586a558b11
Pat Gavlin [Fri, 13 May 2016 03:48:39 +0000 (20:48 -0700)]
Address code review feedback.
Flip the order of the PID and activation function checks in the activation
signal handler.
Commit migrated from https://github.com/dotnet/coreclr/commit/
849160e0510efefe664034554437599d72c3234b
Pat Gavlin [Wed, 11 May 2016 20:41:07 +0000 (13:41 -0700)]
Chain activation signal handlers in the PAL.
The handler for the PAL's activation signal (`SIGRTMIN` on Linux) was
not properly chaining to the previous handler. This caused problems
with thread suspension on Linux in the case that multiple PALs were
loaded in a process: whichever PAL was loaded last would handle the
signal, and if that PAL was not configured to perform the appropriate
thread suspension, the runtime would hang.
Commit migrated from https://github.com/dotnet/coreclr/commit/
6af3b83cd50f747f016468e5c4b4e9d9cf3ceab0
Gaurav Khanna [Fri, 13 May 2016 03:42:13 +0000 (20:42 -0700)]
Merge pull request dotnet/coreclr#4941 from gkhanna79/Fix4938
Enable SHA256 to be used as hashing algorithm for compiler/assembler
Commit migrated from https://github.com/dotnet/coreclr/commit/
d0e1bcc4d881cb3757cf335a99a64b34d86d8e62
Matt Ellis [Fri, 13 May 2016 02:48:23 +0000 (19:48 -0700)]
Merge pull request dotnet/coreclr#4945 from dotnet-bot/from-tfs
Merge changes from TFS
Commit migrated from https://github.com/dotnet/coreclr/commit/
50cf21d1091036c4cd8f82cd9987d0cbf4f1f29f
Aditya Mandaleeka [Fri, 13 May 2016 01:04:47 +0000 (18:04 -0700)]
Stop using SYS_delete syscall for deleting files.
Commit migrated from https://github.com/dotnet/coreclr/commit/
d85869805ebda80514d77fa946afddfd36794073
Aditya Mandaleeka [Wed, 11 May 2016 23:58:54 +0000 (16:58 -0700)]
Add tests for file IO functions operating on symlinks.
Commit migrated from https://github.com/dotnet/coreclr/commit/
65e2bf65bb6b746c795fd687a79239cbd278c26a
John Chen [Fri, 13 May 2016 00:39:03 +0000 (17:39 -0700)]
Merge pull request dotnet/coreclr#4932 from JohnChen0/r2r
Fix contract violations in Ready to Run code
Commit migrated from https://github.com/dotnet/coreclr/commit/
94171ab2c3cfd497ea6cf8cb9c923a9a8c1a17e9
Kyungwoo Lee [Fri, 13 May 2016 00:00:18 +0000 (17:00 -0700)]
Merge pull request dotnet/coreclr#4933 from dotnet-bot/from-tfs
Merge changes from TFS
Commit migrated from https://github.com/dotnet/coreclr/commit/
ba652ab045b14764888494bf0c2d5289b21b4959
Andy Ayers [Tue, 10 May 2016 21:19:41 +0000 (14:19 -0700)]
Inliner: introduce ReplayPolicy
The ReplayPolicy reads an external script to determine which inlines
to perform. The script is the same Xml syntax that's produced by
the inliner when JitInlineDumpXml is enabled. This format can be edited
by hand or tool to force particular inlining patterns to occur. Methods
or calls sites not mentioned in the script are considered as noinline.
There's a bunch of work still left to make this fully robust, but in
testing it works well enough for my immediate use case that I'll hold
off on further polish until it's needed. But, for future reference,
here's a laundry list:
* Need better ways to identify methods. Token and hash are not enough.
* Need better ways to identify call sites. Callee token is not enough.
* Consider preparsing or mapping the script into memory.
* Consider caching node positions in the InlineContexts.
* Make it robust for multithreading.
* Handle the prejit root case somehow.
* Possibly allow overriding of inline attributes.
Commit migrated from https://github.com/dotnet/coreclr/commit/
8861f53c06e0cfc9c54f3e067d4c377631736c5b
Carol Eidt [Thu, 12 May 2016 23:34:00 +0000 (16:34 -0700)]
Update first-class-structs.md
Update some progress and fix some formatting
Commit migrated from https://github.com/dotnet/coreclr/commit/
b92d10d82e9553bd0b70e5e6a851cc82ad0bb11f
Pat Gavlin [Thu, 12 May 2016 21:32:13 +0000 (14:32 -0700)]
Use a JIT-specific stdout `FILE*`.
Historically, the JIT has had issues with logging inside of processes
that change the output mode of stdout (e.g. crossgen). This change
replaces the previous solution (which relied on #ifdefs) by dup'ing
the stdout file and wrapping it in a new `FILE*` set to a known
output mode.
Commit migrated from https://github.com/dotnet/coreclr/commit/
8172ccaa93df60a46712f3453a4871ce0026f3ea
Gaurav Khanna [Thu, 12 May 2016 23:08:10 +0000 (16:08 -0700)]
Enable SHA256 to be used as hashing algorithm for compiler/assembler
Commit migrated from https://github.com/dotnet/coreclr/commit/
93e43261663df5cbe5875e88389d74ae727f2337
Russ Keldorph [Thu, 12 May 2016 23:07:27 +0000 (16:07 -0700)]
Small formatting fix
Commit migrated from https://github.com/dotnet/coreclr/commit/
e49e825fdce88ce24e287cdc71a37dac984339b8
Sean Gillespie [Thu, 12 May 2016 21:55:12 +0000 (14:55 -0700)]
Merge pull request dotnet/coreclr#4899 from swgillespie/gcsimulator-fixup
Enable the GCSimulator CI run to run on a regular basis
Commit migrated from https://github.com/dotnet/coreclr/commit/
97769611d228be9f042fae64390b34ed33d2fd5a
tijoytk [Wed, 11 May 2016 17:00:52 +0000 (10:00 -0700)]
Marshaling helpers for MarshalAs LPUTF8Str.
Commit migrated from https://github.com/dotnet/coreclr/commit/
08dc81499cfb5b7e58bd366642d7920b5dbb8761
Tarek Mahmoud Sayed [Thu, 12 May 2016 20:17:40 +0000 (13:17 -0700)]
Merge pull request dotnet/coreclr#4915 from tarekgh/FixLowerAsciiCharChecks
Fix the optimization check to call ordinal
Commit migrated from https://github.com/dotnet/coreclr/commit/
1d2b39484385a6dd8b22eb45329f8dfd3389a180
John Chen (CLR) [Thu, 12 May 2016 17:02:33 +0000 (10:02 -0700)]
Fix contract violations in Ready to Run code
Commit migrated from https://github.com/dotnet/coreclr/commit/
e732c0a3fe1649995e62d577a067d4f066c79b22
Pat Gavlin [Thu, 12 May 2016 19:57:13 +0000 (12:57 -0700)]
Apply the JIT interface changes needed for Fadi's upcoming shared generics change.
[tfs-changeset: 1604316]
Commit migrated from https://github.com/dotnet/coreclr/commit/
8a972e65990b962613b474c11639245d90be5079
Aditya Mandaleeka [Thu, 12 May 2016 19:51:46 +0000 (12:51 -0700)]
Update unix-test-instructions.md
Add quotes around coreFxBinDir in unix-test-instructions document.
Commit migrated from https://github.com/dotnet/coreclr/commit/
c1181048d92afa49043cdd4ef50962eb2a949007
Brian Sullivan [Thu, 12 May 2016 18:21:17 +0000 (11:21 -0700)]
Fix trival build break, with warning treated as error for jmpDist usage
[tfs-changeset: 1604285]
Commit migrated from https://github.com/dotnet/coreclr/commit/
7100aeb91649f7f1f8cd552419a38d51c7402927
Bruce Forstall [Thu, 12 May 2016 17:59:50 +0000 (10:59 -0700)]
Merge pull request dotnet/coreclr#4931 from dotnet-bot/from-tfs
Merge changes from TFS
Commit migrated from https://github.com/dotnet/coreclr/commit/
33e581efe3ae54cd9fb8c832304b6f3b394c24dd
Matt Ellis [Thu, 12 May 2016 17:42:33 +0000 (10:42 -0700)]
Merge pull request dotnet/coreclr#4419 from ellismg/change-default-locale
Change how we detect the default locale
Commit migrated from https://github.com/dotnet/coreclr/commit/
82fe3afb8ad6431cd8c535ad2b857d6f7d16e8dc
Kyungwoo Lee [Thu, 12 May 2016 17:24:56 +0000 (10:24 -0700)]
Merge pull request dotnet/coreclr#4919 from kyulee1/switch
ARM64: Switch Expansion Using Jump Table
Commit migrated from https://github.com/dotnet/coreclr/commit/
6d550d74684f873f4dec17aa0d9e965e6850bd98
Kyungwoo Lee [Thu, 12 May 2016 04:48:40 +0000 (21:48 -0700)]
ARM64: Switch Expansion Using Jump Table
Fixes dotnet/coreclr#3332
To validate various addressing in dotnet/coreclr#4896, I just enable this.
Previously, we only allow a load operation to JIT data (`ldr` or
`IF_LARGELDC`).
For switch expansion, jump table is also recorded into JIT data.
In this case, we only get the address of jump table head, and
load the right entry after computing offset. So, basically `adr` or
`IF_LARGEADR` is used to not only load label within code but also refer to
the location of JIT data.
The typical code sequence for switch expansion is like this:
```
adr x8, [@RWD00] // load address of jump table head
ldr w8, [x8, x0, LSL dotnet/coreclr#2] // load jump entry from table addr + x0 * 4
adr x9, [G_M56320_IG02] // load address of current baisc block
add x8, x8, x9 // Add them to compute the final target
br x8 // Indirectly jump to the target
```
Commit migrated from https://github.com/dotnet/coreclr/commit/
a0c6144d406f29d70005fbf7ebd8ac3bdfe3cc0d
Jan Kotas [Thu, 12 May 2016 15:54:17 +0000 (08:54 -0700)]
Fix desktop build
[tfs-changeset: 1604234]
Commit migrated from https://github.com/dotnet/coreclr/commit/
a64342db509abbcce49b1a6e68c60fb550ef34b1
Kyungwoo Lee [Thu, 12 May 2016 15:46:53 +0000 (08:46 -0700)]
Merge pull request dotnet/coreclr#4926 from mylibero/issue4925
Fixed a build error on ARM
Commit migrated from https://github.com/dotnet/coreclr/commit/
4678ac883a8eafa45246fff978a4756483e0f067
Dongyun Jin [Thu, 12 May 2016 06:24:07 +0000 (15:24 +0900)]
Fixed a build error on ARM
The recent commit (61fe464) breaks ARM build.
It defines emitInsToJumpKind twice in src/jit/emit.h on ARM.
Signed-off-by: Dongyun Jin <dongyun.jin@samsung.com>
Signed-off-by: Jiyoung Yun <jy910.yun@samsung.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/
ebe8f551bf59befc8925681f50e43d83e6823992
David Mason [Thu, 12 May 2016 04:45:31 +0000 (21:45 -0700)]
Merge pull request dotnet/coreclr#4872 from vancem/FixETWArgs
Fix problem getting arguments from ETW to an EventSource.
Commit migrated from https://github.com/dotnet/coreclr/commit/
ad317b984e82c1208d5e2dcec807192a24b881d7
Kyungwoo Lee [Thu, 12 May 2016 04:37:47 +0000 (21:37 -0700)]
Merge pull request dotnet/coreclr#4896 from kyulee1/longjmp
ARM64: Enable Long Address
Commit migrated from https://github.com/dotnet/coreclr/commit/
3e986665bf96e9acf7f07c3efd171cf98c9d0ca2
Pat Gavlin [Thu, 12 May 2016 04:21:47 +0000 (21:21 -0700)]
Merge pull request dotnet/coreclr#4920 from pgavlin/JitStandaloneDefs
Remove the use of `CROSSGEN_COMPILE` in jitconfigvalues.h.
Commit migrated from https://github.com/dotnet/coreclr/commit/
1c2d8a6f958907e7ba9ac1198124d6611494001e
Kyungwoo Lee [Fri, 6 May 2016 15:11:08 +0000 (08:11 -0700)]
ARM64: Enable Long Address
Fixes https://github.com/dotnet/coreclr/issues/3668
Currently ARM64 codegen can have reference within +/-1 MB due to encoding
restriction in `b<cond>/adr/ldr` instructions. This is normally okay
assuming each function is reasonably small, but certainly not working for large method which also
can be formed with an aggressive inlining probably like crossgen/corert scenarios.
In addition, for hot/cold code separation long address is a prerequisite
since reference can be across different regions which are arbitrary.
In fact, we need additional relocations which are not in this change yet.
In details, this supports long address for conditional jump/address loading/constant
loading operations by default while they can be shortened later by
`emitJumpDistBind()` if they can fit into the smaller encoding. Logically
those operations now can reach within +/-4GB address range.
Note I haven't extended unconditional jump in this change for simplicity
so it can reach within +/-128MB same as before.
`emitOutputLJ` is extended to finally encode these operations.
There are 3 pseudo instructions introduced. These can be expanded either
short/long form.
1. Conditional jump. See `emitIns_J()`
a. Short form(`IF_BI_0B`): `b<cond> rel_addr`
b. Long form(`IF_LARGEJMP`):
```
b<rev cond> $LABEL
b rel_addr (unconditional jump)
$LABEL:
```
2. Load label(address computation). See `emitIns_R_L()`
a. Short form(`IF_DI_1E`): `adr x, [rel_addr]`
b. Long form(`IF_LARGEADR`):
```
adrp x, [rel_page_addr]
add x, x, page_offs
```
3. Load constant (from JIT data). See `emitIns_R_C()`
a. Short form(`IF_LS_1A`): `ldr x, [rel_addr]`
b. Long form(`IF_LARGLDC`):
```
adrp x, [rel_page_addr]
ldr x, [x, page_offs]
(fmov v, x in case loading vector constant)
```
In addition, JIT data is aligned on 8 byte to be accessible from large
load. Replaced JitLargeBranches by JitLongAddress to test stress on these
operations.
Commit migrated from https://github.com/dotnet/coreclr/commit/
61fe4641665e84089dcceeabbea3e5faa0f693ce
Tarekm Mahmoud Sayed [Wed, 11 May 2016 17:38:21 +0000 (10:38 -0700)]
Fix the optimization check to call ordinal
we have some optimization to check if we can perform the string search as ordinal
operation instead of lingustic operation. we used to check if the string is Ascii
which check if all chars in the string are in range 0~7F.
This check was not enough because in Linux, ICU do some special handling for some
characters in the Ascii range. so we need to avoid calling the ordinal operation
when encountering such chracters.
The fix is to take the advantage of String.IsFastSort which do exactly what we need
Commit migrated from https://github.com/dotnet/coreclr/commit/
60c011b9eee1549b162a29edbb13e7e131b596a3
Lubomir Litchev [Thu, 12 May 2016 02:10:31 +0000 (19:10 -0700)]
Merge pull request dotnet/coreclr#4917 from LLITCHEV/Issue2329
Increase timeout for GCStress jobs. Set the gcstress15_pri1r2r to be a
Commit migrated from https://github.com/dotnet/coreclr/commit/
2528da7f84dd132b36890c4c8325846a0c7a2702
Pat Gavlin [Wed, 11 May 2016 22:18:54 +0000 (15:18 -0700)]
Remove the use of `CROSSGEN_COMPILE` in jitconfigvalues.h.
This symbol was previously used to ensure that noway failures did not trigger
debugger breaks when running non-release builds of the JIT in crossgen on the
desktop CLR. We believe that this behavior is no longer necessary nor desirable.
Commit migrated from https://github.com/dotnet/coreclr/commit/
ef8e636e01acaea4d70791f92c2e4d321f1259b8
Bruce Forstall [Wed, 11 May 2016 22:23:37 +0000 (15:23 -0700)]
Merge pull request dotnet/coreclr#4916 from BruceForstall/TweakLongs
Small tweaks to RyuJIT/x86 LONG handling
Commit migrated from https://github.com/dotnet/coreclr/commit/
c18fe80d0d43cccb1aa7214e9bc446711520d0c7
Lubomir Litchev [Wed, 11 May 2016 18:46:31 +0000 (11:46 -0700)]
Increase timeout for GCStress jobs. Set the gcstress15_pri1r2r to be a
GCStress job.
Commit migrated from https://github.com/dotnet/coreclr/commit/
2052eae800bd6a0f347586409fdda39d7584fb6f
Aditya Mandaleeka [Wed, 11 May 2016 22:08:36 +0000 (15:08 -0700)]
Avoid following symlinks in PAL move/delete functions.
Commit migrated from https://github.com/dotnet/coreclr/commit/
396041e42037ff05bd39d8c1658be9a65c083863
Rama krishnan Raghupathy [Wed, 11 May 2016 21:15:11 +0000 (14:15 -0700)]
Merge pull request dotnet/coreclr#4809 from ramarag/ZapUnwindInfo
[Arm64]: Implement GetUnwindDataBlob
Commit migrated from https://github.com/dotnet/coreclr/commit/
48fa30ee5aa0b95a939934da40822f46b16ee807
Bruce Forstall [Wed, 11 May 2016 18:39:04 +0000 (11:39 -0700)]
Merge pull request dotnet/coreclr#1241 from mikedn/modopt
Extend the DIV/MOD dividend into RDX:RAX only if needed
Commit migrated from https://github.com/dotnet/coreclr/commit/
007551451453e83d1436ef8701bf8cd815a0ed57
Geoff Kizer [Wed, 11 May 2016 18:29:50 +0000 (11:29 -0700)]
Merge pull request dotnet/coreclr#4762 from geoffkizer/ecsopt
Optimize async invocation
Commit migrated from https://github.com/dotnet/coreclr/commit/
148b5621f026400c83e066ad3dfa0d55f82ffa23
Carol Eidt [Wed, 11 May 2016 18:21:07 +0000 (11:21 -0700)]
Merge pull request dotnet/coreclr#4848 from mikedn/lsra-counts
Remove unnecessary LSRA members
Commit migrated from https://github.com/dotnet/coreclr/commit/
ce6b084ef17cb96941115b48dc5f3c60cf114987
Bruce Forstall [Wed, 11 May 2016 17:35:47 +0000 (10:35 -0700)]
Small tweaks to RyuJIT/x86 LONG handling
1. Display GT_LONG trees in JitDump as gt_long, not just "long". This
helps distinguish them from the pervasive "long" type, making them easier
to see and search for.
2. Change the "hi" operator GT_* node definition to not include GTK_EXOP.
3. Dump the lva table after lvaPromoteLongVars().
Commit migrated from https://github.com/dotnet/coreclr/commit/
e1715220e9d00b0e3db3d9f3422d2a982b958a65
Wes Haggard [Wed, 11 May 2016 17:22:29 +0000 (10:22 -0700)]
Merge pull request dotnet/coreclr#4890 from AlexGhiondea/BuildRefAssemblyPerTargetOS
Fix the reference assembly for mscorlib to match the surface area of the OS
Commit migrated from https://github.com/dotnet/coreclr/commit/
b59a6045bca5e4c11b4078fede0fd567a2c8d873
Bruce Forstall [Wed, 11 May 2016 17:13:06 +0000 (10:13 -0700)]
Merge pull request dotnet/coreclr#4903 from BruceForstall/MoveToLegacy
Move some LEGACY_BACKEND code to codegenlegacy.cpp
Commit migrated from https://github.com/dotnet/coreclr/commit/
12aadb8ff959b2e923e456916be3b5b2282a9374
Bruce Forstall [Wed, 11 May 2016 17:12:39 +0000 (10:12 -0700)]
Merge pull request dotnet/coreclr#4900 from BruceForstall/PartialFix4817c
Fix kill set of rep stos to include ECX
Commit migrated from https://github.com/dotnet/coreclr/commit/
483efe7d186828d51444756328398995e5527149
tijoytom [Wed, 11 May 2016 16:57:46 +0000 (09:57 -0700)]
Merge pull request dotnet/coreclr#4895 from tijoytom/master
Cleaning up a bunch of warnings.
Commit migrated from https://github.com/dotnet/coreclr/commit/
57c091cbd043b2597f1824b468f11e0ca6df8325
Jan Kotas [Wed, 11 May 2016 11:17:04 +0000 (04:17 -0700)]
Merge pull request dotnet/coreclr#4898 from dotnet-bot/from-tfs
Merge changes from TFS
Commit migrated from https://github.com/dotnet/coreclr/commit/
3eb2a48ed579e6324399548131d0351d99839a88
Geunsik Lim [Wed, 11 May 2016 08:44:36 +0000 (17:44 +0900)]
Linux/ARM: Use -O1 level to avoid segfault in release-build for Linux/ARM (dotnet/coreclr#4904)
We cannot still run 'hello world' console application even though
the cross compilation of CoreCLR is successfully completed.
In release-build, the segmentation fault of 'hello world'
is made by the misalignment of thread local storage (TLS) section
because of the aggressive optimization level of clang compiler for
code optimization(e.g., file size and execution speed).
It means that Clang/LLVM has a bug in case of the usage of O2/O3 flag.
Below is the major difference among the optimization levels of Clang.
* -O2 is based on -O1:
.adding: -gvn -constmerge -globaldce -slp-vectorizer -mldst-motion -inline
.removing: -always-inline
* -O3 is based on -O2:
.adding: -argpromotion
ver2:
- Corerun is loading 'libcoreclr.so' using dlopen() library call. So, we can not
use initial-exec TLS model (ver1) because of the thread-safe issue of
the multi-threaded. (Reported by @janvorli)
- In the release-build, Let's replace -O3 with -O1 to avoid the segmentation
fault due to the aggressive optimization level of the Clang until fixing
the bug of the Clang/LLVM.
ver1:
- The default value of clang is "global-dynamic". However, the thread-local
storage (TLS) model of Clang/LLVM does not guarantee the normal execution
of TLS's symbol relocation due to the misaligned __tls_get_addr symbol in
case of the aggressive optimizations of Clang on Linux/ARM.
- Let's enable initial-exec TLS model instead of the dynamic TLS model.
Signed-off-by: Geunsik Lim <geunsik.lim@samsung.com>
CC: Jan Kotas <jkotas@microsoft.com>
CC: Jan Vorlicek <janvorli@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/
ee28eca285fc71acad093eb5e34101d2ab9e2018
geoffkizer [Thu, 11 Feb 2016 19:44:19 +0000 (11:44 -0800)]
Improve performance of ExecutionContextSwitcher to help async invocation perf
Commit migrated from https://github.com/dotnet/coreclr/commit/
5ede820db415f083a0086d9f3e5e5cdd64ccce61
Rama Krishnan Raghupathy [Thu, 5 May 2016 22:45:22 +0000 (15:45 -0700)]
[Arm64]: Implement GetUnwindDataBlob
Commit migrated from https://github.com/dotnet/coreclr/commit/
b8ec1f8f7fb462aba23faf6daefeee8a5e037d3b
Bruce Forstall [Wed, 11 May 2016 00:33:09 +0000 (17:33 -0700)]
Move some LEGACY_BACKEND code from codegencommon.cpp to codegenlegacy.cpp
And, move some header file changes from codegen.h to codegenclassic.h.
The code moved were whole functions with no apparent tight coupling with
other code already in codegencommon.cpp.
The code moved had some #ifndef LEGACY_BACKEND portions, no longer
needed, removed.
Commit migrated from https://github.com/dotnet/coreclr/commit/
fa74a694fe525847e8833613e2b31edc813b30b3
Jan Vorlicek [Wed, 11 May 2016 00:15:45 +0000 (02:15 +0200)]
Change hosting API string encoding to UTF-8 on Windows (dotnet/coreclr#4894)
This change fixes a problem with the string encoding in the hosting API
using CP_ACP, which causes problem when the input is a string in other
language than the current Windows one. In such case, it loses some
characters.
The fix is to use UTF-8 encoding (which is what CP_ACP means on Unix
PAL too).
Commit migrated from https://github.com/dotnet/coreclr/commit/
5c3d1efea4a8673086df4ba36267d7f580ba9c8c
Bruce Forstall [Tue, 10 May 2016 23:43:55 +0000 (16:43 -0700)]
Fix kill set of rep stos to include ECX
There was a very strange condition in the existing code to only
conditionally include ECX in the kill set. I convinced myself that
for AMD64, this condition always holds in this code path (which
makes a lot more sense anyway), so I removed the condition, and
also made all this code execute for x86 as well.
Fixes dotnet/coreclr#4817
Commit migrated from https://github.com/dotnet/coreclr/commit/
6e05fb4c01eeb133aa8683a581e5becab8d20b62
Sean Gillespie [Tue, 10 May 2016 19:03:16 +0000 (12:03 -0700)]
Enable the GCSimulator CI run to run on a regular basis
Commit migrated from https://github.com/dotnet/coreclr/commit/
46ba7777d233c3b3787ea02b8226e340f09d574c
Jan Kotas [Tue, 10 May 2016 23:26:42 +0000 (16:26 -0700)]
Fix razzle build breaks
[tfs-changeset: 1603547]
Commit migrated from https://github.com/dotnet/coreclr/commit/
5045b02082847646ee673b0c4d8ba07b6fc5beec
Alex Ghiondea [Tue, 10 May 2016 21:53:35 +0000 (14:53 -0700)]
Build the reference assembly and the facade for mscorlib.
Make sure that the facade projects generates pdbs when possible.
Commit migrated from https://github.com/dotnet/coreclr/commit/
b451522dd3c012e78ceae772fc1fb8cf87c35083
Alex Ghiondea [Tue, 10 May 2016 19:46:55 +0000 (12:46 -0700)]
Create a Nuget package that will contain the reference assembly for mscorlib.
Commit migrated from https://github.com/dotnet/coreclr/commit/
a5ba6fa7ff153c239d1e37939e8a320f3c13acf9
tijoytk [Tue, 10 May 2016 22:19:24 +0000 (15:19 -0700)]
Cleaning up a bunch of warnings.
Commit migrated from https://github.com/dotnet/coreclr/commit/
9dc0fd926d34ccb4fc9a50e1fa4d684682e777d6
Alex Ghiondea [Tue, 10 May 2016 18:21:17 +0000 (11:21 -0700)]
Fix the reference assembly for mscorlib to match the surface area of the OS on which it builds.
Commit migrated from https://github.com/dotnet/coreclr/commit/
295566490dc2c6c01f9e5e1db215d005def2d42e
Bruce Forstall [Tue, 10 May 2016 21:51:44 +0000 (14:51 -0700)]
Merge pull request dotnet/coreclr#4891 from BruceForstall/PartialFix4817
Block ops using rep on x86 need to kill edi/esi/ecx, same as x64
Commit migrated from https://github.com/dotnet/coreclr/commit/
99c79ff3703439126a31216d056b44d6ef877ab7
Andy Ayers [Tue, 10 May 2016 20:54:13 +0000 (13:54 -0700)]
Merge pull request dotnet/coreclr#4878 from AndyAyersMS/AddMissingBenchmarkAttrs
Add missing xunit performance attributes
Commit migrated from https://github.com/dotnet/coreclr/commit/
5383f6bc8daecb66db16d27439b8d1be499454d4
Pat Gavlin [Fri, 6 May 2016 00:12:20 +0000 (17:12 -0700)]
Disable FEATURE_MERGE_JIT_AND_ENGINE on *nix.
Now that dotnet/coreclr#3058 has been fixed, the JIT can be consumed as a dynamic
library on all platforms.
Commit migrated from https://github.com/dotnet/coreclr/commit/
312643c85a7f371414fd4dca1a13b9631a538498
Vance Morrison [Tue, 10 May 2016 19:32:13 +0000 (12:32 -0700)]
One for fix for non-windows platforms
Commit migrated from https://github.com/dotnet/coreclr/commit/
b76d77fc52adc5936a6c1a0950e298488b6dfa5a
Bruce Forstall [Tue, 10 May 2016 18:52:30 +0000 (11:52 -0700)]
Block ops using rep on x86 need to kill edi/esi/ecx, same as x64
Commit migrated from https://github.com/dotnet/coreclr/commit/
3d3bebe396d1563d965093064829d63f66a885dd
AlexGhiondea [Tue, 10 May 2016 18:36:05 +0000 (11:36 -0700)]
Merge pull request dotnet/coreclr#4833 from AlexGhiondea/StringBuilderFixes
Improve detection of error condition when using StringBuilder
Commit migrated from https://github.com/dotnet/coreclr/commit/
fa4d5f15797acba17ff6b204fe1fe310c40d750e
Mike Danes [Mon, 9 May 2016 22:01:12 +0000 (01:01 +0300)]
Optimize integer div/mod by const power of 2 in lowering
Optimizing GT_DIV/GT_UDIV/GT_MOD/GT_UMOD by power of 2 in codegen is problematic because the xarch DIV instruction has special register requirements. By the time codegen decides to perform the optimization the rax and rdx registers have been already allocated by LSRA even though they're not always needed (as it happens in the case of unsigned division where CDQ isn't used).
Since the JIT can't represent a CDQ instruction in its IR an arithmetic shift (GT_RSH) has been instead to extract the dividend sign. xarch's SAR is larger than CDQ but it has the advantage that it doesn't require specific registers. Also, arithmetic shifts are available on architectures other than xarch.
Example: method "static int foo(int x) => x / 8;" is now compiled to
mov eax, ecx
mov edx, eax
sar edx, 31
and edx, 7
add edx, eax
mov eax, edx
sar eax, 3
instead of
mov eax, ecx
cdq
and edx, 7
add eax, edx
sar eax, 3
As a side-effect of this change the optimization now also works when the divisor is too large to be contained. Previously this wasn't possible because the divisor constant needed to be modified during codegen but the constant was already loaded into a register.
Example: method "static ulong foo(ulong x) => x /
4294967296;" is now compiled to
mov rax, rcx
shr rax, 32
whereas before a DIV instruction was used.
This change also fixes an issue in fgShouldUseMagicNumberDivide. The optimization that is done in lower can handle negative power of 2 divisors but fgShouldUseMagicNumberDivide handled those cases because it didn't check the absolute value of the divisor.
Example: method "static int foo(int x) => return x / -2;" is now compiled to
mov eax, ecx
mov edx, eax
shr edx, 31
add edx, eax
sar edx, 1
mov eax, edx
neg eax
instead of
mov eax, 0x7FFFFFFF
imul edx:eax, ecx
mov eax, edx
sub eax, ecx
mov edx, eax
shr edx, 31
add eax, edx
Commit migrated from https://github.com/dotnet/coreclr/commit/
d3647c10d7f01daa1f6b38fd601cd9606a08b687
tijoytom [Tue, 10 May 2016 17:33:36 +0000 (10:33 -0700)]
Merge pull request dotnet/coreclr#4793 from tijoytom/master
UTF8 Marshaling support(UnmanagedType.LPUTF8Str)
Commit migrated from https://github.com/dotnet/coreclr/commit/
72b1ea011f28c1897fa2a668f0676a075bdb6b6e
Vance Morrison [Tue, 10 May 2016 16:38:55 +0000 (09:38 -0700)]
Fix non-widows builds.
Commit migrated from https://github.com/dotnet/coreclr/commit/
e7496075c4dab4e029d0cb52edbc01ed253868d1
Hugh Bellamy [Tue, 10 May 2016 14:52:05 +0000 (15:52 +0100)]
Fix ArgumentNullException messages passed as parameter names (dotnet/coreclr#2889)
Fixed several ArgumentNullExceptions that throw with the message as the parameter name, leading to potential confusion for developers.
Commit migrated from https://github.com/dotnet/coreclr/commit/
ad2485b93ce14437c0dc8b4fb69b0a54177fe09f
Jonghyun Park [Tue, 10 May 2016 14:51:26 +0000 (23:51 +0900)]
Adjust relative offsets in UMThunkStub (dotnet/coreclr#4888)
* Adjust relative offsets in UMThunkStub
This commit updates the relative offsets inside UMThunkStub according to the recent changes in
UMThunkStub (for stack unwinding).
* Uses 'UMThunkStub_StackArgsSize' instead of 'UMThunkStub_StackArgsOffset'
This commit revises 'UM2MThunk_WrapperHelper' to use 'UMThunkStub_StackArgsSize'
instead of 'UMThunkStub_StackArgsOffset'.
Commit migrated from https://github.com/dotnet/coreclr/commit/
7fe0fef10a3c9654673aff5366d97f3dc74a68e5