summaryrefslogtreecommitdiff
path: root/src/vm/methodtablebuilder.h
AgeCommit message (Collapse)AuthorFilesLines
2018-11-13Handle generics in methodimpls for default interface methods (#20404)Michal Strehovský1-4/+17
The existing logic looking at MethodImpls to find the default interface implementation was not correct in the presence of generics. The MethodImpl records we build during type load only contain inexact MethodDescs for the declMethod that are not suitable for comparisons. The fix is to pipe through the token and resolve the declaring method from it at the time of dispatch.
2018-10-07Remove some dead remoting and context static things (#20277)Austin Wise1-10/+3
* Remove IsRemotingIntercepted methods that always return false. * Remove GetOptionalMembersAllocationSize parameters that are always false. * Remove references to context static. Remove references in comments and methodnames. * Remove RemotingVtsInfo.
2018-10-05Remove context statics stuff (#20256)Jan Vorlicek1-16/+2
* Remove context statics stuff part 1 This change removes all context statics stuff from the runtime since context statics are not supported and this code was obsolete. * Remove context statics stuff from the debugger code
2018-06-15Delete bitrotten appdomain agility checks (#18489)Jan Kotas1-1/+0
Fixes #18484
2018-04-17Unix/x64 ABI cleanupCarol Eidt1-2/+2
Eliminate `FEATURE_UNIX_AMD64_STRUCT_PASSING` and replace it with `UNIX_AMD64_ABI` when used alone. Both are currently defined; it is highly unlikely the latter will work alone; and it significantly clutters up the code, especially the JIT. Also, fix the altjit support (now `UNIX_AMD64_ABI_ITF`) to *not* call `ClassifyEightBytes` if the struct is too large. Otherwise it asserts.
2018-03-27Enable reflection load ComImport assembly and Type.IsComObjectType (#16943)Luqun Lou1-2/+1
* Enable reflection load ComImport assembly and Type.IsComObjectType * Update Enable reflection load ComImport assembly
2018-01-31Respond to PR feedback.Eric Erhardt1-2/+2
- Move IsIntrinicType check earlier, and use it during CheckIfSIMDAndUpdateSize. - Check all types for [Intrinsic] attribute.
2018-01-31Add Vector<T> to CoreLib.Eric Erhardt1-1/+2
This requires the runtime to change to recognize the Vector classes in either System.Numerics.Vectors.dll or in System.Private.CoreLib.dll. To do this, I added the [Intrinsic] attribute to Vector<T> struct and Vector static class.
2018-01-05Detect ByRefLike types using attribute (#15745)Jan Kotas1-2/+0
* Detect ByRefLike types using attribute and improve error messages for their invalid use Fixes #11371 and #15458
2017-09-29Merge branch 'master' into merge_masterDavid Wrighton1-0/+2
2017-09-29Enable hardware intrinsic in debug and reflectionFei Peng1-0/+2
2017-09-13Merge branch 'master' into update_from_masterDavid Wrighton1-2/+0
2017-08-15Finalize override lookup algorithm (#12753)Yi Zhang (CLR)1-8/+19
* first cut of multiple candidates * new positive case for diamond shape * Add proper missing implementation detection and positive diamond shape scenario support. Untested * fix bug and get test to pass * Add more diamond shape pos/neg tests * Fix bad I8 * Add GVM tests to diamond shape * GVM working * Change test case to better match diamondshape scenario * Fix MethodImpl::Iterator::GetMethodDesc and optimize no-method impl scenario * Update methodimpl test to include multiple slots and fix a bug * Temporarily disable incremental build in this branch * Update methodimpl to include multiple methodipml overriding scenario. This is triggering some bugs and need to investigate * Fix a buffer overrrun bug with interface methodimpl * Update after self-review * Add proper methodImpl validation for methods * Address feedback. Refactoring pending
2017-08-07Cleanup code access security from the unmanaged runtime (#13241)Jan Kotas1-2/+0
2017-05-30Remove relocations from SECTION_MethodDesc for ngened images (#11394)gbalykov1-4/+4
2017-05-17Finish deleting dead CAS code from CoreLib (#11436)Jan Kotas1-32/+1
Fixes #9321 and deletes CleanupToDoList.cs Delete unmanaged security implementation
2017-03-13Build Linux altjit for x86 and amd64 (#10120)Bruce Forstall1-2/+2
Enable Windows hosted, Linux target amd64 altjit With this change, we build a JIT that runs on Windows amd64 and targets Linux amd64, as an altjit named linuxnonjit.dll. This is useful for debugging, or generating asm code or diffs. You can even easily create Windows/non-Windows asm diffs (either to compare the asm, or compare the generated code size). For this to work, the JIT-EE interface method getSystemVAmd64PassStructInRegisterDescriptor() was changed to always be built in, by defining `FEATURE_UNIX_AMD64_STRUCT_PASSING_ITF` in all AMD64 builds. The `_ITF` suffix indicates that this is functionality specific to implementing the JIT-EE interface contract. There were many places in the VM that used this interchangeably with `FEATURE_UNIX_AMD64_STRUCT_PASSING`. Now, `FEATURE_UNIX_AMD64_STRUCT_PASSING` means code in the VM needed to implement this feature, but not required to implement the JIT-EE interface contract. In particular, MethodTables compute and cache the "eightbyte" info of structs when loading a type. This is not done when only `FEATURE_UNIX_AMD64_STRUCT_PASSING_ITF` is set, to avoid altering MethodTable behavior on non-Unix AMD64 builds. Instead, if `getSystemVAmd64PassStructInRegisterDescriptor()` is called on a non-Unix build (by the altjit), the `ClassifyEightBytes()` function is called, and nothing is cached. Hopefully (though it was hard for me to guarantee by observation), calling `ClassifyEightBytes()` does not have any side effects on MethodTables. It doesn't really matter, since if called for altjit, we don't care too much about running. The previously used `PLATFORM_UNIX` define is now insufficient. I introduced the `#define` macros `_HOST_UNIX_` to indicate the JIT being built will run on Unix, and `_TARGET_UNIX_` to indicate the JIT is generating code targeting Unix. Some things were converted to use the `UNIX_AMD64_ABI` define, which makes more sense.
2017-02-14Remove never defined FEATURE_REMOTINGdanmosemsft1-53/+0
2016-12-07Refactor Span<T> to ease implementation of JIT intrinsics (#8497)Jan Kotas1-0/+1
- 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
2016-06-13Refactor MethodTable::ContainsStackPtr (#5754)Jan Kotas1-1/+0
- Rename ContainsStackPtr to IsByRefLike. It is the term used for this kind of types in ECMA spec. - Change the check to be based on flag instead of hard coded list of types - Remove redundant unused method of the same name on EEClass
2016-03-09Delete dead codeJan Kotas1-11/+0
- Delete BINDER, STANDALONE_BINDER and MDIL ifdefs
2016-01-27Update license headersdotnet-bot1-4/+3
2015-10-20Implementation of System V ABI struct passing.Lubomir Litchev1-0/+9
This PR adds support for System V x86_64 ABI classification and calling convention to the VM and the Jit, including, but not limited to Ubuntu Linux and Mac OS X. The general rules outlined in the System V x86_64 ABI (described at http://www.x86-64.org/documentation/abi.pdf) are followed with a few little exceptions, described below: 1. The hidden argument for by-value passed structs is always after the ÎéÎíthisÎéÎí parameter (if there is one.). This is a difference with the Sysetem V ABI and affects only the internal jit calling conventions. For PInvoke calls the hidden argument is always the first parameter since there is no ÎéÎíthisÎéÎí parameter in this case. 2. Managed structs that have no fields are always passed by-value on the stack. 3. The jit proactively generates frame register frames (with RBP as a frame register) in order to aid the native OS tooling for stack unwinding and the like.
2015-01-30Initial commit to populate CoreCLR repo dotnet-bot1-0/+3052
[tfs-changeset: 1407945]