public IDictionary<Address, FunctionType> LoadCallSignatures(
Program program,
ICollection<SerializedCall_v1> userCalls)
{
return
userCalls
.Where(sc => sc != null && sc.Signature != null)
.Select(sc =>
{
//$BUG: need access to platform.Metadata.
var sser = program.CreateProcedureSerializer();
Address addr;
if (program.Architecture.TryParseAddress(sc.InstructionAddress, out addr))
{
return new KeyValuePair<Address, FunctionType>(
addr,
sser.Deserialize(sc.Signature, program.Architecture.CreateFrame()));
}
else
return new KeyValuePair<Address, FunctionType>(null, null);
})
.ToDictionary(item => item.Key, item => item.Value);
}