Skip to content

Commit 965fd56

Browse files
committed
chore: share those Sets that are only modified during initialization
1 parent 1f30c1f commit 965fd56

File tree

4 files changed

+10
-4
lines changed

4 files changed

+10
-4
lines changed

src/OTAPI.UnifiedServerProcess.GlobalNetwork/Network/SyncHelper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ static void SendWorldEntities(this ServerContext server, int whoAmI) {
6060
}
6161
}
6262
for (int i = 0; i < Terraria.Main.maxProjectiles; i++) {
63-
if (server.Main.projectile[i].active && (server.Main.projPet[server.Main.projectile[i].type] || server.Main.projectile[i].netImportant)) {
63+
if (server.Main.projectile[i].active && (Main.projPet[server.Main.projectile[i].type] || server.Main.projectile[i].netImportant)) {
6464
server.NetMessage.TrySendData(MessageID.SyncProjectile, whoAmI, -1, null, i);
6565
}
6666
}

src/OTAPI.UnifiedServerProcess/Core/Analysis/StaticFieldModificationAnalysis/StaticFieldModificationAnalyzer.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,9 @@ public class StaticFieldModificationAnalyzer(ILogger logger,
4040
readonly ParameterFlowAnalyzer parameterFlowAnalyzer = parameterFlowAnalyzer;
4141
readonly ParamModificationAnalyzer paramModificationAnalyzer = paramModificationAnalyzer;
4242
readonly StaticFieldReferenceAnalyzer staticFieldReferenceAnalyzer = staticFieldReferenceAnalyzer;
43-
public FieldDefinition[] FetchModifiedFields(params MethodDefinition[] entryPoints) {
43+
public FieldDefinition[] FetchModifiedFields(MethodDefinition[] ignoredMethods, params MethodDefinition[] entryPoints) {
44+
HashSet<string> ignoredMethodSet = [.. ignoredMethods.Select(m => m.GetIdentifier())];
45+
4446
var workQueue = entryPoints.ToDictionary(m => m.GetIdentifier());
4547
var visited = new Dictionary<string, MethodDefinition>();
4648

@@ -66,6 +68,9 @@ out var addedCallees
6668

6769
foreach (var callee in addedCallees) {
6870
var calleeID = callee.GetIdentifier();
71+
if (ignoredMethodSet.Contains(calleeID)) {
72+
continue;
73+
}
6974
if (visited.ContainsKey(calleeID)) {
7075
continue;
7176
}

src/OTAPI.UnifiedServerProcess/Core/Infrastructure/CacheManager.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@ public class CacheManager(ILogger logger) : LoggedComponent(logger)
1111
public sealed override string Name => "CacheHelper";
1212
const string unmodifiedStaticFieldCacheFile = "UnmodifiedStaticField.AnalysisCache.txt";
1313
const string modifiedStaticFieldCacheFile = "ModifiedStaticField.AnalysisCache.txt";
14-
public string[] LoadUnmodifiedStaticFields(ModuleDefinition module, AnalyzerGroups analyzers, params MethodDefinition[] entryPoints) {
14+
public string[] LoadUnmodifiedStaticFields(ModuleDefinition module, AnalyzerGroups analyzers, MethodDefinition[] ignoredMethods, params MethodDefinition[] entryPoints) {
1515
if (File.Exists(unmodifiedStaticFieldCacheFile)) {
1616
var result = File.ReadAllLines(unmodifiedStaticFieldCacheFile);
1717
Info("Loaded cached data ({0}) from: UnmodifiedStaticField.AnalysisCache.txt", $"count: {result.Length}");
1818
return result;
1919
}
2020

21-
var fields = analyzers.StaticFieldModificationAnalyzer.FetchModifiedFields(entryPoints);
21+
var fields = analyzers.StaticFieldModificationAnalyzer.FetchModifiedFields(ignoredMethods, entryPoints);
2222
File.WriteAllLines(modifiedStaticFieldCacheFile, fields.Select(f => f.FullName));
2323

2424
HashSet<string> modifiedFields = [.. fields.Select(f => f.FullName)];

src/OTAPI.UnifiedServerProcess/Core/PatchingLogic.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public static void Patch(ILogger logger, ModuleDefinition module) {
2121
var main = module.GetType("Terraria.Main");
2222

2323
var unmodifiedStaticFields = cacheHelper.LoadUnmodifiedStaticFields(module, analyzers,
24+
[main.Method("Initialize_TileAndNPCData1"), main.Method("Initialize_TileAndNPCData2")],
2425
main.Method(".ctor"),
2526
main.Method("DedServ"));
2627

0 commit comments

Comments
 (0)