Age | Commit message (Collapse) | Author | Files | Lines |
|
The compiler is now analyzing statics. Get compliant.
|
|
Late-breaking design change: all events should be declared with nullable delegate types.
|
|
* Remove !s and TODO-NULLABLE comments for [DoesNotReturn]
* Remove !s and TODO-NULLABLE comments for [NotNullIfNotNull]
* Remove !s and TODO-NULLABLE comments for writes via Interlocked.CompareExchange
* Remove !s and TODO-NULLABLE comments for Debug.Assert on fields
* Update/add several TODO-NULLABLE comments
|
|
Also update TODO-NULLABLE comments to be more specific where appropriate.
|
|
Don't spin forever in EventListener when listening for EventPipe data
|
|
|
|
* Add property HardLimitBytes to GCMemoryInfo
This adds a new property HardLimitBytes.
Unlike TotalAvailableMemoryBytes,
this will reflect an explicitly set COMPLUS_GCHeapHardLimit.
It will also reflect the fraction of a container's size that we use,
where TotalAvailableMemoryBytes is the total container size.
Normally, though, it is equal to TotalAvailableMemoryBytes.
Fix #38821
* Remove HardLimitBytes; have TotalAvailableMemoryBytes take on its behavior
* Fix typos
* Separate total_physical_mem and heap_hard_limit
so we can compute highMemoryLoadThresholdBytes and memoryLoadBytes
* Do more work in gc.cpp instead of Gc.cs
* Consistently end names in "Bytes"
|
|
Prep-work for using mainstream IL linker
|
|
|
|
* Reduce the default EventPipe circularBufferSize to 10MB for EventListener sessions
* make it a static var instead of random # in the code
|
|
|
|
|
|
|
|
|
|
|
|
System.Reflection.Emit and ILGeneration (#25318)
* Address nullable feedback for System.Resources.ResourceManager
* Address nullable feedback for System.Reflection.Emit.ILGeneration
* Address nullable feedback for System.Reflection.Emit
* PR Feedback and clean-up redundant casts
|
|
(#25276)
* Add EventPipe Processor Number support and make NetTrace the default format
The EventPipe header now has a Processor Number field. On windows we query the correct value, on other OSes we currently have a -1 placeholder, but the field is written to the format regardless.
NetTrace is now the default format when using the environment variable, and the format must be explicitly configured when using the IPC channel or managed API. A parallel change in the diagnostics repo is changing dotnet-trace and dotnet-counter to specify nettrace format which means .NET devs should see nettrace almost exclusively from now on. If for whatever reason it is needed, NetPerf remains available if a scenario explicitly requests to use it.
* PR feedback + attempting to fix broken tests
|
|
|
|
This reverts commit 70febbad4bbe23326c26480b2848cdfe9fc8450c.
|
|
(#25214)
* Address nullable feedback for System.Threading.Overlapped
* Address nullable feedback for System.Memory
* Address nullable for System.Runtime.InteropServices
* Update xml comments and make CultureInfo nullable to match String.ToLower/Upper feedback
* PR feedback: revert accepting null comparer in BinarySearch
* Disable test that needs to be updated in corefx
|
|
* Add support for fields to ILStubMarshalHome objects.
* Make the specific code streams in the ILMarshaler private members.
* Make home members private.
* Move the IL code stream members back to being protected for the marshalers that override EmitMarshalArgumentCLRToNative instead of EmitMarshalArgumentContents/Space.
* Convert virtual specifiers in overrides to override specifiers.
* Remove unused and undefined member.
* Cleanup a few missed virtual/override specifiers.
* Refactor setup methods. Refactor some of the overrides to duplicate less code.
* Refactor the setup stream and add some comments around how the ArgumentOverride/ReturnOverride marshalling system works.
* Use the cleanup work list in SafeHandle marshalling since the work list is now implemented entirely in managed code.
* Generalize DelegateCleanupWorkListElement -> KeepAliveCleanupWorkListElement and rename the managed entry point to match.
* Refactor direct usage of the cleanup code stream in non-overridden marshalers to use the cleanup work list instead.
* Refactor AsAny marshalling to fit into the regular ILMarshaler code-paths.
* Move ILArgIteratorMarshaler over to the full ILMarshaler infrastructure.
* Port ILBlittablePtrMarshaler over to not directly reference m_pcsMarshal.
* Make the specific code streams private and have ILNativeArrayMarshaler fetch the one it needs from the NDirectStubLinker.
* Devirtualize a method on ILMarshaler.
* Fix broken metasig
* Revert "Use the cleanup work list in SafeHandle marshalling since the work list is now implemented entirely in managed code."
This reverts commit aedcdfb4830475ff8f4d582147cdc0eb497dd681.
* Fix ILArgIteratorMarshaler.
* Take 2 on using the cleanup work list for SafeHandles
* Remove unused field
* SafeHandleMarshaler doesn't need to have extra cleanup code when using the CleanupWorkList.
* Move the rest of the SafeHandle marshalling into ArgumentOverride.
* Moved Pinned Native Array special case into an ArgumentOverride.
* Devirtualize
* Remove invalid field hometype.
* Make ILMarshaler::m_pslNDirect private.
* Native Array marshalling fixes.
* Fix STLOC->LDLOC mistakes.
* Add override hook to allow a marshaler to request that byval contents are always converted to native even when not marked as In (i.e. explicitly marked only as Out). Used in AsAny for byval arrays.
* PR Feedback.
* Add explicit pinning path to ilmarshalers.
* Move implementation of ILNativeArrayMarshaler::CanMarshalViaPinning to ilmarshalers.cpp.
* Add missing override specifier.
* Don't create a managed marshaler if we are able to marshal via pinning. Remove extraneous checks against pinning.
* Convert ILWSTRMarshaler to use the MarshalViaPinning functions for its pinning fast-path.
* Enable LPWSTR marshalling to fall back to allocating on the heap for large strings when stack-allocating for native space (byref in-only semantics).
* PR Feedback.
|
|
* Add active timer counter
* fix typo
|
|
|
|
* Optimize Activator.CreateInstance
- Short-circuit Activator.CreateInstance<T>() for value types without default constructor
- Cache default constructor delegate on RuntimeType instead of fixed-size singleton cache
|
|
|
|
* Fix a couple of annotations on Type
* PR Feedback
|
|
|
|
|
|
|
|
We need to revise our use of nullable for `IComparable<T>` and `IEquatable<T>`:
- For reference types that implement `IComparable<T>`, the implementation should use `IComparable<T?>`, e.g. `String : IComparable<String?>`, so that the type can be used in methods with a `where T : IComparable<T>` constraint: `IComparable<T>`'s contravariance then allows both `T` and `T?` to work as generic type arguments.
- For reference types that implement `IEquatable<T>`, we can't take advantage of such contravariance, as by design `IEquatable<T>` is invariant (it would be a breaking change to make it contravariant, and even if it wasn't doing so is of questionable design given that equality and inheritance don't mix well). Given the current language design, we have little option but to explicitly make any reference type implementations of `IEquatable<T>` be oblivious, and also make all `where T : IEquatable<T>` constraints be oblivious. Otherwise, regardless nullable annotations, a developer will get a warning for using either or both of `T`/`T?` with any given method employing such a constraint.
|
|
* Switch PInvokes into libcoreclr to QCalls
* Register QCalls in runtime. Remove pal exports from libcoreclr
* Alphabetize new ecalllist.h entries
* Remove W suffixes from native side of QCall
* Interop signatures are in nested classes (which doesn't show up here) in the root namespace. So we don't want to pass a namespace in here
* Convert the interop test in R2R to use a local native library instead of calling into the CoreCLR PAL via DllImport.
|
|
Right now the new format is not on by default, but it can be enabled using COMPlus_EventPipeNetTraceFormat = 1 for testing purposes. The plan to have a follow up PR that will add shipping configuration mechanisms and change the default setting.
See the documentation in the PerfView repo for more details about the format. At a glance the goal is to create a format that is more efficient to produce, has a smaller on disk size, and offers enhanced functionality in a few areas:
a) 64 bit thread id support
b) Detection of dropped events via sequence numbers
c) Better support for extracting subsets of the file
Together with the change there was also some refactoring of the EventPipeBufferManager and EventPipeThread.
This change addresses (at least in part) the following issues:
#19688, #23414, #24188, #20751, #20555, #21827, #24852, #25046
|
|
|
|
Populate AppDomain.CurrentDomain when invoking events
Make AppDomain method implemented in AssemblyLoadContext internal
|
|
(#25017)
* Address last nullable feedback from System.Runtime
* Address nullable feedback for System.Runtime.Extensions
* PR Feedback
|
|
|
|
Fix some nullable annotations from API Review
|
|
* Synchronize managed and unmanaged Variant fields
Fixes #24948
|
|
|
|
|
|
|
|
|
|
Just in case there's a non-default TaskScheduler in play, explicitly specify TaskScheduler.Default so that we don't accidentally schedule this task to another scheduler, in which case it's up to that scheduler if and how to respect the LongRunning request.
|
|
(#24932)
Fixes #24925
|
|
* Adjust several `where T : class?` constraints
* Address PR feedback
|
|
|
|
|
|
This is the initial work to enable https://github.com/dotnet/coreclr/issues/15377
## What's here?
- A lot of code move/split. Some important moves:
- `EventPipe` has a colection of `EventPipeSessions` instead of a single session.
- `EventPipeSession` now owns a `EventPipeBufferManager` and a `EventPipeFile`
- `EventPipeThread` now owns a collection of { EventPipeBufferManager, EventPipeBuffer }, and a collection of { EventPipeBufferManager, EventPipeBufferList }
- There is a cap on the max number of `EventPipeSession` (64 sessions)
- `EventPipeProvider` and `EventPipeEvent` use a 64-bit mask to keep track of the sessions that are listening to provider/events.
## What's pending?
https://github.com/dotnet/coreclr/issues/24753
|
|
Change extensibility parameter to void *
|
|
* Just use `new T[]` when elements are not pointer-free
* reduce zeroing out when not necessary.
* use AllocateUninitializedArray in ArrayPool
|