Skip to content

Conversation

@radekdoulik
Copy link
Owner

No description provided.

These are not supported by emscripten
Fixes dotnet#115363

The problem happened in MethodTableBuilder::PlaceInstanceFields where in wasm case
the fields were placed at wrong offsets.

The native representation

```
class  field                                        wasm type          offset
-----------------------------------------------------------------------------------------------
Object
       PTR_MethodTable m_pMethTab                   i32                0
AssemblyLoadContextBaseObject
       int64_t         _id                          i64                8
       OBJECTREF       _unloadLock                  i32                12
       OBJECTREF       _resolvingUnmanagedDll       i32
       OBJECTREF       _resolving                   i32
       OBJECTREF       _unloading                   i32
       OBJECTREF       _name                        i32
       INT_PTR         _nativeAssemblyLoadContext   i32
       DWORD           _state                       i32                40
       CLR_BOOL        _isCollectible               i8                 44

the managed field offsets were wrong, starting with _id at offset 8.

By enabling FEATURE_64BIT_ALIGNMENT the dwOffsetBias is set to
TARGET_POINTER_SIZE and the alignment is calculated properly.

The 8 bytes types in wasm should be aligned to 8 bytes

https://github.com/WebAssembly/tool-conventions/blob/main/BasicCABI.md#data-representation

so hopefully the rest of the changes enabled by this feature should
apply as well. Before this feature was enabled only for arm 32bits.
Add `ExecuteInterpretedMethodWithArgs` to call interpreter with
arguments and retrieve return value

Store method description and size of arguments to the
`CallDescrData`. The method description can be possibly retrieved from
`CallDescrData`'s `pTarget`, as it is currenly precode stub, this will
probably change in future though.
And avoid adding mono_ specific function in random.c
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants