Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/cecil.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Köplinger <alex.koeplinger@outlook.com>2016-12-14 22:14:08 +0300
committerAlexander Köplinger <alex.koeplinger@outlook.com>2016-12-14 22:14:08 +0300
commit853320a1c5afe5f8bec3e5a2fd398e01545b7f5a (patch)
tree5f5bd8e2bc72851564ee9dd5da456c18c43574af
parent74ab08331c603d45932fa825c49329e124c2c77a (diff)
parent610c96b1db2eafb20f97fb9b37662b35c93bde6c (diff)
Merge remote-tracking branch 'upstream/master'
-rw-r--r--Mono.Cecil.Cil/PortablePdb.cs2
-rw-r--r--Mono.Cecil/AssemblyReader.cs11
-rw-r--r--Mono.Cecil/BaseAssemblyResolver.cs13
-rw-r--r--Mono.Cecil/MetadataResolver.cs3
-rw-r--r--Mono.Cecil/ModuleDefinition.cs8
-rw-r--r--rocks/Mono.Cecil.Rocks/MethodBodyRocks.cs23
6 files changed, 43 insertions, 17 deletions
diff --git a/Mono.Cecil.Cil/PortablePdb.cs b/Mono.Cecil.Cil/PortablePdb.cs
index b799fc8..a6859dc 100644
--- a/Mono.Cecil.Cil/PortablePdb.cs
+++ b/Mono.Cecil.Cil/PortablePdb.cs
@@ -204,7 +204,7 @@ namespace Mono.Cecil.Cil {
directory = new ImageDebugDirectory () {
MajorVersion = 256,
- MinorVersion = 20577,
+ MinorVersion = 20557,
Type = 2,
};
diff --git a/Mono.Cecil/AssemblyReader.cs b/Mono.Cecil/AssemblyReader.cs
index da9d5bc..5576ee0 100644
--- a/Mono.Cecil/AssemblyReader.cs
+++ b/Mono.Cecil/AssemblyReader.cs
@@ -2558,6 +2558,17 @@ namespace Mono.Cecil {
return (int) size;
}
+ public IEnumerable<CustomAttribute> GetCustomAttributes ()
+ {
+ InitializeTypeDefinitions ();
+
+ var length = image.TableHeap [Table.CustomAttribute].Length;
+ var custom_attributes = new Collection<CustomAttribute> ((int) length);
+ ReadCustomAttributeRange (new Range (1, length), custom_attributes);
+
+ return custom_attributes;
+ }
+
public byte [] ReadCustomAttributeBlob (uint signature)
{
return ReadBlob (signature);
diff --git a/Mono.Cecil/BaseAssemblyResolver.cs b/Mono.Cecil/BaseAssemblyResolver.cs
index 1ddf201..03499b0 100644
--- a/Mono.Cecil/BaseAssemblyResolver.cs
+++ b/Mono.Cecil/BaseAssemblyResolver.cs
@@ -83,19 +83,6 @@ namespace Mono.Cecil {
return directories;
}
- public virtual AssemblyDefinition Resolve (string fullName)
- {
- return Resolve (fullName, new ReaderParameters ());
- }
-
- public virtual AssemblyDefinition Resolve (string fullName, ReaderParameters parameters)
- {
- if (fullName == null)
- throw new ArgumentNullException ("fullName");
-
- return Resolve (AssemblyNameReference.Parse (fullName), parameters);
- }
-
public event AssemblyResolveEventHandler ResolveFailure;
protected BaseAssemblyResolver ()
diff --git a/Mono.Cecil/MetadataResolver.cs b/Mono.Cecil/MetadataResolver.cs
index 826756d..95b0e30 100644
--- a/Mono.Cecil/MetadataResolver.cs
+++ b/Mono.Cecil/MetadataResolver.cs
@@ -17,9 +17,6 @@ namespace Mono.Cecil {
public interface IAssemblyResolver : IDisposable {
AssemblyDefinition Resolve (AssemblyNameReference name);
AssemblyDefinition Resolve (AssemblyNameReference name, ReaderParameters parameters);
-
- AssemblyDefinition Resolve (string fullName);
- AssemblyDefinition Resolve (string fullName, ReaderParameters parameters);
}
public interface IMetadataResolver {
diff --git a/Mono.Cecil/ModuleDefinition.cs b/Mono.Cecil/ModuleDefinition.cs
index c7afdc1..0d799c8 100644
--- a/Mono.Cecil/ModuleDefinition.cs
+++ b/Mono.Cecil/ModuleDefinition.cs
@@ -661,6 +661,14 @@ namespace Mono.Cecil {
return Read (this, (_, reader) => reader.GetMemberReferences ());
}
+ public IEnumerable<CustomAttribute> GetCustomAttributes ()
+ {
+ if (!HasImage)
+ return Empty<CustomAttribute>.Array;
+
+ return Read (this, (_, reader) => reader.GetCustomAttributes ());
+ }
+
public TypeReference GetType (string fullName, bool runtimeName)
{
return runtimeName
diff --git a/rocks/Mono.Cecil.Rocks/MethodBodyRocks.cs b/rocks/Mono.Cecil.Rocks/MethodBodyRocks.cs
index 2ff43c3..dfdaece 100644
--- a/rocks/Mono.Cecil.Rocks/MethodBodyRocks.cs
+++ b/rocks/Mono.Cecil.Rocks/MethodBodyRocks.cs
@@ -174,6 +174,29 @@ namespace Mono.Cecil.Rocks {
instruction.Operand = null;
}
+ public static void Optimize (this MethodBody self)
+ {
+ if (self == null)
+ throw new ArgumentNullException ("self");
+
+ OptimizeLongs (self);
+ OptimizeMacros (self);
+ }
+
+ static void OptimizeLongs (this MethodBody self)
+ {
+ for (var i = 0; i < self.Instructions.Count; i++) {
+ var instruction = self.Instructions [i];
+ if (instruction.OpCode.Code != Code.Ldc_I8)
+ continue;
+ var l = (long)instruction.Operand;
+ if (l >= uint.MaxValue)
+ continue;
+ ExpandMacro (instruction, OpCodes.Ldc_I4, (uint)l);
+ self.Instructions.Insert (++i, Instruction.Create (OpCodes.Conv_I8));
+ }
+ }
+
public static void OptimizeMacros (this MethodBody self)
{
if (self == null)