Ejemplo n.º 1
0
        private AsMethodBodyInfo[] ReadMultipleBodies()
        {
            var len = ReadU30();
            var res = new AsMethodBodyInfo[len];

            for (var i = 0; i < len; i++)
            {
                res[i] = ReadMethodBody();
            }
            return(res);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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;
        }
Ejemplo n.º 5
0
 private AsMethodBodyInfo[] ReadMultipleBodies()
 {
     var len = ReadU30();
     var res = new AsMethodBodyInfo[len];
     for (var i = 0; i < len; i++) {
         res[i] = ReadMethodBody();
     }
     return res;
 }
Ejemplo n.º 6
0
        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;
        }
Ejemplo n.º 7
0
 private void WriteMultipleBodies(AsMethodBodyInfo[] bodies)
 {
     WriteU30((uint)bodies.Length);
     foreach (var value in bodies) {
         WriteMethodBody(value);
     }
 }
Ejemplo n.º 8
0
        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);
        }