summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2017-09-19Disable VSD Stub Kind Prediction on H/W Exception (#14051)Jonghyun Park3-8/+9
* Disable VSD Stub Kind Prediction on H/W Exception * Add a comment on a false argument * Use BOOL (instead of bool) for consistency * Replace remaining bool/true/false with BOOL/TRUE/FALSE
2017-09-18Merge pull request #14029 from mikedn/cmp-op-swapCarol Eidt2-6/+1
Remove useless TODO from genCompareInt
2017-09-18Use the calculated size (offset) instead of estimated (size) (#14049)Victor "Nate" Graf1-1/+1
2017-09-18Change jit notifications so that they pass the native code address. (#14021)David Mason8-23/+269
* Change jit notifications so that they pass the native code address. This fixes !bpmd so that it will set the correct breakpoint on tiered jitted methods. * code review feedback * don't handle OnCodeGenerated
2017-09-18Fix RuntimeTypeHandle underlying type for CoreRT (#14026)Jan Kotas2-2/+9
RuntimeTypeHandles on CoreRT are backed by IntPtr today. This fix is not complete. There are likely more places that make assumption about the underlying runtime handle types, but this is enough to fix the immediate problem hit by @sergign60.
2017-09-18Merge pull request #13878 from sdmaclea/PR-ARM64-LowerCompare-Cast-ConstCarol Eidt1-6/+19
[Arm64] LowerCompare Cast-Bool/UBYTE CMP immediate #0 to TST immediate
2017-09-18Merge pull request #13926 from sdmaclea/PR-ARM64-BOUND-CHECKCarol Eidt2-2/+11
[Arm64] Enable Lowering GT_ARR_BOUNDS_CHECK
2017-09-18Remove useless TODO from genCompareIntMike Danes2-6/+1
gtSetEvalOrder already does this. And even if it doesn't it's not the job of genCompareInt to swap operands, that should happen in LowerCompare. Attempting to do this in LowerCompare resulted in 0 diffs.
2017-09-16Remove dead code from TreeNodeInfoInitCmpMike Danes1-14/+0
2017-09-15[RyuJit] fix the inconsistency between setContained and isContained. (#13991)Sergey Andreenko6-43/+20
* show the problem with contained arg_place We set contained on PUTARG_REG, but it doesn't pass IsContained check. * Fix problem with gtControlExpr * fix problem with ARGPLACE * additional improvements1 We should never have a contained node that is the last node in the execution order. * additional impovement2 for xarch. It is redundant, do not need to set as contained. * additional improvement2 for arm `GenTree* ctrlExpr = call->gtControlExpr;` was unused. * additional improvement3: unify CheckLir.
2017-09-15Merge pull request #14023 from dotnet-bot/from-tfsBruce Forstall1-3/+3
Merge changes from TFS
2017-09-15Merge pull request #14004 from noahfalk/fix_tiered_dynamicmethodNoah Falk1-1/+2
Disable tiered compilation for dynamic methods
2017-09-15[Arm64] LowerCompare enable bool cast removalSteve MacLean1-6/+19
2017-09-15Revert two changes to thread requests (#14015)Koundinya Veluri1-98/+30
Reverting 99db31c41d5057e08cc4701c79f11246b9191a9b and fd91ee1fa23f35130f576c19dfaf35934dc2ce24 to unblock others while trying to figure out what the issues are and how to fix them. fd91ee1fa23f35130f576c19dfaf35934dc2ce24 is causing @benaadams thread pool perf test (https://github.com/benaadams/ThreadPoolTaskTesting) to hang due to a missed thread request. Somehow wsqActive is ending up at zero while there is a work item in the queue and with no pending thread requests. I don't understand how yet. 99db31c41d5057e08cc4701c79f11246b9191a9b appears to have a potential issue because the order of MarkThreadRequestSatisfied and Dequeue are reversed. For instance, assuming a proc count of 1: - Initial state: 1 work item enqueued, 1 thread request - T1 Dispatch: dequeues a work item and requests a thread (0 work items, 1 thread request) - T1 Dispatch: sees no more work items, returns - T1 calls Dispatch again due to its own thread request - T1 Dispatch: After Dequeue (which saw 0 work items) and before MarkThreadRequestSatisfied: - Current state: 0 work items, 1 thread request - T2 enqueues a work item, sees 1 thread request and does not request a thread (1 work item, 1 thread request) - T1 Dispatch: MarkThreadRequestSatisfied decrements thread requests (1 work item, 0 thread requests) - Now after T1 returns, it won't wake up again but there is still one work item in the queue
2017-09-15JIT: Fix crossgen failure in gtTryRemoveBoxUpstreamEffects (#14016)Andy Ayers1-3/+13
In some R2R expansions the type handle is not an explicit operand to the newobj helper. So we must bail out of removal attempts when the type handle is desired and we see such an expansion. Closes #13942. Also likely will fix #13930.
2017-09-15Fix check for recursive call in the importer. (#13990)Eugene Rozenfeld2-2/+7
The check for recursive call was incorrect when processing an inlineee. The change had no diffs with jit-diff --frameworks --tests so I added a test where this change results in a codegen diff: the call to C is inlined with this change but is not inlined without it.
2017-09-15Fix build breaks after moving files to shared and misc cleanupJan Kotas12-138/+129
- Delete redundant collection and dictionary debug view implementations Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
2017-09-15fix ilgen after: "Add the capability to specify JIT options from smpi ↵dotnet-bot1-3/+3
command line" [tfs-changeset: 1674327]
2017-09-15Merge pull request #13923 from sdmaclea/PR-ARM64-LOWER-SHIFTJarret Shook2-48/+48
[Arm64] Enable LowerShift
2017-09-15Merge pull request #13852 from hqueue/jit/JitNoInlineBruce Forstall1-1/+1
Remove COMPlus_JitNoInline from RETAIL
2017-09-15Merge pull request #13944 from ↵Bruce Forstall1-1/+8
ayuckhulk/fix-arm-set-debuggerregdisplay-from-context [ARM] Fix SetDebuggerREGDISPLAYFromREGDISPLAY() function
2017-09-15Merge pull request #13998 from jashook/devdiv_491210Jarret Shook1-1/+7
Fix devdiv 491210
2017-09-15Move List to shared partition (#14006)Jan Kotas3-68/+51
2017-09-14Delete JitHelpers.UnsafeCast (#14005)Ben Adams1-9/+0
2017-09-14Merge pull request #13976 from stephentoub/fix_memorystream_delegationStephen Toub2-4/+52
Change delegation in {Unmanaged}MemoryStream.Read/WriteAsync(Memory)
2017-09-14JIT: Use AllocObj for box allocations (#13988)Andy Ayers2-10/+26
Model box object allocations using the AllocObj tree node. Update the box deconstruction utility to compensate. Also set the OMF_HAS_NEWOBJ flag when we generate Box IR; this both fixes an oversight from before and is a necessary step to trigger the morphing of AllocObj into a helper call. No diffs. Closes #13905.
2017-09-14Update logic in arm CodeGen::genCallInstruction to match xarch version (#13974)Jan Kotas2-40/+17
This is makes it work for CoreRT, and faster for everybody (avoids JIT/EE call).
2017-09-14Disable tiered compilation for dynamic methodsnoahfalk1-1/+2
Fixing an oversight from earlier, tiered compilation isn't designed to handle dynamic methods yet because of their limited lifetime. There may be other issues but a basic one would be having the method get collected while its MethodDesc is in the tiered compilation queue which results in use after free memory issues.
2017-09-14Merge pull request #13965 from CarolEidt/Fix13568Carol Eidt1-1/+2
Allow a RET_EXPR as a BYREF operand for SIMD intrinsics.
2017-09-14Apply format patchjashook1-1/+1
2017-09-14Fix devdiv 491210jashook1-0/+6
Specifically, this insures the GT_LIST nodes of gtCallArgs and gtCallLateArgs flags are set correctly, based on their child nodes.
2017-09-14Improve ReaderWriterLockSlim scalability (#13243)Koundinya Veluri1-163/+365
Improve ReaderWriterLockSlim scalability Fixes #12780 The _myLock spin lock runs into some bad scalability issues. For example: - Readers can starve writers for an unreasonable amount of time. Typically there would be more readers than writers, and it doesn't take many readers to starve a writer. On my machine with 6 cores (12 logical processors with hyperthreading), 6 to 16 reader threads attempting to acquire the spin lock to acquire or release a read lock can starve one writer thread from acquiring the spin lock for several or many seconds. The issue magnifies with more reader threads. - Readers and especially writers that hold the RW lock can be starved from even releasing their lock. Releasing an RW lock requires acquiring the spin lock, so releasers are easliy starved by acquirers. How badly they are starved depends on how many acquirers there are, and it doesn't take many to show a very noticeable scalability issue. Often, these acquirers are those that would not be able to acquire the RW lock until one or more releasers release their lock, so the acquirers effectively starve themselves. Took some suggestions from @vancem and landed on the following after some experiments: - Introduced some fairness to _myLock acquisition by deprioritizing attempts to acquire _myLock that are not likely to make progress on the RW lock - Limited spinning in some cases where it is very unlikely that spinning would help
2017-09-14Merge pull request #13916 from pgodeq/PR-ARM64-WINDOWS-STELEM-REF-CORRECTEDJarret Shook2-6/+4
[ARM64/Windows] Corrected stack overflow in JIT_Stelem_ref
2017-09-14EventPipeProvider destructor hardening (#13958)Victor "Nate" Graf1-50/+76
* Take lock before manipulating list in desctructor * Add NULL checks for provider list * Remove asserts that duplicate conditional check
2017-09-14Change delegation in {Unmanaged}MemoryStream.Read/WriteAsync(Memory)Stephen Toub2-4/+52
Read/WriteAsync(Memory) on MemoryStream and UnmanagedMemoryStream need to delegate to one of the existing virtual methods, in case an existing stream has overridden the virtuals in order to change or augment the behavior (e.g. checking on each write to ensure the length doesn't exceed some amount). Currently these delegate to the synchronous Read/Write(Span) methods. The problem with that is, for exactly the case where there is a derived class, Read/Write(Span) themselves need to delegate to Read/Write(byte[]), which means they use ArrayPool and copy. But with a {ReadOnly}Memory, we may already have access to the underlying array, in which case we're going from an array to a span and back to different rented array along with an unnecessary copy. To address that, this commit changes the delegation to prefer Read/Write(byte[],...) if possible, falling back to Read/Write(Span) only if we couldn't get an array from the Memory.
2017-09-14Fix crossgen memory mappings (#13972)Jan Vorlicek3-2/+16
This change removes executable memory mappings from crossgen. Now it can be run on systems with PAX set to prevent executable mappings without any marking using the paxctl.
2017-09-14[ARM64/Windows] Corrected the address used to push fp,lr in JIT_Stelem_RefPankaj Gode1-2/+2
2017-09-14The !heapstat sos command emits difficult to read output as the "Percentage" ↵tvass831-8/+8
column is not aligned properly (#13856)
2017-09-13JIT: mark part of runtime lookup tree as nonfaulting and invariant (#13953)Andy Ayers1-1/+3
An indir in the runtime lookup sequence wasn't marked as nonfaulting so dead context trees could not be entirely cleaned up. Also added invariant since this particular lookup sequence will always return the same result.
2017-09-13Delete JitHelpers.UnsafeCastJan Kotas3-37/+2
2017-09-13Replace JitHelpers.UnsafeCast with Unsafe.AsJan Kotas23-114/+114
Both methods to the same, but the latter one is the offficial public name for the functionality
2017-09-13Undo more JIT layout workarounds (#13961)Joseph Tremoulet1-25/+19
Remove some `goto`s that were added to work around undesirable jit layout (#9692, fixed in #13314) and epilog factoring (improved in #13792 and #13903), which are no longer needed. Resolves #13466.
2017-09-13Merge pull request #13957 from JosephTremoulet/LoopNestFixJoseph Tremoulet2-6/+24
Renumber blocks before computing loop nest
2017-09-13Call the fast generic impl from the non-generic one where possibleJan Kotas1-10/+3
2017-09-13Make Array.Reverse fasterJan Kotas1-3/+4
Array.Reverse showed up as hot method in profiles of real workloads (e.g. it is called from Json.NET frequently via List.Reverse)
2017-09-13Enable end to end Alpine build (#13966)Jan Vorlicek1-0/+1
This change enables full end to end build of coreclr including managed code on Alpine Linux.
2017-09-13Merge pull request #13626 from mikedn/test-btCarol Eidt7-1/+114
Lower TEST(x, LSH(1, y)) to BT(x, y)
2017-09-13Allow a RET_EXPR as a BYREF operand for SIMD intrinsics.Carol Eidt1-1/+2
Fix #13568
2017-09-13Eliminate double delete in EventPipeProvider cleanup (#13833)Victor "Nate" Graf1-8/+3
* Eliminate double delete in EventProvider cleanup * Fix access after deletion error * Simplify control flow
2017-09-13Renumber blocks before computing loop nestJoseph Tremoulet2-6/+24
The loop nest computation expects to be able to test block numbers for lexical inclusion, so do a renumbering pass first if blocks have been moved. Fixes #13919.