public ReadyToRunCompilerContext(TargetDetails details, SharedGenericsMode genericsMode, bool bubbleIncludesCorelib, CompilerTypeSystemContext oldTypeSystemContext = null)
            : base(details, genericsMode)
        {
            _r2rFieldLayoutAlgorithm          = new ReadyToRunMetadataFieldLayoutAlgorithm();
            _systemObjectFieldLayoutAlgorithm = new SystemObjectFieldLayoutAlgorithm(_r2rFieldLayoutAlgorithm);

            // Only the Arm64 JIT respects the OS rules for vector type abi currently
            _vectorFieldLayoutAlgorithm = new VectorFieldLayoutAlgorithm(_r2rFieldLayoutAlgorithm, (details.Architecture == TargetArchitecture.ARM64) ? true : bubbleIncludesCorelib);

            string matchingVectorType = "Unknown";

            if (details.MaximumSimdVectorLength == SimdVectorLength.Vector128Bit)
            {
                matchingVectorType = "Vector128`1";
            }
            else if (details.MaximumSimdVectorLength == SimdVectorLength.Vector256Bit)
            {
                matchingVectorType = "Vector256`1";
            }

            // No architecture has completely stable handling of Vector<T> in the abi (Arm64 may change to SVE)
            _vectorOfTFieldLayoutAlgorithm = new VectorOfTFieldLayoutAlgorithm(_r2rFieldLayoutAlgorithm, _vectorFieldLayoutAlgorithm, matchingVectorType, bubbleIncludesCorelib);

            if (oldTypeSystemContext != null)
            {
                InheritOpenModules(oldTypeSystemContext);
            }
        }
Пример #2
0
 public ReadyToRunCompilerContext(TargetDetails details, SharedGenericsMode genericsMode)
     : base(details, genericsMode)
 {
     _r2rFieldLayoutAlgorithm             = new ReadyToRunMetadataFieldLayoutAlgorithm();
     _systemObjectFieldLayoutAlgorithm    = new SystemObjectFieldLayoutAlgorithm(_r2rFieldLayoutAlgorithm);
     _vectorFieldLayoutAlgorithm          = new VectorFieldLayoutAlgorithm(_r2rFieldLayoutAlgorithm);
     _vectorIntrinsicFieldLayoutAlgorithm = new VectorIntrinsicFieldLayoutAlgorithm(_r2rFieldLayoutAlgorithm);
 }
        public ReadyToRunCompilerContext(TargetDetails details, SharedGenericsMode genericsMode)
            : base(details, genericsMode)
        {
            _r2rFieldLayoutAlgorithm          = new ReadyToRunMetadataFieldLayoutAlgorithm();
            _systemObjectFieldLayoutAlgorithm = new SystemObjectFieldLayoutAlgorithm(_r2rFieldLayoutAlgorithm);
            _vectorFieldLayoutAlgorithm       = new VectorFieldLayoutAlgorithm(_r2rFieldLayoutAlgorithm);

            string matchingVectorType = "Unknown";

            if (details.MaximumSimdVectorLength == SimdVectorLength.Vector128Bit)
            {
                matchingVectorType = "Vector128`1";
            }
            else if (details.MaximumSimdVectorLength == SimdVectorLength.Vector256Bit)
            {
                matchingVectorType = "Vector256`1";
            }

            _vectorOfTFieldLayoutAlgorithm = new VectorOfTFieldLayoutAlgorithm(_r2rFieldLayoutAlgorithm, _vectorFieldLayoutAlgorithm, matchingVectorType);
        }