Example #1
0
 public FixedTypeKeyGenerator(string name, ModuleDefinition module, TValueGenerator pairGenerator, SystemObjectHelper systemObjectHelper, SystemTypeHelper typeHelper, ModuleImporter importer, SystemArrayHelper arrayHelper, double loadFactor, Action <ILProcessor, TInfo> loadValueFromInfoAction, Func <TInfo, TypeReference> ldTokenTypeReferenceFunc, Instruction[] loadDefaultReturnValue)
 {
     this.name                     = name;
     this.module                   = module;
     this.pairGenerator            = pairGenerator;
     this.loadValueFromInfoAction  = loadValueFromInfoAction;
     this.ldTokenTypeReferenceFunc = ldTokenTypeReferenceFunc;
     this.systemObjectHelper       = systemObjectHelper;
     this.typeHelper               = typeHelper;
     this.importer                 = importer;
     this.arrayHelper              = arrayHelper;
     this.loadFactor               = loadFactor;
     this.loadDefaultReturnValue   = loadDefaultReturnValue;
 }
Example #2
0
 public UnionInterfaceFormatterAllConsequentImplementor(ModuleDefinition module, SystemObjectHelper objectHelper, InterfaceMessagePackFormatterHelper interfaceMessagePackFormatterHelper, SystemInvalidOperationExceptionHelper invalidOperationExceptionHelper, ModuleImporter importer, MessagePackSecurityHelper securityHelper, MessagePackSerializerOptionsHelper messagePackSerializerOptionsHelper, MessagePackWriterHelper writerHelper, MessagePackReaderHelper readerHelper, FormatterResolverExtensionHelper formatterResolverExtensionHelper, FixedTypeKeyInt32ValueHashtableGenerator generator)
 {
     this.module       = module;
     this.objectHelper = objectHelper;
     this.interfaceMessagePackFormatterHelper = interfaceMessagePackFormatterHelper;
     this.invalidOperationExceptionHelper     = invalidOperationExceptionHelper;
     this.importer       = importer;
     this.securityHelper = securityHelper;
     this.messagePackSerializerOptionsHelper = messagePackSerializerOptionsHelper;
     this.writerHelper = writerHelper;
     this.readerHelper = readerHelper;
     this.formatterResolverExtensionHelper = formatterResolverExtensionHelper;
     this.generator = generator;
 }
Example #3
0
        private static void EnsureInternalAccessibility(ModuleDefinition targetModule, CollectedInfo[] collectedInfos, SystemObjectHelper systemObjectHelper)
        {
            var ignoresAccessChecksToAttributeGenerator = new IgnoresAccessChecksToAttributeGenerator(targetModule, systemObjectHelper);

            for (var i = 0; i < collectedInfos.Length; i++)
            {
                ref readonly var collectedInfo = ref collectedInfos[i];
Example #4
0
 public FixedTypeKeyInterfaceMessagePackFormatterValueHashtableGenerator(ModuleDefinition module, TypeKeyInterfaceMessagePackFormatterValuePairGenerator pairGenerator, SystemObjectHelper systemObjectHelper, SystemTypeHelper typeHelper, ModuleImporter importer, SystemArrayHelper arrayHelper, double loadFactor)
 {
     this.importer   = importer;
     this.typeHelper = typeHelper;
     customFormatterConstructorImporter = new CustomFormatterConstructorImporter(module.TypeSystem.Void, importer);
     generator = new FixedTypeKeyGenerator <FormatterTableItemInfo, TypeKeyInterfaceMessagePackFormatterValuePairGenerator>(
         TypeName,
         module,
         pairGenerator,
         systemObjectHelper,
         typeHelper,
         importer,
         arrayHelper,
         loadFactor,
         LoadAppropriateValueFromFormatterInfo,
         info => info.SerializeTypeReference,
         new[] { Instruction.Create(OpCodes.Ldnull), });
 }
Example #5
0
        public static MethodDefinition GenerateDefaultConstructor(ModuleDefinition module, SystemObjectHelper helper)
        {
            var ctor = new MethodDefinition(
                ".ctor",
                MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName,
                module.TypeSystem.Void)
            {
                HasThis = true,
                Body    =
                {
                    InitLocals = true,
                },
            };

            var processor = ctor.Body.GetILProcessor();

            processor.Append(Instruction.Create(OpCodes.Ldarg_0));
            processor.Append(Instruction.Create(OpCodes.Call, helper.Ctor));
            processor.Append(Instruction.Create(OpCodes.Ret));

            return(ctor);
        }
Example #6
0
 public IgnoresAccessChecksToAttributeGenerator(ModuleDefinition module, SystemObjectHelper objectHelper)
 {
     this.objectHelper = objectHelper;
     this.module       = module;
 }
Example #7
0
 public FixedTypeKeyUInt64ValueHashtableGenerator(ModuleDefinition module, TypeKeyUInt64ValuePairGenerator pairGenerator, SystemObjectHelper systemObjectHelper, SystemTypeHelper typeHelper, ModuleImporter importer, SystemArrayHelper arrayHelper, double loadFactor)
 {
     generator = new FixedTypeKeyGenerator <UnionSerializationInfo, TypeKeyUInt64ValuePairGenerator>(
         TypeName,
         module,
         pairGenerator,
         systemObjectHelper,
         typeHelper,
         importer,
         arrayHelper,
         loadFactor,
         (processor, unionInfo) =>
     {
         var(instruction0, instruction1) = InstructionUtility.LdcU8(unionInfo.Value);
         processor.Append(instruction0);
         if (!(instruction1 is null))
         {
             processor.Append(instruction1);
         }
     },
Example #8
0
 public FixedTypeKeyInt32ValueHashtableGenerator(ModuleDefinition module, TypeKeyInt32ValuePairGenerator pairGenerator, SystemObjectHelper systemObjectHelper, SystemTypeHelper typeHelper, ModuleImporter importer, SystemArrayHelper arrayHelper, double loadFactor)
 {
     generator = new FixedTypeKeyGenerator <UnionSerializationInfo, TypeKeyInt32ValuePairGenerator>(
         TypeName,
         module,
         pairGenerator,
         systemObjectHelper,
         typeHelper,
         importer,
         arrayHelper,
         loadFactor,
         (processor, unionInfo) =>
     {
         processor.Append(InstructionUtility.LdcI4(unionInfo.Index));
     },
         unionInfo => unionInfo.Type,
         new[] { Instruction.Create(OpCodes.Ldc_I4_M1), });
 }