1 write to _transitionBlock
ILCompiler.ReadyToRun (1)
Compiler\DependencyAnalysis\ReadyToRun\ArgIterator.cs (1)
534_transitionBlock = TransitionBlock.FromTarget(context.Target);
208 references to _transitionBlock
ILCompiler.ReadyToRun (208)
Compiler\DependencyAnalysis\ReadyToRun\ArgIterator.cs (208)
543Debug.Assert((_nSizeOfArgStack % _transitionBlock.PointerSize) == 0); 557if (_transitionBlock.IsX64 && !_transitionBlock.IsX64UnixABI) 560size += (uint)_transitionBlock.SizeOfArgumentRegisters; 563Debug.Assert((size % _transitionBlock.PointerSize) == 0); 571if (_transitionBlock.IsX86) 616if (_transitionBlock.EnregisteredParamTypeMaxSize != 0) 618switch (_transitionBlock.Architecture) 621return _transitionBlock.IsArgPassedByRef(_argSize); 626return ((_argSize > _transitionBlock.EnregisteredParamTypeMaxSize) && (!_argTypeHandle.IsHomogeneousAggregate() || IsVarArg)); 633return ((_argSize > _transitionBlock.EnregisteredParamTypeMaxSize) || _transitionBlock.IsArgPassedByRef(_argTypeHandle)); 640return ((_argSize > _transitionBlock.EnregisteredParamTypeMaxSize) || _transitionBlock.IsArgPassedByRef(_argTypeHandle)); 649if (_transitionBlock.IsWasm32) 653return _transitionBlock.IsArgPassedByRef(_argTypeHandle); 672return _transitionBlock.ThisOffset; 681if (_transitionBlock.IsX86) 684return _transitionBlock.SizeOfTransitionBlock; 689int ret = _transitionBlock.OffsetOfArgumentRegisters; 690int slotSize = _transitionBlock.StackElemSize(_transitionBlock.PointerSize); 697if (HasRetBuffArg() && _transitionBlock.IsRetBuffPassedAsFirstArg) 710if (_transitionBlock.IsX86) 719return _transitionBlock.OffsetOfArgumentRegisters + TransitionBlock.X86Constants.OffsetOfEcx; 721return _transitionBlock.OffsetOfArgumentRegisters + TransitionBlock.X86Constants.OffsetOfEdx; 727return _transitionBlock.SizeOfTransitionBlock; 732int ret = _transitionBlock.OffsetOfArgumentRegisters; 733int slotSize = _transitionBlock.StackElemSize(_transitionBlock.PointerSize); 740if (HasRetBuffArg() && _transitionBlock.IsRetBuffPassedAsFirstArg) 753if (_transitionBlock.IsX86) 762return _transitionBlock.OffsetOfArgumentRegisters + TransitionBlock.X86Constants.OffsetOfEcx; 764return _transitionBlock.OffsetOfArgumentRegisters + TransitionBlock.X86Constants.OffsetOfEdx; 774return _transitionBlock.SizeOfTransitionBlock + _transitionBlock.PointerSize; 777return _transitionBlock.SizeOfTransitionBlock; 782int ret = _transitionBlock.OffsetOfArgumentRegisters; 783int slotSize = _transitionBlock.StackElemSize(_transitionBlock.PointerSize); 790if (HasRetBuffArg() && _transitionBlock.IsRetBuffPassedAsFirstArg) 823if (HasRetBuffArg() && _transitionBlock.IsRetBuffPassedAsFirstArg) 831if (!_transitionBlock.IsX86) 844if (!_transitionBlock.IsX86 && IsVarArg) 849switch (_transitionBlock.Architecture) 854numRegistersUsed = _transitionBlock.NumArgumentRegisters; // Nothing else gets passed in registers for varargs 857_x86OfsStack = (int)(_transitionBlock.OffsetOfArgs + SizeOfArgStack()); 861if (_transitionBlock.IsX64UnixABI) 869_x64WindowsCurOfs = _transitionBlock.OffsetOfArgs + numRegistersUsed * _transitionBlock.PointerSize; 874_wasmOfsStack = numRegistersUsed * _transitionBlock.StackElemSize(_transitionBlock.PointerSize); 921argSize = _argForceByRef ? _transitionBlock.PointerSize : argSize; 925switch (_transitionBlock.Architecture) 928if (_transitionBlock.IsArgumentInRegister(ref _x86NumRegistersUsed, argType, _argTypeHandle)) 930return _transitionBlock.OffsetOfArgumentRegisters + (_transitionBlock.NumArgumentRegisters - _x86NumRegistersUsed) * _transitionBlock.PointerSize; 933_x86OfsStack -= _transitionBlock.StackElemSize(argSize); 936Debug.Assert(argOfs >= _transitionBlock.OffsetOfArgs); 940if (_transitionBlock.IsX64UnixABI) 942int cbArg = _transitionBlock.StackElemSize(argSize); 989if ((cFPRegs + _x64UnixIdxFPReg <= TransitionBlock.X64UnixTransitionBlock.NUM_FLOAT_ARGUMENT_REGISTERS) && (cGenRegs + _x64UnixIdxGenReg) <= _transitionBlock.NumArgumentRegisters) 1021int argOfsInner = _transitionBlock.OffsetOfFloatArgumentRegisters + _x64UnixIdxFPReg * 8; 1028if (_x64UnixIdxGenReg + cGenRegs <= _transitionBlock.NumArgumentRegisters) 1030int argOfsInner = _transitionBlock.OffsetOfArgumentRegisters + _x64UnixIdxGenReg * 8; 1038argOfs = _transitionBlock.OffsetOfArgs + _x64UnixIdxStack * 8; 1039int cArgSlots = cbArg / _transitionBlock.PointerSize; 1062argOfs = _x64WindowsCurOfs - _transitionBlock.OffsetOfArgs; 1063_x64WindowsCurOfs += _transitionBlock.PointerSize; 1065if ((cFPRegs == 0) || (argOfs >= _transitionBlock.SizeOfArgumentRegisters)) 1067return argOfs + _transitionBlock.OffsetOfArgs; 1071int idxFpReg = argOfs / _transitionBlock.PointerSize; 1072return _transitionBlock.OffsetOfFloatArgumentRegisters + idxFpReg * TransitionBlock.SizeOfM128A; 1125argOfs = _transitionBlock.OffsetOfArgs + _wasmOfsStack; 1188int cbArg = _transitionBlock.StackElemSize(argSize); 1189Debug.Assert((cbArg % _transitionBlock.PointerSize) == 0); 1193if (fFloatingPoint && _transitionBlock.IsArmhfABI && !IsVarArg) 1224return _transitionBlock.OffsetOfFloatArgumentRegisters + (i * cShift * 4); 1235_armOfsStack = ALIGN_UP(_armOfsStack, _transitionBlock.PointerSize * 2); 1238int argOfsInner = _transitionBlock.OffsetOfArgs + _armOfsStack; 1259int argOfsInner = _transitionBlock.OffsetOfArgumentRegisters + _armIdxGenReg * 4; 1262if (cbArg <= cRemainingRegs * _transitionBlock.PointerSize) 1265_armIdxGenReg += ALIGN_UP(cbArg, _transitionBlock.PointerSize) / _transitionBlock.PointerSize; 1278_armOfsStack += cbArg - cRemainingRegs * _transitionBlock.PointerSize; 1287_armOfsStack = ALIGN_UP(_armOfsStack, _transitionBlock.PointerSize * 2); 1290argOfs = _transitionBlock.OffsetOfArgs + _armOfsStack; 1341if (argSize > _transitionBlock.EnregisteredParamTypeMaxSize) 1343argSize = _transitionBlock.PointerSize; 1355int cbArg = _transitionBlock.StackElemSize(argSize, isValueType, isFloatHFA); 1362int argOfsInner = _transitionBlock.OffsetOfFloatArgumentRegisters + _arm64IdxFPReg * 16; 1373Debug.Assert(_transitionBlock.IsAppleArm64ABI || (cbArg % _transitionBlock.PointerSize) == 0); 1375int regSlots = ALIGN_UP(cbArg, _transitionBlock.PointerSize) / _transitionBlock.PointerSize; 1380int argOfsInner = _transitionBlock.OffsetOfArgumentRegisters + _arm64IdxGenReg * 8; 1389int argOfsInner = _transitionBlock.OffsetOfArgumentRegisters + _arm64IdxGenReg * 8; 1393_arm64OfsStack += cbArg + (_arm64IdxGenReg - 8) * _transitionBlock.PointerSize; 1407if (_transitionBlock.IsAppleArm64ABI) 1426argOfs = _transitionBlock.OffsetOfArgs + _arm64OfsStack; 1452if (argSize > _transitionBlock.EnregisteredParamTypeMaxSize) 1454argSize = _transitionBlock.PointerSize; 1474int cbArg = _transitionBlock.StackElemSize(argSize, isValueType, false); 1485if ((1 + _rvLa64IdxFPReg <= _transitionBlock.NumArgumentRegisters) && (1 + _rvLa64IdxGenReg <= _transitionBlock.NumArgumentRegisters)) 1499? _transitionBlock.OffsetOfArgumentRegisters + _rvLa64IdxGenReg * _transitionBlock.PointerSize 1500: _transitionBlock.OffsetOfFloatArgumentRegisters + _rvLa64IdxFPReg * _transitionBlock.FloatRegisterSize; 1507else if (cFPRegs + _rvLa64IdxFPReg <= _transitionBlock.NumArgumentRegisters) 1509int argOfsInner = _transitionBlock.OffsetOfFloatArgumentRegisters + _rvLa64IdxFPReg * _transitionBlock.FloatRegisterSize; 1526Debug.Assert((cbArg % _transitionBlock.PointerSize) == 0); 1528int regSlots = ALIGN_UP(cbArg, _transitionBlock.PointerSize) / _transitionBlock.PointerSize; 1529if (_rvLa64IdxGenReg + regSlots <= _transitionBlock.NumArgumentRegisters) 1532int argOfsInner = _transitionBlock.OffsetOfArgumentRegisters + _rvLa64IdxGenReg * _transitionBlock.PointerSize; 1536else if (_rvLa64IdxGenReg < _transitionBlock.NumArgumentRegisters) 1540int lastReg = _transitionBlock.NumArgumentRegisters - 1; 1544int argOfsInner = _transitionBlock.OffsetOfArgumentRegisters + lastReg * _transitionBlock.PointerSize; 1545_rvLa64IdxGenReg = _transitionBlock.NumArgumentRegisters; 1546_rvLa64OfsStack = _transitionBlock.PointerSize; 1552argOfs = _transitionBlock.OffsetOfArgs + _rvLa64OfsStack; 1605if (_transitionBlock.IsX86) 1614if (HasRetBuffArg() && _transitionBlock.IsRetBuffPassedAsFirstArg) 1621nSizeOfArgStack += _transitionBlock.PointerSize; 1622numRegistersUsed = _transitionBlock.NumArgumentRegisters; // Nothing else gets passed in registers for varargs 1634if (!_transitionBlock.IsArgumentInRegister(ref numRegistersUsed, type, thArgType)) 1638nSizeOfArgStack += _transitionBlock.StackElemSize(structSize); 1650if (numRegistersUsed < _transitionBlock.NumArgumentRegisters) 1658nSizeOfArgStack += _transitionBlock.PointerSize; 1665if (numRegistersUsed < _transitionBlock.NumArgumentRegisters) 1673nSizeOfArgStack += _transitionBlock.PointerSize; 1680int maxOffset = _transitionBlock.OffsetOfArgs; 1687if (_transitionBlock.IsX64) 1689if (_transitionBlock.IsX64UnixABI) 1696stackElemSize = _transitionBlock.StackElemSize(GetArgSize()); 1702stackElemSize = _transitionBlock.PointerSize; 1707stackElemSize = _transitionBlock.StackElemSize(GetArgSize(), IsValueType(), IsFloatHfa()); 1710stackElemSize = _transitionBlock.StackElemSize(_transitionBlock.PointerSize); 1724if (maxOffset == _transitionBlock.OffsetOfArgs && _transitionBlock.IsWasm32) 1727maxOffset = _transitionBlock.OffsetOfArgs + _wasmOfsStack; 1733nSizeOfArgStack = maxOffset - _transitionBlock.OffsetOfArgs; 1735if (_transitionBlock.IsX64 && !_transitionBlock.IsX64UnixABI) 1737nSizeOfArgStack = (nSizeOfArgStack > (int)_transitionBlock.SizeOfArgumentRegisters) ? 1738(nSizeOfArgStack - _transitionBlock.SizeOfArgumentRegisters) : 0; 1743nSizeOfArgStack = ALIGN_UP(nSizeOfArgStack, _transitionBlock.StackElemSize(_transitionBlock.PointerSize)); 1755switch (_transitionBlock.Architecture) 1763byteArgSize = _transitionBlock.PointerSize; 1764pLoc.m_byteStackIndex = _transitionBlock.GetStackArgumentByteIndexFromOffset(argOffset); 1765pLoc.m_byteStackSize = _transitionBlock.StackElemSize(byteArgSize); 1778if (_transitionBlock.IsFloatArgumentRegisterOffset(argOffset)) 1780int floatRegOfsInBytes = argOffset - _transitionBlock.OffsetOfFloatArgumentRegisters; 1781Debug.Assert((floatRegOfsInBytes % _transitionBlock.FloatRegisterSize) == 0); 1782pLoc.m_idxFloatReg = floatRegOfsInBytes / _transitionBlock.FloatRegisterSize; 1783pLoc.m_cFloatReg = ALIGN_UP(byteArgSize, _transitionBlock.FloatRegisterSize) / _transitionBlock.FloatRegisterSize; 1787if (!_transitionBlock.IsStackArgumentOffset(argOffset)) 1789pLoc.m_idxGenReg = _transitionBlock.GetArgumentIndexFromOffset(argOffset); 1791if (byteArgSize <= (4 - pLoc.m_idxGenReg) * _transitionBlock.PointerSize) 1793pLoc.m_cGenReg = (short)(ALIGN_UP(byteArgSize, _transitionBlock.PointerSize) / _transitionBlock.PointerSize); 1800pLoc.m_byteStackSize = _transitionBlock.StackElemSize(byteArgSize) - pLoc.m_cGenReg * _transitionBlock.PointerSize; 1805pLoc.m_byteStackIndex = _transitionBlock.GetStackArgumentByteIndexFromOffset(argOffset); 1806pLoc.m_byteStackSize = _transitionBlock.StackElemSize(byteArgSize); 1817if (_transitionBlock.IsFloatArgumentRegisterOffset(argOffset)) 1819int floatRegOfsInBytes = argOffset - _transitionBlock.OffsetOfFloatArgumentRegisters; 1820Debug.Assert((floatRegOfsInBytes % _transitionBlock.FloatRegisterSize) == 0); 1821pLoc.m_idxFloatReg = floatRegOfsInBytes / _transitionBlock.FloatRegisterSize; 1840byteArgSize = _transitionBlock.PointerSize; 1843if (!_transitionBlock.IsStackArgumentOffset(argOffset)) 1845pLoc.m_idxGenReg = _transitionBlock.GetArgumentIndexFromOffset(argOffset); 1846pLoc.m_cGenReg = (short)(ALIGN_UP(byteArgSize, _transitionBlock.PointerSize) / _transitionBlock.PointerSize); 1850pLoc.m_byteStackIndex = _transitionBlock.GetStackArgumentByteIndexFromOffset(argOffset); 1851pLoc.m_byteStackSize = _transitionBlock.StackElemSize(byteArgSize, IsValueType(), IsFloatHfa()); 1868if (_transitionBlock.IsFloatArgumentRegisterOffset(argOffset)) 1870int floatRegOfsInBytes = argOffset - _transitionBlock.OffsetOfFloatArgumentRegisters; 1871Debug.Assert((floatRegOfsInBytes % _transitionBlock.FloatRegisterSize) == 0); 1872pLoc.m_idxFloatReg = floatRegOfsInBytes / _transitionBlock.FloatRegisterSize; 1882if (GetArgType(out dummy) == CorElementType.ELEMENT_TYPE_VALUETYPE && GetArgSize() > _transitionBlock.EnregisteredParamTypeMaxSize) 1884byteArgSize = _transitionBlock.PointerSize; 1887if (!_transitionBlock.IsStackArgumentOffset(argOffset)) 1889pLoc.m_idxGenReg = _transitionBlock.GetArgumentIndexFromOffset(argOffset); 1890if ((pLoc.m_idxGenReg == 7) && (byteArgSize > _transitionBlock.PointerSize)) 1897pLoc.m_cGenReg = (short)(ALIGN_UP(byteArgSize, _transitionBlock.PointerSize) / _transitionBlock.PointerSize); 1901pLoc.m_byteStackIndex = _transitionBlock.GetStackArgumentByteIndexFromOffset(argOffset); 1902pLoc.m_byteStackSize = _transitionBlock.StackElemSize(byteArgSize, IsValueType(), IsFloatHfa()); 1908if (_transitionBlock.IsX64UnixABI) 1925if (_transitionBlock.IsFloatArgumentRegisterOffset(argOffset)) 1927int floatRegOfsInBytes = argOffset - _transitionBlock.OffsetOfFloatArgumentRegisters; 1928Debug.Assert((floatRegOfsInBytes % _transitionBlock.FloatRegisterSize) == 0); 1929pLoc.m_idxFloatReg = floatRegOfsInBytes / _transitionBlock.FloatRegisterSize; 1932else if (!_transitionBlock.IsStackArgumentOffset(argOffset)) 1934pLoc.m_idxGenReg = _transitionBlock.GetArgumentIndexFromOffset(argOffset); 1939pLoc.m_byteStackIndex = _transitionBlock.GetStackArgumentByteIndexFromOffset(argOffset); 1942argSizeInBytes = _transitionBlock.PointerSize; 1945pLoc.m_byteStackSize = _transitionBlock.StackElemSize(argSizeInBytes); 2053_transitionBlock.ComputeReturnValueTreatment(type, thRetType, IsVarArg, out _RETURN_HAS_RET_BUFFER, out _fpReturnSize, out _returnedFpFieldOffset1st, out _returnedFpFieldOffset2nd);