diff options
author | Brian Sullivan <briansul@microsoft.com> | 2016-02-11 19:30:55 -0800 |
---|---|---|
committer | Brian Sullivan <briansul@microsoft.com> | 2016-02-12 10:44:59 -0800 |
commit | 253aa91b5a7d03704fc149e63dd00445caebc872 (patch) | |
tree | 6cc1fb1e3977ea3fd4e43695af4ab265fa713cd4 /src/jit/gentree.h | |
parent | cb1effac01239c3af46a1d3917fb60f70b18b757 (diff) | |
download | coreclr-253aa91b5a7d03704fc149e63dd00445caebc872.tar.gz coreclr-253aa91b5a7d03704fc149e63dd00445caebc872.tar.bz2 coreclr-253aa91b5a7d03704fc149e63dd00445caebc872.zip |
Fix issues with passing 16-byte structs on Arm64
Properly track the GC pointers that are being loaded/stored or copied from these pass by value structs.
Implements passing 16-byte value types in the outgoing stack area, previously not implemented.
Added utility method getJitGCtype for converting the VM's CorInfoGCType to the JIT's var_types enum
Added utility method getStructGcPtrsFromOp to examine a GT_LDOPB or GT_LCL_VAR
that represents a 16-byte struct and get the GC layout information
Allow LSRA to pick two consecutive registers to pass 16-byte structs on the stack
Added utility methods checkAndAssignInterval and checkAndClearInterval to handle the
second register used to pass arguments on ARM64.
Diffstat (limited to 'src/jit/gentree.h')
-rw-r--r-- | src/jit/gentree.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/jit/gentree.h b/src/jit/gentree.h index cc68956f55..fdae2933a0 100644 --- a/src/jit/gentree.h +++ b/src/jit/gentree.h @@ -3271,7 +3271,8 @@ struct GenTreeStmt: public GenTree struct GenTreeLdObj: public GenTreeUnOp { - CORINFO_CLASS_HANDLE gtClass; // object being loaded + CORINFO_CLASS_HANDLE gtClass; // object being loaded + // TODO-Cleanup: Consider adding the GC layout information to this node GenTreePtr * gtFldTreeList; // The list of trees that represents the fields of this struct GenTreeLdObj(var_types type, GenTreePtr op, CORINFO_CLASS_HANDLE cls) : |