Age | Commit message (Collapse) | Author |
|
Roslyn decided to do a breaking change to the ECMA-335 file format by generating an illegal custom modifier for the `unmanaged` constraint. The purpose of the modifier is to poison such types for old versions of the C# compiler (the modifier otherwise isn't necessary for the feature to work). This also poisons a lot of the .NET ecosystem too (breaking everything ranging from Mono to the C++/CLI compiler).
We need to update our stack to support this and unblock our customers.
[tfs-changeset: 1709243]
|
|
- Pick up latest .NET Core 2.0 CLI and buildtools
- Remove all project.json references and convert everything to msbuild projects
- Stick to vanilla .NET CLI project shape as much as possible. Minimize dependencies on buildtools special behaviors
|
|
The latest project templates do not have it, and it is only good for generating warnings like the following in the detailed build log:
Project file contains ToolsVersion="4.0". This toolset may be unknown or missing, in which case you may be able to resolve this by installing the appropriate version of MSBuild, or the build may have been forced to a particular ToolsVersion for policy reasons. Treating the project as if it had ToolsVersion="14.0". For more information, please see http://go.microsoft.com/fwlink/?LinkId=293424.
[tfs-changeset: 1662024]
|
|
Bug: https://devdiv.visualstudio.com/DefaultCollection/DevDiv/_workitems/edit/442050
CR: JKotas
[tfs-changeset: 1661975]
|
|
(#3739)
|
|
This is to support NetStandard APIs that are useful for CoreFX test bringup and general compat.
[tfs-changeset: 1659572]
|
|
object arrays
Four things:
* The actual schema update
* Update the CoreRT metadata emitter to emit the new schema
* Update the Project N metadata emitter to emit the new schema
* Update reflection codebase to read the new schema
Fixes dotnet/corert#3328.
[tfs-changeset: 1654618]
|
|
The existing schema didn't allow it and we were crashing the compiler. Turns out this is popular in xUnit tests in the CoreFX tree.
Includes:
* Schema update that makes string[] more like object[] than arrays of primitive types
* Updates to both of our emitters
* Update to the reflection reader
* Unit test
[tfs-changeset: 1650932]
|
|
* Update BuildToolsVersion to latest
* Cleanup CLSCompliant warnings
* Delete workaround that is no longer needed
* Download .NET Core 1.1
* Fix Roslyn props
* MSBuild.exe was renamed to MSBuild.dll
* Fix CoreCLR tests
* Rename netcoreapp12 -> netcoreapp20
* Fix UnitTests runs
* Fix RemoveEmptyFinalizers CodeAnalysis warnings
* Port init-tools.sh cleanup from CoreCLR
|
|
There's only 3 certain things in life:
1. Taxes
2. Death
3. Forgetting about generic enums
[tfs-changeset: 1648753]
|
|
|
|
|
|
This thing is useless in the VS Solution Explorer and has an annoying
warning sign.
|
|
|
|
Add support for representing EntryPoint and the global `<Module>` type.
Note: this does not include updates to the Project N metadata writer.
The schedule for that is TBD.
Fixes #1782.
|
|
Also:
* update `MetadataTransform` to emit the new metadata
* a simple unit test
|
|
|
|
Addressing a big known problem of the native metadata reader - allocating way too many arrays (and array enumerators) when reading metadata.
I'm updating the reader generator to generate XXXCollection types that are structs and have a struct enumerator.
I'm specifically not updating the consumers to take advantage of this (i.e. we still sometimes pass the collection as an IEnumerable within the reflection stack). This is because I don't want the changeset to clash with the reflection refactoring work - I would like to push this change into our next release. This makes SharedLibrary.dll 35 kB smaller on x86 because we no longer have the crazy amount of array types implementing all the crazy collection types.
[tfs-changeset: 1622617]
|
|
This is actually a simple change, but touches a lot of files.
ECMA-335 allows placing custom modifiers on element types of vectors and unmanaged pointers, but the native metadata format didn't allow it. I'm fixing that. As part of the fix, I'm getting rid of the ReturnTypeSignature and ParameterTypeSignature records. Their only purpose was to allow putting a modifier on types. Instead, I'm introducing a ModifiedType record type that can show up in many places where TypeDefOrRefOrSpec does. This way, we're not paying a 1 byte penalty just to say "this parameter has no modifiers".
I'm not emitting the modifiers in either transform since there's nobody who would consume them. I'm doing this because besides fixing correctness, this also has a size/perf benefit - makes SharedLibrary.dll 10 kB smaller.
[tfs-changeset: 1622393]
|
|
* Stop allocating delegates like crazy
* Stop allocating enumerators like crazy
We can probably do even better, but this was low hanging enough to do now.
I validated this produces identical metadata blob for FX UnitTests.
[tfs-changeset: 1622040]
|
|
MethodInstantiation and support signatures on member references.
[tfs-changeset: 1617140]
|
|
- Delete interfaces
- Delete useless summary comments
- Change empty arrays to use Array.Empty<T>()
[tfs-changeset: 1614483]
|
|
The new autogenerated files have whitespace and ordering differences only compared to the old ones.
|
|
This is the final step to having a single copy of EEType.cs. After this we can finally start reaping the benefits (use it from CoreLib, delete some of the MRT exports, etc.)
[tfs-changeset: 1614161]
|
|
This version has the "make ILPROJ project buildable from VS" fix.
|
|
|
|
|
|
Update nuget package versions
|
|
|
|
the ECMA FieldDef.
[tfs-changeset: 1594943]
|
|
LINQ Select operator uses generic virtual methods, which is both an
overkill, and prevents us from selfhosting the compiler.
Replacing all of LINQ with a lighter weight implementation for good
measure.
|
|
|
|
This reverts commit 374d1f1f2d901b4ef1096fbac2bb3da85e73949e.
This reverts commit 81fe8e5d944fdbe2560815f4aead1ab4a447fb5a.
This reverts commit 3d2d89e793d1588e1aa7d2273fc880ae208352f5.
This reverts commit a1f2ba2cae2dac1d134ae9afd60462cf57dde3c3.
|
|
This reverts commit 766f4ea7ff4d9dcd0422da1ebd115eb6b279e684, reversing
changes made to ce31cfa86e2d82af79212a1b09b7c1fe05baf3f6.
Revert "Merge pull request #767 from schellap/wmain"
This reverts commit 86e568eb6e82e2526ace252fcb49903e298e708d, reversing
changes made to 1d3ef5fd841effc0599511e3073a0cad53bed88b.
Revert formatting to old project.json and cppcompilerflag in runtest.cmd
|
|
Merge nmirror to master
|
|
allow rooting arbitrary MetadataRecord's for the purpose of metadata graph generation.
[tfs-changeset: 1571007]
|
|
|
|
Merge nmirror to master
|
|
Here's what's changing:
- Fix for MethodImpls. The existing representation didn't make sense. MethodImpls should hang off the type - not method. Reflection doesn't use it, so I'm not adding emission for now (limiting potential for bugs; I can fix that next week). The previous emission was wrong anyway.
- Fix for MethodInstantiation. The existing format was wrong. This should really map to a MethodSpec. I think only MethodImpls can refer to this from within metadata, so it's not used as such anywhere in reflection.
- Introduce concept of QualifiedMethod - this is a tuple that has the enclosing type and the method. Maps nicely to MethodDef in ECMA.
- Removed the option to have a Method as a Parent for MemberReferences. This is only usable from IL (ECMA uses it to represent callsites to vararg methods), and the current implementation is wrong anyway.
- I made CustomAttribute use QualifiedMethod. This fixes a potential weirdness when Constructor is a MemberRef and we're unnecessarily duplicating the attribute type (which had to be there for the other option).
- MethodImpl and MethodSemantics are not HasCustomAttribute token types. They shouldn't have a CustomAttributes field.
- I killed off RVA on Method. Nobody uses it, and it's as useful as RVA on Field (which we don't have, because it's useless).
[tfs-changeset: 1570080]
|
|
Since we were not preserving the type information, these were getting boxed as their underlying integer type.
- Extend metadata format to allow representing a boxed enum type within object[].
- Corresponding change on the metadata emission side.
- Corresponding change on the parsing side, with a call to runtime magic that boxes the value as the specified type.
- A test case.
[tfs-changeset: 1570043]
|
|
Conflicts:
src/Common/src/Interop/Windows/mincore/Interop.MEMORY_BASIC_INFORMATION.cs
src/ILCompiler.Compiler/src/Compiler/PdbSymbolProvider.cs
src/Native/Bootstrap/platform.h
src/Native/Bootstrap/platform.windows.cpp
src/Native/gc/env/gcenv.windows.cpp
src/System.Private.CoreLib/src/Internal/Runtime/CompilerHelpers/ArrayMethodILHelpers.cs
tests/src/Simple/AsgAdd1/AsgAdd1.cs
|
|
|
|
The hook looks for assembly with .McgInterop suffix. If there is one, the PInvoke
marshalling code is forwarded to it. Otherwise, the existing ILEmitter-bases solution
is used.
|
|
Whipped up a simple sanity test for metadata readers and writers. This
is mostly a sanity test. We have plenty of runtime coverage for this,
but it's always nice to have a unit test.
This will be useful to give people an idea how to use the metadata
reader and writer APIs since this is a very self-contained sample.
|
|
|
|
[tfs-changeset: 1554518]
|