private MethodInfo CreateMethodInfo(BuildingContext context, MethodDefinition definition) { // Basic structure. var info = new MethodInfo { AccessFlags = definition.AccessFlags, NameIndex = (ushort)ConstantPoolBuffer.GetUtf8Index(definition.Name), DescriptorIndex = (ushort)ConstantPoolBuffer.GetDescriptorIndex(definition.Descriptor), }; // Body. if (definition.Body != null) { info.Attributes.Add(CreateAttribute(context, definition.Body.Serialize(context))); } // Exceptions if (definition.Exceptions.Count > 0) { var attribute = new ExceptionsAttribute(); foreach (var exception in definition.Exceptions) { attribute.Exceptions.Add((ushort)context.Builder.ConstantPoolBuffer.GetClassIndex(exception)); } info.Attributes.Add(CreateAttribute(context, attribute)); } AddAttributes(context, info, definition); return(info); }
private FieldInfo CreateFieldInfo(BuildingContext context, FieldDefinition definition) { // Basic structure. var info = new FieldInfo { AccessFlags = definition.AccessFlags, NameIndex = (ushort)ConstantPoolBuffer.GetUtf8Index(definition.Name), DescriptorIndex = (ushort)ConstantPoolBuffer.GetDescriptorIndex(definition.Descriptor), }; // Constant if (definition.Constant != null) { info.Attributes.Add(CreateAttribute(context, new SingleIndexAttribute( SingleIndexAttribute.ConstantValueAttribute, (ushort)ConstantPoolBuffer.GetLiteralIndex(definition.Constant)))); } AddAttributes(context, info, definition); return(info); }