Browse Source

Update to Mono.Cecil 0.9.5 (with thread-safety fixes)

pull/252/merge
Daniel Grunwald 15 years ago
parent
commit
a56c314647
  1. 1
      Mono.Cecil/.gitignore
  2. 29
      Mono.Cecil/Mono.Cecil.PE/ByteBuffer.cs
  3. 3
      Mono.Cecil/Mono.Cecil.PE/ImageReader.cs
  4. 2
      Mono.Cecil/Mono.Cecil.nuspec
  5. 4
      Mono.Cecil/Mono.Cecil/AssemblyInfo.cs
  6. 32
      Mono.Cecil/Mono.Cecil/AssemblyReader.cs
  7. 14
      Mono.Cecil/Mono.Cecil/AssemblyWriter.cs
  8. 12
      Mono.Cecil/Mono.Cecil/BaseAssemblyResolver.cs
  9. 12
      Mono.Cecil/Mono.Cecil/MetadataResolver.cs
  10. 20
      Mono.Cecil/Mono.Cecil/ModuleDefinition.cs
  11. 9
      Mono.Cecil/Mono.Cecil/ParameterDefinition.cs
  12. 8
      Mono.Cecil/Mono/Empty.cs
  13. 9
      Mono.Cecil/Test/Mono.Cecil.Tests/FieldTests.cs
  14. 20
      Mono.Cecil/Test/Mono.Cecil.Tests/SecurityDeclarationTests.cs
  15. BIN
      Mono.Cecil/Test/Resources/assemblies/empty-decsec-att.dll
  16. 4
      Mono.Cecil/rocks/Mono.Cecil.Rocks/AssemblyInfo.cs
  17. 4
      Mono.Cecil/symbols/mdb/Mono.Cecil.Mdb/AssemblyInfo.cs
  18. 3
      Mono.Cecil/symbols/pdb/Mono.Cecil.Pdb.csproj
  19. 4
      Mono.Cecil/symbols/pdb/Mono.Cecil.Pdb/AssemblyInfo.cs

1
Mono.Cecil/.gitignore vendored

@ -6,3 +6,4 @@ obj @@ -6,3 +6,4 @@ obj
*.userprefs
*.xml
*.nupkg
**/test-results/*

29
Mono.Cecil/Mono.Cecil.PE/ByteBuffer.cs

@ -140,11 +140,16 @@ namespace Mono.Cecil.PE { @@ -140,11 +140,16 @@ namespace Mono.Cecil.PE {
public int ReadCompressedInt32 ()
{
var value = (int) ReadCompressedUInt32 ();
return (value & 1) != 0
? -(value >> 1)
: value >> 1;
var value = (int) (ReadCompressedUInt32 () >> 1);
if ((value & 1) == 0)
return value;
if (value < 0x40)
return value - 0x40;
if (value < 0x2000)
return value - 0x2000;
if (value < 0x10000000)
return value - 0x10000000;
return value - 0x20000000;
}
public float ReadSingle ()
@ -267,7 +272,19 @@ namespace Mono.Cecil.PE { @@ -267,7 +272,19 @@ namespace Mono.Cecil.PE {
public void WriteCompressedInt32 (int value)
{
WriteCompressedUInt32 ((uint) ((value < 0) ? ((-value) << 1) | 1 : value << 1));
if (value >= 0) {
WriteCompressedUInt32 ((uint) (value << 1));
return;
}
if (value > -0x40)
value = 0x40 + value;
else if (value >= -0x2000)
value = 0x2000 + value;
else if (value >= -0x20000000)
value = 0x20000000 + value;
WriteCompressedUInt32 ((uint) ((value << 1) | 1));
}
public void WriteBytes (byte [] bytes)

3
Mono.Cecil/Mono.Cecil.PE/ImageReader.cs

@ -276,9 +276,6 @@ namespace Mono.Cecil.PE { @@ -276,9 +276,6 @@ namespace Mono.Cecil.PE {
sections [i] = section;
if (section.Name == ".reloc")
continue;
ReadSectionData (section);
}

2
Mono.Cecil/Mono.Cecil.nuspec

@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
<package xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<metadata xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<id>Mono.Cecil</id>
<version>0.9.4.1</version>
<version>0.9.5.0</version>
<title>Mono.Cecil</title>
<authors>Jb Evain</authors>
<owners>Jb Evain</owners>

4
Mono.Cecil/Mono.Cecil/AssemblyInfo.cs

@ -38,9 +38,9 @@ using System.Runtime.InteropServices; @@ -38,9 +38,9 @@ using System.Runtime.InteropServices;
[assembly: Guid ("fd225bb4-fa53-44b2-a6db-85f5e48dcb54")]
[assembly: AssemblyVersion ("0.9.4.0")]
[assembly: AssemblyVersion ("0.9.5.0")]
#if !CF
[assembly: AssemblyFileVersion ("0.9.4.0")]
[assembly: AssemblyFileVersion ("0.9.5.0")]
#endif
[assembly: InternalsVisibleTo ("Mono.Cecil.Pdb, PublicKey=002400000480000094000000060200000024000052534131000400000100010079159977d2d03a8e6bea7a2e74e8d1afcc93e8851974952bb480a12c9134474d04062447c37e0e68c080536fcf3c3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fddafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef0065d016df")]

32
Mono.Cecil/Mono.Cecil/AssemblyReader.cs

@ -703,9 +703,24 @@ namespace Mono.Cecil { @@ -703,9 +703,24 @@ namespace Mono.Cecil {
types.Add (type);
}
if (image.HasTable (Table.MethodPtr) || image.HasTable (Table.FieldPtr))
CompleteTypes ();
return types;
}
void CompleteTypes ()
{
var types = metadata.Types;
for (int i = 0; i < types.Length; i++) {
var type = types [i];
InitializeCollection (type.Fields);
InitializeCollection (type.Methods);
}
}
void InitializeTypeDefinitions ()
{
if (metadata.Types != null)
@ -2560,10 +2575,8 @@ namespace Mono.Cecil { @@ -2560,10 +2575,8 @@ namespace Mono.Cecil {
scope = metadata.AssemblyReferences [(int) token.RID - 1];
break;
case TokenType.File:
InitializeModuleReferences ();
scope = GetModuleReferenceFromFile (token);
if (scope == null)
throw new NotSupportedException ();
break;
default:
throw new NotSupportedException ();
@ -2582,16 +2595,15 @@ namespace Mono.Cecil { @@ -2582,16 +2595,15 @@ namespace Mono.Cecil {
var file_name = ReadString ();
var modules = module.ModuleReferences;
ModuleReference reference = null;
ModuleReference reference;
for (int i = 0; i < modules.Count; i++) {
var module_reference = modules [i];
if (module_reference.Name != file_name)
continue;
reference = module_reference;
break;
reference = modules [i];
if (reference.Name == file_name)
return reference;
}
reference = new ModuleReference (file_name);
modules.Add (reference);
return reference;
}

14
Mono.Cecil/Mono.Cecil/AssemblyWriter.cs

@ -935,11 +935,13 @@ namespace Mono.Cecil { @@ -935,11 +935,13 @@ namespace Mono.Cecil {
? reference.PublicKeyToken
: reference.PublicKey;
var version = reference.Version;
var rid = table.AddRow (new AssemblyRefRow (
(ushort) reference.Version.Major,
(ushort) reference.Version.Minor,
(ushort) reference.Version.Build,
(ushort) reference.Version.Revision,
(ushort) version.Major,
(ushort) version.Minor,
(ushort) version.Build,
(ushort) version.Revision,
reference.Attributes,
GetBlobIndex (key_or_token),
GetStringIndex (reference.Name),
@ -2448,12 +2450,12 @@ namespace Mono.Cecil { @@ -2448,12 +2450,12 @@ namespace Mono.Cecil {
var count = GetNamedArgumentCount (attribute);
if (count == 0) {
WriteCompressedUInt32 (0); // length
WriteCompressedUInt32 (1); // length
WriteCompressedUInt32 (0); // count
return;
}
var buffer = new SignatureWriter (metadata);
var buffer = new SignatureWriter (metadata);
buffer.WriteCompressedUInt32 ((uint) count);
buffer.WriteICustomAttributeNamedArguments (attribute);

12
Mono.Cecil/Mono.Cecil/BaseAssemblyResolver.cs

@ -51,6 +51,9 @@ namespace Mono.Cecil { @@ -51,6 +51,9 @@ namespace Mono.Cecil {
}
}
#if !SILVERLIGHT && !CF
[Serializable]
#endif
public class AssemblyResolutionException : FileNotFoundException {
readonly AssemblyNameReference reference;
@ -64,6 +67,15 @@ namespace Mono.Cecil { @@ -64,6 +67,15 @@ namespace Mono.Cecil {
{
this.reference = reference;
}
#if !SILVERLIGHT && !CF
protected AssemblyResolutionException (
System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context)
: base (info, context)
{
}
#endif
}
public abstract class BaseAssemblyResolver : IAssemblyResolver {

12
Mono.Cecil/Mono.Cecil/MetadataResolver.cs

@ -41,6 +41,9 @@ namespace Mono.Cecil { @@ -41,6 +41,9 @@ namespace Mono.Cecil {
AssemblyDefinition Resolve (string fullName, ReaderParameters parameters);
}
#if !SILVERLIGHT && !CF
[Serializable]
#endif
public class ResolutionException : Exception {
readonly MemberReference member;
@ -54,6 +57,15 @@ namespace Mono.Cecil { @@ -54,6 +57,15 @@ namespace Mono.Cecil {
{
this.member = member;
}
#if !SILVERLIGHT && !CF
protected ResolutionException (
System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context)
: base (info, context)
{
}
#endif
}
static class MetadataResolver {

20
Mono.Cecil/Mono.Cecil/ModuleDefinition.cs

@ -506,6 +506,26 @@ namespace Mono.Cecil { @@ -506,6 +506,26 @@ namespace Mono.Cecil {
return ((TypeDefinitionCollection) this.Types).GetType (@namespace ?? string.Empty, name);
}
public IEnumerable<TypeDefinition> GetTypes ()
{
return GetTypes (Types);
}
static IEnumerable<TypeDefinition> GetTypes (Collection<TypeDefinition> types)
{
for (int i = 0; i < types.Count; i++) {
var type = types [i];
yield return type;
if (!type.HasNestedTypes)
continue;
foreach (var nested in GetTypes (type.NestedTypes))
yield return nested;
}
}
static void CheckFullName (string fullName)
{
if (fullName == null)

9
Mono.Cecil/Mono.Cecil/ParameterDefinition.cs

@ -49,6 +49,15 @@ namespace Mono.Cecil { @@ -49,6 +49,15 @@ namespace Mono.Cecil {
get { return method; }
}
public int Sequence {
get {
if (method == null)
return -1;
return method.HasThis ? index + 1 : index;
}
}
public bool HasConstant {
get {
this.ResolveConstant (ref constant, parameter_type.Module);

8
Mono.Cecil/Mono/Empty.cs

@ -26,9 +26,7 @@ @@ -26,9 +26,7 @@
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
using System;
using System.Collections;
using System.Collections.Generic;
using Mono.Collections.Generic;
namespace Mono {
@ -47,9 +45,9 @@ namespace Mono.Cecil { @@ -47,9 +45,9 @@ namespace Mono.Cecil {
return self == null || self.Length == 0;
}
public static bool IsNullOrEmpty<T> (this ICollection<T> self)
public static bool IsNullOrEmpty<T> (this Collection<T> self)
{
return self == null || self.Count == 0;
return self == null || self.size == 0;
}
}
}

9
Mono.Cecil/Test/Mono.Cecil.Tests/FieldTests.cs

@ -163,6 +163,15 @@ namespace Mono.Cecil.Tests { @@ -163,6 +163,15 @@ namespace Mono.Cecil.Tests {
Assert.IsTrue (array.Dimensions [1].IsSized);
Assert.AreEqual (0, array.Dimensions [1].LowerBound);
Assert.AreEqual (null, array.Dimensions [1].UpperBound);
var rank_one_low_bound_m1 = types.GetField ("rank_one_low_bound_m1");
array = rank_one_low_bound_m1.FieldType as ArrayType;
Assert.IsNotNull (array);
Assert.AreEqual (1, array.Rank);
Assert.IsTrue (array.Dimensions [0].IsSized);
Assert.AreEqual (-1, array.Dimensions [0].LowerBound);
Assert.AreEqual (4, array.Dimensions [0].UpperBound);
}
[TestCSharp ("Fields.cs")]

20
Mono.Cecil/Test/Mono.Cecil.Tests/SecurityDeclarationTests.cs

@ -88,6 +88,26 @@ namespace Mono.Cecil.Tests { @@ -88,6 +88,26 @@ namespace Mono.Cecil.Tests {
Assert.AreEqual (permission_set, argument.Value);
}
[TestModule ("empty-decsec-att.dll")]
public void SecurityDeclarationWithoutAttributes (ModuleDefinition module)
{
var type = module.GetType ("TestSecurityAction.ModalUITypeEditor");
var method = type.GetMethod ("GetEditStyle");
Assert.IsNotNull (method);
Assert.AreEqual (1, method.SecurityDeclarations.Count);
var declaration = method.SecurityDeclarations [0];
Assert.AreEqual (SecurityAction.LinkDemand, declaration.Action);
Assert.AreEqual (1, declaration.SecurityAttributes.Count);
var attribute = declaration.SecurityAttributes [0];
Assert.AreEqual ("System.Security.Permissions.SecurityPermissionAttribute", attribute.AttributeType.FullName);
Assert.AreEqual (0, attribute.Fields.Count);
Assert.AreEqual (0, attribute.Properties.Count);
}
[TestModule ("decsec-att.dll")]
public void AttributeSecurityDeclaration (ModuleDefinition module)
{

BIN
Mono.Cecil/Test/Resources/assemblies/empty-decsec-att.dll

Binary file not shown.

4
Mono.Cecil/rocks/Mono.Cecil.Rocks/AssemblyInfo.cs

@ -37,5 +37,5 @@ using System.Runtime.InteropServices; @@ -37,5 +37,5 @@ using System.Runtime.InteropServices;
[assembly: CLSCompliant (false)]
[assembly: ComVisible (false)]
[assembly: AssemblyVersion ("0.9.4.0")]
[assembly: AssemblyFileVersion ("0.9.4.0")]
[assembly: AssemblyVersion ("0.9.5.0")]
[assembly: AssemblyFileVersion ("0.9.5.0")]

4
Mono.Cecil/symbols/mdb/Mono.Cecil.Mdb/AssemblyInfo.cs

@ -37,5 +37,5 @@ using System.Runtime.InteropServices; @@ -37,5 +37,5 @@ using System.Runtime.InteropServices;
[assembly: CLSCompliant (false)]
[assembly: ComVisible (false)]
[assembly: AssemblyVersion ("0.9.4.0")]
[assembly: AssemblyFileVersion ("0.9.4.0")]
[assembly: AssemblyVersion ("0.9.5.0")]
[assembly: AssemblyFileVersion ("0.9.5.0")]

3
Mono.Cecil/symbols/pdb/Mono.Cecil.Pdb.csproj

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">net_4_0_Debug</Configuration>
@ -13,7 +13,6 @@ @@ -13,7 +13,6 @@
<FileAlignment>512</FileAlignment>
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>..\..\mono.snk</AssemblyOriginatorKeyFile>
<NoWarn>0649</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'net_2_0_Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>

4
Mono.Cecil/symbols/pdb/Mono.Cecil.Pdb/AssemblyInfo.cs

@ -37,5 +37,5 @@ using System.Runtime.InteropServices; @@ -37,5 +37,5 @@ using System.Runtime.InteropServices;
[assembly: CLSCompliant (false)]
[assembly: ComVisible (false)]
[assembly: AssemblyVersion ("0.9.4.0")]
[assembly: AssemblyFileVersion ("0.9.4.0")]
[assembly: AssemblyVersion ("0.9.5.0")]
[assembly: AssemblyFileVersion ("0.9.5.0")]

Loading…
Cancel
Save