summaryrefslogtreecommitdiff
path: root/src/jit/gentree.h
diff options
context:
space:
mode:
authorBrian Sullivan <briansul@microsoft.com>2016-02-11 19:30:55 -0800
committerBrian Sullivan <briansul@microsoft.com>2016-02-12 10:44:59 -0800
commit253aa91b5a7d03704fc149e63dd00445caebc872 (patch)
tree6cc1fb1e3977ea3fd4e43695af4ab265fa713cd4 /src/jit/gentree.h
parentcb1effac01239c3af46a1d3917fb60f70b18b757 (diff)
downloadcoreclr-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.h3
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) :