/// <summary> /// Writes the inner class info to an output stream. /// </summary> /// <param name="writer">The writer representing the output stream.</param> public void Write(IBigEndianWriter writer) { writer.Write(InnerClassInfoIndex); writer.Write(OuterClassInfoIndex); writer.Write(NameIndex); writer.Write((ushort)InnerClassAccessFlags); }
public void Write(IBigEndianWriter writer) { writer.Write(StartOffset); writer.Write(EndOffset); writer.Write(HandlerOffset); writer.Write(CatchType); }
public void Write(IBigEndianWriter writer) { writer.Write(StartOffset); writer.Write(Length); writer.Write(NameIndex); writer.Write(DescriptorIndex); writer.Write(LocalIndex); }
/// <summary> /// Writes the entry to an output stream. /// </summary> /// <param name="writer">The writer to use.</param> public void Write(IBigEndianWriter writer) { writer.Write(MethodRefIndex); writer.Write((ushort)Arguments.Count); foreach (ushort argument in Arguments) { writer.Write(argument); } }
public void Write(IBigEndianWriter writer, int baseOffset) { writer.Write(DefaultOffset - baseOffset); writer.Write(Low); writer.Write(High); foreach (var offset in Offsets) { writer.Write(offset - baseOffset); } }
public void Write(IBigEndianWriter writer, int baseOffset) { writer.Write(DefaultOffset - baseOffset); writer.Write(Table.Count); foreach (var entry in Table) { writer.Write(entry.Key); writer.Write(entry.Value - baseOffset); } }
/// <inheritdoc /> public void WriteBody(JvmAttribute attribute, IBigEndianWriter writer) { if (attribute.Data is null) { throw new ArgumentException(nameof(attribute)); } writer.Write(attribute.Data); }
private static void WriteUtf8Constant(Utf8Constant constant, IBigEndianWriter writer) { var encoder = JavaUtf8.Instance; string value = constant.Value; byte[] array = Pool.Rent(encoder.GetMaxByteCount(value.Length)); int chars = encoder.GetBytes(value, 0, value.Length, array, 0); writer.WriteU2((ushort)chars); writer.Write(array.AsSpan().Slice(0, chars)); Pool.Return(array, true); }
/// <summary> /// Writes a single instruction to the output stream. /// </summary> /// <param name="instruction">The instruction to write.</param> /// <remarks> /// Some instructions have different byte layouts depending on the offsets they are located at. /// Make sure the offsets have been calculated before passing on the instructions to the assembler. /// </remarks> public void Write(ByteCodeInstruction instruction) { _writer.Write((byte)instruction.OpCode.Code); WriteOperand(instruction); }