summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2016-03-22Merge pull request #3863 from jkotas/legacynetcf-2Jan Kotas42-1451/+83
Delete legacy netcf compat support (part 2)
2016-03-22Merge pull request #3794 from mikem8361/stripsymMike McLaughlin18-64/+30
Strip symbols on release builds into separate binaries
2016-03-22Strip symbols on release builds into separate binariesMike McLaughlin18-64/+30
Issue #3669 Created a common cmake strip_symbols function that all the modules and programs use to strip the symbols out of the main into a separate .dbg (Linux) or .dSYM (OSX) file. Added an install_clr cmake function to encapsulate the install logic. Changed all the library module cmake install lines from a TARGETS to a FILES one. The TARGETS based install directives caused cmake to relink the binary and copy the unstripped version to the install path. Left the all programs like corerun or ildasm as TARGETS installs because on OSX FILES type installs don't get marked as executable. Need to use "get_property(strip_source_file TARGET ${targetName} PROPERTY LOCATION)" for the older versions of cmake and "set(strip_source_file $<TARGET_FILE:${targetName}>)" on newer versions (v3 or greater).
2016-03-22Merge pull request #3862 from dotnet-bot/from-tfsJan Kotas5-15/+15
Merge changes from TFS
2016-03-22Merge pull request #3858 from janvorli/fix-exception-callstackJan Vorlicek1-18/+34
Fix exception to string in case of exception in callstack extraction
2016-03-22Delete legacy netcf compat support (part 2)Jan Kotas42-1451/+83
2016-03-22Fix exception to string in case of exception in callstack extractionJan Vorlicek1-18/+34
This change fixes a problem when exception happens while converting an exception call stack to string. Without this change, Exception.ToString would fail and if the exception was unhandled, it would just print "Cannot print exception string because Exception.ToString() failed." without any details on what exception happened. The problem happens e.g. in case when a method on the call stack has a parameter that contains members of types from an assembly that cannot be resolved. The fix was to catch exception from parameter info extraction and if it happens, just exclude the parameter list from the reported frame.
2016-03-22Update Runtime packages to use netstandard1.0 instead of dotnet as the TFM.Wes Haggard5-15/+15
CR: ericstj [tfs-changeset: 1588560]
2016-03-22Merge pull request #3803 from manu-silicon/arm_structCarol Eidt1-3/+8
Fix for issue #3754 when passing struct as argument on ARM
2016-03-21Merge pull request #3852 from jkotas/legacynetcf-1Jan Kotas46-761/+26
Delete legacy netcf compat support (part 1)
2016-03-21Merge pull request #3650 from sivarv/blockSeqFixSivarv2-29/+109
Fix to Huffman benchmark decompression loop has unnecessary spills and reloads
2016-03-21Merge pull request #3843 from AndyAyersMS/DataGatheringAndy Ayers8-22/+347
Inliner: initial data gathering for code size estimates
2016-03-21Merge pull request #3854 from mikem8361/docsMike McLaughlin1-1/+1
Update SOS documentation
2016-03-21Delete legacy netcf compat support (part 1)Jan Kotas46-761/+26
2016-03-21Merge pull request #3847 from dotnet-bot/from-tfsJan Kotas15-391/+11
Merge changes from TFS
2016-03-22Fix for issue #3754 when passing struct as argument on ARMManu1-3/+8
When enabling Unix AMD64 struct passing, we broke ARM we were need to check if the register is an HFA one or not, and if so uses the HFA type instead.
2016-03-21Update SOS documentation.Mike McLaughlin1-1/+1
2016-03-21Merge pull request #3815 from briansull/struct16-fp-argsBrian Sullivan1-11/+21
Fixes issue 3750 - passing fp arguments
2016-03-21Inliner: initial data gathering for code size estimatesAndy Ayers8-22/+347
Some initial work to gather data to drive the modelling of inline code size impact. See #3775 for context. Update the `DiscretionaryPolicy` to capture more observations. Add a limit feature `JitInlineLimit` so the jit will stop inlining after a given number of successful inlines. Add a `DumpData` method to `InlinePolicy` which will display all the observations that were made to evaluate an inline. Implement this for the `DiscretionaryPolicy`. Add a matching `DumpSchema` that writes out column headers for each of the observations. Modify `InlineResult` to cache the last successful policy on the root compiler instance. Use that along with the `JitInlineLimit` and `DumpData` to display detailed information about the last sucessful inline along with the code size for the method. All this is displayed if `JitInlineDumpData ` is enabled. This allows for isolating code size measurements as follows. Compile or jit something with `JitInlineLimit = 0` and `JitInlineDumpData =1` (and for now, `JitInlinePolicyDiscretionary = 1`, since other policies do not implement any interesting data dumping). Record the this root set of method sizes and IDs. Repeat with `JitInlineLimit=1`. For each method where there was an inline, the size impact of that inline can be computed by comparing this version versus the version from the root set. Repeat with `JitInlineLimit=2`, comparing versus the `=1` versions. Currently the method token is used to identify the root method. This is not sufficiently unique but unfortunately there currently aren't substantially better alternatives. See #1957 for some discussion.
2016-03-21Trim Windows-specific System.Security.Principal types from CoreCLR mscorlibJan Kotas15-391/+11
[tfs-changeset: 1588225]
2016-03-21Tests and fixes for struct16 arguments and floating point argumentsBrian Sullivan1-11/+21
Updated Tests.lst with 50 new passing tests Updated this fix to be under #ifdef ARM64 only
2016-03-19Fix a CrossGen CreatePDB issue that caused a Windows build breakJohn Chen2-1/+11
CrossGen /CreatePDB command gives preference to the TPA list while loading assemblies. So if the TPA contains the IL version of the input assembly but not the NI version, we would end up loading the IL instead of NI. This causes the CreatePDB command to fail, since it can't operate on IL images. This is fixed by putting the input file as the first entry in the TPA list. Another issue is when the above error does occur, the error message is very unclear (it only shows "Unspecified error"). This is fixed with a better error message. [tfs-changeset: 1587876]
2016-03-18Merge pull request #3655 from sejongoh/fix_u64_to_f64_castSejong Oh5-26/+85
Fix inconsistent uint64-to-double cast
2016-03-18Fix inconsistent uint64-to-double castSejong OH5-26/+85
2016-03-18Merge pull request #3812 from janvorli/fix-stubJan Vorlicek1-2/+6
Fix instantiating stub for methods of value types
2016-03-18Fix instantiating stub for methods of value typesJan Vorlicek1-2/+6
This change fixes a problem with instantiating stubs for methods of value types. The problem was that the CreateInstantiatingILStub didn't take into account the fact that methods of value types need to have "this" passed "byref". The issue manifested itself as a rare corruption of references in array of structs that were thin wrappers for string reference during GC stack scan. GC thought that the reference to an array entry is an object reference that starts with method table. GC marks method table pointers by setting their bit zero to 1. But in this case, it has accidentally modified an object reference instead and a test was crashing with wrong object address. The root cause of the problem is that the instantiating stubs were placed on a global singleton reference class no matter whether the target method was on a reference class or a value type. I have fixed it by putting the stubs on the instantiated target generic type instead.
2016-03-18Ported managed Utf8/Unicode encoder/decoder to C++ for usage in PALWilliam Godbe15-456/+3224
2016-03-18Merge pull request #3799 from AndyAyersMS/AdjustInlineObservationsAndy Ayers4-108/+167
Inliner: make more observations unconditional
2016-03-18Merge pull request #3801 from dotnet-bot/from-tfsJan Kotas1-1/+31
Merge changes from TFS
2016-03-18Merge pull request #3796 from kyulee1/fixalignchkKyungwoo Lee1-158/+172
Fix Stack Alignment Check
2016-03-17Merge pull request #3783 from mikem8361/fixsosbpMike McLaughlin6-105/+75
Fixed problem with bpmd not working sometimes.
2016-03-17Merge pull request #3745 from manu-silicon/docsJan Kotas60-189/+189
Ensure proper spelling of COMPlus_xxx environment variables
2016-03-17Merge pull request #3797 from svick/patch-2Jan Kotas1-1/+2
Update out of date comment in List<T>
2016-03-17Add back some APIs needed by legacy test runner, for nowJan Kotas1-1/+31
[tfs-changeset: 1586974]
2016-03-17Fix Stack Alignment CheckKyungwoo Lee1-158/+172
This fixes https://github.com/dotnet/coreclr/issues/3747. If JIT saves the first single store (not pair store) with stack adjustment required (```spDelta != 0```), we expect the offset to be 8 to account for alignment. This API ```genPrologSaveReg``` is invoked twice from INT and FP saving respectively while JIT stores/allocates stacks once for these saving registers back to back. So, the assertion is not quite right. For instance when we have 1 INT and 1 FP registers to be saved, JIT failed to assert the offset to be 8 in the first invocation for INT. In fact, for this case, the offset should be 0 (no alignment is required) since we store 2 registers which are already aligned on 16 byte. We should consider whether or not the total number of saved registers is odd. Not only that, even for the pair store, we should assert the offset either 0 or 8 depending on the total number of saved registers. For instance, 2 INT and 3 FP, we want the offset to be 8 when we store the first pair with stack adjustment required (```spDelta != 0```). I refactored the code to reflect this issue in ```genSaveCalleeSavedRegistersHelp``` while taking out the existing assertion in ```genPrologSaveReg``` which is too local. Similar change is made for the restore case.
2016-03-17Inliner: make more observations unconditionalAndy Ayers4-108/+167
There are still some observations within `fgFindJumpTargets` that are only made when inlining. This change enables them to also be made for the prejit root case. This partially addresses the inconsistencies noted in #3482. Most notably, the simple stack model is now fully enabled for the prejit root case, and the policy is able to more broadly observe things like `CALLEE_LOOKS_LIKE_WRAPPER` and `CALLEE_ARG_FEEDS_CONSTANT_TEST`. As before, the `LegacyPolicy` ignores these observations for the prejit root. Forthcoming policies will likely behave differently. Two observations that were fatal -- `CALLEE_UNSUPPORTED_OPCODE` and `CALLEE_STORES_TO_ARGUMENT` -- are now conditionally fatal, since they do not cause failure for the prejit root case (though arguably they should). The `CALLEE_IS_MOSTLY_LOAD_STORE` observation has been removed, and the conditions under which it fired have been encapsulated within the `LegacyPolicy`. No change in behavior is expected. I verified crossgen of mscorlib still makes all the same inline decisions for the same reasons.
2016-03-17Merge pull request #3798 from dotnet-bot/from-tfsMatt Ellis1-1/+1
Merge changes from TFS
2016-03-17Merge pull request #3793 from jkotas/hostprotectionattributeJan Kotas1-0/+35
Add back HostProtectionAttribute to mscorlib
2016-03-17Update out of date comment in List<T>Petr Onderka1-1/+2
Comment for parameterless constructor of List<T> claimed that the default non-zero capacity was 16, even though _defaultCapacity is actually 4. Updated the comment to refer to _defaultCapacity, to make sure it doesn't need to be updated again if _defaultCapacity changes in the future.
2016-03-17Use "debian.8" instead of "debian.8.2"Matt Ellis1-1/+1
CoreFX uses "debian.8" as the rid for debain packages, whereas CoreCLR was still on "debian.8.2". Move to "debian.8" because it matches what's in /etc/os-release and what the CLI will generate by default. [tfs-changeset: 1586899]
2016-03-17Add back HostProtectionAttribute to mscorlibJan Kotas1-0/+35
2016-03-17Merge pull request #3780 from AndyAyersMS/DiscretionaryInlinerAndy Ayers5-42/+114
Inliner: create DiscretionaryPolicy
2016-03-17Fixed problem with bpmd not working sometimes.Mike McLaughlin6-105/+75
Fix some too earlier SOS initialization problem. Now returns an error. The DAC interface (IXCLRDataProcess) was being created everytime an command was run and the JIT and GC notification tables where being reinitialized each time losing any JIT notifications needed to resolve a breakpoint. Only create the DAC interface instance once. It does need to be flushed each time sos is entered though. Enable the module load and unload and exception callbacks when the DAC instance is created. This is what windbg does on Windows (along with flushing the DAC each time the target is restarted). It simplifies the breakpoint code; it no longer needs to enable/disable these notification flags. Cleaned up places where the DAC instance (direct calls to LoadClrDebugDll) and not released properly.
2016-03-17Merge pull request #3777 from dotnet-bot/from-tfsJan Kotas84-23305/+1
Merge changes from TFS
2016-03-16Inliner: create DiscretionaryPolicyAndy Ayers5-42/+114
The `DiscretionaryPolicy` is similar to the `LegacyPolicy`, but does not use size limits. So there is no "always" inline class and no "too big to inline" class. Also, discretionary failures do not trigger noinline stamping. It is installed if `JitInlinePolicyDiscretionary` is set nonzero. See #3775 for some background on where this new policy will be used. This is a first cut and further refinement is likely. Also removed the unused `NoteDouble` methods since the double-valued observations now are kept internally within `LegacyPolicy` and it's not very likely we'll introduce new cases where doubles are needed.
2016-03-16Merge branch 'master' into issue-3778Brian Sullivan5-34/+51
2016-03-16Fix issue 3778Brian Sullivan1-3/+3
Move the initialization of compGenTreeID to earlier in Compiler::compCompileHelper
2016-03-16Remove unused files from CoreCLRJan Kotas84-23305/+1
[tfs-changeset: 1586532]
2016-03-16Merge pull request #3762 from AndyAyersMS/FixInconsistentPolicyAndy Ayers5-34/+51
Use root compiler instance for inline result and policy
2016-03-16Merge pull request #3752 from dotnet-bot/from-tfsJan Kotas16-4152/+222
Merge changes from TFS