Remove the concept of primitive value types and follow-up JIT/TypedReference/arglist cleanup#127894
Conversation
…gory to enum Agent-Logs-Url: https://github.com/dotnet/runtime/sessions/5e928e4d-026c-49f8-a093-001b6bf1d69c Co-authored-by: jkotas <6668460+jkotas@users.noreply.github.com>
Agent-Logs-Url: https://github.com/dotnet/runtime/sessions/5e928e4d-026c-49f8-a093-001b6bf1d69c Co-authored-by: jkotas <6668460+jkotas@users.noreply.github.com>
|
Tagging subscribers to this area: @agocke |
Agent-Logs-Url: https://github.com/dotnet/runtime/sessions/a5ef9c79-9897-4019-af57-7543f1af7c54 Co-authored-by: jkotas <6668460+jkotas@users.noreply.github.com>
Agent-Logs-Url: https://github.com/dotnet/runtime/sessions/a5ef9c79-9897-4019-af57-7543f1af7c54 Co-authored-by: jkotas <6668460+jkotas@users.noreply.github.com>
Agent-Logs-Url: https://github.com/dotnet/runtime/sessions/a5ef9c79-9897-4019-af57-7543f1af7c54 Co-authored-by: jkotas <6668460+jkotas@users.noreply.github.com>
Agent-Logs-Url: https://github.com/dotnet/runtime/sessions/4ef6b0df-8fc1-41d6-afe1-1119ff0f3c32 Co-authored-by: jkotas <6668460+jkotas@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
|
@copilot Delete EmitArgIteratorCreateAndLoad - it looks like dead code |
|
@copilot Add a test case to src\tests\JIT\Directed\arglist\varargmanaged.cs that verifies that vararg method can take RuntimeArgumentHandle, pass it to other method as an argument and the other method can then iterate the arguments using ArgIterator |
Agent-Logs-Url: https://github.com/dotnet/runtime/sessions/18226290-9256-4617-8724-756a9b93ec39 Co-authored-by: jkotas <6668460+jkotas@users.noreply.github.com>
Agent-Logs-Url: https://github.com/dotnet/runtime/sessions/3093cf8e-f9ea-474c-86ee-68898f201c85 Co-authored-by: jkotas <6668460+jkotas@users.noreply.github.com>
Done in b45f413. I added a managed arglist regression that captures |
Agent-Logs-Url: https://github.com/dotnet/runtime/sessions/40431d8a-04a1-4e7d-8bb8-69b9c65cdf35 Co-authored-by: jkotas <6668460+jkotas@users.noreply.github.com>
|
/azp run runtime-coreclr outerloop |
|
Azure Pipelines successfully started running 1 pipeline(s). |
Managed C++/CLI does not support managed varargs. I get errors like: I have added a C# test that validates passing RuntimeArgumentHandle as an argument. |
|
@copilot Delete all arglist tests under src\tests\JIT\Directed\PREFIX\unaligned and src\tests\JIT\Directed\PREFIX\volatile. They are invalid tests (they assume that RuntimeArgumentHandle can be implicitly converted to a pointer). |
Agent-Logs-Url: https://github.com/dotnet/runtime/sessions/69b984b8-312c-4a70-b684-cacff512abe8 Co-authored-by: jkotas <6668460+jkotas@users.noreply.github.com>
Done in fadeaed. I deleted the invalid |
|
/azp run runtime-coreclr outerloop |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
/azp run runtime-coreclr outerloop |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
/ba-g timeouts |
Primitive value types were vestiges of very old x86 calling convention handling that became unnecessary many years ago.
This change deletes the concept of primitive value types. We only have primitives (Int32, etc. including enums) and true primitives (Int32, etc. without enums) now. Deleting this concept enabled follow-up cleanup:
Changes Made
GetVerifierCorElementTypeand replace all call sites withGetInternalCorElementTypeRuntimeArgumentHandle,RuntimeMethodHandleInternal,RuntimeFieldHandleInternal) in the type loaderTypedReferenceas primitive some of the time.TypedReferenceis a regular byref-like value type nowELEMENT_TYPE_TYPEDBYREFhandling inZapSig::CompareSignatureToTypeHandleso TypedReference matching does not rely onGetSignatureCorElementType()returningELEMENT_TYPE_TYPEDBYREFCEE_ARGLISTimport the JIT to produce actualRuntimeArgumentHandlestructEmitArgIteratorCreateAndLoadsrc/tests/JIT/Directed/arglist/varargmanaged.cs/vararg.csthat verifies a vararg method can captureRuntimeArgumentHandle, pass it to another method, and that the other method can iterate the forwarded arguments usingArgIteratorarglisttests that assumedRuntimeArgumentHandlecould be implicitly converted to a pointer