Sergey Andreenko [Tue, 6 Nov 2018 18:24:37 +0000 (10:24 -0800)]
fix corefx folder (dotnet/coreclr#20828)
Commit migrated from https://github.com/dotnet/coreclr/commit/
39d673dc3a6840c8d76a2baa86e9dcca4b1f784c
Bruce Forstall [Tue, 6 Nov 2018 17:52:29 +0000 (09:52 -0800)]
Merge pull request dotnet/coreclr#20834 from BruceForstall/FixArmElJob
Fix corefx folder for Tizen job
Commit migrated from https://github.com/dotnet/coreclr/commit/
39dc64dfb50e374162aa263514f9ad1a46061f0d
Bruce Forstall [Tue, 6 Nov 2018 17:28:45 +0000 (09:28 -0800)]
Fix corefx folder for Tizen job
https://ci.dot.net/job/dotnet_coreclr/job/master/job/armel_cross_checked_tizen_innerloop_prtest/
Commit migrated from https://github.com/dotnet/coreclr/commit/
05126bb441726cda23c0282e81068cd2a211f092
Oded Hanson [Tue, 6 Nov 2018 16:31:49 +0000 (18:31 +0200)]
Added support for running in a sandbox on Mac (dotnet/coreclr#20735)
* Added support for running in a sandbox on Mac
When running in a sandbox, the Mac operating system will limit access to resources, esp. the file system. Right now both Mutex and SharedMemory in the PAL are accessing the /tmp folder for which Mac does not provide the application permissions to access.
Instead, the sandbox provides the ability to share information between applications by using a shared container folder. This is done by registering the application with an Application Group ID. Using this ID, we can access the shared folder and read/write from it.
Since the .Net runtime can be loaded in multiple ways, we decided that the easiest way to let the runtime know what the application group ID is via an environment variable. Thus, if the NETCOREAPP_SANDBOX_APPLICATION_GROUP_ID environment variable is set (on Mac), the runtime will assume we are sandboxed, and will use the value provided as the application group ID. Note that due to limitations on semaphore file lengths, we will not allow application group IDs longer than 13 characters. This gives us 10 characters for the developer ID, and 3 extra characters for the group name.
When sandbox is disabled (the environment variable is empty) then the folder for Mutex and SharedMemory will continue to be rooted in /tmp. However when the sandbox is enabled, these files will be created under /user/{loginname}/Library/Group Containers/{AppGroupId}/.
Fixes dotnet/coreclr#20473
* Made gApplicationContainerPath a pointer so it does not get automatically deleted by the c runtime
* Made s_runtimeTempDirectoryPath and s_sharedMemoryDirectoryPath pointers so they are not automatically deleted by the c runtime
* Renamed gApplicationContainerPath to gSharedFilesPath
* Renamed NETCOREAPP_SANDBOX_APPLICATION_GROUP_ID to DOTNET_SANDBOX_APPLICATION_GROUP_ID
* Fixed usage of VerifyStringOperation
* Replaced new with InternalNew
* Wrapped Apple specific code with #ifdef
* Added exception handling during close
* Moved VerifyStringOperation macro into SharedMemoryManager
* Moved PathCharString variable declarations before AutoCleanup is declared.
* Fixed initialization functions not to throw
* Renamed CopyPath to BuildSharedFilesPath
* Fixed misc nits
* Fixed implicit conversions from BOOL to bool
* Moved MAX_APPLICATION_GROUP_ID_LENGTH inside ifdef APPLE
* Removed PAL_IsApplicationSandboxed
Commit migrated from https://github.com/dotnet/coreclr/commit/
5c566d470db2f1be687e6da5f9935960d482bf72
Mike McLaughlin [Tue, 6 Nov 2018 00:43:03 +0000 (16:43 -0800)]
Exclude FreeBSD symbol packages from symbol uploader (Part 3) (dotnet/coreclr#20824)
Commit migrated from https://github.com/dotnet/coreclr/commit/
b1b424f741af16a5df052ef11609c65d99686435
Levi Broderick [Tue, 6 Nov 2018 00:06:32 +0000 (16:06 -0800)]
Add support for BSWAP intrinsic (dotnet/coreclr#18398)
With this change, the JIT will recognize a call to BinaryPrimitives.ReverseEndianness and will emit a bswap instruction.
This logic is currently only hooked up for x86 and x64; ARM still uses fallback logic.
If the JIT can't emit a bswap instruction (for example, trying to emit a 64-bit bswap in a 32-bit process), it will fall back to a software implementation, so the APIs will work across all architectures.
Commit migrated from https://github.com/dotnet/coreclr/commit/
f72025c8b6d8a4fc3b4e22e2a3b6e1afeaef15ff
Tanner Gooding [Mon, 5 Nov 2018 23:37:36 +0000 (15:37 -0800)]
Adding some new functions to System.Math and System.MathF (dotnet/coreclr#20788)
* Adding BitIncrement, BitDecrement, CopySign, MaxMagnitude, and MinMagnitude to Math and MathF
* Adding FusedMultiplyAdd, IlogB, Log2, and ScaleB to Math and MathF
* Adding some basic PAL tests for fma, ilogb, log2, and scalbn
* Fixing a couple typos and adding clarifying comments
* Fixing the MSVC _VVV FCALL declarations
Commit migrated from https://github.com/dotnet/coreclr/commit/
28417584d8e98ae7eac22e92b952778f8ea94047
Tanner Gooding [Mon, 5 Nov 2018 23:37:14 +0000 (15:37 -0800)]
Updating the importer to throw a NotImplementedException if it finds a mustExpand intrinsic that it can't expand (dotnet/coreclr#20792)
* Updating the importer to throw a NotImplementedException if it finds a mustExpand hwintrinsic that it can't expand
* Updating the JITEEVersionIdentifier
Commit migrated from https://github.com/dotnet/coreclr/commit/
d3a7c973723bf2610c7dcdcd00318c06a72a36f8
Krzysztof Wicher [Mon, 5 Nov 2018 18:48:53 +0000 (10:48 -0800)]
Improve/fix SerialStream.Dispose (dotnet/corefxdotnet/coreclr#33221)
* Improve/fix SerialStream.Dispose
* Review feedback
* remove unused using statement
* Use ToFileDescriptor
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/
0eb2dbbc3cd45b2a118aa44ac05bac9b8ca1eec4
Brian Sullivan [Mon, 5 Nov 2018 23:13:05 +0000 (15:13 -0800)]
Merge pull request dotnet/coreclr#20736 from briansull/issue_18672
Fix ValueNumber constant propagation with nested structs
Commit migrated from https://github.com/dotnet/coreclr/commit/
139a9795911b059bd242ca6fbf7cd84bebe26a5b
Tobias Loew [Mon, 5 Nov 2018 19:28:01 +0000 (20:28 +0100)]
Fiber-friendly Vectored Exception Handling (dotnet/coreclr#20746)
* Fiber-friendly Vectored Exception Handling
Check during exception handling if the cached and the current stack-base match to detect Fibers.
Commit migrated from https://github.com/dotnet/coreclr/commit/
9f5aabc89487eeb2b1621cfb3b9ed8f5db243d9e
Brian Sullivan [Thu, 1 Nov 2018 00:11:38 +0000 (17:11 -0700)]
Fix constant propagation with nested structs
Fixes dotnet/coreclr#18672
Test case is here: JIT/Regression/JitBlue/GitHub_18672/GitHub_18672.cs
Commit migrated from https://github.com/dotnet/coreclr/commit/
adbc0f5f613eb72131d3224c24ef79ca589b1d06
Matt Galbraith [Mon, 5 Nov 2018 18:03:38 +0000 (10:03 -0800)]
Bump FreeBSD AzDO build timeout to 90 minutes
Commit migrated from https://github.com/dotnet/coreclr/commit/
2c2cab344c4909da0bd0ebcd6a80c6c16c2598dc
Sergey Andreenko [Mon, 5 Nov 2018 17:03:43 +0000 (09:03 -0800)]
Fix perf regression in (dotnet/coreclr#20762)
* Fix comments.
We count implict byref argument occurrences for all lclVars not only for promoted.
* Fix the regression.
Return the old behaiour where both parent and promoted lclVar have updated ref counters.
* rename `UpdateImplicitByRefCounter` to `UpdateEarlyRefCountForImplicitByRef`
* Fix comment.
Commit migrated from https://github.com/dotnet/coreclr/commit/
0ce06bbbc113ed67970d3af33a5f7292e5180ff5
Pent Ploompuu [Sun, 4 Nov 2018 20:42:11 +0000 (22:42 +0200)]
System.Decimal code style and comments clean-up (dotnet/coreclr#20793)
Commit migrated from https://github.com/dotnet/coreclr/commit/
8780dc610b07d2e2921814e27351c8589b158ba9
Nick Craver [Sun, 4 Nov 2018 07:11:47 +0000 (02:11 -0500)]
Optimization: Reduce many array allocations in GetCustomAtttributes()'s inherited path (dotnet/coreclr#20779)
* Optimization: avoid 2 array allocations in inherited attribute misses
This is a follow-up to many allocations recognized in dotnet/coreclr#20448.
A lot of methods ultimately call through CustomAttributes.GetCustomAttributes(). In the inherited search path (default for most searches above), the inheritance path of a class is traversed, resulting in an array allocation per crawled type, a copy to the overall List<object> and then after that - in current code - an array allocation from that list and a typed array allocation it's copied to.
However, in the common miss case as simple as:
typeof(T).GetCustomAttributes(typeof(TAttr), true);
...and many other overloads, all the same path underneath...
We can avoid the last 2 arrays in the miss case. We have the List<object> to go off of. If that's a zero-entry list, we can return an Array.Empty<TAttr>(). That's effectively what this change does.
While converting the entire attribute pipeline to generics is problematic and has issue since some object[] return abstracts aren't sealed, we can at least somewhat trivially cache an array per attribute type (only one static, ultimately from Array.Empty<T> underneath) and return that for the miss case.
There are far more wins to be had here, but they require more changes.
* Move RuntimeType empty array cache generation to Attribute.CreateAttributeArrayHelper
This exposes Attribute.CreateAttributeArrayHelper to internal and uses it directly on the RuntimeType caching for empty arrays. Though this allocated 1 additional array overall, it's simpler, faster to init, and still is an infinite win over the per-call allocations before this overall changesets.
* CustomAttributes: remove needless array copy in the inherited hit case
This removes a .ToArray() for the sake of Array.Copy() where a simple for loop suffices and removes the allocation. Reversing the "empty" result checks is also just a bit cleaner here.
This also expands the same fix to the MemberInfo path.
Note: should DRY these up too (longstanding issue) - but let's do that in a separate commit for clarity.
* GetCusomAttributes: use ListBuilder<object> for inheritance crawls
This exposes RuntimeType.ListBuilder<T> for internal usage and replaces the List<T> allocation in GetCustomAttributes() paths to reduce allocations and increase performance in the inherited crawl paths (which is the default for many optional-parameter methods in layers above).
Note: there is a subtle behavior depending on previous-null (not possible with a struct now) in AttributeUsageCheck() that I believe still behaves correctly, but could use another set of eyes and a full test suite run to confirm. object[] attributes was removed there simply because it wasn't used before - only cleaning up.
* Attribute caching: use Array.CreateInstance() directly on RuntimeType
This also reverts the CreateAttributeArrayHelper => internal change, since it's no longer needed.
* Ref passing for RuntimeType.ListBuilder<object> & CustomAttribute simplification
This fixes the struct passing duplication and tweaks how we're creating arrays a bit, centralizing the zero-element checks to cover all cases as well as simplify the per-method code to rely on the fact this is happening underneath.
Commit migrated from https://github.com/dotnet/coreclr/commit/
6d9fc60df3b721eab98ca08386a1f01358f93839
Jan Kotas [Sat, 3 Nov 2018 23:14:10 +0000 (16:14 -0700)]
Improve error messages for byref-like type loading errors (dotnet/coreclr#20789)
Related to dotnet/corefxdotnet/coreclr#33233
Commit migrated from https://github.com/dotnet/coreclr/commit/
f2d56a9b2b5737ab04d322f03404b9faef9e5293
Bruce Forstall [Sat, 3 Nov 2018 22:23:17 +0000 (15:23 -0700)]
Merge pull request dotnet/coreclr#20780 from dotnet/dev/unix_test_workflow
PMI asm diffs changes
Commit migrated from https://github.com/dotnet/coreclr/commit/
1e68cab53a2855d7733ca230efad1be99bd471e2
Wraith2 [Sat, 3 Nov 2018 20:54:23 +0000 (20:54 +0000)]
Add StringBuilder.Append(ROM<char>) (dotnet/coreclr#20773)
* added Append(ROM<char>)
* address feedback
* revert sln
Commit migrated from https://github.com/dotnet/coreclr/commit/
ea5b27d97a392aeda6de31e2724e2eab0ac3a85f
dotnet-maestro-bot [Sat, 3 Nov 2018 20:49:44 +0000 (13:49 -0700)]
Update CoreFx, CoreSetup, IbcData, PgoData to preview.18553.3, preview-27103-01, master-
20181103-0046, master-
20181103-0042, respectively (dotnet/coreclr#20785)
Commit migrated from https://github.com/dotnet/coreclr/commit/
e18f25639c4d079dd0ba3be1a755420042685054
Jan Kotas [Sat, 3 Nov 2018 16:45:30 +0000 (09:45 -0700)]
Cleanup and improve name formatting in reflection (dotnet/coreclr#20781)
* Delete internal Array.UnsafeCreateInstance method
* Delete binary serialization specific type name formatting
* Use ValueStringBuilder to format method names in reflection
Commit migrated from https://github.com/dotnet/coreclr/commit/
606c246d8da95258d148020e74d49a30d8fd74ee
dotnet-maestro-bot [Sat, 3 Nov 2018 12:31:32 +0000 (05:31 -0700)]
Update BuildTools, CoreClr, CoreFx, CoreSetup, IbcData, PgoData to preview1-03402-01, preview-27102-02, preview.18552.1, preview-27102-03, master-
20181102-0044, master-
20181102-0041, respectively (master) (dotnet/coreclr#20745)
* Update BuildTools, CoreClr, CoreFx, CoreSetup, IbcData, PgoData to preview1-03402-01, preview-27102-02, preview.18552.1, preview-27102-03, master-
20181102-0044, master-
20181102-0041, respectively
* Disabled outdated test
Commit migrated from https://github.com/dotnet/coreclr/commit/
a7fbd4e23772041c6e3eb7790fb9595b4d25b186
Levi Broderick [Sat, 3 Nov 2018 02:15:43 +0000 (19:15 -0700)]
Perf improvements to Span and Memory (dotnet/coreclr#20771)
* Perf improvements to Span and Memory
- Improves perf of AsSpan, AsMemory, ctor, and Slice
* PR feedback - add comments
Commit migrated from https://github.com/dotnet/coreclr/commit/
e8438d33b28e32fa7eb879aa70181087b277f29a
Stephen Toub [Sat, 3 Nov 2018 02:08:35 +0000 (22:08 -0400)]
Use C# compiler's static data support in Encoding.Preamble (dotnet/coreclr#20768)
* Use C# compiler's static data support in Encoding.Preamble
Also avoid Array.Empty and just use default span for an empty preamble.
* Address PR feedback
Commit migrated from https://github.com/dotnet/coreclr/commit/
faa4c87ff3e025c9bed978522f3fe4c85ceecb60
Stephen Toub [Sat, 3 Nov 2018 00:51:26 +0000 (20:51 -0400)]
Add remaining IAsyncDisposable implementations to CoreLib (dotnet/coreclr#20676)
* Add remaining IAsyncDisposable implementations to CoreLib
* Address PR feedback
Commit migrated from https://github.com/dotnet/coreclr/commit/
8b03dbeb90c81b8095b949b44553ff970e169851
Andrew Au [Sat, 3 Nov 2018 00:22:36 +0000 (17:22 -0700)]
Fix logging so that we can see the full 64 bit integer in the log file (dotnet/coreclr#20741)
Commit migrated from https://github.com/dotnet/coreclr/commit/
ece243dfde28a2eb2505daf68e432dd0c4d7b6c6
Levi Broderick [Sat, 3 Nov 2018 00:15:47 +0000 (17:15 -0700)]
Improve performance of String.Equals(..., OrdinalIgnoreCase) (dotnet/coreclr#20734)
- Tries to consume multiple chars in parallel when possible
- Didn't vectorize because inputs to this function are generally fairly small
- Moved static GlobalizationMode lookup out of hot path
- Removed indirection so that StringComparer now calls directly into workhorse routine
Commit migrated from https://github.com/dotnet/coreclr/commit/
dd6c69022fbbe4111551f76bb9f9804538cf1e2e
Bruce Forstall [Fri, 2 Nov 2018 21:27:02 +0000 (14:27 -0700)]
Merge pull request dotnet/coreclr#20769 from BruceForstall/FixArm
Need to archive and transfer the Product directory for Linux arm/arm64
Commit migrated from https://github.com/dotnet/coreclr/commit/
38c821a48834deda8074b571a5e078c12e406dd2
Juan Hoyos [Fri, 2 Nov 2018 20:48:49 +0000 (13:48 -0700)]
Merge pull request dotnet/coreclr#20760 from hoyosjs/arcade
Add base arcade scripts and versioning files
Commit migrated from https://github.com/dotnet/coreclr/commit/
87dbecdc9eb6c2f2ec8550f5e2284be73c3b5643
Bruce Forstall [Fri, 2 Nov 2018 20:47:35 +0000 (13:47 -0700)]
Merge pull request dotnet/coreclr#20770 from BruceForstall/EnableMoreDiffs
Do PMI diffs on frameworks and benchmarks
Commit migrated from https://github.com/dotnet/coreclr/commit/
1e43edaac595b33d22cc72f493889457632441b3
Bruce Forstall [Fri, 2 Nov 2018 20:45:59 +0000 (13:45 -0700)]
Do PMI diffs on frameworks and benchmarks
Commit migrated from https://github.com/dotnet/coreclr/commit/
4da668779425e5ee0fffebc4bfa96164e8eace63
Maryam Ariyan [Fri, 2 Nov 2018 20:42:11 +0000 (13:42 -0700)]
Allows Debug.Fail to go through Trace Listeners (dotnet/coreclr#20764)
Commit migrated from https://github.com/dotnet/coreclr/commit/
86ab37c1526204add7a83fd991b11b90af714bd7
Bruce Forstall [Fri, 2 Nov 2018 20:39:53 +0000 (13:39 -0700)]
Need to archive and transfer the Product directory for Linux arm/arm64 PMI diffs
Commit migrated from https://github.com/dotnet/coreclr/commit/
1718cc313594e25bb367150226b1afb0ce08f5d9
Stephen Toub [Fri, 2 Nov 2018 16:52:42 +0000 (12:52 -0400)]
Avoid unnecessary interlocked in ManualResetValueTaskSourceCore (dotnet/coreclr#20742)
When a ManualResetValueTaskSourceCore is used as the implementation for a ValueTask, it's set up for the operation, and then two things happen: a callback is hooked up at some point, and the operation completes at some point. The former generally occurs before the latter, however there is a race condition, and so both paths currently use an Interlocked.CompareExchange to coordinate. But that means that we always end up with two CompareExchange operations. In the common path, there's no contention between these, and so we can avoid one of the CompareExchanges by first doing a normal read of the target field (we were already doing that read in one of the two cases, but we weren't taking advantage of it).
Commit migrated from https://github.com/dotnet/coreclr/commit/
4410262505b5ebe308476116e9e833b210394638
Sergey Andreenko [Fri, 2 Nov 2018 00:43:17 +0000 (17:43 -0700)]
Fix the test. (dotnet/coreclr#20701)
As https://docs.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.gchandle.free?view=netframework-4.7.2 says "The caller must ensure that for a given handle, Free is called only once.".
So delete the second call to `Free()`.
I believe it changes the desired behaviour for this test but it was added before 2010 (via source depo) and there are no comments about the regression that it was able to repro, so it is not worth to investigate that.
Commit migrated from https://github.com/dotnet/coreclr/commit/
61edf4d3200be7c6f59f2558ef5a5773170cfba9
Eugene Rozenfeld [Fri, 2 Nov 2018 00:19:34 +0000 (17:19 -0700)]
Remove redundant zero-initializations for long-lifetime structs. (dotnet/coreclr#20753)
When compInitMem is true long-lifetime structs (i.e., the ones with lvIsTemp set to false)
are zero-initialized in the prolog: https://github.com/dotnet/coreclr/blob/dotnet/coreclr@
c8a63947382b0db428db602238199ca81badbe8e/src/jit/codegencommon.cpp#L4765
Therefore, these structs don't need an explicit zero-initialization in blocks that are not in a loop.
Commit migrated from https://github.com/dotnet/coreclr/commit/
dc028d9893915c4c1bd62daf5e12325c15334154
Mike McLaughlin [Thu, 1 Nov 2018 22:08:17 +0000 (15:08 -0700)]
Fix freebsd symbol upload failure. (dotnet/coreclr#20759)
Commit migrated from https://github.com/dotnet/coreclr/commit/
82ebf52e680a2c8c43aa63b0ff5d541d005cffa1
Tomas Weinfurt [Thu, 1 Nov 2018 21:39:42 +0000 (14:39 -0700)]
one more place to add case for freebsd (dotnet/coreclr#20756)
Commit migrated from https://github.com/dotnet/coreclr/commit/
c57cdbf58fd62d9cf6f93cba40d5dc281b9ba568
Egor Bogatov [Thu, 1 Nov 2018 21:13:10 +0000 (00:13 +0300)]
Display offset in TimeZoneInfo.DisplayName (dotnet/coreclr#20728)
* Display offset in TimeZoneInfo.DisplayInfo
* Display offset in TimeZoneInfo.DisplayInfo
* prefer +00.00
* Update TimeZoneInfo.Unix.cs
Commit migrated from https://github.com/dotnet/coreclr/commit/
d5608a7d68fc6271a1ee3d86291222c1620e40c7
Bruce Forstall [Thu, 1 Nov 2018 21:07:15 +0000 (14:07 -0700)]
Merge pull request dotnet/coreclr#20755 from dotnet/dev/unix_test_workflow
Enable triggers for Linux x64 PMI asm diffs
Commit migrated from https://github.com/dotnet/coreclr/commit/
b99629579eb4785e5fcf550d920a1e2d7b605be9
Bruce Forstall [Thu, 1 Nov 2018 20:03:43 +0000 (13:03 -0700)]
Merge pull request dotnet/coreclr#20752 from BruceForstall/EnableLinuxX64PmiDiffs
Fix PMI job triggers for x64 Linux
Commit migrated from https://github.com/dotnet/coreclr/commit/
e5e442af5973d36122a42337c8527f34c6f958c9
Bruce Forstall [Thu, 1 Nov 2018 19:49:42 +0000 (12:49 -0700)]
Merge pull request dotnet/coreclr#20750 from BruceForstall/ReduceExpectedTestCount
Fix expected Pri-1 test count
Commit migrated from https://github.com/dotnet/coreclr/commit/
4b62cc115f3decdaee7033e1f192f50e53592730
Jan Kotas [Thu, 1 Nov 2018 19:11:20 +0000 (12:11 -0700)]
Disable outdated CoreFX tests (dotnet/coreclr#20749)
Commit migrated from https://github.com/dotnet/coreclr/commit/
30502d93f08941313d0b7d0138521fee017fccf8
Bruce Forstall [Thu, 1 Nov 2018 18:44:51 +0000 (11:44 -0700)]
Fix PMI job triggers for x64 Linux
Also, convert asm from ZIP to tar on non-Windows.
Commit migrated from https://github.com/dotnet/coreclr/commit/
1d5b230c91f273d11ad77d7d940a1420f4a7f396
Matt Mitchell [Thu, 1 Nov 2018 18:01:57 +0000 (11:01 -0700)]
Merge pull request dotnet/coreclr#20720 from dotnet/mmitche-patch-1
preview1 -> preview
Commit migrated from https://github.com/dotnet/coreclr/commit/
51b242927f85748f10dcc8a5cc4ccdb836e68342
Bruce Forstall [Thu, 1 Nov 2018 17:56:53 +0000 (10:56 -0700)]
Fix expected Pri-1 test count
https://github.com/dotnet/coreclr/pull/20693 reduced the number of
Pri-1 tests significantly, which caused this error to appear on
some Pri-1 builds, e.g., Ubuntu x64 Checked builds.
Commit migrated from https://github.com/dotnet/coreclr/commit/
9b240c6ab12a312d206118b3e3009bd78c68f3d5
Bruce Forstall [Thu, 1 Nov 2018 17:46:41 +0000 (10:46 -0700)]
Fix JIT flags for ARM64 altjit (dotnet/coreclr#20711)
The ARM64 altjit was interpreting some JIT flags from the (mismatched)
x64 runtime incorrectly: they actually specify x64 architecture
capabilities, not ARM64 capabilities. And some of these capabilities
are not fully implemented/tested, so were leading to crashes doing
altjit asm diffs.
Commit migrated from https://github.com/dotnet/coreclr/commit/
78a5ee8b39fc5664b47dea447ed2fb00d2c36afa
Mike McLaughlin [Thu, 1 Nov 2018 17:14:39 +0000 (10:14 -0700)]
Workaround FreeBSD symbol publishing problem. (dotnet/coreclr#20733)
Issue #https://github.com/dotnet/coreclr/issues/20722
Commit migrated from https://github.com/dotnet/coreclr/commit/
df0cd2cd2c026af3aff78206bed6b45429dc9e19
Bruce Forstall [Thu, 1 Nov 2018 16:59:04 +0000 (09:59 -0700)]
Update PMI asm diffs in the CI (dotnet/coreclr#20743)
* Respond to PMI asm diffs code review feedback
Add some try/finally code to improve robustness.
Remove direct invocation of run.cmd.
Also, simplify the generated asm directory hierarchy.
* Improve PMI script error code
Only return non-zero if there is a fatal error. For non-fatal error,
such as the existence of asm diffs, return zero. This will allow
subsequent "build" steps in netci.groovy to run, namely, the
archiving of the asm directory.
Later, determine a better way figure out how to deal with the existence
of asm diffs.
* Update dotnet SDK download links
Commit migrated from https://github.com/dotnet/coreclr/commit/
98f6abcf800a30e35360ca89b5c674de124869ce
Maryam Ariyan [Thu, 1 Nov 2018 03:18:02 +0000 (20:18 -0700)]
corert compile fixes, corert class Debug should be partial and s_WriteCore need to be assigned
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/
127bdfe680f1eccb7a349b040a07123441af1e62
Jack Pappas [Thu, 1 Nov 2018 05:50:23 +0000 (01:50 -0400)]
Make BitScanForward/BitScanForward64 PAL wrappers branchless. (dotnet/coreclr#20412)
The BitScanForward/BitScanForward64 wrapper functions from the PAL and
gcenv have been modified so they're faster (and branchless), while also
adhering more closely to the behavior of the MSVC intrinsics.
Use _BitScanForward64 when targeting 64-bit Windows.
The _WIN32 macro is always defined by MSVC, even when targeting 64-bit
versions of Windows. Use the _WIN64 macro instead to check whether the
build is targeting 64-bit Windows, and if so, use the _BitScanForward64
intrinsic for the BitScanForward64 wrapper instead of the 32-bit-based
fallback.
Commit migrated from https://github.com/dotnet/coreclr/commit/
6fe7effad7fddf8d5dc0b3ac3d5be5ec80e158ff
dotnet-maestro-bot [Thu, 1 Nov 2018 03:03:51 +0000 (20:03 -0700)]
Update BuildTools, CoreClr, CoreFx, CoreSetup, IbcData, PgoData to preview1-03330-01, preview1-27031-03, preview1.18530.5, preview1-27031-02, master-
20181031-1450, master-
20181031-1447, respectively (dotnet/coreclr#20665)
Commit migrated from https://github.com/dotnet/coreclr/commit/
d378770b6c21c5b74692cc251a3f8c58b6f377db
Jeremy Koritzinsky [Thu, 1 Nov 2018 00:56:38 +0000 (17:56 -0700)]
Clean up string literal implicit const casting and some two-phase lookup nits on Windows (dotnet/coreclr#20730)
* Remove implicit c-string const casting and clean up some C++ standards conformance bugs.
* Fix const string conversion in FCSigCheck.
Commit migrated from https://github.com/dotnet/coreclr/commit/
bd5cc690bca0c798952b14b989ad1bf8e8f00011
Jan Kotas [Wed, 31 Oct 2018 20:43:20 +0000 (13:43 -0700)]
Detect integer overflow in String.Replace
Fixes dotnet/coreclr#20719
Commit migrated from https://github.com/dotnet/coreclr/commit/
8aa5101cea45183e882326f465007909d1b862a0
Jan Kotas [Wed, 31 Oct 2018 18:19:32 +0000 (11:19 -0700)]
Fix corrupted StringBuilder state after out of memory exception
Fixes dotnet/coreclr#20718
Commit migrated from https://github.com/dotnet/coreclr/commit/
92ea7612b2f33f2a69177846314be1d8ecfcf0cc
Jeremy Koritzinsky [Tue, 30 Oct 2018 23:30:16 +0000 (16:30 -0700)]
Make the check for a struct fitting in a register check for either managed or native depending on the situation (i.e. managed call, reflection, P/Invoke) instead of only for managed. Fixes dotnet/coreclr#20702.
Clean up duplicate #ifdefs.
Move #ifdef into method impl instead of outside the implementations.
Move IsRegPassedStruct out of UNIX_AMD64_ABI #ifdef.
Move check for enregistered struct out of UNIX_AMD64_ABI #ifdef
Add dummy implementation of IsRegPassedStruct and IsNativeStructPassedInRegisters when UNIX_AMD64_ABI isn't defined.
Commit migrated from https://github.com/dotnet/coreclr/commit/
014a56de050a8c36f1c4ae38a84891a09d17469f
Jiang Zeng (Pactera Technologies Inc) [Wed, 8 Aug 2018 09:19:42 +0000 (02:19 -0700)]
Add PInvoke/Structures tests
Fix compile warnings
Fix compile warnings
Fix compile warnings
Remove duplicate tests. Move ReversePinvoke tests under StructMarshalling.
Clean up some compile errors.
More string cleanup.
More string fixes
Clean up consts and typedefs.
Fix typo.
Change TP_slen return type to match xplatform.h
Fix printf specifiers.
Don't define wcslen in xplatform if it's been macro redefined (to platformdefines.h's TP_slen)
Fix build breaks.
Remove extension from DllImport so it will correctly resolve xplat.
Fix printf specifiers again...
Fix Windows x86 calling convention mismatch.
Fix HRESULT size off-Windows
Commit migrated from https://github.com/dotnet/coreclr/commit/
aa0d4daf1491562a6c7e6ef18f719938a0e6e4bd
Zeng Jiang [Thu, 1 Nov 2018 00:02:52 +0000 (08:02 +0800)]
Add PInvoke/NativeCallManagedComVisible tests (dotnet/coreclr#19328)
* Add PInvoke/NativeCallManagedComVisible tests
* Update to current infrastructure and disable off-Windows
* Fix incorrect S_OK value and made the native side actually return an HRESULT in hr.
Commit migrated from https://github.com/dotnet/coreclr/commit/
b7d2cdd29a7c1a7ec63fb39d574a817011b9ed4a
Carol Eidt [Wed, 31 Oct 2018 23:51:17 +0000 (16:51 -0700)]
Merge pull request dotnet/coreclr#20683 from CarolEidt/FixDD710234
Arm32: Handle live-out double reg in resolution
Commit migrated from https://github.com/dotnet/coreclr/commit/
8ab6692dbd1e53521a4107e866111106d834f1fe
Bruce Forstall [Wed, 31 Oct 2018 22:06:24 +0000 (15:06 -0700)]
Merge pull request dotnet/coreclr#20723 from BruceForstall/ImproveNOWAYOutput
Improve the assert output for NO_WAY and BADCODE
Commit migrated from https://github.com/dotnet/coreclr/commit/
177dc08aae8694c54125a5f8f50c1dc8273f0da3
Tomas Weinfurt [Wed, 31 Oct 2018 21:58:06 +0000 (14:58 -0700)]
more changes to fix packaging on FreeBSD. runtime.json now contains freebsd-x64 and portable build/packaging works (dotnet/coreclr#20725)
Commit migrated from https://github.com/dotnet/coreclr/commit/
2fd737a51724aba6f49e0e06272343f05cc3917e
Maryam Ariyan [Wed, 31 Oct 2018 21:32:19 +0000 (14:32 -0700)]
Making Debug and Trace behavior consistent with eachother and Desktop (dotnet/coreclr#20581)
* Making Debug and Trace behavior more consistent with Desktop and eachother
* Syncs IndentLevel and IndentSize for Debug and Trace
* Completing DebugProvider APIs. Fixing Indentation bugs
* Make WriteCore public
* Make s_provider and s_indentSize volatile
* Applied PR feedbacks
Commit migrated from https://github.com/dotnet/coreclr/commit/
ccf84fc34b83c3d3e6b2b378136b55dda5f9bdc8
Michał Janiszewski [Wed, 31 Oct 2018 20:30:48 +0000 (21:30 +0100)]
Remove superfluous 'const' qualifier from trivial return types (dotnet/coreclr#20652)
The 'const' used in this context has no meaning
Commit migrated from https://github.com/dotnet/coreclr/commit/
a374692390570b3efe4d4b4fe8894fd9c0b34d0f
Jarret Shook [Wed, 31 Oct 2018 19:52:19 +0000 (12:52 -0700)]
Re-Enable Windows tests with JitOptSensitive flag (dotnet/coreclr#20697)
* Re-Enable windows with JitOptSensitive flag
The check in batch targets would keep us from running jitOptimiztionSensitiveTests
with COMPlus_TieredCompilation=0.
* Address pr feedback
Commit migrated from https://github.com/dotnet/coreclr/commit/
b042303bf1139472854accc8fe444f4ed442da23
Sergey Andreenko [Wed, 31 Oct 2018 19:13:25 +0000 (12:13 -0700)]
Fix DevDiv issue with JitStressRegs=0x3 on arm32. (dotnet/coreclr#20485)
* Fix the issue.
* Fix the comment.
* update the comment
Commit migrated from https://github.com/dotnet/coreclr/commit/
85c61f151c04c1d3cec782532b17969795f07a93
Bruce Forstall [Wed, 31 Oct 2018 17:59:44 +0000 (10:59 -0700)]
Improve the assert output for NO_WAY and BADCODE
Include the file and line number information that we already have.
Commit migrated from https://github.com/dotnet/coreclr/commit/
0f7404bf6fe82ac5176c56fe9e83141d2a35a2bf
Jan Vorlicek [Wed, 31 Oct 2018 17:02:36 +0000 (18:02 +0100)]
Fix Windows x86 EH for exception from UMThunkPrestub (dotnet/coreclr#20704)
The exception handling was poping an explicit frame in
UMThunkPrestubHandler down the call chain from CallRtlUnwindSafe, but it
was not updating the tct.pBottomFrame after returning from that function
back to CPFH_RealFirstPassHandler. And the call to COMPlusAfterUnwind
then called UnwindFrames starting at the old frame that was already
removed from the chain.
Commit migrated from https://github.com/dotnet/coreclr/commit/
c34a0c0e5ebb2170ccc52d5a26a5c346d97ea7b6
Egor Chesakov [Wed, 31 Oct 2018 16:28:09 +0000 (09:28 -0700)]
Work around XUnit FileLoadException issues (dotnet/coreclr#20644)
In order to mitigate System.IO.FileLoadException we built our own xunit.console.dll with ConcurrentDictionary used for DependencyContextAssemblyCache.managedAssemblyCache instead of Dictionary and use this instead of the one pulled from NuGet.
Commit migrated from https://github.com/dotnet/coreclr/commit/
4bcbb70ea3b20b959c50eb7132783ead33e2e1e9
Carol Eidt [Mon, 29 Oct 2018 23:05:25 +0000 (16:05 -0700)]
Arm32: Handle live-out double reg in resolution
When handling critical edges, live-in and live-out reg masks must contain both halves of double regs.
Commit migrated from https://github.com/dotnet/coreclr/commit/
52adb4f5f09e4a0ffef6022ea3757ce095b689b0
Carol Eidt [Wed, 31 Oct 2018 15:42:48 +0000 (08:42 -0700)]
Merge pull request dotnet/coreclr#20638 from fiigii/movetest
Move SSE/SSE2/AVX Load* intrinsic tests to the template framework
Commit migrated from https://github.com/dotnet/coreclr/commit/
2e10a478d9a73a4f213dd30b95afadbe3594925e
Matt Mitchell [Wed, 31 Oct 2018 15:17:09 +0000 (08:17 -0700)]
preview1 -> preview
.NET Core 3.0 previews should not have numeric suffixes.
Commit migrated from https://github.com/dotnet/coreclr/commit/
35e534301bd922b8673a7928b9f75b6328918498
Bruce Forstall [Wed, 31 Oct 2018 06:57:20 +0000 (23:57 -0700)]
Merge pull request dotnet/coreclr#20710 from BruceForstall/DisableNonPRJobsMaster
Disable non-PR triggers in dev/unix_test_workflow branch
Commit migrated from https://github.com/dotnet/coreclr/commit/
c767f41d7b29a0b2021136ecd96644512b343c45
Bruce Forstall [Wed, 31 Oct 2018 06:37:20 +0000 (23:37 -0700)]
Disable non-PR triggers in dev/unix_test_workflow branch
Commit migrated from https://github.com/dotnet/coreclr/commit/
4c2069d8844b4820290a1ed133ac18689f2e5cf6
Jan Kotas [Wed, 31 Oct 2018 02:47:26 +0000 (19:47 -0700)]
Delete redundant framework API tests (dotnet/coreclr#20693)
This is the last batch of deleting tests that are obviously redundant. The remaining framework API tests in CoreCLR can be dealt with as needed if it ever becomes a problem.
Fixes dotnet/coreclr#12782
Commit migrated from https://github.com/dotnet/coreclr/commit/
311bb51443fd510a2c6966efabd9bda1bedc5696
David Wrighton [Wed, 31 Oct 2018 01:05:39 +0000 (18:05 -0700)]
Add support for large number of argumets in CCW call on Arm64 (dotnet/coreclr#20670)
* Fix CCW with large numbers of arguments on arm64
- Correctly align the stack in COMToCLRDispatchHelper
- Add tests for naturally 16 byte aligned stack growth, and non-aligned growth
* New many arguments COM test
* Add support for the IL stub ETW diagnostic event
Commit migrated from https://github.com/dotnet/coreclr/commit/
e14a9ad013ad307b282def301cbf86e4252cca16
Matt Galbraith [Tue, 30 Oct 2018 23:06:29 +0000 (16:06 -0700)]
Merge pull request dotnet/coreclr#20703 from MattGal/bsd-pipebuild-tweaks
Remove DotNetBootstrapCliTarPath from variables
Commit migrated from https://github.com/dotnet/coreclr/commit/
f68e75abf03e5a0320d1b9c8af4991ed941a7bba
Sergey Andreenko [Tue, 30 Oct 2018 23:04:24 +0000 (16:04 -0700)]
Fix printing in `CodeGen::siEndScope`. (dotnet/coreclr#20698)
Commit migrated from https://github.com/dotnet/coreclr/commit/
6bdaffad6bc168e3b2620203a3aa17681e167914
lastsannin [Tue, 30 Oct 2018 23:03:00 +0000 (00:03 +0100)]
Fixed small typo in a comment (dotnet/coreclr#20695)
fixed a simple typo, "co-" should contain a dash in this case.
Commit migrated from https://github.com/dotnet/coreclr/commit/
4b7f40491acf41a3fd26128a62d3fe0c4fda19ee
Tomas Weinfurt [Tue, 30 Oct 2018 23:01:16 +0000 (16:01 -0700)]
fix detection for LLDB.h and make sos mandatory on FreeBSD (dotnet/coreclr#20551)
* fix detection for LLDB.h and make sos mandatory on FreeBSD
* feedback from review
* feedback from review
* add llvm40 as well for completness
* fix OR condition
Commit migrated from https://github.com/dotnet/coreclr/commit/
11f895780345964bbcdb07d0aaf34fd08ccc2b45
Matt Galbraith [Tue, 30 Oct 2018 22:58:38 +0000 (15:58 -0700)]
Remove DotNetBootstrapCliTarPath from variables as it was getting forcibly upper-cased, making it useless. Instead, use the workaround of setting it explicitly before sync.sh.
Commit migrated from https://github.com/dotnet/coreclr/commit/
076b797f591fcf0c329fe8005a3c40e1e37d058d
Matt Galbraith [Tue, 30 Oct 2018 22:03:33 +0000 (15:03 -0700)]
Merge pull request dotnet/coreclr#20699 from MattGal/bsd-pipebuild-tweaks
Add FreeBSD to official build pipelines
Commit migrated from https://github.com/dotnet/coreclr/commit/
071d5d570d0185b64dc2e4fd346b6bab6ddae591
Matt Galbraith [Tue, 30 Oct 2018 20:57:08 +0000 (13:57 -0700)]
add -portablebuild=false to build.sh (affects naming)
Commit migrated from https://github.com/dotnet/coreclr/commit/
a5605f20fccbe9d21aed36e8aa05ff567ef3808f
Sergey Andreenko [Tue, 30 Oct 2018 20:38:50 +0000 (13:38 -0700)]
Fix `JitStressRegs=0x1` issue with `RefTypeUpperVectorSaveDef`. (dotnet/coreclr#20623)
* Add a repro test.
* Fix the issue.
* Add comments
Commit migrated from https://github.com/dotnet/coreclr/commit/
1f62917ca7c4d16cb5b4e12eaf4fd35f5cbb8715
Matt Galbraith [Tue, 30 Oct 2018 20:21:08 +0000 (13:21 -0700)]
Fixing build.sh args
Commit migrated from https://github.com/dotnet/coreclr/commit/
8d226e8012e67754b129be1fa89a1cdb60c303fd
Matt Galbraith [Tue, 30 Oct 2018 17:47:13 +0000 (10:47 -0700)]
Add freebsd flavor to CoreCLR pipebuild
Commit migrated from https://github.com/dotnet/coreclr/commit/
5ee60d3bdac79c6eb6d2607c4357979965258ae9
Andy Ayers [Tue, 30 Oct 2018 18:24:37 +0000 (11:24 -0700)]
JIT: Fix call flag propagation for GenTreeArrElem (dotnet/coreclr#20660)
Closes dotnet/coreclr#20651.
Also fix up some "near miss" cases for GenTreeField and GenTreeBoundsCheck,
where we get lucky and the importer currently splits trees with temps so the
currently ignored child nodes have no interesting side effects.
Revise GenTreeField a bit to pull more of the initialization work into the
constructor. Add a missing R2R field propagation for field nodes in GtClone
(evidently also never hit in practice).
Commit migrated from https://github.com/dotnet/coreclr/commit/
626def86af589734999a0e62d3a83c2acb9de54a
Brian Sullivan [Tue, 30 Oct 2018 17:03:16 +0000 (10:03 -0700)]
Merge pull request dotnet/coreclr#20641 from briansull/vso_707552
Fix VSO 707552
Commit migrated from https://github.com/dotnet/coreclr/commit/
67ed270f13012e85b2925360d32673614f834449
Michelle McDaniel [Tue, 30 Oct 2018 16:51:40 +0000 (09:51 -0700)]
Add the execution policy when running powershell in size on disk benchmarks (dotnet/coreclr#20680)
Since moving to the helix queue, we have been failing because the execution policy on the vms is not set to unrestricted. To get around this, we need to explicitly pass -ExecutionPolicy Bypass.
Commit migrated from https://github.com/dotnet/coreclr/commit/
a9074bce5e3814db67dbec1c56f477202164d162
Egor Chesakov [Tue, 30 Oct 2018 15:30:15 +0000 (08:30 -0700)]
Disable failing on Windows/ARM Interop/COM tests (dotnet/coreclr#20675)
* Interop/COM/NETClients/Primitives/NETClientPrimitives
* Interop/COM/NativeClients/Primitives
* Interop/COM/NETClients/IDispatch/NETClientIDispatch
* Interop/COM/NETClients/Aggregation/NETClientAggregation
Commit migrated from https://github.com/dotnet/coreclr/commit/
5cf4b2c6e003a6f6772920fc3ea2a4927af0de72
Shreyas Jejurkar [Tue, 30 Oct 2018 15:05:58 +0000 (08:05 -0700)]
Corrected Typos and grammar (dotnet/coreclr#20658)
* Corrected some typos and grammar as per English language guidelines.
* Reverted some of the changes
* Reverted back some changes Phase 2
Commit migrated from https://github.com/dotnet/coreclr/commit/
9d92078b022a8113cd9db78076ce69260f1754dc
dotnet-maestro-bot [Tue, 30 Oct 2018 12:18:38 +0000 (05:18 -0700)]
Remove unnecessary Pack directive to fix build break (dotnet/coreclr#20681)
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/
6656164cc5bbc67b4c70410f8c75680e1b19c386
Bruce Forstall [Tue, 30 Oct 2018 06:57:11 +0000 (23:57 -0700)]
Merge pull request dotnet/coreclr#20679 from BruceForstall/DumpTempReason
Dump the "reason" for a compiler temp
Commit migrated from https://github.com/dotnet/coreclr/commit/
7c90d6b775f26cfe30233da532b47687d54b29cf
Bruce Forstall [Mon, 29 Oct 2018 21:49:26 +0000 (14:49 -0700)]
Dump the "reason" for a compiler temp
Compiler temps are created with a "reason" that is dumped in JitDump.
Save the reason and display it in the local variable table dump.
This is useful when trying to find a particular temp and see what
code has been generated using it.
Commit migrated from https://github.com/dotnet/coreclr/commit/
e36b7a089efd1b36d7e77cccacaca7b15b0c1f15
Andy Ayers [Mon, 29 Oct 2018 23:11:53 +0000 (16:11 -0700)]
JIT: streamline temp usage for returns (dotnet/coreclr#20640)
If the jit decides it needs a return spill temp, and the return value
has already been spilled to a single-def temp, re-use the existing
for the return temp rather than creating a new one.
In conjunction with dotnet/coreclr#20553 this allows late devirtualization for calls where
the object in the virtual call is the result of an inline that provides
a better type, and the objected formerly reached the call via one or more
intermediate temps.
Closes dotnet/coreclr#15873.
Commit migrated from https://github.com/dotnet/coreclr/commit/
ccc18a6352c7a6232606131424c0377ea3529991
Brian Sullivan [Fri, 26 Oct 2018 22:07:21 +0000 (15:07 -0700)]
Fix VSO 707552
[RyuJIT][ilgen] Assertion failed 'exp->gtOper != GT_COUNT'
Use nullptr instead of NULL
Commit migrated from https://github.com/dotnet/coreclr/commit/
a97fd6cbf43b2fb1f851f03d4ec645e746e1b4bf
Sung Yoon Whang [Mon, 29 Oct 2018 22:04:56 +0000 (15:04 -0700)]
Remove outdated GC perf test framework (dotnet/coreclr#20673)
Commit migrated from https://github.com/dotnet/coreclr/commit/
17879dfcda03bb47571daab2addb318ef47b04d9
Tanner Gooding [Mon, 29 Oct 2018 18:15:35 +0000 (11:15 -0700)]
Some cleanup of the System.Number class (dotnet/coreclr#20619)
* Formatting Number.Formatting.cs and Number.Parsing.cs
* Removing some duplicated parsing code by having the Parse method call TryParse
* Moving two constants from NumberBuffer to Dragon4
* Rename FloatPrecision to SinglePrecision
* Updating the casing of the NumberBuffer fields
* Updating NumberBuffer to allow taking a custom-sized digit buffer.
* Updating the various NumberBufferLength constants to be the exact needed lengths
* Fixing DoubleNumberBufferLength and SingleNumberBufferLength to account for the rounding digit.
* Fixing TryParseNumber to use the correct maxDigCount
* Ensure the TryParseSingle out result is assigned on success
Commit migrated from https://github.com/dotnet/coreclr/commit/
aef0bc27daebb70ccc4bdb9bd46960b7e8b5eb0e
Jesús Corrius [Mon, 29 Oct 2018 16:45:43 +0000 (17:45 +0100)]
Fix typo in linux-performance-tracing (dotnet/coreclr#20667)
precomppiled -> precompiled
Commit migrated from https://github.com/dotnet/coreclr/commit/
b1c22db881b1936ed37a798804c81ce7abc23b8e
Andrew Au [Mon, 29 Oct 2018 16:09:48 +0000 (09:09 -0700)]
Unhelpful error when Activator.CreateInstance can't find default constructor (dotnet/coreclr#20491)
Commit migrated from https://github.com/dotnet/coreclr/commit/
f61c6080439ebab6c1ca2afcc7f486cc97703840
dotnet-maestro-bot [Mon, 29 Oct 2018 12:55:12 +0000 (05:55 -0700)]
Update CoreClr, CoreSetup, IbcData, PgoData to preview1-27028-04, preview1-27029-01, master-
20181029-0053, master-
20181029-0054, respectively (dotnet/coreclr#20662)
Commit migrated from https://github.com/dotnet/coreclr/commit/
2dd12d48321c27f7851be176f01d87e06307d4a9