コード例 #1
0
        /// <summary>
        /// Specializes native pointer casts.
        /// </summary>
        private static void Specialize(
            RewriterContext context,
            AcceleratorSpecializer specializer,
            IntAsPointerCast value)
        {
            var convert = context.Builder.CreateConvert(
                value.Location,
                value.Value,
                specializer.IntPointerType);

            context.ReplaceAndRemove(value, convert);
        }
コード例 #2
0
        /// <summary>
        /// Specializes int to native pointer casts.
        /// </summary>
        private static void Specialize(
            RewriterContext context,
            SpecializerData data,
            IntAsPointerCast value)
        {
            // Convert from int -> native int type -> pointer
            var builder = context.Builder;

            // int -> native int type
            var convertToNativeInt = builder.CreateConvert(
                value.Location,
                value.Value,
                data.IntPointerType);

            // native int type -> pointer
            var convert = builder.CreateIntAsPointerCast(
                value.Location,
                convertToNativeInt);

            context.ReplaceAndRemove(value, convert);
        }
コード例 #3
0
 /// <summary cref="IValueVisitor.Visit(IntAsPointerCast)"/>
 public void Visit(IntAsPointerCast value) =>
 CodeGenerator.GenerateCode(value);
コード例 #4
0
 /// <summary cref="IBackendCodeGenerator.GenerateCode(IntAsPointerCast)"/>
 public void GenerateCode(IntAsPointerCast cast) => GenerateCodeForCast(cast);
コード例 #5
0
 /// <summary cref="IBackendCodeGenerator.GenerateCode(IntAsPointerCast)"/>
 public void GenerateCode(IntAsPointerCast cast) => Alias(cast, cast.Value);
コード例 #6
0
 /// <summary>
 /// Returns true if we have to adjust the source cast operation.
 /// </summary>
 private static bool CanSpecialize(
     SpecializerData data,
     IntAsPointerCast value) =>
 value.SourceType != data.IntPointerType;
コード例 #7
0
 /// <summary>
 /// Returns true if we have to adjust the source cast operation.
 /// </summary>
 private static bool CanSpecialize(
     AcceleratorSpecializer specializer,
     IntAsPointerCast value) =>
 value.SourceType != specializer.IntPointerType;
コード例 #8
0
 /// <summary cref="IValueVisitor.Visit(IntAsPointerCast)"/>
 public void Visit(IntAsPointerCast value) =>
 throw new InvalidCodeGenerationException();