[mtouch/mmp] Share code between link contexts.

This commit is contained in:
Rolf Bjarne Kvinge 2017-01-18 09:22:19 +01:00
Родитель 00b1c09acb
Коммит b4cc60572b
10 изменённых файлов: 47 добавлений и 49 удалений

Просмотреть файл

@ -0,0 +1,34 @@
using System.Collections.Generic;
using Mono.Cecil;
using Mono.Linker;
namespace Xamarin.Tuner
{
public class DerivedLinkContext : LinkContext
{
Dictionary<string, MemberReference> required_symbols;
List<MethodDefinition> marshal_exception_pinvokes;
public Dictionary<string, MemberReference> RequiredSymbols {
get {
if (required_symbols == null)
required_symbols = new Dictionary<string, MemberReference> ();
return required_symbols;
}
}
public List<MethodDefinition> MarshalExceptionPInvokes {
get {
if (marshal_exception_pinvokes == null)
marshal_exception_pinvokes = new List<MethodDefinition> ();
return marshal_exception_pinvokes;
}
}
public DerivedLinkContext (Pipeline pipeline, AssemblyResolver resolver)
: base (pipeline, resolver)
{
}
}
}

Просмотреть файл

@ -9,12 +9,6 @@ using Mono.Linker;
using Mono.Linker.Steps;
using Mono.Tuner;
#if MONOMAC
using DerivedLinkContext = MonoMac.Tuner.MonoMacLinkContext;
#else
using DerivedLinkContext = MonoTouch.Tuner.MonoTouchLinkContext;
#endif
namespace Xamarin.Linker.Steps {
// XML definition files have their limits, i.e. they are good to keep stuff around unconditionnally

Просмотреть файл

@ -8,12 +8,7 @@ using Mono.Tuner;
using Xamarin.Bundler;
using Xamarin.Linker;
#if MONOMAC
using DerivedLinkContext = MonoMac.Tuner.MonoMacLinkContext;
#else
using DerivedLinkContext = MonoTouch.Tuner.MonoTouchLinkContext;
#endif
using Xamarin.Tuner;
namespace MonoTouch.Tuner
{

Просмотреть файл

@ -7,12 +7,6 @@ using Mono.Linker.Steps;
using Mono.Tuner;
using Xamarin.Linker;
#if MONOMAC
using DerivedLinkContext = MonoMac.Tuner.MonoMacLinkContext;
#else
using DerivedLinkContext = MonoTouch.Tuner.MonoTouchLinkContext;
#endif
namespace MonoTouch.Tuner {
//

Просмотреть файл

@ -117,6 +117,7 @@ mmp_sources = \
$(TOP)/tools/common/Target.cs \
$(TOP)/tools/common/Application.cs \
$(TOP)/tools/common/Assembly.cs \
$(TOP)/tools/common/DerivedLinkContext.cs \
$(TOP)/src/Foundation/ConnectAttribute.cs \
$(TOP)/src/Foundation/ExportAttribute.cs \
$(TOP)/src/ObjCRuntime/ArgumentSemantic.cs \

Просмотреть файл

@ -11,6 +11,7 @@ using MonoTouch.Tuner;
using Xamarin.Bundler;
using Xamarin.Linker;
using Xamarin.Linker.Steps;
using Xamarin.Tuner;
using Xamarin.Utils;
using Mono.Cecil;
@ -54,11 +55,9 @@ namespace MonoMac.Tuner {
}
}
public class MonoMacLinkContext : LinkContext {
public class MonoMacLinkContext : DerivedLinkContext {
Dictionary<string, List<MethodDefinition>> pinvokes = new Dictionary<string, List<MethodDefinition>> ();
public Dictionary<string, MemberReference> RequiredSymbols = new Dictionary<string, MemberReference> ();
List<MethodDefinition> marshal_exception_pinvokes;
public MonoMacLinkContext (Pipeline pipeline, AssemblyResolver resolver) : base (pipeline, resolver)
{
@ -67,14 +66,6 @@ namespace MonoMac.Tuner {
public IDictionary<string, List<MethodDefinition>> PInvokeModules {
get { return pinvokes; }
}
public List<MethodDefinition> MarshalExceptionPInvokes {
get {
if (marshal_exception_pinvokes == null)
marshal_exception_pinvokes = new List<MethodDefinition> ();
return marshal_exception_pinvokes;
}
}
}
class Linker {

Просмотреть файл

@ -292,6 +292,9 @@
<Compile Include="..\common\Target.cs">
<Link>external\Target.cs</Link>
</Compile>
<Compile Include="..\common\DerivedLinkContext.cs">
<Link>external\DerivedLinkContext.cs</Link>
</Compile>
<Compile Include="..\..\src\ObjCRuntime\Registrar.core.cs">
<Link>external\Registrar.core.cs</Link>
</Compile>

Просмотреть файл

@ -124,6 +124,7 @@ MTOUCH_SOURCES = \
BitcodeConverter.cs \
$(TOP)/tools/common/Application.cs \
$(TOP)/tools/common/Assembly.cs \
$(TOP)/tools/common/DerivedLinkContext.cs \
$(TOP)/tools/common/Target.cs \
$(TOP)/tools/common/CompilerFlags.cs \
$(TOP)/src/Foundation/ExportAttribute.cs \

Просмотреть файл

@ -12,6 +12,7 @@ using Mono.Tuner;
using Xamarin.Bundler;
using Xamarin.Linker;
using Xamarin.Linker.Steps;
using Xamarin.Tuner;
namespace MonoTouch.Tuner {
@ -223,26 +224,7 @@ namespace MonoTouch.Tuner {
}
}
public class MonoTouchLinkContext : LinkContext {
Dictionary<string, MemberReference> required_symbols;
List<MethodDefinition> marshal_exception_pinvokes;
public Dictionary<string, MemberReference> RequiredSymbols {
get {
if (required_symbols == null)
required_symbols = new Dictionary<string, MemberReference> ();
return required_symbols;
}
}
public List<MethodDefinition> MarshalExceptionPInvokes {
get {
if (marshal_exception_pinvokes == null)
marshal_exception_pinvokes = new List<MethodDefinition> ();
return marshal_exception_pinvokes;
}
}
public class MonoTouchLinkContext : DerivedLinkContext {
public MonoTouchLinkContext (Pipeline pipeline, AssemblyResolver resolver)
: base (pipeline, resolver)
{

Просмотреть файл

@ -262,6 +262,9 @@
<Compile Include="..\common\Target.cs">
<Link>external\Target.cs</Link>
</Compile>
<Compile Include="..\common\DerivedLinkContext.cs">
<Link>external\DerivedLinkContext.cs</Link>
</Compile>
<Compile Include="..\common\Frameworks.cs">
<Link>external\Frameworks.cs</Link>
</Compile>