新增跳转缓存

This commit is contained in:
2025-10-21 10:26:08 +08:00
parent 58f3d1067c
commit 7eb53fc3c5
4 changed files with 83 additions and 23 deletions

View File

@@ -63,8 +63,18 @@ namespace Convention.RScript
}
}
// 这里需要根据 ExpressionParser.SerializableParser 的结构来序列化
// writer.Write(...); // CompileParser 的序列化
// 序列化 JumpPointerCache 数组
writer.Write(data.JumpPointerCache?.Length ?? 0);
if (data.JumpPointerCache != null)
{
foreach (var jpItem in data.JumpPointerCache)
{
writer.Write(jpItem.Item1.Item1);
writer.Write(jpItem.Item1.Item2);
writer.Write(jpItem.Item2.Item1);
writer.Write(jpItem.Item2.Item2);
}
}
return stream.ToArray();
}
@@ -141,8 +151,20 @@ namespace Convention.RScript
}
}
// 反序列化 CompileParser
// result.CompileParser = ...; // 根据具体结构实现
// 反序列化 JumpPointerCache 数组
int jumpPointerCacheLength = reader.ReadInt32();
if (jumpPointerCacheLength > 0)
{
result.JumpPointerCache = new Tuple<Tuple<int, int>, Tuple<int, int>>[jumpPointerCacheLength];
for(int i=0;i<jumpPointerCacheLength;i++)
{
int x= reader.ReadInt32();
int y= reader.ReadInt32();
int z= reader.ReadInt32();
int w= reader.ReadInt32();
result.JumpPointerCache[i] = Tuple.Create(Tuple.Create(x, y), Tuple.Create(z, w));
}
}
return result;
}