diff options
author | Sergey Andreenko <seandree@microsoft.com> | 2021-01-22 00:37:42 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-22 00:37:42 +0300 |
commit | 648437b1b4db6536ae33763b6c9178287c0a52bd (patch) | |
tree | 5bf1bad563b8a080154d14da93ef3d23a437e751 /src/coreclr/gcinfo/gcinfoencoder.cpp | |
parent | bf573c7e2dec65f2db36994436f8396c76789df5 (diff) |
Arm64 apple vm fixes for arg alignment. (#46665)
* Add `MarshalInfo::IsValueClass`.
* Add `TypeHandle* pTypeHandle` to `SizeOf`.
* Add a few asserts/start using inline function instead of macro.
* use TARGET_POINTER_SIZE instead of STACK_ELEM_SIZE.
* Use `m_curOfs` instead of `m_idxStack` in `ArgIteratorBase` on all platforms.
Before some platforms were using stackSlots, some curOfs in bytes.
* Use byte sizes and offsets in `ArgLocDesc`.
Fix arm32.
x86 fixes.
use StackSize on ArgSizes
Add `GetStackArgumentByteIndexFromOffset` and return back the old values for asserts.
another fix
* Stop using `#define STACK_ELEM_SIZE`
* Add `isFloatHfa`.
* delete checking code.
because it won't pass on arm64 apple.
* arm64 apple fixes.
* roundUp the stack size.
* Add a reflection test.
* Return byte offset from `GetNextOfs`.
It is not a complete fix for arm64 apple, but covers most cases.
* Add `FLOAT_REGISTER_SIZE`
* Use StackElemSize for ` pLoc->m_byteStackSize`.
* replace `assert` with `_ASSERTE`.
* Use `ALIGN_UP` in the code that I have changed.
* rename `m_curOfs` as `m_ofsStack`.
* delete "ceremony " from `StackElemSize`.
* Delete `cSlots` and don't call `StackElemSize` on `GetArgSize`.
* Fix an assert.
* Fix nit.
* fix wrong return for hfa<float>.
* fix nit.
* Fix crossgen job.
Diffstat (limited to 'src/coreclr/gcinfo/gcinfoencoder.cpp')
-rw-r--r-- | src/coreclr/gcinfo/gcinfoencoder.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/coreclr/gcinfo/gcinfoencoder.cpp b/src/coreclr/gcinfo/gcinfoencoder.cpp index b906c3e147a..8f56607e22b 100644 --- a/src/coreclr/gcinfo/gcinfoencoder.cpp +++ b/src/coreclr/gcinfo/gcinfoencoder.cpp @@ -577,8 +577,10 @@ GcSlotId GcInfoEncoder::GetStackSlotId( INT32 spOffset, GcSlotFlags flags, GcSta _ASSERTE( (flags & (GC_SLOT_IS_REGISTER | GC_SLOT_IS_DELETED)) == 0 ); +#if !defined(OSX_ARM64_ABI) // the spOffset for the stack slot is required to be pointer size aligned _ASSERTE((spOffset % TARGET_POINTER_SIZE) == 0); +#endif m_SlotTable[ m_NumSlots ].Slot.Stack.SpOffset = spOffset; m_SlotTable[ m_NumSlots ].Slot.Stack.Base = spBase; |