Jeremy Koritzinsky [Wed, 14 Nov 2018 23:18:23 +0000 (15:18 -0800)]
Add test for marshalling ArgIterators on Windows (#20888)
* Add (windows-only) tests for __arglist and ArgIterator marshalling.
* Add explicit calling convention notation to pinvokes.
* Add license header
* Update VarargsTest.cs
* Fix calling conventions.
* PR Feedback
* Add explicit calling convention.
* Update VarargsNative.cpp
* Don't reference System.Private.Corelib directly
Bruce Forstall [Wed, 14 Nov 2018 21:52:34 +0000 (13:52 -0800)]
Update CoreFX-in-CoreCLR testing instructions (#21002)
Update to reflect changes in the repo, and fix various formatting issues.
Sergey Andreenko [Wed, 14 Nov 2018 21:46:44 +0000 (13:46 -0800)]
Fix arm64 PUTARG_STK(contained OBJ(contained LCL_FLD_ADDR)). (#20995)
* add a repro test
* Fix the issue.
Do not mark `GT_OBJ` as containned for arm64.
We already do the same in `NewPutArg`.
Swaroop Sridhar [Wed, 14 Nov 2018 03:21:13 +0000 (19:21 -0800)]
Fix warnings because of Bool incompatibality
Fix a compile warning because of bool vs BOOL incompatibality.
Fixes a build break in the new VS compiler.
dotnet-maestro[bot] [Wed, 14 Nov 2018 15:29:51 +0000 (15:29 +0000)]
Update dependencies from https://github.com/dotnet/arcade build 327 (#21000)
This change updates the following dependencies
- Microsoft.DotNet.Arcade.Sdk - 1.0.0-beta.18563.21
- Microsoft.DotNet.Helix.Sdk - 1.0.0-beta.18563.21
Tanner Gooding [Wed, 14 Nov 2018 15:20:49 +0000 (07:20 -0800)]
Cleanup on the new Math APIs (#20993)
* Updating the cached HAVE_COMPATIBLE_ILOGB0_EXITCODE and HAVE_COMPATIBLE_ILOGBNAN_EXITCODE to 1
* Fixing MaxMagnitude and MinMagnitude to correctly handle the case when ax and ay are equal
dotnet-maestro-bot [Wed, 14 Nov 2018 13:02:03 +0000 (05:02 -0800)]
Update CoreClr, CoreFx, CoreSetup, IbcData, PgoData to preview-27113-06, preview.18563.5, preview-27114-01, master-
20181114-0045, master-
20181114-0044, respectively (#20950)
Brian Sullivan [Wed, 14 Nov 2018 03:21:07 +0000 (19:21 -0800)]
Merge pull request #20961 from briansull/const-eval-fix
Improve CanEvalForConstantArgs
Eugene Rozenfeld [Tue, 13 Nov 2018 23:35:05 +0000 (15:35 -0800)]
Undo a workaround added in #20442.
Eugene Rozenfeld [Sat, 10 Nov 2018 00:53:49 +0000 (16:53 -0800)]
Fix for bug 20499.
When the jit is copying a struct-typed return to the return local in a synchronous method on arm64,
it ends up invoking an importer utility outside the importer, where impTreeLast is not set.
The call sequence is
fgMorphBlocks --> gtNewTempAssign --> impAssignStruct --> impAssignStructPtr --> impAppendTree
When impAssignStructPtr sees GT_COMMA src nodes, it unwraps them and inserts additional statements.
The fix is to pass an insertion point statement through this call chain to prevent impAssignStruct
and impAssignStructPtr from calling impAppendTree outside of the importer.
Eugene Rozenfeld [Tue, 13 Nov 2018 21:15:12 +0000 (13:15 -0800)]
Disable R2R for object stack allocation tests.
Object stack allocation currently doesn't work in R2R mode
because we lower R2R allocations to helper calls in the importer.
That will be fixed but for now we need to disable R2R for these tests.
Fixes #20977.
Levi Broderick [Wed, 14 Nov 2018 01:05:02 +0000 (17:05 -0800)]
Initial commit for System.Text.Rune (#20935)
This type represents a Unicode scalar value ([ U+0000..U+D7FF ], inclusive; and [ U+E000..U+10FFFF ], inclusive). The primary scenario is for having a consistent representation of Unicode data regardless of the underlying input encoding type, including abstracting away surrogate code points.
Brian Sullivan [Mon, 12 Nov 2018 23:36:18 +0000 (15:36 -0800)]
Fix CanEvalForConstantArgs(VNFunc vnf)
Change the default return value for new GenTree nodes to false
This allows new nodes to be added without immediately implementing
the compile time folding logic.
Added method header comment for CanEvalForConstantArgs
Maoni Stephens [Tue, 13 Nov 2018 23:17:18 +0000 (15:17 -0800)]
n_heaps needs to be initialized before init_static_data is called (#20968)
Egor Chesakov [Tue, 13 Nov 2018 22:37:04 +0000 (14:37 -0800)]
Specify version of xunit.console.dll during the custom build (#20975)
* Use stable Xunit v2.4.1
* Use xunit.console.dll with specified assembly version to avoid issues with Ready2Run jobs
* Update comment regarding building xunit with specified version in tests/runtest.py
Jeremy Koritzinsky [Tue, 13 Nov 2018 22:13:57 +0000 (14:13 -0800)]
Add tests for AsAny Marshalling (#20963)
* Copy over tests from .NET Framework.
* Convert tests to use CoreCLRTestLibrary. Clean up tests that weren't self-consistent.
* Pass in context for non best-fit-mapping tests.
* Move around/group declarations.
* Clean up typedef names/usage.
* Fix signedness.
* Use ptrdiff_t and size_t instead of C99 types.
* Fix printf specifiers
* Remove unneeded now duplicate typedef
Jan Vorlicek [Tue, 13 Nov 2018 21:51:20 +0000 (22:51 +0100)]
Change GetAppDomain to return AppDomain from the global static (#20910)
* Change GetAppDomain to return it from the global static
The current implementation of the GetAppDomain takes it from the TLS for
the current thread. But we only have one AppDomain in the system, so we
can change it to return just that one.
I have still left the ThreadLocalInfo.m_pAppDomain and its setter
present, because SOS uses that to access the AppDomain and the SOS needs
to be runtime versino agnostic.
This makes it to perform better for Unix where accessing TLS is not
trivial.
* Move the AppDomain instance pointer to own static
To enable access to the one and only AppDomain without unnecessary
indirections, I have moved the pointer out of the SystemDomain class.
Tomáš Rylek [Tue, 13 Nov 2018 21:28:32 +0000 (22:28 +0100)]
Initial support for normalized 'naked' R2RDump output (#20875)
* Initial support for normalized 'naked' R2RDump output
This change introduces a new option "--naked" that takes output
normalization even further - it intentionally leaves out any
position information to make the output easier to diff between
CPAOT and Crossgen.
One other new option is "--entrypoints" which dumps a plain
list of JITted methods in the R2R executable. This can be used
for comparisons between CPAOT and Crossgen and / or for static
analysis of what methods were actually emitted by the compiler.
* Addressed Zach's PR feedback
1) Added argument consistency check for the invalid combination
"--naked" + "--raw".
2) Added dump of multi-dimensional array lower bounds and sizes
when available.
Thanks
Tomas
Jan Kotas [Tue, 13 Nov 2018 21:20:35 +0000 (13:20 -0800)]
Unify ThrowHelper style (#20974)
Russ Keldorph [Tue, 13 Nov 2018 15:24:44 +0000 (07:24 -0800)]
Increase FreeBSD job time allowance
Fadi Hanna [Tue, 13 Nov 2018 20:44:49 +0000 (12:44 -0800)]
Optimize vtable calls (#20696)
* Implementation of R2R vtable call thunks. These thunks will fetch the target code pointer from the vtable of the input thisPtr, and jump to that address.
This is especially helpful with generics, since we can avoid a generic dictionary lookup cost for a simple vtable call.
Overall, these thunks cause the CPU to have less branch mispredictions, and give a small performance boost to vtable calls.
These stubs are under VirtualCallStubManager so that the managed debugger can handle stepping through them.
dotnet-maestro[bot] [Tue, 13 Nov 2018 15:23:47 +0000 (15:23 +0000)]
Updating version files (#20969)
Michal Strehovský [Tue, 13 Nov 2018 13:01:34 +0000 (14:01 +0100)]
Handle generics in methodimpls for default interface methods (#20404)
The existing logic looking at MethodImpls to find the default interface implementation was not correct in the presence of generics. The MethodImpl records we build during type load only contain inexact MethodDescs for the declMethod that are not suitable for comparisons.
The fix is to pipe through the token and resolve the declaring method from it at the time of dispatch.
Tanner Gooding [Tue, 13 Nov 2018 07:03:20 +0000 (23:03 -0800)]
Fixing Utf8Parser.Number to not modify the value of 'c' (#20967)
Egor Chesakov [Tue, 13 Nov 2018 03:31:17 +0000 (19:31 -0800)]
Exclude failing System.Memory.Tests (#20958) on Linux/ARM and Linux/ARM64 (#20962)
Andrew Au [Tue, 13 Nov 2018 03:00:44 +0000 (19:00 -0800)]
Passing the CONTEXT in ICorDebugManagedCallback4::DataBreakpoint (#20960)
* Passing the CONTEXT in ICorDebugManagedCallback4::DataBreakpoint
* ifdef out the message sending on configurations that does not support data breakpoint
Egor Chesakov [Tue, 13 Nov 2018 01:21:06 +0000 (17:21 -0800)]
Simplify build.sh command line arguments for Linux/arm cross build (Part 1) (#20836)
* Don't use crosscomponent|-crosscomponent command line args in build.sh
* Don't use CROSSCOMPONENT environment variable in build.sh src/pal/tools/gen-buildsys-clang.sh
* Remove mentioning -crosscomponent from usage() in build-test.sh
* Don't use -crosscomponent in buildpipeline
* Don't use -crosscomponent in Groovy files
* Remove mentioning crosscomponent in Documentation/building/linux-instructions.md
* Stop building Hostx86/armel crossgen in build.sh
* Disable CrossGen-ing of System.Private.CoreLib on Linux/armel
Egor Chesakov [Tue, 13 Nov 2018 00:41:01 +0000 (16:41 -0800)]
Lower fast tail call wasn't patching control expression (#20740)
Lower fast tail call can replace local variables (holding Caller stack arguments) with new temps in order to set up Callee stack arguments correctly. This involves patching corresponding LCL_VAR and LCL_VAR_ADDR nodes and replacing them with the location of a new temp.
This was not done for control expression which continued pointing to the old location and could contain a Callee argument.
Eugene Rozenfeld [Mon, 12 Nov 2018 21:16:19 +0000 (13:16 -0800)]
Disable stress random inlining for object stack allocation tests.
ObjectStackAllocationTests are sensitive to inlining so we need
to disable stress random inlining.
Fixes #20944.
Tanner Gooding [Mon, 12 Nov 2018 23:46:55 +0000 (15:46 -0800)]
Moving the Utf8Formatter and Utf8Parser into S.P.Corelib (#20934)
* Moving the Utf8Formatter and Utf8Parser into S.P.Corelib
* Doing some minimal cleanup to lineup types and get the Utf8Parser/Utf8Formatter building
* Updating the Utf8 Float Parser to have different buffers for Single vs Double
* Fixing the Utf8Parser to track trailing zero digits and to properly mark the end of the buffer
* Fixing a couple of issues in Utf8Parser.Number
Egor Chesakov [Mon, 12 Nov 2018 23:21:27 +0000 (15:21 -0800)]
Update tests/arm64/corefx_linux_test_exclusions.txt (#20206)
Fei Peng [Mon, 12 Nov 2018 22:07:49 +0000 (14:07 -0800)]
Remove SSE4.2 STTNI APIs for .NET Core 3.0 (#20887)
Tomas Weinfurt [Mon, 12 Nov 2018 20:49:36 +0000 (12:49 -0800)]
enable build-id on FreeBSD (#20945)
Swaroop Sridhar [Mon, 12 Nov 2018 19:56:18 +0000 (11:56 -0800)]
LoadLibrary refactoring (#20841)
* Refactor LoadLibrary Methods
This change refactors the code in DllImport in preparation
for implementing the new NativeLibrary API here:
dotnet/corefx#32015
The two main changes are:
1) A change in the semantics of the internal LoadLibrary helper functions.
When a native library is loaded, there are two categories of callers
expecting different return values:
External callers like AssemblyNative::InternalLoadUnmanagedDllFromPath()
and the upcoming System.Runtime.Interop.Marshall.LoadLibrary()
need the raw system handle
Internal callers like LoadLibraryModule() need the PAL registered handle
This change modifies the internal LoadLibraryModule* methods to work
in terms of native system handles, so that external callers can obrain
them directly. Methods requiring PAL-handles can register them explicitly.
There is no change in external signature of DllImport class, or the
native Dll cache in AppDomain class.
2) Differentiate HMODULE and NATIVE_LIBRARY_HANDLE
This change defines NATIVE_LIBRARY_HANDLE type to represent
raw system handles to native libraries that are not registered
with the PAL (On Unix systems).
The types on PAL and DlImport methods are adjusted to make
this semantic distinction explicit.
*
Fix loading LibC via PAL_LoadLibraryDirect()
Jan Kotas [Mon, 12 Nov 2018 07:23:21 +0000 (23:23 -0800)]
Fix CoreRT build breaks
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Andy Ayers [Mon, 12 Nov 2018 18:58:03 +0000 (10:58 -0800)]
Allow jit to examine type of initonly static ref typed fields (#20886)
The jit incorporates the value of integer and float typed initonly static
fields into its codegen, if the class initializer has already run.
The jit can't incorporate the values of ref typed initonly static fields,
but the types of those values can't change, and the jit can use this knowledge
to enable type based optimizations like devirtualization.
In particular for static fields initialized by complex class factory logic the
jit can now see the end result of that logic instead of having to try and deduce
the type of object that will initialize or did initialize the field.
Examples of this factory pattern in include `EqualityComparer<T>.Default` and
`Comparer<T>.Default`. The former is already optimized in some cases by via
special-purpose modelling in the framework, jit, and runtime (see #14125) but
the latter is not. With this change calls through `Comparer<T>.Default` may now
also devirtualize (though won't yet inline as the devirtualization happens
late).
Also update the reflection code to throw an exception instead of changing the value
of a fully initialized static readonly field.
Closes #4108.
Tanner Gooding [Mon, 12 Nov 2018 18:51:16 +0000 (10:51 -0800)]
Some cleanup of the Math functions from #20788 (#20912)
* Fixing Max, MaxMagnitude, Min, and MinMagnitude for Math/MathF to be IEEE compliant
* Disabling the System.Math.Max/Min tests
* Adding the new c_runtime PAL tests to the CMakeLists to ensure they actually get run.
* Fixing the casing of IlogB to ILogB
* Fixing the new PAL tests to match the correct/expected outputs
* Fixing up PAL_ilogb to correctly handle 0 and NaN
dotnet-maestro-bot [Mon, 12 Nov 2018 14:45:38 +0000 (06:45 -0800)]
Update CoreClr, CoreFx, IbcData, PgoData to preview-27112-01, preview.18562.1, master-
20181112-0045, master-
20181112-0043, respectively (#20929)
Oded Hanson [Mon, 12 Nov 2018 11:02:37 +0000 (13:02 +0200)]
Verify the application group container directory exists in Mac Sandbox (#20916)
* Verify the application group container directory exists in Mac Sandbox
Added an additional check to verify that the shared files directory based on the application group ID exists when running in a Mac sandbox. If it doesn't then the initialization will fail.
As part of this change, also refactored the logic the sets the shared file path into a separate method.
* Changed bool to BOOL
Jeremy Koritzinsky [Sun, 11 Nov 2018 00:07:33 +0000 (16:07 -0800)]
Keep delegate fields alive across a full native call (#20896)
* Repurpose CleanupWorkList to also preserve delegate references in structs across the full native call.
* Change CleanupWorkListElement to abstract base class instead of interface.
* Make CleanupWorkList a singlely linked list.
* PR Feedback.
* Remove CleanupWorkList and make CleanupWorkListElement be able to represent the full list.
* Add back throw in SafeHandle field marshalling.
* PR feedback.
Sung Yoon Whang [Sat, 10 Nov 2018 23:59:02 +0000 (15:59 -0800)]
Remove VersionBlock struct for profiler attach (#20889)
* Remove VersionBlock struct for profiler attach
* Change pipe/event names to not match the Desktop version pipe/event names
Stephen Toub [Sat, 10 Nov 2018 20:44:05 +0000 (15:44 -0500)]
Fix invalid out of range exception thrown in ArrayPool trimming (#20932)
The trim method had the wrong logic to get the relevant bucket size, resulting in InvalidOutOfRangeException exceptiosn being thrown and eaten on the finalizer thread.
Zeng Jiang [Sat, 10 Nov 2018 19:59:07 +0000 (03:59 +0800)]
Add PInvoke/BestFitMapping tests (#19269)
* Add PInvoke/BestFitMapping tests
* Fix warning
* Make native side of tests xplat.
* Clean up managed side of the test build.
* Disable BestFitMapping tests off Windows.
* Individually disable tests.
* Disable the two tests that I missed last time.
dotnet-maestro[bot] [Sat, 10 Nov 2018 15:08:04 +0000 (15:08 +0000)]
Updating version files (#20927)
dotnet-maestro-bot [Sat, 10 Nov 2018 14:06:20 +0000 (06:06 -0800)]
Update IbcData, PgoData to master-
20181110-0042, master-
20181110-0040, respectively (#20925)
dotnet-maestro-bot [Sat, 10 Nov 2018 06:19:39 +0000 (22:19 -0800)]
Update BuildTools, CoreClr, CoreFx, CoreSetup, IbcData, PgoData to preview1-03407-01, preview-27110-01, preview.18560.1, preview-27109-05, master-
20181109-0043, master-
20181109-0044, respectively (#20790)
Eric StJohn [Sat, 10 Nov 2018 01:54:47 +0000 (17:54 -0800)]
Add back support for deserialization of BinaryFormatted resources (#20907)
* Add back support for deserialization of BinaryFormatted resources
This adds back support for using BinaryFormatter to deserialize resources when loaded
from assembly.
We conditionally load BinaryFormatter and will throw if asked to deserialize binary formatted
resources and cannot find it.
* Apply code-review feedback
Changes lazy initialization to use LazyInitializer
Remove special handling of missing serialization assembly.
Clean up comments,
* Use named parameter when specifying permitDeserialization
Jan Kotas [Sat, 10 Nov 2018 01:49:12 +0000 (17:49 -0800)]
Delete dead/unreachable code related to remoting (#20880)
Tarek Mahmoud Sayed [Sat, 10 Nov 2018 01:46:06 +0000 (17:46 -0800)]
Expose Index and Range types (#20899)
* Expose Index and Range types
* Address Review Comments
* Address more feedback
* Addressing more comments
Michelle McDaniel [Fri, 9 Nov 2018 23:09:00 +0000 (15:09 -0800)]
Fix path to python on sod and illink jobs (#20914)
Bruce Forstall [Fri, 9 Nov 2018 18:18:39 +0000 (10:18 -0800)]
Merge pull request #20895 from dotnet/dev/unix_test_workflow
Adjust corefx output directory name
Ben Adams [Fri, 9 Nov 2018 17:26:42 +0000 (17:26 +0000)]
Fast-path ExecutionContext for ThreadPool items (#20308)
Fast-path ExecutionContext for ThreadPool items
Maintain the ThreadPool threads on the Default contexts between work items.
Always restore the Default context on the ThreadPool Dispatch loop after a workitem has run (to clean up any ExecutionContext leakage from changes on flow suppressed workitems, or AsyncLocal change eventhandlers; as well as firing their notifications if they have them)
Store the `CurrentThread` as part of the thread static `ThreadPoolWorkQueueThreadLocals` which are already looked up at the start of the Dispatch loop to avoid an additional lookup via `Thread.CurrentThread`.
As workitems are started on the Default context and are returned to it `QueueUserWorkItemCallbackDefaultContext` items can just be run their callbacks directly rather than via `ExecutionContext.Run` (as the EC don't need to move to Default and is always moved back to Default).
As `QueueUserWorkItemCallbackDefaultContext` now runs items directly; flow suppressed callbacks can use the smaller `QueueUserWorkItemCallbackDefaultContext` rather than `QueueUserWorkItemCallback` with a null context; and handling for flow suppression can be removed from `QueueUserWorkItemCallback`.
As `AwaitTaskContinuation`'s `IThreadPoolWorkItem.Execute` doesn't preform additional work after it completes, it can run `m_action` directly for Default context in addition to the flow suppressed context, rather than going via `ExecutionContext.Run`.
Given that the items on the ThreadPool are always started on the threadpool and restored to it; we can introduce some faster paths than `ExecutionContext:RunInternal` (328 bytes asm).
Introduce `ExecutionContext:RunForThreadPoolUnsafe` (71 bytes asm), for `IThreadPoolWorkItem`s where they need to run on a provided context, but do not need to execute anything after they complete so can rely on the Dispatch loop restore. This includes `QueueUserWorkItemCallback`, `QueueUserWorkItemCallback<TState>` and `AwaitTaskContinuation`.
Introduce `ExecutionContext:RunFromThreadPoolDispatchLoop` (225 bytes asm), for items run from the ThreadPool, so don't need to capture current context (Default) to restore later, however need to do need to restore back to Default after execution as they then perform additional work. This includes
`Task`/`AsyncStateMachineBox`/`AwaitTaskContinuation`/`Timer`.
Change `Task.ExecuteFromThreadPool()` to take the thread `Task.ExecuteFromThreadPool(Thread threadPoolThread)` from the ThreadPool Dispatch loop so it can pass it into the `ExecutionContext:RunFromThreadPoolDispatchLoop` overload and avoid the `Thread.CurrentThread` lookup.
Perf test: https://github.com/dotnet/coreclr/pull/20308#issuecomment-
436805786
Resolves: dotnet/corefx#32695
Li Shengqiu [Fri, 9 Nov 2018 14:35:58 +0000 (22:35 +0800)]
Fix typos in comments (#20908)
Pent Ploompuu [Fri, 9 Nov 2018 14:32:16 +0000 (16:32 +0200)]
Optimize Char.GetUnicodeCategory and related checks (#20864)
Tanner Gooding [Fri, 9 Nov 2018 01:58:24 +0000 (17:58 -0800)]
Moving the Utf8Parser/Utf8Formatter to be shared (dotnet/corefx#33348)
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Eugene Rozenfeld [Tue, 30 Oct 2018 00:34:17 +0000 (17:34 -0700)]
Implement escape analysis and stack allocation of non-box objects without gc fields.
This change implements a conservative flow-insensitive escape analysis and stack allocation
of non-box objects without gc fields.
Handling of objects with gc fields, box objects, and fixed-size arrays is future work.
Escape analysis is based on the one described here: https://www.cc.gatech.edu/~harrold/6340/cs6340_fall2009/Readings/choi99escape.pdf
Main limitations of this version of the escape analysis:
1. The analysis is flow-insensitive.
2. The analysis is intra-procedural and only sees the current method and the inlined methods.
3. The analysis assumes that references passed to non-pure-helper calls escape.
4. The analysis assumes that any references assigned to fields of objects escape.
Some of these limitations will be removed in future work.
I started with prior prototypes from @echesakovMSFT and @AndyAyersMS and extended and refactored
parts of them.
I also added tests for cases that are currently handled or will be handled soon.
Eugene Rozenfeld [Tue, 30 Oct 2018 00:08:02 +0000 (17:08 -0700)]
Make getClassGClayout work with with class types.
Also add an assert to getHeapClassSize to ensure it's not
called in R2R cross-version-bubble.
Eugene Rozenfeld [Tue, 30 Oct 2018 00:05:44 +0000 (17:05 -0700)]
Allow creation of variables of TYP_STRUCT with non-value class handles.
Variables of TYP_STRUCT with non-value class handles represent stack-allocated objects.
Temporarily disable promotion of fields of stack-allocated objects.
Eugene Rozenfeld [Tue, 16 Oct 2018 01:40:35 +0000 (18:40 -0700)]
Add JitObjectStackAllocation config option.
Jan Kotas [Thu, 8 Nov 2018 19:45:13 +0000 (11:45 -0800)]
Remove cached invariant globalization mode flag
Direct check of readonly flag is better with tiered JITing (the check is optimized out)
Jan Kotas [Thu, 8 Nov 2018 21:42:34 +0000 (13:42 -0800)]
Delete unnecessary ReferenceSystemPrivateCoreLib
Jan Kotas [Fri, 9 Nov 2018 05:12:57 +0000 (21:12 -0800)]
Revert "Passing the CONTEXT in ICorDebugManagedCallback4::DataBreakpoint"
This reverts commit
9dd2a3688320fa197a3a2a412523416f10e7fa3b.
Stephen Toub [Fri, 9 Nov 2018 01:16:52 +0000 (20:16 -0500)]
Remove System.Memory reference from several libraries (#33343)
Minor cleanup... they only have this System.Memory reference in order to support MemoryMarshal.GetReference, and we can just use the default GetPinnableReference instead. (We could also just stackalloc into a pointer instead of using span at all, but using span keeps it tidy and adds a tiny amount of additional safety).
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Tanner Gooding [Fri, 9 Nov 2018 03:47:35 +0000 (19:47 -0800)]
Changing Number.NumberBuffer to carry a `Span<byte>` rather than a `Span<char>` (#20879)
* Changing Number.NumberBuffer to carry a `Span<byte>` rather than a `Span<char>`
* Renaming NumberBuffer.Sign to NumberBuffer.IsNegative
* Renaming NumberBuffer.Precision to NumberBuffer.DigitsCount
* Adding a ToString and CheckConsistency method to NumberBuffer
* Adding some number.CheckConsistency() calls for debug validation
* Fixing the UTF16Formatter to meet the consistency checks
Andrew Au [Thu, 8 Nov 2018 18:55:00 +0000 (10:55 -0800)]
Passing the CONTEXT in ICorDebugManagedCallback4::DataBreakpoint
José Rivero [Fri, 9 Nov 2018 00:20:29 +0000 (16:20 -0800)]
EventPipe support for "Parameters" (#20796)
These changes enable passing "arguments" to an EventSource.
Levi Broderick [Thu, 8 Nov 2018 23:35:32 +0000 (15:35 -0800)]
Enlighten ValueNumStore::EvalOpSpecialized about bswap nodes (#20883)
Brian Sullivan [Thu, 8 Nov 2018 23:01:32 +0000 (15:01 -0800)]
Merge pull request #20838 from briansull/issue_18259
ValueNum add check for ZeroOffsetFldSeq on LclVar reads
Michelle McDaniel [Thu, 8 Nov 2018 21:56:00 +0000 (13:56 -0800)]
Specify path to python3.5 for perf jobs (#20443)
* Specify path to python3.5 for perf jobs
* Change path to python in throughput testing
Michal Strehovský [Thu, 8 Nov 2018 16:15:26 +0000 (17:15 +0100)]
Replace reflection in an assert with ==
Reflection on private implementation of the CoreLib is disallowed in CoreRT to save disk space (we don't have to bother emitting the metadata).
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Bruce Forstall [Thu, 8 Nov 2018 21:17:59 +0000 (13:17 -0800)]
Merge pull request #20890 from BruceForstall/FixMoreFxPaths
Fix more CoreFx 'artifacts' paths
Bruce Forstall [Thu, 8 Nov 2018 21:16:41 +0000 (13:16 -0800)]
Fix more CoreFx 'artifacts' paths
Stephen Toub [Thu, 8 Nov 2018 20:34:27 +0000 (15:34 -0500)]
Add work item dumping support to SOS' ThreadPool command (#20872)
Adds a -wi switch to the ThreadPool command that will enumerate all queues dumping out all found work items.
Mike McLaughlin [Thu, 8 Nov 2018 20:29:10 +0000 (12:29 -0800)]
Fix "LTTng-UST: Error (-17) while registering..." error when debugging (20874)
Fixes issue #20205.
This has been happening in more and more scenarios:
1) SOS when the coreclr hosting the SOS managed code is a different version that the one being debugged
2) Lee ran into it with ClrMD for Linux
3) The dotnet-diagnostictests repo with the current arcade build changes because the coreclr version hosting mdbg is different than the version running the debuggees.
This fix is simple: only link the tracepointprovider.cpp code that loads libcoreclrtraceptprovider.so into libcoreclr.so and not in any other module that uses the PAL library (libdbgshim.so, libmscordaccore.so, etc.). Create a new "tracepointprovider" library with the tracepointprovider.cpp source file in it and remove it from the "coreclrpal". Link this new lib into libcoreclr.so.
Bruce Forstall [Thu, 8 Nov 2018 19:20:55 +0000 (11:20 -0800)]
Merge pull request #20882 from BruceForstall/FixFxDir
Adjust for corefx output directory change
Bruce Forstall [Thu, 8 Nov 2018 19:12:09 +0000 (11:12 -0800)]
Adjust for corefx output directory change
The "bin" directory is now under the "artifacts" directory.
Brian Sullivan [Tue, 6 Nov 2018 02:26:10 +0000 (18:26 -0800)]
Fixes issue 18259
The problem here was that we have an indirection of a LclVar that was a pointer to an array element whose type is a struct.
The following discussion refers to the test case GitHub_18259/GitHub_18259.cs
We recorded that the struct field F1.F0 is assigned 1234u.
With the bug all subsequent reads of vr7.F0 return this value.
We miss the update to zero because we didn't add the Zero Field sequence value to the LclVar vr7
Added Test case GitHub_18259.cs
Added Test case GitHub_20838.cs
Matt Galbraith [Thu, 8 Nov 2018 17:48:47 +0000 (09:48 -0800)]
Update FreeBSD build timeout to 120.
Sven Boemer [Thu, 8 Nov 2018 16:50:37 +0000 (08:50 -0800)]
Add azure-pipelines build and test definitions (#20840)
This adds an azure pipeline definition with a matrix of product and test builds, using helix to run tests. The intention is that this definition will eventually be used for both our official build and CI testing.
There is one build job for each OS/platform/arch, and one test job for each OS/platform/arch/priority/R2Rflag. The test job builds tests and then submits them to helix, passing along a number of test run modes. One helix test job will be created for each OS/platform/arch/priority/R2Rflag/helixtargetqueue/testscenario.
There is a lot of work left to be done to get this up to parity with our official builds and CI, which I've tried to call out in comments.
Michal Strehovský [Thu, 8 Nov 2018 11:11:25 +0000 (12:11 +0100)]
Add test coverage for custom modifiers (#20546)
Custom modifiers are only lightly tested within the CLR test codebase (both closed and open). This adds targeted tests for:
* Resolution and overriding
* Various places that should ignore them
* Reflection
Levi Broderick [Thu, 8 Nov 2018 07:54:11 +0000 (23:54 -0800)]
Add string.GetHashCode(ROS<char>) and related APIs (#20422)
Tanner Gooding [Thu, 8 Nov 2018 04:23:49 +0000 (20:23 -0800)]
Fixing up the Double/Single parsing code to be correct (#20707)
* Don't normalize -0.0 to 0.0 when parsing
* Updating NumberBuffer to validate the constructor inputs
* Updating NumberToDouble to just get the precision
* Don't check for non-significant zero's in NumberToDouble
* Updating Number.BigInteger to carry additional space for the worst-case scenario
* Removing some dead code from double.TryParse
* Updating NumberToDouble to use the RealParser implementation from Roslyn
* Fixing TryNumberToDouble and TryNumberToSingle to apply the appropriate sign.
* Adding a fast path for double/single parsing when we have <= 15 digits and an absolute scale <= 22
* Update NumberBuffer to also track whether any input digits past maxDigCount were non-zero
* Renaming NumberToFloatingPointBitsRoslyn to NumberToFloatingPointBits
* Updating TryNumberToDouble and TryNumberToSingle to support Overflow to Infinity
* Fixing a Debug.Assert in TryParseNumber
* Fixing `DecimalNumberBufferLength` to 30
* Renaming NumberToFloatingPointBitsRoslyn to NumberToFloatingPointBits
* Clarifying the NumberBufferLength comments
* Fixing TryNumberToDecimal to check the last digit in the buffer, if it exists
* Disable some CoreFX tests due to the single/double/decimal parsing fixes
* Fix TryNumberToDecimal to not modify the value of p in the assert.
Co-Authored-By: tannergooding <tagoo@outlook.com>
* Updating NumberToFloatingPointBits to use single-precision arithmetic and extended-precision multiplication where possible
* Splitting the NumberToFloatingPointBits code into a fast and slow-path method
* Ensure Roslyn is properly attributed.
* Removing the 80-bit extended precision fast path for NumberToFloatingPointBits, due to a bug
* Fixing the double and single parser to ignore case for Infinity and NaN
* Add a clarifying comment to Number.NumberToFloatingPointBits that the code has been modified from the original source.
* Removing the remaining code that was used by the 80-bit extended precision fast-path in NumberToFloatingPointBits
* Adding a missing comma to the CoreFX.issues.json
* Remove licensing "glue" and re-release the Roslyn RealParser code under the MIT license.
* Some minor cleanup to the NumberToFloatingPointBits code.
Fei Peng [Thu, 8 Nov 2018 03:15:55 +0000 (19:15 -0800)]
Handle 64-bit only intrinisc by nested classes (#20146)
Tanner Gooding [Thu, 8 Nov 2018 03:15:37 +0000 (19:15 -0800)]
Move the various helper intrinsics to be implemented on the S.R.Intrinsics.Vector types (#20147)
* Renaming Vector64.cs, Vector128.cs, and Vector256.cs to be Vector64_1.cs, etc
* Adding some core helper methods to the Vector64, Vector128, and Vecto256 types.
* Adding some documentation comments to the System.Runtime.Intrinsics.Vector types
* Changing `Set` to `With`
Jan Vorlicek [Thu, 8 Nov 2018 00:08:46 +0000 (01:08 +0100)]
Add unloadability support to ReliabilityFramework (#20418)
* Add unloadability support to ReliabilityFramework
This change adds support for unloadable AssemblyLoadContext to the GC
ReliabilityFramework. It basically mimics what was there ifdef-ed out
for AppDomains.
It allows stress testing GC when running inside of an unloadable
AssemblyLoadContext. GC has some special handling for collectible
classes and this allows testing the respective code paths.
* Make tests run on separate threads
The tests running in the assembly load context were bot using separate
threads per test and so they were not really stressing GC as much as
possible. This change fixes that.
I've also merged code for AppDomains / AssemblyLoadContext at most
places so that the differences are clearly visible.
Jan Vorlicek [Thu, 8 Nov 2018 00:08:20 +0000 (01:08 +0100)]
Remove need for full GC for unloadable stuff (#20384)
This change removes enforcing of full GC after native LoaderAllocator is
destroyed. It turns out it was not needed. There is no regression in
running coreclr pri 1 tests inside an unloadable AssemblyLoadContext and
unloading the context after a test completes for each test.
Tomas Weinfurt [Wed, 7 Nov 2018 14:55:12 +0000 (06:55 -0800)]
Fix string error handling for failed DNS lookup (dotnet/corefx#32351)
* better handling for dns failures
* cleanup
* add test for DNS failure exception
* relaxt test a little bit to make it more robust for future
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Stephen Toub [Wed, 7 Nov 2018 20:14:00 +0000 (15:14 -0500)]
Improve DumpAsync SOS command (#20845)
* Help DumpDelegate to dump more cases
* Improve DumpAsync command
- Add a stats summary at the beginning of the output
- Improved single-line-per-entry default behavior for increased readability
- Add option to include all tasks, not just async state machine objects
- Include state value for each async object, the state field for async state machines or the state flags for other tasks
- Support following continuation chains, rendered as "async stacks"
- Support resolving delegate names so that Task.Run and related items have the associated method name displayed
- Optional (experimental) DGML rendering of the graph
- Optionally include completed tasks, by default filtering them out
- Optionally display the fields of state machines
* Decode task state flags
* Add addr option and associated DumpAsync DML
* Fix cast warnings in checked / fprintf_s on Unix
* Remove DGML from DumpAsync
Not enough value right now, and complications in compilation on Unix given sos's current set up. Not worth it.
Stephen Toub [Wed, 7 Nov 2018 18:55:22 +0000 (13:55 -0500)]
Delete dead code from IdnMapping (#20857)
Carol Eidt [Wed, 7 Nov 2018 15:06:40 +0000 (07:06 -0800)]
Merge pull request #20787 from CarolEidt/Arm64IntrinsicsWindows
Add Windows support for Arm64 HW Intrinsics
dotnet-maestro[bot] [Wed, 7 Nov 2018 14:35:49 +0000 (14:35 +0000)]
[Darc-Update] Update dependencies from build
20181106.6 of https://github.com/dotnet/arcade (#20832)
* Updating version files
* Updating version files
Bruce Forstall [Wed, 7 Nov 2018 06:35:12 +0000 (22:35 -0800)]
Force using clang5.0 for Ubuntu arm32 builds (#20825)
* Force using clang5.0 for Ubuntu arm32 builds
* Update for code review feedback
to https://github.com/dotnet/corefx/pull/33261
Tomas Weinfurt [Wed, 7 Nov 2018 03:48:02 +0000 (19:48 -0800)]
exclude freebsd symbols from publishing (#20854)
* try to use exclude on same line as Include instead of remove in separate step
* update freebsd exclude pattern
Andrew Au [Mon, 5 Nov 2018 19:34:49 +0000 (11:34 -0800)]
Pull out GetContainingObject
Andrew Au [Thu, 1 Nov 2018 23:59:55 +0000 (16:59 -0700)]
NITs
Andrew Au [Thu, 1 Nov 2018 19:01:54 +0000 (12:01 -0700)]
Comments in JIT helper
Andrew Au [Tue, 30 Oct 2018 17:50:47 +0000 (10:50 -0700)]
More code review feedback
Andrew Au [Tue, 30 Oct 2018 01:31:45 +0000 (18:31 -0700)]
GetContainingObject should be a method of ICorDebugValue
Andrew Au [Thu, 25 Oct 2018 02:22:44 +0000 (19:22 -0700)]
Change GetContainingObject API
Andrew Au [Tue, 23 Oct 2018 23:49:52 +0000 (16:49 -0700)]
FEATURE_DATABREAKPOINT