Skip to content

Commit e9f21bb

Browse files
author
kkin
committed
* strip aot error
1 parent 8f215bb commit e9f21bb

File tree

5 files changed

+37
-3
lines changed

5 files changed

+37
-3
lines changed

BindGenerater/Generater/AOTGenerater.cs

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,17 @@ public static class AOTGenerater
1414
static CodeWriter NinjaWriter;
1515
static CodeWriter ModuleRegisterWriter;
1616
static Dictionary<string, string> AOTDic = new Dictionary<string, string>();
17+
static Dictionary<string, List<string>> StrpDic = new Dictionary<string, List<string>>();
1718

1819
static string WorkDir;
1920
static string ManagedDir;
2021
static string AotDir;
21-
public static void Init(string workDir)
22+
public static void Init(string workDir, Dictionary<string, List<string>> stripDic)
2223
{
2324
WorkDir = workDir;
25+
if (stripDic == null)
26+
stripDic = new Dictionary<string, List<string>>();
27+
StrpDic = stripDic;
2428
ManagedDir = Path.Combine(workDir, "Managed");
2529
NinjaWriter = new CodeWriter(File.CreateText(Path.Combine(ManagedDir, "build.ninja")));
2630
NinjaWriter._eol = "";
@@ -30,11 +34,36 @@ public static void Init(string workDir)
3034
public static void AddAOTAssembly(string file)
3135
{
3236
var assembly = AssemblyDefinition.ReadAssembly(file);
37+
var tmp = file + ".tmp";
38+
if (File.Exists(tmp))
39+
File.Delete(tmp);
3340

3441
AOTDic[Path.GetFileName(file)] = assembly.Name.Name.Replace(".","_").Replace("-","_");
3542

43+
var fName = Path.GetFileName(file);
44+
if(StrpDic.TryGetValue(fName,out var sList))
45+
{
46+
foreach(var strips in sList)
47+
{
48+
var info = strips.Split(':');
49+
var type = assembly.MainModule.GetType(info[0]);
50+
var method = type?.Methods.FirstOrDefault(m => m.Name == info[1]);
51+
if (method != null)
52+
type?.Methods.Remove(method);
53+
}
54+
55+
assembly.Write(tmp);
56+
}
57+
3658
assembly.Dispose();
59+
60+
if (File.Exists(tmp))
61+
{
62+
File.Copy(tmp, file, true);
63+
File.Delete(tmp);
64+
}
3765
}
66+
3867
public static void End()
3968
{
4069
using (new CS(NinjaWriter))

BindGenerater/Program.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class BindOptions
1919
public string ScriptEngineDir;
2020
public HashSet<string> AdapterSet;
2121
public HashSet<string> InterpSet;
22+
public Dictionary<string, List<string>> StripDic;
2223
}
2324
public enum BindTarget
2425
{
@@ -79,7 +80,7 @@ static void StartBinder(string[] args)
7980
Binder.Init(Path.Combine(adapterDir, "glue"));
8081
CSCGenerater.Init(ToolsetPath, adapterDir, managedDir, options.AdapterSet);
8182
CBinder.Init(Path.Combine(options.ScriptEngineDir, "generated"));
82-
AOTGenerater.Init(options.ScriptEngineDir);
83+
AOTGenerater.Init(options.ScriptEngineDir, options.StripDic);
8384

8485

8586
foreach (var filePath in Directory.GetFiles(managedDir))

ScriptEngine/Tools/Binder.exe

1 KB
Binary file not shown.

ScriptEngine/Tools/Binder.pdb

4 KB
Binary file not shown.

ScriptEngine/Tools/config.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
{
22
"ScriptEngineDir": "..",
33
"AdapterSet": [ "AdapterTest.dll" ],
4-
"InterpSet": ["TestEntry.dll","Code.dll"]
4+
"InterpSet": ["TestEntry.dll","Code.dll"],
5+
"StripDic":
6+
{
7+
"UnityEngine.CoreModule.dll":["Unity.Collections.LowLevel.Unsafe.UnsafeUtility:EnumEquals"]
8+
}
59
}

0 commit comments

Comments
 (0)