* make StackItem an explicitly layed out struct (#5011)
* replace operator overloads with methods (#5011)
* set return based on method return type instead of stackitem kind (#5011)
* remove umanaged pointer field from StackItem (#5011)
* add program validity check to return import method (#5011)
* use ThrowHelper to throw invalid program exception (#5011)
* add Double to StackValueKind enum (#5011)
* use a double to store all floating point values (#5011)
* update handling of boolean return value (#5011)
* remove all asserts during return for integer based types (#5011)
* Fix ServiceController name population perf
* Split tests
* Remove dead field
* Remove new use of DangerousGetHandle
* SafeHandle all the things!
* VSB #1
* VSB #2
* Fix GLE
* Initialize machineName in ctor
* Test for empty name ex
* Null names
* Inadvertent edit
* Unix build
* Move interop into class
* Reverse SafeHandle for HAllocGlobal
* Fix tests
* Disable test for NETFX
* CR feedback
* Pattern matching on VSB
* Direct call
* typo
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
* Virtual AttributeType property and signature generic types
https://github.com/dotnet/corefx/issues/31614
1. This will allow Reflection providers the option
to supply the attribute type without building
an entire constructor.
https://github.com/dotnet/corefx/issues/31798
2. This will permit other Reflection providers
to support Type.MakeGenericMethodParameter()
in their implementations.
* More robust argument validation.
* Change parameter name
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
* Run CoreCLR tests that are known to pass in ready-to-run during CI
* Add a mechanism to easily collect the list of passing / failing tests for use in inclusion / exclusion lists.
* using local copy of registryvaluekind and advapi32
* Moving complete file to shared
* name changed
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
- Compiling a function calling Internal.IntrinsicSupport.EqualityComparerHelpers.StructOnlyEquals<T> from a function that is itself generic on T where T is Nullable<SomeGenericStructWhichImplementsIEQuatable<__Canon>> produces an internal compiler error
- The issue is that instantiating a method of Canon isn't actually permitted to be a "real, callable" instantiation
- Fix by changing the "default" variant of StructOnlyEquals to depend on EqualityComparer<T> which is known to work (by using universal generics)
- Then add a variant for just using the Equals function
- Change the compiler to use the "Normal" variant most of the time
- Except for the newly discovered problematic case which can fall back to the slower, but semantically correct EqualityComparar<T> path
[tfs-changeset: 1711845]
* Registers_arm_rt :wrapper class around RT's VRS
RT uses REGDISPlAY structure for virtual registers set (VRS) representation.
The libunwind uses Registers_* classes to hold VRS.
The new class connects REGDISPlAY with libunwind Registers_* API.
Also the new class reuses validRegister, validFloatRegister,
getRegisterName methods from libunwind::Registres_arm class.
* Methods implementation for Registers_arm_rt class
* Avoid PORTABILITY_ASSERT() in StepFrame for ARM
The DoTheStep accepts 3 input parameters:
pc - it could be taken for regs input parameter
UnwindInfoSections - is not needed in case ARM, it will be located by
libunwind later, before unwinding
regs - pointer to REGDISPLAY that represents RT's VRS
* Remove PORTABILITY_ASSERT() in DoTheStep()
SetInfoBaseOnIPRegister - sets unwind info for libunwind::UnwindCursor
see UnwindCursor.hpp:1228 for additional comments
* libunwind API is updated: unw_set_reg sets pointer to register value
Since the unwinder must provide pointer to pc, setting only pc value
in the REGDISPLAY is not enough. For this reason the libunwind should
set pointers to registers to set pIP pointer.
* Clean up libunwind config file
The libunwind uses "if defined()" not "!()"
* Initialize Registers_arm_rt with REGDISPLAY
The pointer to REGDISPLAY is passed to Registers_arm_rt constructor
In my initial ProjectN / CoreRT port of CoreCLR StackTrace from last year I mechanically included the ProjectN exception handling concept of "EdiSeparator" pseudo-frames. This is however not completely correct as such frames have invalid IP addresses and cause weird issues (e.g. by returning GetNativeImageBase = 0). I'm proposing to modify this logic so that the separator flag gets silently collapsed onto the previous frame without creating a frame of its own.
Historically, StackFrame has its own treatment for handling the EdiSeparator addresses; I haven't removed that as it doesn't seem to be harmful in any manner, it only slightly complicates formatting as such manually constructed frames constitute "separator only" frames while the ones created in StackTrace IP address expansion are normal frames with reasonable IP addresses.
Thanks
Tomas
[tfs-changeset: 1711591]
* Add source line debug metadata. Works with javascript output.
* Add names of arguments and locals when they're stored on the stack (and thus easily visible in the debugger)
* Add debugging information to documentation
* AesGcm, AesCcm
* add osx stubs
* disable tests on osx and desktop (APIs not there/not supported)
* TagByteSizes on OSX
* fix TagByteSizes compilation error
* apply review feedback
* fix typo when setting tag/nonce length in ccm
* add missing SetCcmTagLength
* attempt to detect if ccm is available on Ubuntu 14.04
* disable tests on ubuntu 14.04, attempt for osx support
* attempt to fix osx
* fix osx
* review feedback
* disable new ccm testcases on ubuntu 14.04
* attempt to make Ubuntu 14.04 work
* add Interop.Initialization to OSX
* fix KeySizeHelpers after merge conflict
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
The ProjectN compiler never finishes compiling an app from an external use. The issue turns out to be due to the debug recording generation for a huge generic expansion. There are actually two problems:
1. The generic complexity computation is improper for the huge generic expansion in the failing case. The complexity computed was 0 and the compiler didn’t know it’s huge.
2. We are missing the check against the generic complexity in some places where UDT debug records are prepared.
Fixing #1 at this point is tricky since it may cause wide asm diffs where normal calls become USG calls.
Fixing #2 means the UDT types in the debug$T section for huge generic instantiations will fall back to USG or canonical records, so will the debug$S records for associated static fields. The debug$T change should only affect native debugging. The debug$S change can affect managed debugging but only for huge generic instantiations.
We've decided #2 is probably the less risky way to unblock the user in the next release and it's fixed by this change for both ProjectN and ProjectX.
[tfs-changeset: 1711506]