[return: MarshalAs(UnmanagedType.I1)]public virtual bool getSystemVAmd64PassStructInRegisterDescriptor_wrapper(IntPtr _this, out IntPtr exception, CORINFO_CLASS_STRUCT_* structHnd, SYSTEMV_AMD64_CORINFO_STRUCT_REG_PASSING_DESCRIPTOR* structPassInRegDescPtr) { exception = IntPtr.Zero; try { return getSystemVAmd64PassStructInRegisterDescriptor(structHnd, structPassInRegDescPtr); } catch (Exception ex) { exception = AllocException(ex); } return false; }
private bool getSystemVAmd64PassStructInRegisterDescriptor(IntPtr _this, CORINFO_CLASS_STRUCT_* structHnd, SYSTEMV_AMD64_CORINFO_STRUCT_REG_PASSING_DESCRIPTOR* structPassInRegDescPtr) { TypeDesc type = HandleToObject(structHnd); if (type.IsValueType) { // TODO: actually implement // https://github.com/dotnet/corert/issues/158 if (type.GetElementSize() <= 8) { structPassInRegDescPtr->passedInRegisters = true; structPassInRegDescPtr->eightByteCount = 1; structPassInRegDescPtr->eightByteClassifications0 = SystemVClassificationType.SystemVClassificationTypeInteger; structPassInRegDescPtr->eightByteSizes0 = (byte)type.GetElementSize(); structPassInRegDescPtr->eightByteOffsets0 = 0; } else structPassInRegDescPtr->passedInRegisters = false; } else { structPassInRegDescPtr->passedInRegisters = false; } return true; }
[return: MarshalAs(UnmanagedType.I1)]static bool _getSystemVAmd64PassStructInRegisterDescriptor(IntPtr thisHandle, IntPtr* ppException, CORINFO_CLASS_STRUCT_* structHnd, SYSTEMV_AMD64_CORINFO_STRUCT_REG_PASSING_DESCRIPTOR* structPassInRegDescPtr) { var _this = GetThis(thisHandle); try { return _this.getSystemVAmd64PassStructInRegisterDescriptor(structHnd, structPassInRegDescPtr); } catch (Exception ex) { *ppException = _this.AllocException(ex); return default(bool); } }