[mono] Make some icalls pass/return object references using ObjectHandleOnStack/QCall...
authorZoltan Varga <vargaz@gmail.com>
Thu, 6 Jan 2022 22:16:13 +0000 (17:16 -0500)
committerGitHub <noreply@github.com>
Thu, 6 Jan 2022 22:16:13 +0000 (17:16 -0500)
commit01cc900870fb7eb0c60fdc6a0417d4170e58db38
tree567910ff83397e825298a4073ab952256eb65d9e
parentb0685e16172d8c8b12977e0734e900bd60b42d8f
[mono] Make some icalls pass/return object references using ObjectHandleOnStack/QCallTypeHandle (#62141)

* [mono] Make some icalls return objects using an extra ObjectHandleOnStack argument.

* Fix the passing of scalar vtypes on wasm.

* Convert RuntimeTypeHandle icalls to receive a QCallTypeHandle.

Also do some other cleanups:
* Convert some icalls which don't receive/return objects any more and don't
  return an error to NOHANDLES.
* Implement IsGenericVariable in managed code.
* Add a separate GetMetadataToken icall to avoid the REUSE_WRAPPER stuff.
* Sync the implementation of IsTypeDefinition with coreclr.

* Convert some RuntimeType icalls to use QCallTypeHandles/ObjectHandleOnStack.

* Fix RuntimeType.GetPacking () to work with dynamic types.

* Convert internal_from_name to use QCallTypeHandles/ObjectHandleOnStack.

* Convert more icalls.

* Update src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/QCallHandles.cs

Co-authored-by: Aleksey Kliger (λgeek) <akliger@gmail.com>
* Remove unused argument from RuntimeTypeHandle:internal_from_name ().

* Add support for FRAME_TYPE_IL_STATE to the metadata stack walker code.

* Update coding style in QCallTypeHandle:.ctor ().

* Revert "Convert more icalls."

* Convert some Delegate icalls.

* Convert some Enum icalls.

* Convert some Marshal icalls.

* Avoid creating RuntimeType objects while AOTing.

* Convert some RuntimeType icalls.

Co-authored-by: Aleksey Kliger (λgeek) <akliger@gmail.com>
19 files changed:
src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/QCallHandles.cs
src/mono/System.Private.CoreLib/src/System/Delegate.Mono.cs
src/mono/System.Private.CoreLib/src/System/Enum.Mono.cs
src/mono/System.Private.CoreLib/src/System/Runtime/CompilerServices/RuntimeHelpers.Mono.cs
src/mono/System.Private.CoreLib/src/System/Runtime/InteropServices/Marshal.Mono.cs
src/mono/System.Private.CoreLib/src/System/RuntimeType.Mono.cs
src/mono/System.Private.CoreLib/src/System/RuntimeTypeHandle.cs
src/mono/mono/metadata/handle.h
src/mono/mono/metadata/icall-decl.h
src/mono/mono/metadata/icall-def-netcore.h
src/mono/mono/metadata/icall-table.h
src/mono/mono/metadata/icall.c
src/mono/mono/metadata/loader.c
src/mono/mono/metadata/marshal.c
src/mono/mono/metadata/object-internals.h
src/mono/mono/metadata/object.c
src/mono/mono/mini/interp/interp.c
src/mono/mono/mini/mini-wasm.c
src/mono/mono/mini/mini-wasm.h