Age | Commit message (Collapse) | Author | Files | Lines |
|
- Remove concept of AppDomain from object api in VM
- Various infrastructure around entering/leaving appdomains is removed
- Add small implementation of GetAppDomain for use by DAC (to match existing behavior)
- Simplify finalizer thread operations
- Eliminate AppDomain::Terminate
- Remove use of ADID from stresslog
- Remove thread enter/leave tracking from AppDomain
- Remove unused asm constants across all architectures
- Re-order header inclusion order to put gcenv.h before handletable
- Remove retail only sync block code involving appdomain index
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+alloc lock split into SOH and LOH
+provisional mode to fix too many gen2 GCs triggered in low mem situation when the heap has heavy pinning fragmentation
+better free list usage
+premature OOM fixes
+3 new configs: GCHeapAffinitizeMask, GCHighMemPercent, GCLOHThreshold (will be documented)
YieldProcessor scaling factor is different on core due to the different implementation on core.
|
|
* Remove IsNeutralDomain()
* PR feedback
|
|
|
|
|
|
These changes enable passing "arguments" to an EventSource.
|
|
The 'const' used in this context has no meaning
|
|
* Remove IsRemotingIntercepted methods that always return false.
* Remove GetOptionalMembersAllocationSize parameters that are always false.
* Remove references to context static.
Remove references in comments and methodnames.
* Remove RemotingVtsInfo.
|
|
* Remove AppDomain unload
This change removes all code in AppDomain that's related to AppDomain
unloading which is obsolete in CoreCLR. It also removes all calls to the
removed methods.
In few places, I have made the change simpler by taking into account the
fact that there is always just one AppDomain.
|
|
|
|
Enable assembly unloading
* Allow PInvoke methods on collectible assemblies
* Fix test unloadability
Several hundreds of tests were using Helper class that created
GCHandle, but never freed it. That prevented unloading of those
tests. The change modifies the Helper class to keep the handle
in a finalizable object.
Several GCHandle related tests were not freeing the GCHandle they
allocated, so this change adds freeing them to enable the unloading.
* Add missing error messages to the resources
* Fix shuffle thunk cache for unloadability
* Add GetLoaderAllocator to ICLRPrivBinder
|
|
* acquringing -> acquiring
* Activ -> Active
* activley -> actively
* acutal -> actual
* bIncomingIPAdddefed -> bIncomingIPAddRefed
* adddr -> addr
* readding -> reading
* Addfunction -> AddFunction
* additionnal -> additional
* Additonal -> Additional
* Additonally -> Additionally
* Addresss -> Address
* addtion -> addition
* aded -> added
* aditional -> additional
* adjustements -> adjustments
* Adress -> Address
* afer -> after
* aformentioned -> aforementioned
* afte -> after
* agains -> against
* agaisnt -> against
* aggresively -> aggressively
* aggreates -> aggregates
* aggregious -> egregious
* aginst -> against
* agregates -> aggregates
* Agressive -> Aggressive
* ahve -> have
* ajdust -> adjust
* ajust -> adjust
* alement -> element
* algoritm -> algorithm
* alighnment -> alignment
* alignmant -> alignment
* constraits -> constraints
* Allcator -> Allocator
* alllocate -> allocate
* alloacted -> allocated
* allocatate -> allocate
* allocatoror -> allocator
* alloctaed -> allocated
* alloction -> allocation
* alloted -> allotted
* allt he -> all the
* alltogether -> altogether
* alocate -> allocate
* alocated -> allocated
* Alocates -> Allocates
* alogrithm -> algorithm
* aloocate -> allocate
* alot -> a lot
* alwasy -> always
* alwyas -> always
* alwys -> always
|
|
* Rename conflicting definitions of VER_MAJOR/MINORVERSION
These macros are defined by Windows SDK. They were overload to mean CLR version
that was causing interesting redefinition issues.
* Delete workaround for redefined Windows SDK macros
* Delete ProjectN version
* Delete dead code
|
|
Add flags to track the presence of ReadyToRun codegen in an assembly
and module.
Add jitting flags to indicate when a method is jitted because the
precompiled code was rejected, either by a profiler or by ReadyToRun
dependence tracking.
Together these can be used to distingish between
* methods jitted because their assemblies were not precompiled
* methods jitted because they were not precompiled in an otherwise
precompiled assembly
|
|
(#16031)
* [Local GC] Event ports: GCStart and GCGenerationRange
* [Local GC] Event ports: GCEnd
* [Local GC] Event ports: GCHeapStats
* [Local GC] Event ports: GCCreateSegment
* [Local GC] Event ports: GCFreeSegment
* Event ports: GCCreateConcurrentThread and GCTerminateConcurrentThread
* [Local GC] Event ports: GCTriggered
* [Local GC] Event ports: GCMarkWithType
* [Local GC] Event ports: GCJoin_V2
* [Local GC] Event ports: GCGlobalHeapHistory_V2
* [Local GC] Event ports: GCAllocationTick_V3
* [Local GC] Event ports: GCAllocationTick_V1
* [Local GC] Event porting: PinObjectAtGCTime
* one last merge conflict
|
|
* [Local GC] FEATURE_EVENT_TRACE 1/n: Add infrastructure for keeping event state within the GC and plumbing to communicate event state changes
* Code review feedback: use a load without a barrier in IsEnabled and put debug-only code under TRACE_GC_EVENT_STATE
* Address code review feedback: add EventPipe callback and comments
* Fix the non-FEATURE_PAL build
* Fix an issue where the GC fails to react to ETW callbacks to occur before the GC is initialized (e.g. on startup when an ETW session is already active)
* Simplify callback locking scheme
* Add a separate callback for each EventPipe provider and funnel them all through a common handler
* Fix non-FEATURE_PAL build
|
|
|
|
After investigation the failures look unrelated to my changes. Thanks Jan and Noah.
|
|
This makes tiered compilation work properly with profiler ReJIT, and positions the runtime to integrate other versioning related features together in the future. See the newly added code-versioning design-doc in this commit for more information.
Breaking changes for profilers: See code-versioning-profiler-breaking-changes.md for more details.
|
|
from the VM (#12389)
* Remove inclusions of private handle table headers from the VM
* Add TraceRefCountedHandles to the GC handle table interface
* Fix the Unix build
* Move ValidatePinnedObject to marshalnative.h
|
|
|
|
|
|
|
|
(#11257)
This is bascically a bug fix. Quite a while ago we wanted to be able to collect stacks (which needed JIT names, and unwind information)
without collecting all verbose CLR events (in particular the GC allocation Tick events). We did this in most places but missed this one.
|
|
2. delete some dead code
3. Remove implementation of GetOSVersion and hardcode OS version to be 0.0.0
4. Add implementation of IsWindows8OrAbove & IsWinrtSupported (donno why this was deleted earlier)
5. remove GetVersionEx from PAL
|
|
interface (#10463)
* [Local GC] BOOL -> bool on IGCHeap
* [Local GC] size_t -> void* on IGCHeap
* [Local GC] Silence warnings by being explicit about BOOl -> bool conversions
* Address code review feedback: FinalizeAppDomain BOOL -> bool
* Fix warnings
* Address code review feedback:
1) Fix a missed default parameter (FALSE) on a parameter of type bool,
2) Fix invocations of the diagnostic callbacks to use boolean literals
instead of TRUE and FALSE,
3) Fix various invocations of GC interface methods in the VM to use
boolean literals instead of TRUE and FALSE
* Address code review feedback: fix inconsistency
|
|
|
|
|
|
This reverts commit 751771a8976f909af772e35c167bd7e3ffbe44c8.
|
|
|
|
|
|
* Filter RefEmit modules in SendEventsForNgenMethods
Fixes #6427
|
|
GC's own logging), gcee.cpp and objecthandle.cpp.
The rule is GC will call the diagnostics functions at various points to communicate
info and these diagnostics functions might call back into the GC if they require
initimate knowledge of the GC in order to get certain info. This way gc.cpp does
not need to know about details of the diagnostics components, eg, the profiling context;
and the diagnostics components do not need to know details about the GC. So got rid of
ProfilingScanContext in gcinterface.h and passed scanning functions to GC and handle table.
Got rid of where it goes through things per heap as this is not something that diagnostics
should care about, including going through stack roots per heap (which is only done in
GC for scalability purposes but profiling is doing this on a single thread). This also makes it faster.
Got rid of the checks for gc_low/high in ProfScanRootsHelper as this is knowledge
profiling shouldn't have. And it was also incorrectly not including all interior
pointer stack roots.
|
|
Fix Issue dumping GC heap with ETW more than once
|
|
modifying the VM to utilize this interface.
Introduce an interface separating the GC and the rest of the VM
Remove static members of both IGCHeap and IGCHeapInternal and move the management of the singular GC heap to the VM.
Rename uses of IGCHeap in the VM to GCHeapHolder, as well as other misc. renames throughout the VM and GC.
Split each interface function into categories, document them, use consistent formatting across the interface
Undo some accidental find/replace collateral damage
Remove all ifdefs from the GC interface
Deduplicate function declarations between IGCHeap and IGCHeapInternal, expose AllocAlign8 through the interface and the reference to alloc_context to repair the ARM build
Paper cut: false -> nullptr
Repair the ARM and x86 builds
Rename GCHeapHolder -> GCHeapUtilities and address documentation feedback
Rebase against master
Rename gcholder.h/cpp -> gcheaputilities.h/cpp
Fix an uninitialized field on alloc_context causing test failures on clang
Rename the include guard for gcheaputilities.h
Un-breaks SOS by making the following changes:
1) Instructs the DAC to look for IGCHeap::gcHeapType by name,
instead of assuming that it exists near g_pGCHeap,
2) Eliminate all virtual calls on IGCHeap in the DAC, since we cannot
dispatch on an object in another process,
3) Because of 2, expose the number of generations past the GC interface
using a static variable on IGCHeap that the DAC can read directly.
repair the Windows build
|
|
The issue is that a table that remembers which types have been dumped is only
flushed when the 'Types' ETW keyword is disabled, but we only check this when
and ENABLE command is executed. We should do so on DISABLE a well
|
|
commit 45d11dde6acdc3def0a13302c527e3c7a662b009
Author: David Mason <davmason@microsoft.com>
Date: Wed May 25 19:00:10 2016 -0700
Squashed commit of the following:
commit f586c5552d8225f13b5a0476f5bdf9362ba9ee8d
Author: Lee Culver <leculver@microsoft.com>
Date: Wed May 25 14:17:45 2016 -0700
Fix heap dump GC type to be Induced
Previously we didn't set the GC type to be "Induced" when collecting a heap dump. This would cause perfview to ignore the GC.
commit 78866dfdcc15ebade0a2faeb6af9a5b7f5e0a170
Author: Lee Culver <leculver@microsoft.com>
Date: Wed May 25 13:18:41 2016 -0700
Enable LTTng events for creating a gcdump
There were a handful of events that were not properly enabled on linux. This change adds enables the remaining events to allow heap dumps.
commit 04d3d6c3d9a1c87e88bc1db91f717481f21874bc
Author: Lee Culver <leculver@microsoft.com>
Date: Tue May 24 12:57:16 2016 -0700
Fix BulkTypeEvents
The buffer used for BulkTypeEvents was defined as a BYTE** instead of BYTE*. This lead to incorrectly written BulkTypeEvents.
commit 8ceab5828e8101b134beb0175b1842487607636c
Author: David Mason <davmason@microsoft.com>
Date: Wed May 18 11:21:12 2016 -0700
Add logic for finalizer thread to check to see if a heap dump is required.
commit cd64b4884d639ce90e4192975533f5e873bd1cb3
Author: Lee Culver <leculver@microsoft.com>
Date: Thu May 19 14:24:01 2016 -0700
Special case BulkType LTTng event
The BulkType LTTng event does not have a real element size. Instead each element is variable length. This change updates the FireBulkType method to allow us to pass the correct size to LTTng.
commit f8ab762106188bc124af802ec0490ef8375412b5
Merge: 77495aa f0d9ab4
Author: Lee Culver <leculver@microsoft.com>
Date: Thu May 19 13:49:43 2016 -0700
Merge branch 'gc-events' of github.com:leculver/coreclr into gc-events
commit f0d9ab4e52c69b45d2d169983c23ab5263edb5c0
Author: Lee Culver <leculver@microsoft.com>
Date: Thu May 19 12:51:01 2016 -0700
Enable BulkType LTTng events on linux
Emit calls to FireBulkType events on linux. This commit enables the code, but currently the wrong size is used in the etw subsystem (this function must be special cased).
commit 25c682ce49f51298f011046faa50443c569943b7
Author: Lee Culver <leculver@microsoft.com>
Date: Wed May 18 12:06:05 2016 -0700
Fix multiple LTTng issues
- Only emit LTTng events when LTTng is enabled. We now use the tracepoint_enabled macro to check if an event is enabled...when the version of lttng is installed that supports it.
- Unsplit LTTng events. Previously we split LTTng events when they exceeded the field limit of LTTng. Now we emit those events as a raw byte array so that it matches their windows ETW counterparts byte-for-byte.
- Emit any event with a struct or embedded array as a raw byte array too. The structure of memory that LTTng emits is incompatible with our ETW parsing. Changing events with struct/array fields greatly simplifies the parsing of events.
commit 77495aa1b3415dcee8d4b6e8eb1d0b5cb921f821
Merge: 754596d f77577c
Author: Lee Culver <leculver@microsoft.com>
Date: Tue May 17 18:24:55 2016 -0700
Merge branch 'master' of github.com:leculver/coreclr
commit 754596d9c51d07db9267148a20f81c786f719312
Author: Lee Culver <leculver@microsoft.com>
Date: Tue May 17 18:21:54 2016 -0700
Squashed commit of the following:
commit f77577c1d7c552de9e75f6fb98a656a1d09bf8b2
Author: Lee Culver <leculver@microsoft.com>
Date: Tue May 17 18:04:18 2016 -0700
Properly handle arrays in LTTng
Arrays were not being properly handled by the LTTng code generator.
commit 390e998719e050a4e61b29bef4c8f8ecbff3423f
Author: Lee Culver <leculver@microsoft.com>
Date: Tue May 17 11:21:07 2016 -0700
Manually write events with structs
Manually write events to LTTng which have structs embedded in them.
commit 54ae7c79f3c96987504cece302513ac9215afbfe
Author: Lee Culver <leculver@microsoft.com>
Date: Tue May 17 09:12:45 2016 -0700
Fix issue with struct sizes
Struct sizes were not properly calculated for manually saved events.
commit d4e59b1b8b18822e551e585ebe006e5b66066bf8
Author: Lee Culver <leculver@microsoft.com>
Date: Mon May 16 20:57:33 2016 -0700
Fix tests
Tests were not being generated properly, as they skipped a parameter.
This is now fixed.
commit 91d68c7ee36f28b1d9de8d0242edcd078416dc80
Author: Lee Culver <leculver@microsoft.com>
Date: Wed May 11 17:41:23 2016 -0700
Remove excess fields in LTTng stream
Extra fields were inserted into LTTng to calculate the size of struct
pointers. Now this calculation is done natively without needing to
insert the extra fields.
commit 3bf826f5e36637ff5188d0205510d7236458075a
Author: Lee Culver <leculver@microsoft.com>
Date: Tue May 10 10:00:39 2016 -0700
Re-enable dynamic linking to fix a load issue
Was getting a loader issue on startup, disabling static linking for now.
commit aacb45ff675d2299df938493416f875096ec446c
Author: Lee Culver <leculver@microsoft.com>
Date: Thu Apr 28 20:56:01 2016 -0700
Unsplit lttng events
LTTng has a limitation in that it cannot emit events with more than 9
parameters. Previously we would split these events into multiple
events. However this proves to be very difficult to consume with
TraceEvent. Instead we now pack the parameters into a byte array an
emit the byte array + length as a single event, avoiding the need to
recombine events later.
commit a9a630da28d42132c2e8929909e86545fbe630c9
Author: Lee Culver <leculver@microsoft.com>
Date: Wed Apr 20 13:31:33 2016 -0700
Only emit LTTng events when they are enabeld.
This changes adds a check for tracepoint_enabled (when that feature is available).
This change also statically compiles against the LTTng libraries (instead of dynamically) to avoid using entrypoints that may not be there if compiled against a different lttng that lacks the tracepoint_enabled entrypoint.
commit f77577c1d7c552de9e75f6fb98a656a1d09bf8b2
Author: Lee Culver <leculver@microsoft.com>
Date: Tue May 17 18:04:18 2016 -0700
Properly handle arrays in LTTng
Arrays were not being properly handled by the LTTng code generator.
commit 390e998719e050a4e61b29bef4c8f8ecbff3423f
Author: Lee Culver <leculver@microsoft.com>
Date: Tue May 17 11:21:07 2016 -0700
Manually write events with structs
Manually write events to LTTng which have structs embedded in them.
commit 54ae7c79f3c96987504cece302513ac9215afbfe
Author: Lee Culver <leculver@microsoft.com>
Date: Tue May 17 09:12:45 2016 -0700
Fix issue with struct sizes
Struct sizes were not properly calculated for manually saved events.
commit d4e59b1b8b18822e551e585ebe006e5b66066bf8
Author: Lee Culver <leculver@microsoft.com>
Date: Mon May 16 20:57:33 2016 -0700
Fix tests
Tests were not being generated properly, as they skipped a parameter.
This is now fixed.
commit 91d68c7ee36f28b1d9de8d0242edcd078416dc80
Author: Lee Culver <leculver@microsoft.com>
Date: Wed May 11 17:41:23 2016 -0700
Remove excess fields in LTTng stream
Extra fields were inserted into LTTng to calculate the size of struct
pointers. Now this calculation is done natively without needing to
insert the extra fields.
commit 3bf826f5e36637ff5188d0205510d7236458075a
Author: Lee Culver <leculver@microsoft.com>
Date: Tue May 10 10:00:39 2016 -0700
Re-enable dynamic linking to fix a load issue
Was getting a loader issue on startup, disabling static linking for now.
commit aacb45ff675d2299df938493416f875096ec446c
Author: Lee Culver <leculver@microsoft.com>
Date: Thu Apr 28 20:56:01 2016 -0700
Unsplit lttng events
LTTng has a limitation in that it cannot emit events with more than 9
parameters. Previously we would split these events into multiple
events. However this proves to be very difficult to consume with
TraceEvent. Instead we now pack the parameters into a byte array an
emit the byte array + length as a single event, avoiding the need to
recombine events later.
commit a9a630da28d42132c2e8929909e86545fbe630c9
Author: Lee Culver <leculver@microsoft.com>
Date: Wed Apr 20 13:31:33 2016 -0700
Only emit LTTng events when they are enabeld.
This changes adds a check for tracepoint_enabled (when that feature is available).
This change also statically compiles against the LTTng libraries (instead of dynamically) to avoid using entrypoints that may not be there if compiled against a different lttng that lacks the tracepoint_enabled entrypoint.
|
|
|
|
|
|
|
|
They are:
1. Wrappers for OS APIs which take or return PATHS
2. Fixing the usage of following Api's:
GetEnvironmentVariableW
SearchPathW
GetShortPathNameW
GetLongPathNameW
GetModuleFileName
Work remaining:
Remove fixed size buffers in the VM
|