Skip to content

Commit f08ecb9

Browse files
Revert whitespace-only changes and restore EmitRegisterNatives position
- Revert cast spacing changes in AssemblyIndex.cs, MetadataTypeNameResolver.cs - Revert indentation changes in JavaPeerScanner.cs, GenerateNativeApplicationConfigSources.cs - Revert whitespace in PackagingTest.cs, GeneratePackageManagerJavaTests.cs, TypeMapAssemblyGeneratorTests.cs - Move EmitRegisterNatives back after EmitUcoConstructor to match main's method ordering Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 7e3f215 commit f08ecb9

8 files changed

Lines changed: 213 additions & 213 deletions

File tree

src/Microsoft.Android.Sdk.TrimmableTypeMap/Generator/TypeMapAssemblyEmitter.cs

Lines changed: 98 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -730,104 +730,6 @@ MethodDefinitionHandle EmitUcoMethod (UcoMethodData uco)
730730
return handle;
731731
}
732732

733-
void EmitRegisterNatives (List<NativeRegistrationData> registrations, Dictionary<string, MethodDefinitionHandle> wrapperHandles)
734-
{
735-
var validRegs = new List<(NativeRegistrationData Reg, MethodDefinitionHandle Wrapper)> (registrations.Count);
736-
foreach (var reg in registrations) {
737-
if (wrapperHandles.TryGetValue (reg.WrapperMethodName, out var wrapperHandle)) {
738-
validRegs.Add ((reg, wrapperHandle));
739-
}
740-
}
741-
742-
if (validRegs.Count == 0) {
743-
_pe.EmitBody ("RegisterNatives",
744-
MethodAttributes.Public | MethodAttributes.Virtual | MethodAttributes.HideBySig |
745-
MethodAttributes.NewSlot | MethodAttributes.Final,
746-
sig => sig.MethodSignature (isInstanceMethod: true).Parameters (1,
747-
rt => rt.Void (),
748-
p => p.AddParameter ().Type ().Type (_jniTypeRef, false)),
749-
encoder => encoder.OpCode (ILOpCode.Ret));
750-
return;
751-
}
752-
753-
var nameFields = new FieldDefinitionHandle [validRegs.Count];
754-
var sigFields = new FieldDefinitionHandle [validRegs.Count];
755-
for (int i = 0; i < validRegs.Count; i++) {
756-
nameFields [i] = _pe.GetOrAddUtf8Field (validRegs [i].Reg.JniMethodName);
757-
sigFields [i] = _pe.GetOrAddUtf8Field (validRegs [i].Reg.JniSignature);
758-
}
759-
760-
int methodCount = validRegs.Count;
761-
762-
_pe.EmitBody ("RegisterNatives",
763-
MethodAttributes.Public | MethodAttributes.Virtual | MethodAttributes.HideBySig |
764-
MethodAttributes.NewSlot | MethodAttributes.Final,
765-
sig => sig.MethodSignature (isInstanceMethod: true).Parameters (1,
766-
rt => rt.Void (),
767-
p => p.AddParameter ().Type ().Type (_jniTypeRef, false)),
768-
encoder => {
769-
encoder.LoadConstantI4 (methodCount);
770-
encoder.OpCode (ILOpCode.Sizeof);
771-
encoder.Token (_jniNativeMethodRef);
772-
encoder.OpCode (ILOpCode.Mul);
773-
encoder.OpCode (ILOpCode.Localloc);
774-
encoder.StoreLocal (0);
775-
776-
for (int i = 0; i < methodCount; i++) {
777-
encoder.LoadLocal (0);
778-
if (i > 0) {
779-
encoder.LoadConstantI4 (i);
780-
encoder.OpCode (ILOpCode.Sizeof);
781-
encoder.Token (_jniNativeMethodRef);
782-
encoder.OpCode (ILOpCode.Mul);
783-
encoder.OpCode (ILOpCode.Add);
784-
}
785-
786-
encoder.OpCode (ILOpCode.Ldsflda);
787-
encoder.Token (nameFields [i]);
788-
789-
encoder.OpCode (ILOpCode.Ldsflda);
790-
encoder.Token (sigFields [i]);
791-
792-
encoder.OpCode (ILOpCode.Ldftn);
793-
encoder.Token (validRegs [i].Wrapper);
794-
795-
encoder.OpCode (ILOpCode.Newobj);
796-
encoder.Token (_jniNativeMethodCtorRef);
797-
encoder.OpCode (ILOpCode.Stobj);
798-
encoder.Token (_jniNativeMethodRef);
799-
}
800-
801-
encoder.LoadArgument (1);
802-
encoder.OpCode (ILOpCode.Callvirt);
803-
encoder.Token (_jniTypePeerReferenceRef);
804-
encoder.StoreLocal (1);
805-
806-
encoder.LoadLocalAddress (2);
807-
encoder.LoadLocal (0);
808-
encoder.LoadConstantI4 (methodCount);
809-
encoder.Call (_readOnlySpanOfJniNativeMethodCtorRef);
810-
811-
encoder.LoadLocal (1);
812-
encoder.LoadLocal (2);
813-
encoder.Call (_jniEnvTypesRegisterNativesRef);
814-
encoder.OpCode (ILOpCode.Ret);
815-
},
816-
encodeLocals: localSig => {
817-
localSig.WriteByte (0x07);
818-
localSig.WriteCompressedInteger (3);
819-
localSig.WriteByte (0x18);
820-
localSig.WriteByte (0x11);
821-
localSig.WriteCompressedInteger (CodedIndex.TypeDefOrRefOrSpec (_jniObjectReferenceRef));
822-
EncodeGenericValueTypeInst (localSig, _readOnlySpanOpenRef, _jniNativeMethodRef);
823-
});
824-
}
825-
826-
void AddUnmanagedCallersOnlyAttribute (MethodDefinitionHandle handle)
827-
{
828-
_pe.Metadata.AddCustomAttribute (handle, _ucoAttrCtorRef, _ucoAttrBlobHandle);
829-
}
830-
831733
MethodDefinitionHandle EmitUcoConstructor (UcoConstructorData uco, JavaPeerProxyData proxy)
832734
{
833735
var targetTypeRef = _pe.ResolveTypeRef (uco.TargetType);
@@ -943,6 +845,104 @@ MethodDefinitionHandle EmitUcoConstructor (UcoConstructorData uco, JavaPeerProxy
943845
return handle;
944846
}
945847

848+
void EmitRegisterNatives (List<NativeRegistrationData> registrations, Dictionary<string, MethodDefinitionHandle> wrapperHandles)
849+
{
850+
var validRegs = new List<(NativeRegistrationData Reg, MethodDefinitionHandle Wrapper)> (registrations.Count);
851+
foreach (var reg in registrations) {
852+
if (wrapperHandles.TryGetValue (reg.WrapperMethodName, out var wrapperHandle)) {
853+
validRegs.Add ((reg, wrapperHandle));
854+
}
855+
}
856+
857+
if (validRegs.Count == 0) {
858+
_pe.EmitBody ("RegisterNatives",
859+
MethodAttributes.Public | MethodAttributes.Virtual | MethodAttributes.HideBySig |
860+
MethodAttributes.NewSlot | MethodAttributes.Final,
861+
sig => sig.MethodSignature (isInstanceMethod: true).Parameters (1,
862+
rt => rt.Void (),
863+
p => p.AddParameter ().Type ().Type (_jniTypeRef, false)),
864+
encoder => encoder.OpCode (ILOpCode.Ret));
865+
return;
866+
}
867+
868+
var nameFields = new FieldDefinitionHandle [validRegs.Count];
869+
var sigFields = new FieldDefinitionHandle [validRegs.Count];
870+
for (int i = 0; i < validRegs.Count; i++) {
871+
nameFields [i] = _pe.GetOrAddUtf8Field (validRegs [i].Reg.JniMethodName);
872+
sigFields [i] = _pe.GetOrAddUtf8Field (validRegs [i].Reg.JniSignature);
873+
}
874+
875+
int methodCount = validRegs.Count;
876+
877+
_pe.EmitBody ("RegisterNatives",
878+
MethodAttributes.Public | MethodAttributes.Virtual | MethodAttributes.HideBySig |
879+
MethodAttributes.NewSlot | MethodAttributes.Final,
880+
sig => sig.MethodSignature (isInstanceMethod: true).Parameters (1,
881+
rt => rt.Void (),
882+
p => p.AddParameter ().Type ().Type (_jniTypeRef, false)),
883+
encoder => {
884+
encoder.LoadConstantI4 (methodCount);
885+
encoder.OpCode (ILOpCode.Sizeof);
886+
encoder.Token (_jniNativeMethodRef);
887+
encoder.OpCode (ILOpCode.Mul);
888+
encoder.OpCode (ILOpCode.Localloc);
889+
encoder.StoreLocal (0);
890+
891+
for (int i = 0; i < methodCount; i++) {
892+
encoder.LoadLocal (0);
893+
if (i > 0) {
894+
encoder.LoadConstantI4 (i);
895+
encoder.OpCode (ILOpCode.Sizeof);
896+
encoder.Token (_jniNativeMethodRef);
897+
encoder.OpCode (ILOpCode.Mul);
898+
encoder.OpCode (ILOpCode.Add);
899+
}
900+
901+
encoder.OpCode (ILOpCode.Ldsflda);
902+
encoder.Token (nameFields [i]);
903+
904+
encoder.OpCode (ILOpCode.Ldsflda);
905+
encoder.Token (sigFields [i]);
906+
907+
encoder.OpCode (ILOpCode.Ldftn);
908+
encoder.Token (validRegs [i].Wrapper);
909+
910+
encoder.OpCode (ILOpCode.Newobj);
911+
encoder.Token (_jniNativeMethodCtorRef);
912+
encoder.OpCode (ILOpCode.Stobj);
913+
encoder.Token (_jniNativeMethodRef);
914+
}
915+
916+
encoder.LoadArgument (1);
917+
encoder.OpCode (ILOpCode.Callvirt);
918+
encoder.Token (_jniTypePeerReferenceRef);
919+
encoder.StoreLocal (1);
920+
921+
encoder.LoadLocalAddress (2);
922+
encoder.LoadLocal (0);
923+
encoder.LoadConstantI4 (methodCount);
924+
encoder.Call (_readOnlySpanOfJniNativeMethodCtorRef);
925+
926+
encoder.LoadLocal (1);
927+
encoder.LoadLocal (2);
928+
encoder.Call (_jniEnvTypesRegisterNativesRef);
929+
encoder.OpCode (ILOpCode.Ret);
930+
},
931+
encodeLocals: localSig => {
932+
localSig.WriteByte (0x07);
933+
localSig.WriteCompressedInteger (3);
934+
localSig.WriteByte (0x18);
935+
localSig.WriteByte (0x11);
936+
localSig.WriteCompressedInteger (CodedIndex.TypeDefOrRefOrSpec (_jniObjectReferenceRef));
937+
EncodeGenericValueTypeInst (localSig, _readOnlySpanOpenRef, _jniNativeMethodRef);
938+
});
939+
}
940+
941+
void AddUnmanagedCallersOnlyAttribute (MethodDefinitionHandle handle)
942+
{
943+
_pe.Metadata.AddCustomAttribute (handle, _ucoAttrCtorRef, _ucoAttrBlobHandle);
944+
}
945+
946946
void EmitTypeMapAttribute (TypeMapAttributeData entry)
947947
{
948948
var ctorRef = entry.IsUnconditional ? _typeMapAttrCtorRef2Arg : _typeMapAttrCtorRef3Arg;

src/Microsoft.Android.Sdk.TrimmableTypeMap/Scanner/AssemblyIndex.cs

Lines changed: 47 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -176,18 +176,18 @@ bool ImplementsJniNameProviderAttribute (CustomAttribute ca)
176176
if (ca.Constructor.Kind != HandleKind.MethodDefinition) {
177177
return false;
178178
}
179-
var methodDef = Reader.GetMethodDefinition ((MethodDefinitionHandle) ca.Constructor);
179+
var methodDef = Reader.GetMethodDefinition ((MethodDefinitionHandle)ca.Constructor);
180180
var typeDef = Reader.GetTypeDefinition (methodDef.GetDeclaringType ());
181181
foreach (var implHandle in typeDef.GetInterfaceImplementations ()) {
182182
var impl = Reader.GetInterfaceImplementation (implHandle);
183183
if (impl.Interface.Kind == HandleKind.TypeReference) {
184-
var typeRef = Reader.GetTypeReference ((TypeReferenceHandle) impl.Interface);
184+
var typeRef = Reader.GetTypeReference ((TypeReferenceHandle)impl.Interface);
185185
if (Reader.GetString (typeRef.Name) == "IJniNameProviderAttribute" &&
186186
Reader.GetString (typeRef.Namespace) == "Java.Interop") {
187187
return true;
188188
}
189189
} else if (impl.Interface.Kind == HandleKind.TypeDefinition) {
190-
var ifaceDef = Reader.GetTypeDefinition ((TypeDefinitionHandle) impl.Interface);
190+
var ifaceDef = Reader.GetTypeDefinition ((TypeDefinitionHandle)impl.Interface);
191191
if (Reader.GetString (ifaceDef.Name) == "IJniNameProviderAttribute" &&
192192
Reader.GetString (ifaceDef.Namespace) == "Java.Interop") {
193193
return true;
@@ -200,13 +200,13 @@ bool ImplementsJniNameProviderAttribute (CustomAttribute ca)
200200
internal static string? GetCustomAttributeName (CustomAttribute ca, MetadataReader reader)
201201
{
202202
if (ca.Constructor.Kind == HandleKind.MemberReference) {
203-
var memberRef = reader.GetMemberReference ((MemberReferenceHandle) ca.Constructor);
203+
var memberRef = reader.GetMemberReference ((MemberReferenceHandle)ca.Constructor);
204204
if (memberRef.Parent.Kind == HandleKind.TypeReference) {
205-
var typeRef = reader.GetTypeReference ((TypeReferenceHandle) memberRef.Parent);
205+
var typeRef = reader.GetTypeReference ((TypeReferenceHandle)memberRef.Parent);
206206
return reader.GetString (typeRef.Name);
207207
}
208208
} else if (ca.Constructor.Kind == HandleKind.MethodDefinition) {
209-
var methodDef = reader.GetMethodDefinition ((MethodDefinitionHandle) ca.Constructor);
209+
var methodDef = reader.GetMethodDefinition ((MethodDefinitionHandle)ca.Constructor);
210210
var declaringType = reader.GetTypeDefinition (methodDef.GetDeclaringType ());
211211
return reader.GetString (declaringType.Name);
212212
}
@@ -232,13 +232,13 @@ RegisterInfo ParseRegisterInfo (CustomAttributeValue<string> value)
232232
bool doNotGenerateAcw = false;
233233

234234
if (value.FixedArguments.Length > 0) {
235-
jniName = (string?) value.FixedArguments [0].Value ?? "";
235+
jniName = (string?)value.FixedArguments [0].Value ?? "";
236236
}
237237
if (value.FixedArguments.Length > 1) {
238-
signature = (string?) value.FixedArguments [1].Value;
238+
signature = (string?)value.FixedArguments [1].Value;
239239
}
240240
if (value.FixedArguments.Length > 2) {
241-
connector = (string?) value.FixedArguments [2].Value;
241+
connector = (string?)value.FixedArguments [2].Value;
242242
}
243243

244244
if (TryGetNamedArgument<bool> (value, "DoNotGenerateAcw", out var doNotGenerateAcwValue)) {
@@ -370,44 +370,44 @@ internal void ScanAssemblyAttributes (AssemblyManifestInfo info)
370370
var (name, props) = ParseNameAndProperties (ca);
371371

372372
switch (attrName) {
373-
case "PermissionAttribute":
374-
info.Permissions.Add (new PermissionInfo { Name = name, Properties = props });
375-
break;
376-
case "PermissionGroupAttribute":
377-
info.PermissionGroups.Add (new PermissionGroupInfo { Name = name, Properties = props });
378-
break;
379-
case "PermissionTreeAttribute":
380-
info.PermissionTrees.Add (new PermissionTreeInfo { Name = name, Properties = props });
381-
break;
382-
case "UsesPermissionAttribute":
383-
info.UsesPermissions.Add (CreateUsesPermissionInfo (name, props));
384-
break;
385-
case "UsesFeatureAttribute":
386-
info.UsesFeatures.Add (CreateUsesFeatureInfo (name, props));
387-
break;
388-
case "UsesLibraryAttribute":
389-
info.UsesLibraries.Add (CreateUsesLibraryInfo (name, props));
390-
break;
391-
case "UsesConfigurationAttribute":
392-
info.UsesConfigurations.Add (CreateUsesConfigurationInfo (props));
393-
break;
394-
case "MetaDataAttribute":
395-
info.MetaData.Add (CreateMetaDataInfo (name, props));
396-
break;
397-
case "PropertyAttribute":
398-
info.Properties.Add (CreatePropertyInfo (name, props));
399-
break;
400-
case "SupportsGLTextureAttribute":
401-
if (name.Length > 0) {
402-
info.SupportsGLTextures.Add (new SupportsGLTextureInfo { Name = name });
403-
}
404-
break;
405-
case "ApplicationAttribute":
406-
info.ApplicationProperties ??= new Dictionary<string, object?> (StringComparer.Ordinal);
407-
foreach (var kvp in props) {
408-
info.ApplicationProperties [kvp.Key] = kvp.Value;
409-
}
410-
break;
373+
case "PermissionAttribute":
374+
info.Permissions.Add (new PermissionInfo { Name = name, Properties = props });
375+
break;
376+
case "PermissionGroupAttribute":
377+
info.PermissionGroups.Add (new PermissionGroupInfo { Name = name, Properties = props });
378+
break;
379+
case "PermissionTreeAttribute":
380+
info.PermissionTrees.Add (new PermissionTreeInfo { Name = name, Properties = props });
381+
break;
382+
case "UsesPermissionAttribute":
383+
info.UsesPermissions.Add (CreateUsesPermissionInfo (name, props));
384+
break;
385+
case "UsesFeatureAttribute":
386+
info.UsesFeatures.Add (CreateUsesFeatureInfo (name, props));
387+
break;
388+
case "UsesLibraryAttribute":
389+
info.UsesLibraries.Add (CreateUsesLibraryInfo (name, props));
390+
break;
391+
case "UsesConfigurationAttribute":
392+
info.UsesConfigurations.Add (CreateUsesConfigurationInfo (props));
393+
break;
394+
case "MetaDataAttribute":
395+
info.MetaData.Add (CreateMetaDataInfo (name, props));
396+
break;
397+
case "PropertyAttribute":
398+
info.Properties.Add (CreatePropertyInfo (name, props));
399+
break;
400+
case "SupportsGLTextureAttribute":
401+
if (name.Length > 0) {
402+
info.SupportsGLTextures.Add (new SupportsGLTextureInfo { Name = name });
403+
}
404+
break;
405+
case "ApplicationAttribute":
406+
info.ApplicationProperties ??= new Dictionary<string, object?> (StringComparer.Ordinal);
407+
foreach (var kvp in props) {
408+
info.ApplicationProperties [kvp.Key] = kvp.Value;
409+
}
410+
break;
411411
}
412412
}
413413
}

0 commit comments

Comments
 (0)