Peter Marcu [Sun, 20 Nov 2016 07:37:51 +0000 (23:37 -0800)]
Fixing arm subsystem version (#8211)
Dan Moseley [Sat, 19 Nov 2016 18:24:21 +0000 (10:24 -0800)]
Generic Dictionary - add constructor that accepts IEnumerable
Generic Dictionary - add constructor that accepts IEnumerable
Robert Matusewicz [Thu, 17 Nov 2016 09:37:43 +0000 (09:37 +0000)]
Add System.Collections.Generic.Dictionary constructor that accepts
IEnumerable<KeyValyePair<TKey, TValue>> to initialize dictionary
Jarret Shook [Fri, 18 Nov 2016 21:28:31 +0000 (13:28 -0800)]
Merge pull request #8180 from jashook/arm64_lst_update
Update the lst file to exclude failing tests.
Pat Gavlin [Fri, 18 Nov 2016 21:19:29 +0000 (13:19 -0800)]
Merge pull request #8097 from pgavlin/VSO279396
Do not fold (ind (addr (lclVar))) in certain cases.
Jan Kotas [Fri, 18 Nov 2016 21:03:01 +0000 (13:03 -0800)]
Delete dead files (#8202)
Sean Gillespie [Fri, 18 Nov 2016 20:57:38 +0000 (12:57 -0800)]
Add CI job and build.cmd command for building with FEATURE_STANDALONE_GC (#8183)
* Add CI job and build.cmd command for building with FEATURE_STANDALONE_GC
* Add missed case
* Correct a condition
* Accidental fallthrough in switch
* Only run on x64
jashook [Thu, 17 Nov 2016 18:18:24 +0000 (10:18 -0800)]
Update the lst file to exclude failing tests.
These are new regressions that were introduced during CI downtime.
José Rivero [Fri, 18 Nov 2016 19:24:07 +0000 (11:24 -0800)]
Organizing the perflab tests under a common namespace. (#8184)
- These changes adds a hierarchy to the perflab tests under BenchView.
Pat Gavlin [Fri, 18 Nov 2016 18:46:46 +0000 (10:46 -0800)]
Merge pull request #8198 from pgavlin/GH8170
Fix codegen for `(umod (gt_long) (const int))`.
Pat Gavlin [Fri, 18 Nov 2016 06:37:17 +0000 (22:37 -0800)]
Fix codegen for `(umod (gt_long) (const int))`.
When targeting x86, we opt not to use a helper call to implement the
64-bit unsigned modulus operator if we have a tree of either of the
following forms:
- `(umod ulong (x ulong) (cast ulong (const int const_val)))`
- `(umod ulong (x ulong) (const ulong const_val))`
where `const_val` falls in the range `[2, 0x3fffffff]`.
We eventually decompose this into `(umod uint (gt_long lo hi) (const int const_val))`.
This was then emitted as:
mov eax, lo
mov edx, hi
mov reg, const_val
div edx:eax reg
Unfortunately, this generated code does not take into account the fact
that the result of the modulus may not fit into 32 bits. This can cause
an overflow exception at runtime despite the fact that the modulus
originally produced a 64-bit result.
This change fixes the code generation to check for overflow before
performing the modulus and perform a 64-bit division if the result would
overflow. This results in generated code like the following:
mov eax, lo
mov edx, hi
mov reg, const_val
cmp edx, reg
jb noOverflow
mov temp, eax
mov edx, eax
xor edx, edx
div edx:eax, const_val
mov eax, temp
noOverflow:
div edx:eax, const_val
Which is identical to the code produced by JIT32 and the legacy backend.
Pat Gavlin [Fri, 18 Nov 2016 16:02:12 +0000 (08:02 -0800)]
Merge pull request #8194 from AndyAyersMS/FixMismatchTests
Revise mismatch tests so they don't rely on undefined behavior
mikedn [Fri, 18 Nov 2016 14:19:12 +0000 (18:19 +0400)]
Add missing Arg_BadDecimal resource string (#8197)
Russ Keldorph [Fri, 18 Nov 2016 11:11:09 +0000 (03:11 -0800)]
Merge pull request #8178 from adiaaida/excludeHeapVerify
Exclude tests that timeout with HeapVerify
Pat Gavlin [Fri, 18 Nov 2016 04:37:50 +0000 (20:37 -0800)]
Merge pull request #8187 from pgavlin/gh8150
Fix the transformation of `(call ARRADDR_ST x, y, null)`.
Dan Moseley [Fri, 18 Nov 2016 03:39:43 +0000 (19:39 -0800)]
Type sigs (#8191)
Sivarv [Fri, 18 Nov 2016 03:24:12 +0000 (19:24 -0800)]
Merge pull request #8182 from mikedn/x86-cmp-long-linqmax
Fix x86 long compares that produce a result
Pat Gavlin [Fri, 18 Nov 2016 02:58:06 +0000 (18:58 -0800)]
Format code.
Andy Ayers [Fri, 18 Nov 2016 00:06:46 +0000 (16:06 -0800)]
Revise mismatch tests so they don't rely on undefined behavior
The mismatch32 and mismatch64 tests ensure that the jit will avoid
inlining in cases where there are bad type mismatches at call sites.
This change modifies the tests so that by default the call with the
bad type mismatch is not hit at runtime, since execution of this code
exposes undefined behavior that can be arch or jit specific (eg failing
on x86 and passing on other architectures).
The problematic call can still be hit at runtime by passing at least one
command line argument.
Remove the associated test exclusions for x86.
Fixes #8152.
Pat Gavlin [Thu, 17 Nov 2016 23:49:49 +0000 (15:49 -0800)]
Fix the transformation of `(call ARRADDR_ST x, y, null)`.
`fgMorphCall` transforms `(call ARRADDR_ST x, y, null)` into
`(assign (arrindex x y) null)`. The transformation was not taking into
account the fact that the operands to the call might have been spilled
to temps, and was therefore silently dropping code in the case that they
had been.
This change collects all argument setup nodes in `gtCallArgs` in a
sequence of comma nodes if any exist and attaches the assignment
expression as the ultimate LHS of the comma tree.
Fixes #8150.
Michelle McDaniel [Thu, 17 Nov 2016 17:16:28 +0000 (09:16 -0800)]
Exclude tests that timeout with HeapVerify
Jeremy Kuhne [Thu, 17 Nov 2016 21:51:43 +0000 (13:51 -0800)]
Use CoreFX Path code (#8132)
* Use CoreFX Path code
This is to address consistency and perf issues by moving the Path
code down to CoreCLR. It is more of an issue with Windows as
normalization requires complicated logic and costly platform calls.
* Delete unused files and avoid Unix crypto lib
* Address feedback, fix bug
Remove Unix crypto files and ifdef out usages completely.
Fix issue with static initialization of PathInternal.
* Use TriState to initialize case sensitivity
Mike Danes [Thu, 17 Nov 2016 21:15:26 +0000 (23:15 +0200)]
Fix x86 long compares that produce a result
Remove the duplicate genProduceReg call. Also remove an unnecessary movzx.
Andy Ayers [Thu, 17 Nov 2016 18:52:06 +0000 (10:52 -0800)]
Inliner: updates to RandomPolicy (#8128)
Fix issues with RandomPolicy setup in release builds with -DINLINE_DATA.
Reparent RandomPolicy on top of DiscretionaryPolicy to enable inline
data dumps from random inline runs. Remove some now-unneeded overrides.
Add a full dump mode to JitInlineDumpData that reports the inliner-visible
data for all inlines, as opposed to inliner-visible and post-inline
data for just the most recent inline. Small mods to the dumper code to
adjust comma placement for this new mode.
Have the RandomPolicy make the full set of profitability observations
for each accepted inline so they can be dumped.
Sivarv [Thu, 17 Nov 2016 18:19:11 +0000 (10:19 -0800)]
Merge pull request #8138 from sivarv/rmwFix
Do not generate "inc/dec [mem]" when asked to generate debuggable code.
Dan Moseley [Thu, 17 Nov 2016 17:27:09 +0000 (09:27 -0800)]
Tweak params of Console
This isn't the implementation of Console we ship, apparently it's only here for CLR tests, or maybe shouldn't be at all. Just tweaking the param names to match what we ship so it doesn't show up in the diffs.
Pat Gavlin [Thu, 17 Nov 2016 16:47:27 +0000 (08:47 -0800)]
Address PR feedback.
Michelle McDaniel [Thu, 17 Nov 2016 16:36:21 +0000 (08:36 -0800)]
Merge pull request #8151 from adiaaida/enableTests
Remove test exclusions for tests that now pass
Dan Moseley [Thu, 17 Nov 2016 04:21:12 +0000 (20:21 -0800)]
Add RuntimeHelpers.Equals
Fix dotnet/corefx#13692
We added this to the ref in 19fa781 but it was not present in the impl. The tools didn't flag this perhaps because Equals is available on Object, although since this is a new it really ought to know it wasn't referring to the Object one.
danmosemsft [Thu, 17 Nov 2016 01:36:03 +0000 (17:36 -0800)]
Add RuntimeHelpers.Equals
danmosemsft [Thu, 17 Nov 2016 01:08:56 +0000 (17:08 -0800)]
Tweak params
Tarek Mahmoud Sayed [Thu, 17 Nov 2016 01:08:45 +0000 (17:08 -0800)]
Add the missing implementation of IdnMapping.GetAscii (#8149)
* Add the missing implementation of IdnMapping.GetAsccii
we should have this implementation in place but no idea why got removed in the first place
* Use nameof
Michelle McDaniel [Thu, 17 Nov 2016 00:04:40 +0000 (16:04 -0800)]
Remove test exclusions for tests that now pass
This change removes tests that have been fixed for x86 RyuJIT. It also
updates the Issues for the remaining tests with additional details.
Jarret Shook [Wed, 16 Nov 2016 23:59:57 +0000 (15:59 -0800)]
Merge pull request #8146 from jashook/test_update_arm64
Update arm64 tests used by the CI
Rahul Kumar [Wed, 16 Nov 2016 23:42:56 +0000 (15:42 -0800)]
Merge pull request #8147 from rahku/reflection
Expose MethodBase.IsSecuritySafeCritical
sivarv [Wed, 16 Nov 2016 22:20:10 +0000 (14:20 -0800)]
Don't generate inc/dec [mem] while generating debuggable code.
Rahul Kumar [Wed, 16 Nov 2016 21:38:38 +0000 (13:38 -0800)]
Expose MethodBase.IsSecuritySafeCritical
Pat Gavlin [Wed, 16 Nov 2016 21:35:06 +0000 (13:35 -0800)]
Format code.
Pat Gavlin [Fri, 11 Nov 2016 21:41:09 +0000 (13:41 -0800)]
Do not fold (ind (addr (lclVar))) in certain cases.
Specifically, do not fold these trees into (lclFld) or (lclVar) if the
size of the access is larger than the size of the lclVar. Furthermore,
mark the lclVar as unenregisterable, as the indirection requires the
lclVar to be in memory.
Dan Moseley [Wed, 16 Nov 2016 21:13:22 +0000 (13:13 -0800)]
Update IssuesFeedbackEngagement.md
Koundinya Veluri [Wed, 16 Nov 2016 20:55:53 +0000 (12:55 -0800)]
Expose a member of StrongNameKeyPair, fix bug in SynchronizationContext (#8142)
Related to dotnet/corefx#11636
Related to dotnet/corefx#11808
Dan Moseley [Wed, 16 Nov 2016 20:55:45 +0000 (12:55 -0800)]
Fixed string Join method
Fixed string Join(string separator, params object[] values) method.
Calling string.Join(",", null, 1, 2, 3); return empty string but should ",1,2,3".
jashook [Wed, 16 Nov 2016 19:00:30 +0000 (11:00 -0800)]
Update arm64 tests used by the CI.
Michelle McDaniel [Wed, 16 Nov 2016 17:48:23 +0000 (09:48 -0800)]
Merge pull request #8144 from adiaaida/formatArtifacts
Fix the path to build artifacts for formatting
Michelle McDaniel [Wed, 16 Nov 2016 17:45:49 +0000 (09:45 -0800)]
Fix the path to build artifacts for formatting
Sean Gillespie [Wed, 16 Nov 2016 17:34:57 +0000 (09:34 -0800)]
Enable GCToOSInterface to be defined on the GC side of the GC interface (#8121)
* Re-introduce changes lost in a merge conflict
* Enable GCToOSInterface to be defined behind the GC interface
when building the GC in standalone mode. Provide a skeleton Windows
implementation and the framework for a Unix implementation.
* Address code review feedback
Tarek Mahmoud Sayed [Wed, 16 Nov 2016 01:35:36 +0000 (17:35 -0800)]
Full support of idn mapping (#8134)
* Enable full implementation of IdnMapping in corelib
* Add missing resources
Pat Gavlin [Wed, 16 Nov 2016 01:00:10 +0000 (17:00 -0800)]
Merge pull request #8135 from pgavlin/fixExtendPtrVN
Fix value numbering for FieldSeqStore::NotAField.
Pat Gavlin [Wed, 16 Nov 2016 00:19:57 +0000 (16:19 -0800)]
Format code.
jorive [Tue, 15 Nov 2016 23:25:52 +0000 (15:25 -0800)]
Changing JIT perf test names to fix how they are organized on BenchView (#8083)
* Changing JIT performance tests' names to fix how tests are organized on BenchView.
* Adding changes based on PR suggestions.
- Add double quotes on cmd script
- Keep name casing consistent for the Benchstone benchmarks.
* Updating datacontractxml value to match new class name.
* Removing an extra / on the xmlns string.
* Making sure we are getting latest BenchView tools.
- Changed where BenchView tools are installed to (from C:\tools to %WORKSPACE%)
- Check if the tools already exist, if so, delete them and download them again.
Bruce Forstall [Tue, 15 Nov 2016 23:25:05 +0000 (15:25 -0800)]
Merge pull request #8110 from BruceForstall/FixLIRCallArgDumping
Fix the arg name/number dumping for call args in LIR
Pat Gavlin [Tue, 15 Nov 2016 22:28:30 +0000 (14:28 -0800)]
Fix value numbering for FieldSeqStore::NotAField.
Before this change, value numbering produced the same value number for
each occurrence of `FieldSeqStore::NotAField`. This semantics is not
logically consistent with the semantics of `NotAField`, however:
`NotAField` indicates that we cannot reason about the address expression
that it annotates, therefore we cannot reason about the value stored at
the corresponding location. A recent change to admit the VN for
`NotAField` in `ExtendPtrVN` exposed SBCG due to this mismatch in
semantics: distinct array elements were assigned the same value number
because each had the same base coupled with the `NotAField` VN.
This change revises the representation of `NotAField` during value
numbering: instead of reusing the same value number for each
occurrence of `NotAField`, each occurrence is instead assigned a new,
unique value number. These value numbers are represented using a new
chunk attribute to retain the ability to decide whether or not a value
number represents `NotAField` without the use of a more heavyweight map
(e.g. a `VNMap`).
Fixes #8133.
Stephen Toub [Tue, 15 Nov 2016 22:22:53 +0000 (17:22 -0500)]
Merge pull request #8125 from stephentoub/divrem_perf
Improve Math.DivRem performance
Koundinya Veluri [Tue, 15 Nov 2016 21:08:41 +0000 (13:08 -0800)]
Expose members of ExecutionContext and AsyncFlowControl (#8107)
Expose members of ExecutionContext and AsyncFlowControl
- Fix ExecutionContext.Capture and AsyncFlowControl.Undo when flow is suppressed
- Expose deserialization constructor for ExecutionContext
John Chen [Tue, 15 Nov 2016 20:44:10 +0000 (12:44 -0800)]
Merge pull request #8131 from JohnChen0/xmm
Fix XMM register count in CONTEXT_SetThreadContextOnPort in PAL
Dan Moseley [Tue, 15 Nov 2016 20:00:13 +0000 (12:00 -0800)]
Merge pull request #8124 from martijnhoekstra/doc-aggex
fix grammar for AggregateException.Flatten
John Chen (CLR) [Tue, 15 Nov 2016 19:09:20 +0000 (11:09 -0800)]
Fix XMM register count in CONTEXT_SetThreadContextOnPort in PAL
Jarret Shook [Tue, 15 Nov 2016 18:10:11 +0000 (10:10 -0800)]
Merge pull request #8127 from jashook/arm64_post_build_script
Change over from the old arm64 scripting.
jashook [Tue, 15 Nov 2016 01:48:56 +0000 (17:48 -0800)]
Change over from the old ar64 scripting.
This change moves away from hosting all of scripts on the Z:\ drive.
The share that used to be shared between the x64 machines and the
arm64 devices. It removes all the old scripting for one python script
arm64_post_build.py, which is responsible for setup of dotnet and
launching
the x64_client.
Michelle McDaniel [Tue, 15 Nov 2016 15:59:56 +0000 (07:59 -0800)]
Merge pull request #8120 from adiaaida/fixDebuggerVarargs
Add special handling of varargs for x86 debugger
Igor Kulaychuk [Tue, 15 Nov 2016 14:55:53 +0000 (17:55 +0300)]
Fix crash in FunctionMemberPtrArrayHolder destructor (#8113)
Some elements in FunctionMember array might not be initialized
and contain garbage. This leads to crash when elements are being deleted.
Move array allocation inside FunctionMemberPtrArrayHolder class
and initialize all array elements to nullptr.
SaeHie Park [Tue, 15 Nov 2016 14:49:02 +0000 (23:49 +0900)]
clean build-roofs and add lldb option (#8123)
- clean unused __MachineTriple
- add indents to case
- add lld 3.6 or 3.8 as option
Stephen Toub [Tue, 15 Nov 2016 14:36:38 +0000 (09:36 -0500)]
Use Math.DivRem in another place in mscorlib
Went through all uses of % looking for places DivRem could be used. This looks like it's the only one of note.
Stephen Toub [Tue, 15 Nov 2016 12:28:20 +0000 (07:28 -0500)]
Improve Math.DivRem performance
Until the JIT is able to eliminate one of the two idiv operations, using a multiplication and subtraction is measurably faster than an extra division.
Martijn Hoekstra [Tue, 15 Nov 2016 12:24:05 +0000 (13:24 +0100)]
fix grammar for AggregateException.Flatten
The old phrasing wasn't gramatically correct. It's somewhat
difficult to find a concise summary
Dan Moseley [Mon, 14 Nov 2016 23:47:55 +0000 (15:47 -0800)]
Reduce variable scope (#8021)
chcosta [Mon, 14 Nov 2016 23:17:54 +0000 (15:17 -0800)]
Merge pull request #8073 from dotnet/enablebinclash
Enable binclash logger
Pat Gavlin [Mon, 14 Nov 2016 23:15:34 +0000 (15:15 -0800)]
Merge pull request #8086 from pgavlin/VSO278523
Admit more dest addresses in block assign value-numbering.
Pat Gavlin [Fri, 11 Nov 2016 18:20:59 +0000 (10:20 -0800)]
Admit more dest addresses in block assign value-numbering.
Internal testing revealed an assertion when computing the value number
for block assignments: the VN framework expected any block assignments
to a tracked lclVar to have a destination address of the form
`(addr (lclVar))` or `(addr (lclFld))`. However, the check that it
uses to determine whether or not a block assignment targets a lclVar
also admits addresses formed by some combination of adds of constants
to these patterns (e.g. `(add (const 4) (add (addr lclVar) (const 4)))`.
This fix admits these additional patterns in value numbering by allowing
`ExtendPtrVN(GenTree*, GenTree*)` to supply `NotAField` to
`ExtendPtrVN(GenTree*, FieldSeqNode*)`.
Michelle McDaniel [Mon, 14 Nov 2016 21:44:06 +0000 (13:44 -0800)]
Add special handling of varargs for x86 debugger
On x86, stack arguments must be accessed via the varargs cookie for
varargs. Since the functions would be identical, this change moves the
code from codegenlinear to codegencommon to fix vararg argument
handling in the debugger.
Fixes VSO 284774.
Bruce Forstall [Mon, 14 Nov 2016 03:17:36 +0000 (19:17 -0800)]
Fix the arg name/number dumping for call args in LIR
Use the arg number in the arg info table. Before this, I saw cases
where the args were named: arg0, arg1, arg1, arg3, instead of:
arg0, arg2, arg1, arg3, for example.
Bruce Forstall [Mon, 14 Nov 2016 21:44:06 +0000 (13:44 -0800)]
Merge pull request #8111 from BruceForstall/FixTestNewlines
Don't generate explicit newlines in SIMD tests
chcosta [Mon, 14 Nov 2016 21:40:51 +0000 (13:40 -0800)]
Merge pull request #8115 from chcosta/updatebuildtools
Update buildtools to version 01008-01
Pat Gavlin [Mon, 14 Nov 2016 21:10:52 +0000 (13:10 -0800)]
Merge pull request #8031 from pgavlin/VSO283795
Do not fold `(x + null)` in certain cases.
Sivarv [Mon, 14 Nov 2016 19:07:36 +0000 (11:07 -0800)]
Merge pull request #8101 from sivarv/rmwOpt
Generate "inc/dec [mem]" instead of "add/sub [mem], 1" for Read-Modify-Write (RMW) operations.
Pat Gavlin [Mon, 14 Nov 2016 19:02:12 +0000 (11:02 -0800)]
Fix test exclusions.
The new regression test should only be disabled for builds that use the
legacy backend.
Rahul Kumar [Mon, 14 Nov 2016 18:17:28 +0000 (10:17 -0800)]
Merge pull request #8100 from rahku/reflection
Expose Assembly::GetFile(s) apis
Christopher Costa [Mon, 14 Nov 2016 16:40:16 +0000 (08:40 -0800)]
Update buildtools to version 01008-01
Alexander Radchenko [Mon, 14 Nov 2016 15:58:58 +0000 (22:58 +0700)]
Fixed string Join method
Fixed string Join(string separator, params object[] values) method.
Calling string.Join(",", null, 1, 2, 3); return empty string but should ",1,2,3".
Gaurav Khanna [Mon, 14 Nov 2016 05:21:07 +0000 (21:21 -0800)]
Merge pull request #8108 from gkhanna79/Arm32Test
Enable WinArm32 P1 Test Build
Bruce Forstall [Mon, 14 Nov 2016 03:20:55 +0000 (19:20 -0800)]
Don't generate explicit newlines in SIMD tests
Use Console.WriteLine() instead.
Gaurav Khanna [Sun, 13 Nov 2016 23:47:11 +0000 (15:47 -0800)]
Enable WinArm32 P1 Test Build
Andy Ayers [Sun, 13 Nov 2016 22:15:14 +0000 (14:15 -0800)]
Inliner: ensure all statements have an inline context (#8064)
* JIT: Retype fgMorphStmt and related variables
There are quite a few variables typed as `GenTreePtr` that must point
at statements -- for instance `fgMorphStmt`. Retype these as `GenTreeStmt*`.
Cleanup dereferences which no longer require a `gtStmt`.
* Inliner: ensure all statements have an inline context
We would previously allow some statements inserted by the inliner
"between" the caller and callee to have a null inline context. This
lack of context could lead to incomplete or misleading inline trees
if the inserted code included calls. In particular some failed inlines
might not show up in the trees.
Set the context for these inserted statements to be the context for the
call being inlined (thus they logically "belong" to the caller).
Rahul Kumar [Sun, 13 Nov 2016 17:34:58 +0000 (09:34 -0800)]
Add implementation for AssemblyName::EscapedCodeBase (#8072)
John Chen [Sun, 13 Nov 2016 00:20:14 +0000 (16:20 -0800)]
Remove conflicting proj files (#8090)
Some test cases have both .ilproj and .csproj files, resulting
in a race condition during build. Removing the .csproj files,
as the MSIL versions appear to be the intended ones.
Stephen Toub [Sat, 12 Nov 2016 14:19:33 +0000 (09:19 -0500)]
Merge pull request #8085 from stephentoub/daylight_alloc
Avoid allocations in DateTime.Now
Stephen Toub [Sat, 12 Nov 2016 12:51:08 +0000 (07:51 -0500)]
Avoid allocations in DateTime.Now
Every call to DateTime.Now ends up allocating a DaylightTime as it computes the offset from UtcNow. DaylightTime is just a plain old object that stores two DateTimes and a Timespan. Ideally we could just change it to be a struct, but it's public. Instead, this commit adds an internal DaylightTimeStruct, which is the same as DaylightTime except as a value type, and changes some of the internal uses of DaylightTime to instead use DaylightTime. As a result, DateTime.Now is allocation-free.
Andy Ayers [Sat, 12 Nov 2016 03:52:24 +0000 (19:52 -0800)]
Inliner: updates to random inlining (#8088)
Cache the random state on the InlineStrategy instead of on the compiler
instance so that the state is reinitialized and private to each jit request.
That way the random policy evaluations made compiling one method won't
alter the evaluations for subsequent methods. This should make it somewhat
easier to do A/B comparisons under jit stress when changing the jit.
Make it possible to enable the RandomPolicy outside of stress. This may
prove useful in various randomized inline performance studies or as
a simple stress mode on its own.
Random state seed is built from an external seed value (via JitStress or
JitInlinePolicyRandom) and an internal seed value (method hash), so that
random sequences potentially differ for each method but are deterministic
across runs and changes to the jit.
Dmitry-Me [Sat, 12 Nov 2016 00:54:37 +0000 (03:54 +0300)]
Remove redundant statement (#7900)
sivarv [Sat, 12 Nov 2016 00:41:16 +0000 (16:41 -0800)]
Generate inc/dec [mem] instead of add/sub [mem], 1 for read-modify-write operations.
Tarek Mahmoud Sayed [Fri, 11 Nov 2016 23:46:47 +0000 (15:46 -0800)]
Enable the rest if TimeZoneInfo APIs (#8096)
Rahul Kumar [Fri, 11 Nov 2016 20:10:16 +0000 (12:10 -0800)]
Expose Assembly::GetFile(s) apis
Matt Ellis [Fri, 11 Nov 2016 22:20:40 +0000 (14:20 -0800)]
Rename gitmirrorfile
Matt Ellis [Fri, 11 Nov 2016 21:52:11 +0000 (13:52 -0800)]
Merge pull request #8087 from ellismg/selective-mirror-sketch
Update .gitmirror metadata
Pat Gavlin [Fri, 11 Nov 2016 20:34:28 +0000 (12:34 -0800)]
Refactor some logic in GT_IND morphing.
This change separates the logic that morphs child trees that reference
lclVars in preparation to use them as the result of a GT_IND fold from
the logic that sets the flags on the result of the fold. This also
standardizes GT_IND morphing on using the `typ` local to refer to the
type of the tree being morphed (rather than a mix of `typ` and
`tree->TypeGet()`).
Joseph Tremoulet [Fri, 11 Nov 2016 19:37:45 +0000 (14:37 -0500)]
Merge pull request #8001 from JosephTremoulet/UnrollSimd
Enable unrolling of SIMD_LIMIT loops
Joseph Tremoulet [Fri, 14 Oct 2016 18:53:52 +0000 (14:53 -0400)]
Enable unrolling of SIMD_LIMIT loops
Since the Vector<T> abstraction has a `Count` that is not a
C#-compile-time constant, it encourages use of iteration to
search/aggregate individual elements using symbolic indexing, which in
turn leads to codegen that spills the vector to memory for each element
access, and performs bounds checks for each access. These loops will have
low trip counts that are jit-compile-time constant, and constant indexing
into Vector<T> allows more efficient register-to-register sequences and
bounds-check elision. This change enables RyuJit's loop unroller when
such a loop is discovered, and increases the size threshold to target
optimizing such loops much more aggressively than the unroller's previous
incarnation.
Add a test with a motivating loop to the Performance/CodeQuality/SIMD
suite.
Closes #7843.
Joseph Tremoulet [Thu, 10 Nov 2016 21:37:05 +0000 (16:37 -0500)]
Detect overflow in unroller cost computation
Make sure to avoid trying to unroll cases so large as to overlow the cost.
Joseph Tremoulet [Fri, 14 Oct 2016 18:47:20 +0000 (14:47 -0400)]
Allow unrolling loops with multiple branches
Lift both the single-exit restriction and the no-internal-branching
restriction. Share some utilities with the loop cloner to facilitate
this (particularly `CloneBlockState` and `fgUpdateChangedFlowGraph`).
Joseph Tremoulet [Wed, 19 Oct 2016 18:21:07 +0000 (14:21 -0400)]
Unroll loops in inner-to-outer order
There's no need for fixpoint iteration; the loop indices are a pre-order,
so walking them in reverse order will visit inner loops before outer ones.