Carol Eidt [Tue, 13 Dec 2016 02:48:18 +0000 (18:48 -0800)]
Merge pull request #8520 from hqueue/arm/test20161208/lowercast
Ryujit/ARM32: Implement Lowering::LowerCast for ARM
Hyung-Kyu Choi [Tue, 13 Dec 2016 00:36:33 +0000 (09:36 +0900)]
Ryujit/ARM32 Implement Lowering::LowerCast for ARM
Simple integer to interger type conversion is passed.
Add comment for LowreCast with C++ comment style.
Signed-off-by: Hyung-Kyu Choi <hk0110.choi@samsung.com>
Drew Scoggins [Tue, 13 Dec 2016 00:30:34 +0000 (16:30 -0800)]
Merge pull request #8510 from DrewScoggins/CommitNameFix
Add ability to give a name to a manual PR run
When using the PR leg of the Jenkins performance jobs it is now possible to specify a name that will be used when inserting the data into the perf database.
Drew Scoggins [Thu, 8 Dec 2016 00:12:14 +0000 (16:12 -0800)]
Add ability to give a name to a PR run
Jan Kotas [Mon, 12 Dec 2016 23:43:49 +0000 (15:43 -0800)]
Rename Contract.Assert to Debug.Assert (#8600)
SaeHie Park [Mon, 12 Dec 2016 23:22:29 +0000 (08:22 +0900)]
[x86/Linux] implement TheUMEntryPrestub (#8589)
Initial code for x86 TheUMEntryPrestub, UMThunkStub
Davis Goodin [Mon, 12 Dec 2016 21:50:05 +0000 (15:50 -0600)]
Fix longname DAC to enable arm[64] symbol packages (#8574)
Sivarv [Mon, 12 Dec 2016 21:36:43 +0000 (13:36 -0800)]
Merge pull request #8532 from sivarv/fixedRegFix
Fix to issue 8286.
Michelle McDaniel [Mon, 12 Dec 2016 21:26:02 +0000 (13:26 -0800)]
Merge pull request #8598 from adiaaida/disableGetGeneration
Disable GetGenerationWR2 for GCStress on x86
Brian Sullivan [Mon, 12 Dec 2016 19:43:10 +0000 (11:43 -0800)]
Merge pull request #8541 from briansull/vso-287671
Fix missing flags on GT_DYN_BLK node
Michelle McDaniel [Mon, 12 Dec 2016 19:01:47 +0000 (11:01 -0800)]
Disable GetGenerationWR2 for GCStress on x86
Disable this test for GCStress on x86 until the cause for its failure
can be investigated.
Gaurav Khanna [Mon, 12 Dec 2016 18:54:13 +0000 (10:54 -0800)]
Merge pull request #8421 from hseok-oh/enable_arm_linux_nupkg
First step to create nuget packages for ARM32/Linux
Matt Warren [Mon, 12 Dec 2016 17:30:58 +0000 (17:30 +0000)]
Span<T> api update (#8583)
* Changing method/property order to match CoreFX impl
To make diffing the files easier
* Added other missing methods to match CoreFX impl
Added:
- public void CopyTo(Span<T> destination)
- public static bool operator ==(Span<T> left, Span<T> right)
- public static bool operator !=(Span<T> left, Span<T> right)
- public override bool Equals(object obj)
- public override int GetHashCode()
Also removed 'public void Set(ReadOnlySpan<T> values)' and it's no
longer part of the Span<T> public API, see
https://github.com/dotnet/apireviews/tree/master/2016/11-04-SpanOfT#spantset
Evgeny Pavlov [Mon, 12 Dec 2016 12:27:49 +0000 (15:27 +0300)]
[x86/Linux][SOS] Don't include utilcode.h in gcdumpx86.cpp and gcdump.cpp (#8475)
Evgeny Pavlov [Mon, 12 Dec 2016 10:55:15 +0000 (13:55 +0300)]
[x86/Linux][SOS] Add CALLBACK (aka stdcall) to function declarations (#8476)
Sean Gillespie [Sun, 11 Dec 2016 01:50:06 +0000 (17:50 -0800)]
Local GC: Decouple write barrier operations between the GC and EE (#8568)
* Decouple write barrier operations between the GC and EE
* Address code review feedback
* Address code review feedback
* Repair the standalone GC build
Andy Ayers [Sat, 10 Dec 2016 18:11:04 +0000 (10:11 -0800)]
Fix typo in clang-format directive and reformat end of flowgraph.cpp (#8573)
Last 4K or so lines of flowgraph.cpp were not being formatted because
the clang-format on directive had a typo.
Fix the typo and reformat the latter part of the file.
Stephen Toub [Sat, 10 Dec 2016 16:03:19 +0000 (11:03 -0500)]
Merge pull request #8581 from stephentoub/cwt_unsafecast
Use JitHelpers.UnsafeCast in ConditionalWeakTable
Stephen Toub [Sat, 10 Dec 2016 14:54:15 +0000 (09:54 -0500)]
Use JitHelpers.UnsafeCast in ConditionalWeakTable
We know the types and can use UnsafeCast when reading out the objects as TKey and TValue. This improves reading speed by ~30%.
Stephen Toub [Sat, 10 Dec 2016 13:35:29 +0000 (08:35 -0500)]
Merge pull request #8420 from dotnet-bot/master-UpdateDependencies
Update CoreClr, CoreFx to beta-24810-01, beta-24810-02, respectively (master)
Jan Kotas [Sat, 10 Dec 2016 08:31:20 +0000 (00:31 -0800)]
Improve ConditionalWeakTable.Remove (#8580)
Clear the key of the deleted entry to allow GC collect objects pointed to by it
Fixes #8577
Justin Van Patten [Sat, 10 Dec 2016 06:27:54 +0000 (22:27 -0800)]
TimeZoneInfo: Avoid cloning privately-created ArgumentRule[] arrays (#8575)
TimeZoneInfo currently always creates a defensive copy of the specified
ArgumentRule[] array when created. This makes sense for the public
static factory methods. However, there's no need to create a defensive
copy of arrays created privately as part of its implementation (e.g.
reading the rules from the registry/disk). This change avoids the
unnecessary cloning.
Derek Beattie [Sat, 10 Dec 2016 06:17:15 +0000 (00:17 -0600)]
Fix typos and grammer in coreclr README.md (#8561)
* Fix typeos and grammer in README.md
* Fix a small grammar issue and remove a comma
Justin Van Patten [Sat, 10 Dec 2016 06:15:56 +0000 (22:15 -0800)]
Fix misguided lock in CurrentTimeZone (#8569)
CurrentTimeZone locks against a static lock object when modifying a
non-static Hashtable. Instead, use the Hashtable instance itself as the
lock object.
Jeremy Kuhne [Sat, 10 Dec 2016 05:11:20 +0000 (21:11 -0800)]
Removes final FEATURE_CORECLR defines (#8555)
Santiago Fernandez Madero [Sat, 10 Dec 2016 05:11:05 +0000 (21:11 -0800)]
Adding API ConditionalWeakTable.AddOrUpdate (#8490)
* Added ConditionalWeakTable.AddOrUpdate
dotnet-bot [Sat, 10 Dec 2016 04:00:24 +0000 (04:00 +0000)]
Update CoreClr, CoreFx to beta-24810-01, beta-24810-02, respectively
sivarv [Thu, 8 Dec 2016 20:12:35 +0000 (12:12 -0800)]
Fix to issue 8286.
Stephen Toub [Sat, 10 Dec 2016 01:41:08 +0000 (20:41 -0500)]
Merge pull request #8576 from stephentoub/cwt_clear
Change ConditionalWeakTable.Clear
Stephen Toub [Sat, 10 Dec 2016 00:00:50 +0000 (19:00 -0500)]
Change ConditionalWeakTable.Clear
The original CoreRT implementation just dropped the current table and replaced it with a new one. In the process of porting the CoreRT implementation to CoreCLR, I'd changed it to instead remove each item from the table (by setting its hashcode to -1, as does Remove), in order to work around some code in the finalizer that would null out te parent's reference to the container, and that would cause problems with dropping this table... but that code in the finalizer changed before it got merged, and in its current form, the old CoreRT clear implementation was fine. It's also likely better, as it'll let the handles be cleaned up earlier, and it's simple. So reverting back to it.
Stephen Toub [Fri, 9 Dec 2016 23:42:10 +0000 (18:42 -0500)]
Merge pull request #8572 from stephentoub/cwt_gpas
Change CWT use of GetPrimaryAndSecondary to GetPrimary
Jeremy Kuhne [Fri, 9 Dec 2016 21:42:16 +0000 (13:42 -0800)]
Strip some security related attributes (#8571)
Strips SecurityCritical, SecuritySafeCritical, SecurityPermission,
EnvironmentPermission, and PermissionSet attributes.
Also removes empty defines these left behind.
Patterns used:
^.*\[(System\.Security\.)?SecurityCritical\](\s*//.*|\s*)$[\r\n]*
^.*#if FEATURE_CORECLR[\s\r\n]*(#else)?[\s\r\n]*#endif.*[\r\n]*
^.*\[(System\.Security\.Permissions\.)?SecurityPermission(Attribute)?\([^)]*\)\](\s*//.*|\s*)$[\r\n]*
Stephen Toub [Fri, 9 Dec 2016 21:09:26 +0000 (16:09 -0500)]
Change CWT use of GetPrimaryAndSecondary to GetPrimary
This snuck in as part of my previous ConditionalWeakTable changes. We don't need the secondary here, and it's more expensive to get than just the primary.
John Chen [Fri, 9 Dec 2016 17:20:39 +0000 (09:20 -0800)]
Fix path separator in CrossGen help on Linux
Alexander Radchenko [Fri, 9 Dec 2016 19:33:44 +0000 (02:33 +0700)]
Make it easier to iterate through an ArraySegment (#8559)
* Make it easier to iterate through an ArraySegment. See Make it easier to iterate through an ArraySegment
Sivarv [Fri, 9 Dec 2016 19:30:30 +0000 (11:30 -0800)]
Merge pull request #8544 from sivarv/moveRegFix
Fix to issue 8287.
Stephen Toub [Fri, 9 Dec 2016 18:04:01 +0000 (13:04 -0500)]
Merge pull request #8507 from stephentoub/portcorert_cwt
Make ConditionalWeakTable reads lock-free
Alexander Radchenko [Fri, 9 Dec 2016 17:37:23 +0000 (00:37 +0700)]
StringBuilder.AppendJoin (appending lists to StringBuilder) (#8350)
Adding StringBuilder.AppendJoin
Gaurav Khanna [Fri, 9 Dec 2016 16:24:31 +0000 (08:24 -0800)]
Merge pull request #8563 from xoofx/TPA_glossary
Add TPA/Trusted Platform Assemblies description to the glossary
Alexandre Mutel [Fri, 9 Dec 2016 16:17:46 +0000 (17:17 +0100)]
Add TPA/Trusted Platform Assemblies description to the glossary (From https://github.com/dotnet/coreclr/issues/6470#issuecomment-
235161459 )
Jonghyun Park [Fri, 9 Dec 2016 12:27:03 +0000 (21:27 +0900)]
[x86/Linux] Port ResolveWorkerAsmStub (#8557)
Jonghyun Park [Fri, 9 Dec 2016 12:22:06 +0000 (21:22 +0900)]
[x86/Linux] Use Portable FastGetDomain (#8556)
FastGetDomain function (with __declspec(naked)) causes segmentation
fault.
Jan Vorlicek [Fri, 9 Dec 2016 09:50:01 +0000 (10:50 +0100)]
Fix incremental build when dummy version.cpp is generated (#8547)
This change fixes a problem with incremental build on Unix. When the
version.cpp is generated by the build.sh as a dummy one with no real
version stamp in it, it is recreated every time the build.sh is run.
That means that build needs to rebuild that file and also re-link
all the components that include it.
This change tests the file presence and contents before actually
regenerating it.
SaeHie Park [Fri, 9 Dec 2016 09:29:16 +0000 (18:29 +0900)]
[x86/Linux] Fix getcpuid calling convention (#8552)
Fix getcpuid(), getextcpuid() with STDCALL
Fix xmmYmmStateSupport() with STDCALL
Jeremy Kuhne [Fri, 9 Dec 2016 05:39:00 +0000 (21:39 -0800)]
Strip more defines from CoreLib (#8545)
* Strip more defines from CoreLib
Removes the rest of
FEATURE_CAS_POLICY
FEATURE_REMOTING
FEATURE_MACL
And another significant chunk of
!FEATURE_CORECLR
* Address feedback
Stephen Toub [Wed, 7 Dec 2016 21:35:03 +0000 (16:35 -0500)]
Fix perf regression with lots of objects in a ConditionalWeakTable
The CoreRT implementation of ConditionalWeakTable that was ported back to CoreCLR uses a special scheme to make reads lock-free. When the container needs to grow, it allocates new arrays and duplicates all of the dependency handles from the previous array, rather than just copying them. This avoids issues stemming from a thread getting a dependency handle in an operation on the container, then having that handle destroyed, and then trying to use it; the handle won't be destroyed as long as the container is referenced.
However, this also leads to a significant cost in a certain situation. Every time the container grows, it allocates another N dependency handles where N is the current size of the container. So, for example, with an initial size of 8, if 64 objects are added to the container, it'll allocate 8 dependency handles, then another 16, then another 32, and then another 64, resulting in significantly more handles than in the old implementation, which would only allocate 64 handles total.
This commit fixes that by changing the scheme slightly. A container still frees its handles in its finalizer. However, rather than duplicating all handles, that responsibility for freeing is transferred from one container to the next. Then to avoid issues where, for example, the second container is released while the first is still in use, a reference is maintained from the first to the second, so that the second can't be finalized while the first is still in use.
The commit also fixes a race condition with resurrection and finalization, whereby dependency handles could be used while or after they're being freed by the finalizer. It's addressed by only freeing handles in a second finalization after clearing out state in the first finalization to guarantee no possible usage during the second.
Stephen Toub [Wed, 7 Dec 2016 20:43:05 +0000 (15:43 -0500)]
Port ConditionalWeakTable from CoreRT
The CoreRT ConditionalWeakTable was modified to support lock-free reads. This ports the implementation back to coreclr.
sivarv [Thu, 8 Dec 2016 23:40:20 +0000 (15:40 -0800)]
Fix to issue 8287.
sandreenko [Fri, 9 Dec 2016 01:56:58 +0000 (17:56 -0800)]
Merge pull request #8539 from sandreenko/fix-unix-unwind-info
Fix unix unwind info
SaeHie Park [Fri, 9 Dec 2016 01:09:48 +0000 (10:09 +0900)]
[x86/Linux] Fix PAL unit test paltest_pal_sxs_test1 (#8522)
Fix unit test error for x86/Linux
- fix fail of exception_handling/pal_sxs/test1/paltest_pal_sxs_test1
Jonghyun Park [Fri, 9 Dec 2016 01:03:07 +0000 (10:03 +0900)]
[x86/Linux] Revise asmhelper.S using macro (#8523)
* [x86/Linux] Revise asmhelper.S using macro
This commit revises asmhelper.S using macros that inserts CFI
directives.
Pat Gavlin [Fri, 9 Dec 2016 01:02:11 +0000 (17:02 -0800)]
Merge pull request #8537 from pgavlin/VSO299202
Disable special put args for LIMIT_CALLER on x86.
Pat Gavlin [Fri, 9 Dec 2016 00:57:14 +0000 (16:57 -0800)]
Merge pull request #8543 from pgavlin/VSO299207
Correct an assertion in LSRA.
Justin Van Patten [Fri, 9 Dec 2016 00:46:23 +0000 (16:46 -0800)]
Make TimeZoneInfo fields readonly (#8526)
TimeZoneInfo is immutable. Help enforce this by making its fields
readonly.
Justin Van Patten [Fri, 9 Dec 2016 00:44:20 +0000 (16:44 -0800)]
TimeZoneInfo: Use string.Concat instead of string.Format (#8540)
It's more efficient to concatenate the strings.
Justin Van Patten [Fri, 9 Dec 2016 00:43:45 +0000 (16:43 -0800)]
Make TimeZoneInfo.TransitionTime fields readonly (#8529)
TransitionTime is immutable. Help enforce this by making its fields
readonly.
Jonghyun Park [Fri, 9 Dec 2016 00:43:00 +0000 (09:43 +0900)]
[x86/Linux] Port Several Stubs as NYI (#8515)
This commit adds SinglecastDelegateInvokeStub and VSD-related Stubs as NYI.
Justin Van Patten [Fri, 9 Dec 2016 00:39:28 +0000 (16:39 -0800)]
Make TimeZoneInfo.AdjustmentRule fields readonly (#8528)
AdjustmentRule is immutable. Help enforce this by making its fields
readonly.
Justin Van Patten [Fri, 9 Dec 2016 00:32:56 +0000 (16:32 -0800)]
Preallocate the TimeZoneInfo.Utc instance (#8530)
There doesn't appear to be a good reason why the TimeZoneInfo.Utc
instance needs to be cleared when TimeZoneInfo.ClearCachedData() is
called. Instead, we can pre-allocate and reuse a singleton instance,
obviating the need for the lazy-initialization/locking mechanics.
Justin Van Patten [Fri, 9 Dec 2016 00:30:44 +0000 (16:30 -0800)]
Simplify TimeZoneInfo.AdjustmentRule.Equals (#8527)
Justin Van Patten [Fri, 9 Dec 2016 00:28:08 +0000 (16:28 -0800)]
Remove private TimeZoneInfoComparer (#8512)
Use Comparison<T> instead of IComparer<T> to sort the list of
TimeZoneInfos, which moves the comparison code to the sole place where
it is used, and now that Array.Sort is implemented in terms of
Comparison<T> instead of IComparer<T>, avoids some unnecessary
intermediate allocations.
Sergey Andreenko [Thu, 8 Dec 2016 22:42:56 +0000 (14:42 -0800)]
Fix unix unwind info
Windows uses offset from stack pointer, when unix has to use offset from
caninical frame address,
Jan Vorlicek [Thu, 8 Dec 2016 23:51:19 +0000 (00:51 +0100)]
Remove sscanf and sprintf usage (#8508)
* Remove sscanf
* Remove sprintf
Pat Gavlin [Thu, 8 Dec 2016 23:18:42 +0000 (15:18 -0800)]
Correct an assertion in LSRA.
`verifyFinalAllocation` asserts that if a non-BB interval RefPosition
that is either spilled or is the interval's last use does not have a
register, then that ref position must be marked `AllocateIfProfitable`.
However, this situation can also arise in at least one other situation:
an unused parameter will have at least one ref position that may not be
allocated to a register. This change corrects the assertion to check
`RefPosition::RequiresRegister` rather than
`RefPosition::AllocateIfProfitable`.
Fixes VSO 299207.
Brian Sullivan [Thu, 8 Dec 2016 22:55:23 +0000 (14:55 -0800)]
The fix is to set the GTF_EXCEPT and GTF_GLOB_REF for every GT_DYN_BLK node that we create.
We typically don't have any information about the address supplied to a GT_DYN_BLK so we should
conservatively allow that it can either be a null pointer or could point into the GC heap.
Pat Gavlin [Thu, 8 Dec 2016 22:14:38 +0000 (14:14 -0800)]
Disable special put args for LIMIT_CALLER on x86.
On x86, `LSRA_LIMIT_CALLER` is too restrictive to allow the use of special
put args: this stress mode leaves only three registers allocatable--eax,
ecx, and edx--of which the latter two are also used for the first two
integral arguments to a call. This can leave us with too few registers to
succesfully allocate in situations like the following:
t1026 = lclVar ref V52 tmp35 u:3 REG NA <l:$3a1, c:$98d>
/--* t1026 ref
t1352 = * putarg_reg ref REG NA
t342 = lclVar int V14 loc6 u:4 REG NA $50c
t343 = const int 1 REG NA $41
/--* t342 int
+--* t343 int
t344 = * + int REG NA $495
t345 = lclVar int V04 arg4 u:2 REG NA $100
/--* t344 int
+--* t345 int
t346 = * % int REG NA $496
/--* t346 int
t1353 = * putarg_reg int REG NA
t1354 = lclVar ref V52 tmp35 (last use) REG NA
/--* t1354 ref
t1355 = * lea(b+0) byref REG NA
Here, the first `putarg_reg` would normally be considered a special put arg,
which would remove `ecx` from the set of allocatable registers, leaving
only `eax` and `edx`. The allocator will then fail to allocate a register
for the def of `t345` if arg4 is not a register candidate: the corresponding
ref position will be constrained to { `ecx`, `ebx`, `esi`, `edi` }, which
`LSRA_LIMIT_CALLER` will further constrain to `ecx`, which will not be
available due to the special put arg.
Justin Van Patten [Thu, 8 Dec 2016 21:21:43 +0000 (13:21 -0800)]
Avoid allocating in TimeZoneInfo.GetHashCode() (#8513)
Avoid the intermediate ToUpper string allocation.
Justin Van Patten [Thu, 8 Dec 2016 21:21:28 +0000 (13:21 -0800)]
Simplify TimeZoneInfo.Equals(object) (#8514)
Equals(TimeZoneInfo) already handles null.
Jeremy Kuhne [Thu, 8 Dec 2016 21:10:38 +0000 (13:10 -0800)]
Move native search paths forward (#8531)
Set native search paths in AppDomain.Setup before doing the rest
of the setup steps to get ahead of potential P/Invoke calls.
Karel Zikmund [Thu, 8 Dec 2016 16:40:00 +0000 (08:40 -0800)]
Update glossary.md
Russ Keldorph [Thu, 8 Dec 2016 14:40:39 +0000 (06:40 -0800)]
Merge pull request #8524 from hqueue/xarch/lowercast
Remove an unused local variable
Hyeongseok Oh [Thu, 8 Dec 2016 09:19:25 +0000 (18:19 +0900)]
fix parentheses
Hyung-Kyu Choi [Thu, 8 Dec 2016 08:05:54 +0000 (17:05 +0900)]
Remove an unused local variable
In lowerxarch.cpp, local variable srcUns is defined but not used
at Lowering::LowerCast(GenTree* tree).
Signed-off-by: Hyung-Kyu Choi <hk0110.choi@samsung.com>
Jeremy Kuhne [Thu, 8 Dec 2016 01:29:31 +0000 (17:29 -0800)]
Strip some conditional compilation in SPCL (#8511)
Removed:
FEATURE_FUSION
FEATURE_PATHCOMPAT
FEATURE_APPDOMAINMANAGER_INITOPTIONS
FEATURE_APTCA
FEATURE_CLICKONCE
FEATURE_IMPERSONATION
FEATURE_MULTIMODULE_ASSEMBLIES
Removed some:
FEATURE_CAS_POLICY
!FEATURE_CORECLR
FEATURE_REMOTING
Jonghyun Park [Thu, 8 Dec 2016 01:25:38 +0000 (10:25 +0900)]
[x86/Linux] Fix inconsistent GetCLRFunction definitions (#8472)
* [x86/Linux] Fix inconsistency in GetCLRFunction definitions
GetCLRFunction is treated as pfnGetCLRFunction_t which has __stdcall
convention, but is implemented without __stdcall.
This inconsistency causes segmentaion fault while initializing CoreCLR
for x86/Linux.
This commit fixes such inconsistency via adding __stdcall to
GetCLRFunction implementation.
In addition, this commit declares GetCLRFuntion in 'utilcode.h' and
and revises .cpp files to include 'utilcode.h' instead of declaring
'GetCLRFunction'.
* Remove unnecessary includes
* Remove another unnecessay include
Brian Sullivan [Thu, 8 Dec 2016 00:12:57 +0000 (16:12 -0800)]
Merge pull request #8509 from dotnet-bot/from-tfs
Merge changes from TFS
Jan Kotas [Wed, 7 Dec 2016 23:16:57 +0000 (15:16 -0800)]
Refactor Span<T> to ease implementation of JIT intrinsics (#8497)
- Introduce internal ByReference<T> type for byref fields and change Span to use it
- Generalize handling of byref-like types in the type loader
- Make DangerousGetPinnableReference public while I was on it
Pat Gavlin [Wed, 7 Dec 2016 23:16:09 +0000 (15:16 -0800)]
Merge pull request #8505 from pgavlin/VSO297215
Use a left-leaning comma tree when morphing a stelem.ref helper.
Brian Sullivan [Wed, 7 Dec 2016 22:54:55 +0000 (14:54 -0800)]
Enable POGO build and link for CodegenMirror
[tfs-changeset: 1640669]
Jan Kotas [Wed, 7 Dec 2016 21:13:35 +0000 (13:13 -0800)]
Merge pull request #8504 from mikedn/sort-comparison
Change ArraySortHelper to use Comparison<T>
Carol Eidt [Wed, 7 Dec 2016 19:28:30 +0000 (11:28 -0800)]
Merge pull request #8482 from CarolEidt/Fix8220
Use only lower floats for Vector3 dot and equality
Sivarv [Wed, 7 Dec 2016 18:39:06 +0000 (10:39 -0800)]
Merge pull request #8488 from sivarv/upperSave
Fix to issue 8356.
Pat Gavlin [Wed, 7 Dec 2016 18:19:40 +0000 (10:19 -0800)]
Use a left-leaning comma tree when morphing a stelem.ref helper.
fgMorphCall may change a call to the stelem.ref helper that is storing a
null value into a simple store. This transformation needs to construct a
comma tree to hold the argument setup nodes present on the call if any
exist. Originally this tree was constructed in right-leaning fashion
(i.e. the first comma node was the root of the tree and each successive
comma node was the RHS of its parent). Unfortunately, this construction
did not automatically propagate the flags of a comma node's children to
the comma node, since not all of each comma node's actual children were
available at the time it was constructed. Constructing the tree in
left-leaning fashion (i.e. the first comma node is the left-most child
and the final comma node is the root of the tree) allows the flag
propagation to be performed correctly by constrution.
Fixes VSO 297215.
Pat Gavlin [Wed, 7 Dec 2016 18:17:44 +0000 (10:17 -0800)]
Merge pull request #8503 from pgavlin/VSO289704
Remove a use of `gtGetOp` in earlyprop.
Mike Danes [Wed, 7 Dec 2016 18:04:38 +0000 (20:04 +0200)]
Remove unused DepthLimitedQuickSort methods
These are never used in CoreCLR
Mike Danes [Wed, 7 Dec 2016 17:38:02 +0000 (19:38 +0200)]
Change ArraySortHelper to use Comparison<T>
The Array/List.Sort overloads that take a Comparison<T> have worse performance than the ones that take a IComparer<T>. That's because sorting is implemented around IComparer<T> and a Comparison<T> needs to be wrapped in a comparer object to be used.
At the same time, interface calls are slower than delegate calls so the existing implementation doesn't offer the best performance even when the IComparer<T> based overloads are used.
By changing the implementation to use Comparison<T> we avoid interface calls in both cases.
When IComparer<T> overloads are used a Comparison<T> delegate is created from IComparer<T>.Compare, that's an extra object allocation but sorting is faster and we avoid having two separate sorting implementations.
Pat Gavlin [Wed, 7 Dec 2016 17:02:02 +0000 (09:02 -0800)]
Remove a use of `gtGetOp` in earlyprop.
Instead, use `GenTreeIndir::Addr`, as some indirections are not simple
operators.
Fixes VSO 289704.
Evgeny Pavlov [Wed, 7 Dec 2016 16:48:30 +0000 (19:48 +0300)]
[x86/Linux][SOS] Get correct stack pointer from DT_CONTEXT (#8500)
Carol Eidt [Thu, 1 Dec 2016 03:31:58 +0000 (19:31 -0800)]
Use only lower floats for Vector3 dot and equality
For both dot product and comparisons that produce a boolean result, we need to use only the lower 3 floats. The bug was exposed by a case where the result of a call was being used in one of these operations without being stored to a local (which would have caused the upper bits to be cleared).
Fix #8220
Evgeny Pavlov [Wed, 7 Dec 2016 10:07:20 +0000 (13:07 +0300)]
[x86/Linux][SOS] Add definitions for CLR_CMAKE_PLATFORM_ARCH_I386 in CMakeLists.txt file of lldbplugin (#8499)
Jonghyun Park [Wed, 7 Dec 2016 09:54:54 +0000 (18:54 +0900)]
Move JIT_EndCatch from asmhelpers.asm into jithelp.asm (#8492)
* Move JIT_EndCatch from asmhelpers.asm into jithelp.asm
The name of JIT_EndCatch suggests that it is a JIT helper, but its
implementation is inside asmhelpers.asm (not in jithelp.asm).
This commit moves its implementation into jithelp.asm.
* Move COMPlusEndCatch declaration
Jonghyun Park [Wed, 7 Dec 2016 06:37:07 +0000 (15:37 +0900)]
[x86/Linux] Port StubLinkerCPU::EmitSetup (#8494)
This commit ports StubLinkerCPU::EmitSetup to x86/Linux.
Brian Robbins [Wed, 7 Dec 2016 05:14:38 +0000 (21:14 -0800)]
Merge pull request #8470 from brianrob/fix_lttng_header_detection
Fix building against liblttng-ust-dev 2.8+
Jonghyun Park [Wed, 7 Dec 2016 03:46:17 +0000 (12:46 +0900)]
[x86/Linux] Port asmhelpers.asm (#8489)
This commit ports asmhelpers.asm to x86/Linux.
(CallRtlUnwind is currently marked as NYI)
Jonghyun Park [Wed, 7 Dec 2016 03:41:44 +0000 (12:41 +0900)]
[x86/Linux] Port PATCH_LABEL macro (#8483)
Swaroop Sridhar [Wed, 7 Dec 2016 01:17:21 +0000 (17:17 -0800)]
GcInfoEncoder: Initialize the BitArrays tracking liveness (#8485)
The non-X86 GcInfoEncoder library uses two bit-arrays to keep track
of pointer-liveness. The BitArrays are allocated using the arena allocator
which doesn't zero-initialize them. This was causing non-deterministic
redundant allocation of unused slots. This change fixes the problem.
Pat Gavlin [Wed, 7 Dec 2016 01:01:50 +0000 (17:01 -0800)]
Merge pull request #8484 from pgavlin/VSO297113
Fix use edge iterator for DYN_BLK nodes.
Hyeongseok Oh [Wed, 7 Dec 2016 00:50:24 +0000 (09:50 +0900)]
fix comparison
sivarv [Wed, 7 Dec 2016 00:19:55 +0000 (16:19 -0800)]
Fix to issue 8356.
Brian Robbins [Mon, 5 Dec 2016 04:16:29 +0000 (20:16 -0800)]
Fix building against liblttng-ust-dev 2.8+