Beispiel #1
0
        /// <summary>
        /// Writes a textual representation of this global variable definition to the given writer.
        /// </summary>
        /// <param name="Writer">The writer to which text is written.</param>
        public void Dump(TextWriter Writer)
        {
            Writer.Write("- Type: ");
            Type.Dump(Writer);
            Writer.WriteLine();
            Writer.Write("- Initial value:");
            var indentedWriter = DumpHelpers.CreateIndentedTextWriter(Writer);

            foreach (var instruction in InitialValue.BodyInstructions)
            {
                indentedWriter.WriteLine();
                instruction.Dump(indentedWriter);
            }
        }
Beispiel #2
0
 /// <summary>
 /// Writes a textual representation of this name entry to the given writer.
 /// </summary>
 /// <param name="Writer">The text writer.</param>
 public virtual void Dump(TextWriter Writer)
 {
     using (var memStream = new MemoryStream())
     {
         using (var binaryWriter = new BinaryWriter(memStream))
         {
             WritePayloadTo(new BinaryWasmWriter(binaryWriter));
             memStream.Seek(0, SeekOrigin.Begin);
             Writer.WriteLine("entry kind '{0}', payload size: {1}", Kind, memStream.Length);
             var instructionWriter = DumpHelpers.CreateIndentedTextWriter(Writer);
             DumpHelpers.DumpStream(memStream, Writer);
         }
     }
 }
Beispiel #3
0
        /// <summary>
        /// Writes a textual representation of this exported value to the given writer.
        /// </summary>
        /// <param name="Writer">The writer to which text is written.</param>
        public void Dump(TextWriter Writer)
        {
            Writer.Write("- Memory index: ");
            Writer.Write(MemoryIndex);
            Writer.WriteLine();
            Writer.Write("- Offset:");
            var indentedWriter = DumpHelpers.CreateIndentedTextWriter(Writer);

            foreach (var instruction in Offset.BodyInstructions)
            {
                indentedWriter.WriteLine();
                instruction.Dump(indentedWriter);
            }
            Writer.WriteLine();
            Writer.Write("- Data:");
            indentedWriter.WriteLine();
            DumpHelpers.DumpBytes(Data, indentedWriter);
        }
Beispiel #4
0
        /// <summary>
        /// Writes a textual representation of this function body to the given writer.
        /// </summary>
        /// <param name="Writer">The writer to which text is written.</param>
        public void Dump(TextWriter Writer)
        {
            if (Locals.Count > 0)
            {
                Writer.Write("- Local entries:");
                var varEntryWriter = DumpHelpers.CreateIndentedTextWriter(Writer);
                for (int i = 0; i < Locals.Count; i++)
                {
                    varEntryWriter.WriteLine();
                    varEntryWriter.Write("#{0}: ", i);
                    Locals[i].Dump(varEntryWriter);
                }
                Writer.WriteLine();
            }
            else
            {
                Writer.WriteLine("- No local entries");
            }

            if (BodyInstructions.Count > 0)
            {
                Writer.Write("- Function body:");
                var instructionWriter = DumpHelpers.CreateIndentedTextWriter(Writer);
                foreach (var instr in BodyInstructions)
                {
                    instructionWriter.WriteLine();
                    instr.Dump(instructionWriter);
                }
                Writer.WriteLine();
            }
            else
            {
                Writer.WriteLine("- Empty function body");
            }

            if (HasExtraPayload)
            {
                Writer.Write("- Extra payload size: ");
                Writer.Write(ExtraPayload.Length);
                Writer.WriteLine();
                DumpHelpers.DumpBytes(ExtraPayload, Writer);
                Writer.WriteLine();
            }
        }
Beispiel #5
0
        /// <summary>
        /// Writes a textual representation of this element segment to the given writer.
        /// </summary>
        /// <param name="Writer">The writer to which text is written.</param>
        public void Dump(TextWriter Writer)
        {
            Writer.Write("- Table index: ");
            Writer.Write(TableIndex);
            Writer.WriteLine();
            Writer.Write("- Offset:");
            var indentedWriter = DumpHelpers.CreateIndentedTextWriter(Writer);

            foreach (var instruction in Offset.BodyInstructions)
            {
                indentedWriter.WriteLine();
                instruction.Dump(indentedWriter);
            }
            Writer.WriteLine();
            Writer.Write("- Elements:");
            for (int i = 0; i < Elements.Count; i++)
            {
                indentedWriter.WriteLine();
                indentedWriter.Write("#{0} -> func #{1}", i, Elements[i]);
            }
        }
Beispiel #6
0
        /// <inheritdoc/>
        public override void Dump(TextWriter Writer)
        {
            Writer.Write(Name.ToString());
            Writer.Write("; number of entries: ");
            Writer.Write(Bodies.Count);
            Writer.WriteLine();
            var indentedWriter = DumpHelpers.CreateIndentedTextWriter(Writer);

            for (int i = 0; i < Bodies.Count; i++)
            {
                Writer.Write("#{0}: ", i);
                indentedWriter.WriteLine();
                Bodies[i].Dump(indentedWriter);
            }
            if (ExtraPayload.Length > 0)
            {
                Writer.Write("Extra payload size: ");
                Writer.Write(ExtraPayload.Length);
                Writer.WriteLine();
                DumpHelpers.DumpBytes(ExtraPayload, Writer);
                Writer.WriteLine();
            }
        }