1 write to _transitionBlock
Microsoft.Diagnostics.DataContractReader.Contracts (1)
src\runtime\src\coreclr\tools\Common\CallingConvention\ArgIterator.cs (1)
371_transitionBlock = transitionBlock;
208 references to _transitionBlock
Microsoft.Diagnostics.DataContractReader.Contracts (208)
src\runtime\src\coreclr\tools\Common\CallingConvention\ArgIterator.cs (208)
392Debug.Assert((_nSizeOfArgStack % _transitionBlock.PointerSize) == 0); 406if (_transitionBlock.IsX64 && !_transitionBlock.IsX64UnixABI) 409size += (uint)_transitionBlock.SizeOfArgumentRegisters; 412Debug.Assert((size % _transitionBlock.PointerSize) == 0); 420if (_transitionBlock.IsX86) 465if (_transitionBlock.EnregisteredParamTypeMaxSize != 0) 467switch (_transitionBlock.Architecture) 470return _transitionBlock.IsArgPassedByRef(_argSize); 475return ((_argSize > _transitionBlock.EnregisteredParamTypeMaxSize) && (!_argTypeHandle.IsHomogeneousAggregate() || IsVarArg)); 482return ((_argSize > _transitionBlock.EnregisteredParamTypeMaxSize) || _transitionBlock.IsArgPassedByRef(_argTypeHandle)); 489return ((_argSize > _transitionBlock.EnregisteredParamTypeMaxSize) || _transitionBlock.IsArgPassedByRef(_argTypeHandle)); 498if (_transitionBlock.IsWasm32) 502return _transitionBlock.IsArgPassedByRef(_argTypeHandle); 521return _transitionBlock.ThisOffset; 530if (_transitionBlock.IsX86) 533return _transitionBlock.SizeOfTransitionBlock; 538int ret = _transitionBlock.OffsetOfArgumentRegisters; 539int slotSize = _transitionBlock.StackElemSize(_transitionBlock.PointerSize); 546if (HasRetBuffArg() && _transitionBlock.IsRetBuffPassedAsFirstArg) 559if (_transitionBlock.IsX86) 568return _transitionBlock.OffsetOfArgumentRegisters + TransitionBlock.X86Constants.OffsetOfEcx; 570return _transitionBlock.OffsetOfArgumentRegisters + TransitionBlock.X86Constants.OffsetOfEdx; 576return _transitionBlock.SizeOfTransitionBlock; 581int ret = _transitionBlock.OffsetOfArgumentRegisters; 582int slotSize = _transitionBlock.StackElemSize(_transitionBlock.PointerSize); 589if (HasRetBuffArg() && _transitionBlock.IsRetBuffPassedAsFirstArg) 602if (_transitionBlock.IsX86) 611return _transitionBlock.OffsetOfArgumentRegisters + TransitionBlock.X86Constants.OffsetOfEcx; 613return _transitionBlock.OffsetOfArgumentRegisters + TransitionBlock.X86Constants.OffsetOfEdx; 623return _transitionBlock.SizeOfTransitionBlock + _transitionBlock.PointerSize; 626return _transitionBlock.SizeOfTransitionBlock; 631int ret = _transitionBlock.OffsetOfArgumentRegisters; 632int slotSize = _transitionBlock.StackElemSize(_transitionBlock.PointerSize); 639if (HasRetBuffArg() && _transitionBlock.IsRetBuffPassedAsFirstArg) 672if (HasRetBuffArg() && _transitionBlock.IsRetBuffPassedAsFirstArg) 680if (!_transitionBlock.IsX86) 693if (!_transitionBlock.IsX86 && IsVarArg) 698switch (_transitionBlock.Architecture) 703numRegistersUsed = _transitionBlock.NumArgumentRegisters; // Nothing else gets passed in registers for varargs 706_x86OfsStack = (int)(_transitionBlock.OffsetOfArgs + SizeOfArgStack()); 710if (_transitionBlock.IsX64UnixABI) 718_x64WindowsCurOfs = _transitionBlock.OffsetOfArgs + numRegistersUsed * _transitionBlock.PointerSize; 723_wasmOfsStack = numRegistersUsed * _transitionBlock.StackElemSize(_transitionBlock.PointerSize); 770argSize = _argForceByRef ? _transitionBlock.PointerSize : argSize; 774switch (_transitionBlock.Architecture) 777if (_transitionBlock.IsArgumentInRegister(ref _x86NumRegistersUsed, argType, _argTypeHandle)) 779return _transitionBlock.OffsetOfArgumentRegisters + (_transitionBlock.NumArgumentRegisters - _x86NumRegistersUsed) * _transitionBlock.PointerSize; 782_x86OfsStack -= _transitionBlock.StackElemSize(argSize); 785Debug.Assert(argOfs >= _transitionBlock.OffsetOfArgs); 789if (_transitionBlock.IsX64UnixABI) 791int cbArg = _transitionBlock.StackElemSize(argSize); 838if ((cFPRegs + _x64UnixIdxFPReg <= TransitionBlock.X64UnixTransitionBlock.NUM_FLOAT_ARGUMENT_REGISTERS) && (cGenRegs + _x64UnixIdxGenReg) <= _transitionBlock.NumArgumentRegisters) 870int argOfsInner = _transitionBlock.OffsetOfFloatArgumentRegisters + _x64UnixIdxFPReg * 8; 877if (_x64UnixIdxGenReg + cGenRegs <= _transitionBlock.NumArgumentRegisters) 879int argOfsInner = _transitionBlock.OffsetOfArgumentRegisters + _x64UnixIdxGenReg * 8; 887argOfs = _transitionBlock.OffsetOfArgs + _x64UnixIdxStack * 8; 888int cArgSlots = cbArg / _transitionBlock.PointerSize; 911argOfs = _x64WindowsCurOfs - _transitionBlock.OffsetOfArgs; 912_x64WindowsCurOfs += _transitionBlock.PointerSize; 914if ((cFPRegs == 0) || (argOfs >= _transitionBlock.SizeOfArgumentRegisters)) 916return argOfs + _transitionBlock.OffsetOfArgs; 920int idxFpReg = argOfs / _transitionBlock.PointerSize; 921return _transitionBlock.OffsetOfFloatArgumentRegisters + idxFpReg * TransitionBlock.SizeOfM128A; 940argOfs = _transitionBlock.OffsetOfArgs + _wasmOfsStack; 1003int cbArg = _transitionBlock.StackElemSize(argSize); 1004Debug.Assert((cbArg % _transitionBlock.PointerSize) == 0); 1008if (fFloatingPoint && _transitionBlock.IsArmhfABI && !IsVarArg) 1039return _transitionBlock.OffsetOfFloatArgumentRegisters + (i * cShift * 4); 1050_armOfsStack = ALIGN_UP(_armOfsStack, _transitionBlock.PointerSize * 2); 1053int argOfsInner = _transitionBlock.OffsetOfArgs + _armOfsStack; 1074int argOfsInner = _transitionBlock.OffsetOfArgumentRegisters + _armIdxGenReg * 4; 1077if (cbArg <= cRemainingRegs * _transitionBlock.PointerSize) 1080_armIdxGenReg += ALIGN_UP(cbArg, _transitionBlock.PointerSize) / _transitionBlock.PointerSize; 1093_armOfsStack += cbArg - cRemainingRegs * _transitionBlock.PointerSize; 1102_armOfsStack = ALIGN_UP(_armOfsStack, _transitionBlock.PointerSize * 2); 1105argOfs = _transitionBlock.OffsetOfArgs + _armOfsStack; 1156if (argSize > _transitionBlock.EnregisteredParamTypeMaxSize) 1158argSize = _transitionBlock.PointerSize; 1170int cbArg = _transitionBlock.StackElemSize(argSize, isValueType, isFloatHFA); 1177int argOfsInner = _transitionBlock.OffsetOfFloatArgumentRegisters + _arm64IdxFPReg * 16; 1188Debug.Assert(_transitionBlock.IsAppleArm64ABI || (cbArg % _transitionBlock.PointerSize) == 0); 1190int regSlots = ALIGN_UP(cbArg, _transitionBlock.PointerSize) / _transitionBlock.PointerSize; 1195int argOfsInner = _transitionBlock.OffsetOfArgumentRegisters + _arm64IdxGenReg * 8; 1204int argOfsInner = _transitionBlock.OffsetOfArgumentRegisters + _arm64IdxGenReg * 8; 1208_arm64OfsStack += cbArg + (_arm64IdxGenReg - 8) * _transitionBlock.PointerSize; 1222if (_transitionBlock.IsAppleArm64ABI) 1241argOfs = _transitionBlock.OffsetOfArgs + _arm64OfsStack; 1267if (argSize > _transitionBlock.EnregisteredParamTypeMaxSize) 1269argSize = _transitionBlock.PointerSize; 1288int cbArg = _transitionBlock.StackElemSize(argSize, isValueType, false); 1299if ((1 + _rvLa64IdxFPReg <= _transitionBlock.NumArgumentRegisters) && (1 + _rvLa64IdxGenReg <= _transitionBlock.NumArgumentRegisters)) 1313? _transitionBlock.OffsetOfArgumentRegisters + _rvLa64IdxGenReg * _transitionBlock.PointerSize 1314: _transitionBlock.OffsetOfFloatArgumentRegisters + _rvLa64IdxFPReg * _transitionBlock.FloatRegisterSize; 1321else if (cFPRegs + _rvLa64IdxFPReg <= _transitionBlock.NumArgumentRegisters) 1323int argOfsInner = _transitionBlock.OffsetOfFloatArgumentRegisters + _rvLa64IdxFPReg * _transitionBlock.FloatRegisterSize; 1340Debug.Assert((cbArg % _transitionBlock.PointerSize) == 0); 1342int regSlots = ALIGN_UP(cbArg, _transitionBlock.PointerSize) / _transitionBlock.PointerSize; 1343if (_rvLa64IdxGenReg + regSlots <= _transitionBlock.NumArgumentRegisters) 1346int argOfsInner = _transitionBlock.OffsetOfArgumentRegisters + _rvLa64IdxGenReg * _transitionBlock.PointerSize; 1350else if (_rvLa64IdxGenReg < _transitionBlock.NumArgumentRegisters) 1354int lastReg = _transitionBlock.NumArgumentRegisters - 1; 1358int argOfsInner = _transitionBlock.OffsetOfArgumentRegisters + lastReg * _transitionBlock.PointerSize; 1359_rvLa64IdxGenReg = _transitionBlock.NumArgumentRegisters; 1360_rvLa64OfsStack = _transitionBlock.PointerSize; 1366argOfs = _transitionBlock.OffsetOfArgs + _rvLa64OfsStack; 1419if (_transitionBlock.IsX86) 1428if (HasRetBuffArg() && _transitionBlock.IsRetBuffPassedAsFirstArg) 1435nSizeOfArgStack += _transitionBlock.PointerSize; 1436numRegistersUsed = _transitionBlock.NumArgumentRegisters; // Nothing else gets passed in registers for varargs 1448if (!_transitionBlock.IsArgumentInRegister(ref numRegistersUsed, type, thArgType)) 1452nSizeOfArgStack += _transitionBlock.StackElemSize(structSize); 1464if (numRegistersUsed < _transitionBlock.NumArgumentRegisters) 1472nSizeOfArgStack += _transitionBlock.PointerSize; 1479if (numRegistersUsed < _transitionBlock.NumArgumentRegisters) 1487nSizeOfArgStack += _transitionBlock.PointerSize; 1494int maxOffset = _transitionBlock.OffsetOfArgs; 1501if (_transitionBlock.IsX64) 1503if (_transitionBlock.IsX64UnixABI) 1510stackElemSize = _transitionBlock.StackElemSize(GetArgSize()); 1516stackElemSize = _transitionBlock.PointerSize; 1521stackElemSize = _transitionBlock.StackElemSize(GetArgSize(), IsValueType(), IsFloatHfa()); 1524stackElemSize = _transitionBlock.StackElemSize(_transitionBlock.PointerSize); 1538if (maxOffset == _transitionBlock.OffsetOfArgs && _transitionBlock.IsWasm32) 1541maxOffset = _transitionBlock.OffsetOfArgs + _wasmOfsStack; 1547nSizeOfArgStack = maxOffset - _transitionBlock.OffsetOfArgs; 1549if (_transitionBlock.IsX64 && !_transitionBlock.IsX64UnixABI) 1551nSizeOfArgStack = (nSizeOfArgStack > (int)_transitionBlock.SizeOfArgumentRegisters) ? 1552(nSizeOfArgStack - _transitionBlock.SizeOfArgumentRegisters) : 0; 1557nSizeOfArgStack = ALIGN_UP(nSizeOfArgStack, _transitionBlock.StackElemSize(_transitionBlock.PointerSize)); 1569switch (_transitionBlock.Architecture) 1577byteArgSize = _transitionBlock.PointerSize; 1578pLoc.m_byteStackIndex = _transitionBlock.GetStackArgumentByteIndexFromOffset(argOffset); 1579pLoc.m_byteStackSize = _transitionBlock.StackElemSize(byteArgSize); 1592if (_transitionBlock.IsFloatArgumentRegisterOffset(argOffset)) 1594int floatRegOfsInBytes = argOffset - _transitionBlock.OffsetOfFloatArgumentRegisters; 1595Debug.Assert((floatRegOfsInBytes % _transitionBlock.FloatRegisterSize) == 0); 1596pLoc.m_idxFloatReg = floatRegOfsInBytes / _transitionBlock.FloatRegisterSize; 1597pLoc.m_cFloatReg = ALIGN_UP(byteArgSize, _transitionBlock.FloatRegisterSize) / _transitionBlock.FloatRegisterSize; 1601if (!_transitionBlock.IsStackArgumentOffset(argOffset)) 1603pLoc.m_idxGenReg = _transitionBlock.GetArgumentIndexFromOffset(argOffset); 1605if (byteArgSize <= (4 - pLoc.m_idxGenReg) * _transitionBlock.PointerSize) 1607pLoc.m_cGenReg = (short)(ALIGN_UP(byteArgSize, _transitionBlock.PointerSize) / _transitionBlock.PointerSize); 1614pLoc.m_byteStackSize = _transitionBlock.StackElemSize(byteArgSize) - pLoc.m_cGenReg * _transitionBlock.PointerSize; 1619pLoc.m_byteStackIndex = _transitionBlock.GetStackArgumentByteIndexFromOffset(argOffset); 1620pLoc.m_byteStackSize = _transitionBlock.StackElemSize(byteArgSize); 1631if (_transitionBlock.IsFloatArgumentRegisterOffset(argOffset)) 1633int floatRegOfsInBytes = argOffset - _transitionBlock.OffsetOfFloatArgumentRegisters; 1634Debug.Assert((floatRegOfsInBytes % _transitionBlock.FloatRegisterSize) == 0); 1635pLoc.m_idxFloatReg = floatRegOfsInBytes / _transitionBlock.FloatRegisterSize; 1654byteArgSize = _transitionBlock.PointerSize; 1657if (!_transitionBlock.IsStackArgumentOffset(argOffset)) 1659pLoc.m_idxGenReg = _transitionBlock.GetArgumentIndexFromOffset(argOffset); 1660pLoc.m_cGenReg = (short)(ALIGN_UP(byteArgSize, _transitionBlock.PointerSize) / _transitionBlock.PointerSize); 1664pLoc.m_byteStackIndex = _transitionBlock.GetStackArgumentByteIndexFromOffset(argOffset); 1665pLoc.m_byteStackSize = _transitionBlock.StackElemSize(byteArgSize, IsValueType(), IsFloatHfa()); 1682if (_transitionBlock.IsFloatArgumentRegisterOffset(argOffset)) 1684int floatRegOfsInBytes = argOffset - _transitionBlock.OffsetOfFloatArgumentRegisters; 1685Debug.Assert((floatRegOfsInBytes % _transitionBlock.FloatRegisterSize) == 0); 1686pLoc.m_idxFloatReg = floatRegOfsInBytes / _transitionBlock.FloatRegisterSize; 1695if (GetArgType(out _) == CorElementType.ELEMENT_TYPE_VALUETYPE && GetArgSize() > _transitionBlock.EnregisteredParamTypeMaxSize) 1697byteArgSize = _transitionBlock.PointerSize; 1700if (!_transitionBlock.IsStackArgumentOffset(argOffset)) 1702pLoc.m_idxGenReg = _transitionBlock.GetArgumentIndexFromOffset(argOffset); 1703if ((pLoc.m_idxGenReg == 7) && (byteArgSize > _transitionBlock.PointerSize)) 1710pLoc.m_cGenReg = (short)(ALIGN_UP(byteArgSize, _transitionBlock.PointerSize) / _transitionBlock.PointerSize); 1714pLoc.m_byteStackIndex = _transitionBlock.GetStackArgumentByteIndexFromOffset(argOffset); 1715pLoc.m_byteStackSize = _transitionBlock.StackElemSize(byteArgSize, IsValueType(), IsFloatHfa()); 1721if (_transitionBlock.IsX64UnixABI) 1738if (_transitionBlock.IsFloatArgumentRegisterOffset(argOffset)) 1740int floatRegOfsInBytes = argOffset - _transitionBlock.OffsetOfFloatArgumentRegisters; 1741Debug.Assert((floatRegOfsInBytes % _transitionBlock.FloatRegisterSize) == 0); 1742pLoc.m_idxFloatReg = floatRegOfsInBytes / _transitionBlock.FloatRegisterSize; 1745else if (!_transitionBlock.IsStackArgumentOffset(argOffset)) 1747pLoc.m_idxGenReg = _transitionBlock.GetArgumentIndexFromOffset(argOffset); 1752pLoc.m_byteStackIndex = _transitionBlock.GetStackArgumentByteIndexFromOffset(argOffset); 1755argSizeInBytes = _transitionBlock.PointerSize; 1758pLoc.m_byteStackSize = _transitionBlock.StackElemSize(argSizeInBytes); 1866_transitionBlock.ComputeReturnValueTreatment(type, thRetType, IsVarArg, out _RETURN_HAS_RET_BUFFER, out _fpReturnSize, out _returnedFpFieldOffset1st, out _returnedFpFieldOffset2nd);