1
0
Fork 0
mirror of https://github.com/VSadov/Satori.git synced 2025-06-10 18:11:04 +09:00
Commit graph

2382 commits

Author SHA1 Message Date
David Wrighton
18ec279e4b
Add support for cross module inlining and cross module generic compilation to Crossgen2 (#68919)
* Add support for cross module inlining and cross module generic compilation to Crossgen2
- Refactor Module into ModuleBase and Module
  - The goal is to have allow a subset version of Module which can only hold refs, this is to be used by the manifest module in an R2R image to allow for version resilient cross module references.
  - Update handling of ModuleBase so that its used everywhere that tokens are parsed from R2R
  - Remove ENCODE_MODULE_ID_FOR_STATICS and ENCODE_ACTIVE_DEPENDENCY
    - These were only used for NGEN, and conflict with easy impelmentation for the ModuleBase concept
  - Remove locking in ENCODE_STRING_HANDLE processing, and tweak comments. Comments applied to the removed ngen based code, and the lock was only necessary for the old ngen thing.
  - Adjust ComputeLoaderModuleWorker for locating loader module
    - Follow comment more accurately, to avoid putting every generic into its definition module. This will make R2R function lookup able to find compiled instantiations in some cases. This may be what we want long term, it may not.
  - Remove MemberRefToDesc map and replace with LookupMap like the other token types. We no longer make use of the hot table, so this is more efficient
    - Also reduces complexity of implementation of ModuleBase

- Build fixup to describe a single method as a standalone blob of data
  - There are parallel implementations in Crossgen2 and in the runtime
  - They produce binary identical output
  - Basic R2RDump support for new fixup

- Adjust module indices used within the R2R format to support a module index which refers to the R2R manifest metadata. This requires bumping the R2R version to 6.2
  - Add a module index between the set of assembly refs in the index 0 module and the set of assembly refs in the R2R manifest metadata

- Adjust compilation dependency rules to include a few critical AsyncStateMachineBox methods

- Remove PEImage handling of native metadata which was duplicative

- Do not enable any more devirtualization than was already in use, even in the cross module compilation scenario. In particular, do not enable devirtualization of methods where the decl method isn't within the version bubble, even if the decl method could be represented with a cross-module reference token. (This could be fixed, but is out of scope for this initial investigation)

Make the compilation deterministic in this new model, even though we are generating new tokens on demand
  - Implement this by detecting when we need new tokens during a compile, and recompiling with new tokens when necessary
  - This may result in compiling the same code as much as twice

Compile the right set of methods with cross module inlining enabled
- Add support for compiling the called virtual methods on generic types
  - This catches the List<T> and Dictionary<TKey,TValue> scenarios

- Add command line switches to enable/disable the new behavior
  - By default the new behavior is not enabled
2022-06-20 10:51:41 -07:00
Jan Kotas
cfeab72771
Update dogfooding instructions (#70833)
- Delete note about multilevel lookup. It is not relevant anymore.
- Fix nightly feed url to net7
- Replace .NET Core with just .NET
2022-06-16 08:49:18 -07:00
Jan Kotas
1abd9a166d
Add note about backward branch constraints to ECMA-335 augments (#70760) 2022-06-14 20:19:07 -07:00
Andy Gocke
978df67ced
Add doc on Unix temporary file security practice (#70585)
* Add doc on Unix temporary file security practice

* Update unix-tmp.md

* Update unix-tmp.md

* Add example permissions encoding

* Update docs/design/security/unix-tmp.md

Co-authored-by: Dan Moseley <danmose@microsoft.com>

* Update unix-tmp.md

Co-authored-by: Dan Moseley <danmose@microsoft.com>
2022-06-14 12:13:53 -07:00
Aleksey Kliger (λgeek)
08692dcf6b
Mono Code Guidelines (#70507)
* Mono Code Guidelines

* markdownlint

* Add "Naming" and "public API" sections

* Add a section on assertions

* Fix sentence fragment; add threading design doc link

* Apply suggestions from code review

Co-authored-by: Aaron Robinson <arobins@microsoft.com>
Co-authored-by: Dan Moseley <danmose@microsoft.com>
Co-authored-by: Alexander Köplinger <alex.koeplinger@outlook.com>
2022-06-10 17:37:39 -04:00
Jan Krivanek
e4ac6fa2e4
Fix typo (clr.dll -> mscordacwks.dll) (#70550) 2022-06-10 06:53:10 -07:00
Filip Navara
2f38fb55e9
Fix unit test example (#70457) 2022-06-08 14:59:38 -07:00
Tomas Weinfurt
7ca76eca25
update dogfooding instruction for 7.0 (#70423)
* update dogfooding instruction for 7.0

* update example

* Update docs/project/dogfooding.md

Co-authored-by: Martin Costello <martin@martincostello.com>
2022-06-08 07:42:35 -07:00
Jan Kotas
a0ffea86d3
Clarity atomicity guarantees in ECMA-335 (#70384) 2022-06-07 12:07:23 -07:00
SingleAccretion
7bccc676c8
Delete GT_INDEX (#69917)
* Do not set NO_CSE on ARR_ADDRs

It is effectively no-CSE already because of how "optIsCSECandidate" works.

* Delete GT_INDEX

Instead:
 1) For "ldelem", import "IND/OBJ(INDEX_ADDR)".
 2) For "ldelema", import "INDEX_ADDR".

This deletes two usages of "ADDR":
 1) "OBJ(ADDR(INDEX))" from "ldelem<struct>".
 2) "ADDR(INDEX)" from "ldelema".

* Add a zero-diff quirk

* Update the first class structs document

Remove references to things that no longer exist.
2022-06-07 10:15:33 -07:00
Thays Grazia
fd0a8e4b3b
Update testing-android.md (#70362) 2022-06-07 13:15:13 -03:00
Günther Foidl
f1cd5168b3
Update libraries' building docs for native components (#70284)
* Update libraries' building docs for native components

Also added a (short) ReadMe.md to src/native/libs.

* Removed trailing whitespace

* Update src/native/libs/ReadMe.md

Co-authored-by: Jan Kotas <jkotas@microsoft.com>

Co-authored-by: Jan Kotas <jkotas@microsoft.com>
2022-06-06 22:56:03 +02:00
Adeel Mujahid
45589f2a1e
Add {M}IBC to glossary (#68111)
* Add {M}IBC to glossary

* Modern -> Managed
2022-06-02 18:48:25 -07:00
Aaron Robinson
2747f30e53
Update updating-ref-source.md (#70169)
Update flags for using GenAPI.
2022-06-02 13:54:51 -07:00
Andy Gocke
18b73db9b8
Move comments about different form factors to the top (#70102) 2022-06-01 15:04:48 -07:00
Fan Yang
2fbc50fe92
[mono][doc] Update Android NDK version to r23c (#69913) 2022-05-31 09:39:51 -04:00
Lakshan Fernando
c9742b32ba
CI fix for native aot tests (#69571)
* CI fix for native aot tests

* parse notrait commandline args

* try a different platform

* FB

* Remove unnecessary whitespace change

These make `git blame` harder to follow. Plus the consistent thing in this file is no extra newline here.

Co-authored-by: Michal Strehovský <MichalStrehovsky@users.noreply.github.com>
2022-05-31 03:47:41 -07:00
Eirik Tsarpalis
40f4538476
Add issue cleanup documentation and update automation (#69857) 2022-05-30 11:34:44 +01:00
Alexander Soldatov
f2364ade5b
Add Tizen persons in charge (#69799) 2022-05-25 08:31:43 -07:00
Jakob Botsch Nielsen
8ca9916b0d
Add arm64 support for EnC (#69679)
This adds support for EnC on arm64. A couple of notes on the
implementation compared to x64:
- On x64 we get the fixed stack size from unwind info. However, for the
  frames we set up on arm64 for EnC it is not possible to extract the
  frame size from there because their prologs generally look like

  stp fp, lr, [sp,#-16]!
  mov fp, sp
  sub sp, sp, #144

  with unwind codes like the following:

  set_fp; mov fp, sp

  save_fplr_x #1 (0x01); tp fp, lr, [sp, #-16]!

  As can be seen, it is not possible to get the fixed stack size from
  unwind info in this case. Instead we pass it through the GC info that
  already has a section for EnC data.

- On arm64 the JIT is required to place the PSPSym at the same offset
  from caller-SP for both the main function and for funclets. Due to
  this we try to allocate the PSPSym as early as possible in the main
  function and we must take some care in funclets.  However, this
  conflicts with the EnC frame header that the JIT uses to place values
  that must be preserved on EnC transitions. This is currently
  callee-saved registers and the MonitorAcquired boolean.

  Before this change we were allocating PSPSym above (before) the
  monitor acquired boolean, but we now have to allocate MonitorAcquired
  first, particularly because the size of the preserved header cannot
  change on EnC transitions, while the PSPSym can disappear or appear.
  This changes frame allocation slightly for synchronized functions.
2022-05-24 00:14:18 +02:00
Adeel Mujahid
55e2378d86
Fix typos (#69537)
* Fix typos

* Fix typo: seperate -> separate

* Rename ApplicationNameSetFromArgument

* Update src/coreclr/vm/methodtablebuilder.cpp

* Update docs/coding-guidelines/clr-code-guide.md

Co-authored-by: Dan Moseley <danmose@microsoft.com>

* Update src/mono/mono/tests/verifier/make_tests.sh

Co-authored-by: Dan Moseley <danmose@microsoft.com>
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
2022-05-23 10:14:58 -07:00
Adeel Mujahid
f8f6c057e6
Update libraries build instructions on Unix (#69553)
Delete platform specific ones which are no longer relavant to this
repository.
2022-05-19 08:16:52 -07:00
Jerry King
f14aa5d03e
Correct MSVC version in requirements documentation (#68078)
* Correct MSVC version in requirements documentation

* Fix version constraint
2022-05-19 08:03:41 -07:00
Lakshan Fernando
3f0c2cc88d
Fix for GetMemberWithSameMetadataDefinitionAs (#69284)
* Test fix for GetMemberWithSameMetadataDefinitionAs

* get reflection tests clean

* add doc info to test a library in native aot
2022-05-17 07:28:28 -07:00
Jeremy Koritzinsky
04e65d2b87
Generate the DAC table on Windows with MSVC linker directives instead of resource injection (#68065) 2022-05-12 14:53:12 -07:00
Viktor Hofer
d3af4921f3
Define convention to consume and/or package analyzers (#69069)
* Define convention to include analyzers in ref pack

Fixes https://github.com/dotnet/runtime/issues/61321

Until now we required source libraries to define ProjectReferences when
an analyzer should be part of the shared framework. That strategy causes
analyzer projects to leak into the ProjectReference closure and by that
into a solution file.

As an example:
When another library references the source library that references the
analyzer, the analyzer is part of the dependency closure even though it
might not be required.

This change makes it possible to define the shared framework analyzer
projects in the NetCoreAppLibrary.props file for both the .NETCoreApp,
and the AspNetCoreApp shared framework.

Out-of-band projects which ship analyzers inside their produced package,
continue to reference the analyzers via the `AnalyzerProject` item.

* Use AnalyzerReference consistently

* Don't reference analyzer when its packaged

* Fix P2P reference

* Fix multi target roslyn component target condition
2022-05-12 09:22:26 +02:00
David Mason
29a22877be
Update perf map docs (#68181)
* update doc

Co-authored-by: Noah Falk <noahfalk@users.noreply.github.com>
2022-05-11 13:33:50 -07:00
Aaron Robinson
094b787046
Support strictly blittable type marshalling (#69100)
* Support strictly blittable type marshalling

* Update design document.

* Add test to validate check for blittability for assembly reference
2022-05-11 07:25:16 -07:00
Viktor Hofer
daca034cc6
Update minimum required version of VS to 17.3 (#69162)
Fixes https://github.com/dotnet/runtime/issues/68764

The in the above issue mentioned warnings are resolved by using VS 17.3 (currently Preview1).
2022-05-10 19:50:22 -04:00
Elinor Fung
e5f284401c
Add doc about using local build of apphost (#69097) 2022-05-10 14:24:38 -07:00
Jan Kotas
66b796a335
CoreRT to NativeAOT renames (#68950) 2022-05-07 11:59:22 -07:00
Adeel Mujahid
4141913109
Fix typos (#69011) 2022-05-07 11:55:53 -07:00
Jan Kotas
b59c6491dd
Rename CoreRT to NativeAOT (1/N) (#68888)
Co-authored-by: Theodore Tsirpanis <teo@tsirpanis.gr>
2022-05-05 18:14:28 -07:00
Bruce Forstall
6c294a340c
Add a document describing how to triage CI test failures (#68682)
* Add a document describing how to triage CI test failures

* Updated for feedback

1. Added a section about "finding the most general failure configuration"
2. Moved Kusto section up, to suggest using that to determine breadth of
failures
3. Added more about GCStress, crossgen2, ilasm round-trip testing modes
2022-05-03 10:58:05 -07:00
Bruce Forstall
0f3f7ea4d9
Add document describing how to disable tests (#68727)
* Add document describing how to disable tests

Update libraries "filtering tests" doc with information and examples for
using `SkipOnCoreClrAttribute`

* Update for feedback

Added SkipOnMonoAttribute, CollectionAttribute, an example
of using multiple SkipOnCoreClrAttribute, and how the xunit
attributes for test disabling apply to the "converted"
src/tests tree.
2022-05-03 10:56:34 -07:00
Andy Ayers
ac6e77b676
Revise OSR docs (#68778)
Bring the main document up to date with current implementation. Remove
some obsolete sections (EnC, complex epilog).

Co-authored-by: Jakob Botsch Nielsen <Jakob.botsch.nielsen@gmail.com>
2022-05-02 18:30:46 -07:00
Elinor Fung
9342649430
Use SYSLIB prefix for all LibraryImportGenerator diagnostics (#68613) 2022-04-28 09:25:37 -07:00
Jakob Botsch Nielsen
f10cddaf08
Remove GTF_LATE_ARG (#68617)
This serves no purpose anymore after the call args refactoring and
removing stores as call operands in LIR.
2022-04-28 13:27:48 +02:00
Andrii Kurdiumov
2ea67f1f42
Get rid of last mentions of DllImportGenerator (#68535)
This should help avoid confusion when reading the code,
and what's DllImportGenerator is.
2022-04-26 07:57:40 -07:00
Michael Simons
4727fdb616
Update area-owners for acquisition and deployment (#68499) 2022-04-25 13:50:01 -05:00
Jakob Botsch Nielsen
bb6954e452
Remove GT_ARGPLACE nodes (#68140)
These do not serve much purpose today -- instead just use null and add a
helper function to iterate non-null early args, which is somewhat
common.

In addition to saving some TP and memory, teaching the backend about
null early nodes will also be beneficial because I am planning to change
rationalization to null out non-values in the early arg list so that all
nodes have only values as their operands in LIR.

Throughput diff:
```
Collection                                  Base # instructions Diff # instructions PDIFF
aspnet.run.windows.x64.checked.mch           69,717,468,395      69,206,312,087     -0.73%
benchmarks.run.windows.x64.checked.mch       54,695,846,729      54,294,078,768     -0.73%
coreclr_tests.pmi.windows.x64.checked.mch   340,169,515,528     337,478,749,067     -0.79%
libraries.crossgen2.windows.x64.checked.mch 128,653,906,043     126,926,566,191     -1.34%
libraries.pmi.windows.x64.checked.mch       228,653,702,806     226,554,618,843     -0.92%
libraries_tests.pmi.windows.x64.checked.mch 531,053,530,645     525,233,144,101     -1.10%
```

Memory stats (libraries.pmi)
Before: 25961399533 bytes
After: 25770612141 bytes (-0.7%)
2022-04-23 20:58:40 +02:00
Tarek Mahmoud Sayed
7810536ef8
Update area-owners.md (#68356) 2022-04-21 19:59:32 -04:00
Jan Kotas
d58efd1f78
Add more details to NativeAOT workflow doc (#68308)
Fixes #68257
2022-04-21 05:37:36 -07:00
Kevin Jones
7fd3c9293c
Use and support OpenSSL 3 on macOS (#68045)
* Use OpenSSL 3 on macOS

* Update documentation

* Restart CI
2022-04-20 11:10:53 -07:00
Viktor Hofer
9924f09d8d
Fix path in servicing doc (#68208) 2022-04-19 07:49:19 -07:00
Andrii Kurdiumov
c798915996
Add links to docs (#68211)
That hopefully simplify path for brave person willing to add new target
2022-04-19 12:18:55 +02:00
Drew Kersnar
3b6b8123ec
Update VSCode library debugging documentation (#67925) 2022-04-18 14:00:32 -05:00
Elinor Fung
74e1d4df57
[LibraryImportGenerator] Fix pointer array marshalling (#67988) 2022-04-17 22:36:22 -07:00
Aaron Robinson
cd8c7444db
Add SPCL to glossary. (#68081) 2022-04-15 10:36:15 -07:00
Jakob Botsch Nielsen
dbf5c58a2e
JIT: Refactor call argument representation (#67238)
This refactors the JIT's representation of call arguments. It replaces
`GenTreeCall::Use` and `fgArgTabEntry` with a single class `CallArg`.
`CallArg` always contains space for ABI information and contains two
intrusive linked list nodes: one for all args (similar to current
`gtCallArgs`) where all standard arguments are always in argument order,
and one for late args (similar to current `gtCallLateArgs`) that may be
reordered. The late args list may also not contain all arguments.

`fgArgInfo` is also replaced by a new class `CallArgs` that is stored
inline in `GenTreeCall`. It encapsulates all handling of arguments
(insertion/removal). The change also begins treating the 'this' argument
as a normal argument with `CallArgs` providing convenient access to it
when necessary.

The main benefit of this change is to avoid keeping track of the side
table `fgArgInfo` and having to scan through this side table repeatedly
when we need to query argument information. In addition it gives more
convenient ways to access well known arguments like 'this', the ret
buffer, VSD cell, etc. Finally, it also serves as a nice clean-up in the JIT.
2022-04-15 10:18:50 +02:00