private AsMethodBodyInfo[] ReadMultipleBodies() { var len = ReadU30(); var res = new AsMethodBodyInfo[len]; for (var i = 0; i < len; i++) { res[i] = ReadMethodBody(); } return(res); }
private void WriteMethodBody(AsMethodBodyInfo methodBody) { WriteU30(methodBody.Method); WriteU30(methodBody.MaxStack); WriteU30(methodBody.LocalCount); WriteU30(methodBody.InitScopeDepth); WriteU30(methodBody.MaxScopeDepth); WriteMultipleExceptions(methodBody.Exceptions); WriteMultipleTraits(methodBody.Traits); }
private AsMethodBodyInfo ReadMethodBody() { var r = new AsMethodBodyInfo { Method = ReadU30(), MaxStack = ReadU30(), LocalCount = ReadU30(), InitScopeDepth = ReadU30(), MaxScopeDepth = ReadU30(), }; var len = ReadU30(); r.Code = _reader.ReadBytes((int)len); r.Exceptions = ReadMultipleExceptions(); r.Traits = ReadMutlipleTraits(); return(r); }
private AbcMethodBody GetMethodBody(AsMethodBodyInfo info) { var opcodeReader = new Avm2OpcodeReader(this); var res = new AbcMethodBody { MaxStack = info.MaxStack, LocalCount = info.LocalCount, InitScopeDepth = info.InitScopeDepth, MaxScopeDepth = info.MaxScopeDepth, }; var reader = new AbcDataReader(new MemoryStream(info.Code)); var factory = new Avm2OpcodeFactory(); while (!reader.IsEOF) { var offset = reader.Position; var code = (Avm2Opcode)reader.ReadU8(); var opcode = factory.CreateOpcode(code); opcode.AcceptVisitor(opcodeReader, reader); res.Code.Add(new AbcMethodBodyInstruction { Offset = (uint)offset, Opcode = opcode }); } foreach (var exc in info.Exceptions) { res.Exceptions.Add(GetExceptionBlock(exc)); } return res; }
private AsMethodBodyInfo[] ReadMultipleBodies() { var len = ReadU30(); var res = new AsMethodBodyInfo[len]; for (var i = 0; i < len; i++) { res[i] = ReadMethodBody(); } return res; }
private AsMethodBodyInfo ReadMethodBody() { var r = new AsMethodBodyInfo { Method = ReadU30(), MaxStack = ReadU30(), LocalCount = ReadU30(), InitScopeDepth = ReadU30(), MaxScopeDepth = ReadU30(), }; var len = ReadU30(); r.Code = _reader.ReadBytes((int)len); r.Exceptions = ReadMultipleExceptions(); r.Traits = ReadMutlipleTraits(); return r; }
private void WriteMultipleBodies(AsMethodBodyInfo[] bodies) { WriteU30((uint)bodies.Length); foreach (var value in bodies) { WriteMethodBody(value); } }