private void writeFields(ClassData.Field[] fields) { int lastOutFieldIndex = 0; for (ClassData.Field field : fields) { writeUleb128(field.fieldIndex - lastOutFieldIndex); lastOutFieldIndex = field.fieldIndex; writeUleb128(field.accessFlags); } }
/** * Write DebugInfo item into current section. * * @return real offset of item we've just written in this section. */ public int writeDebugInfoItem(DebugInfoItem debugInfoItem) { int off = data.position(); writeUleb128(debugInfoItem.lineStart); int parametersSize = debugInfoItem.parameterNames.length; writeUleb128(parametersSize); for (int i = 0; i < parametersSize; ++i) { int parameterName = debugInfoItem.parameterNames[i]; writeUleb128p1(parameterName); } write(debugInfoItem.infoSTM); return off; }
private void writeMethods(ClassData.Method[] methods) { int lastOutMethodIndex = 0; for (ClassData.Method method : methods) { writeUleb128(method.methodIndex - lastOutMethodIndex); lastOutMethodIndex = method.methodIndex; writeUleb128(method.accessFlags); writeUleb128(method.codeOffset); } }
/** * Write DebugInfo item into current section. * * @return real offset of item we've just written in this section. */ public int writeDebugInfoItem(DebugInfoItem debugInfoItem) { int off = data.position(); writeUleb128(debugInfoItem.lineStart); int parametersSize = debugInfoItem.parameterNames.length; writeUleb128(parametersSize); for (int i = 0; i < parametersSize; ++i) { int parameterName = debugInfoItem.parameterNames[i]; writeUleb128p1(parameterName); } write(debugInfoItem.infoSTM); return off; }
public void writeUleb128p1(int i) { writeUleb128(i + 1); }
private void writeCatchHandler(Code.CatchHandler catchHandler) { int catchAllAddress = catchHandler.catchAllAddress; int[] typeIndexes = catchHandler.typeIndexes; int[] addresses = catchHandler.addresses; if (catchAllAddress != -1) { writeSleb128(-typeIndexes.length); } else { writeSleb128(typeIndexes.length); } for (int i = 0; i < typeIndexes.length; i++) { writeUleb128(typeIndexes[i]); writeUleb128(addresses[i]); } if (catchAllAddress != -1) { writeUleb128(catchAllAddress); } }
private int[] writeCatchHandlers(Code.CatchHandler[] catchHandlers) { int baseOffset = data.position(); writeUleb128(catchHandlers.length); int[] offsets = new int[catchHandlers.length]; for (int i = 0; i < catchHandlers.length; i++) { offsets[i] = data.position() - baseOffset; writeCatchHandler(catchHandlers[i]); } return offsets; }
/** * Write ClassData item into current section. * * @return real offset of item we've just written in this section. */ public int writeClassData(ClassData classData) { int off = data.position(); writeUleb128(classData.staticFields.length); writeUleb128(classData.instanceFields.length); writeUleb128(classData.directMethods.length); writeUleb128(classData.virtualMethods.length); writeFields(classData.staticFields); writeFields(classData.instanceFields); writeMethods(classData.directMethods); writeMethods(classData.virtualMethods); return off; }
/** * Write String data into current section. * * @return real offset of item we've just written in this section. */ public int writeStringData(StringData stringData) { int off = data.position(); try { int length = stringData.value.length(); writeUleb128(length); write(Mutf8.encode(stringData.value)); writeByte(0); return off; } catch (UTFDataFormatException e) { throw new AssertionError(e); } }
buffer.writeUleb128(delOpIndexList.size()); int lastIndex = 0; for (Integer index : delOpIndexList) { buffer.writeUleb128(addOpIndexList.size()); lastIndex = 0; for (Integer index : addOpIndexList) { buffer.writeUleb128(replaceOpIndexList.size()); lastIndex = 0; for (Integer index : replaceOpIndexList) {
private void writeFields(ClassData.Field[] fields) { int lastOutFieldIndex = 0; for (ClassData.Field field : fields) { writeUleb128(field.fieldIndex - lastOutFieldIndex); lastOutFieldIndex = field.fieldIndex; writeUleb128(field.accessFlags); } }
private void writeMethods(ClassData.Method[] methods) { int lastOutMethodIndex = 0; for (ClassData.Method method : methods) { writeUleb128(method.methodIndex - lastOutMethodIndex); lastOutMethodIndex = method.methodIndex; writeUleb128(method.accessFlags); writeUleb128(method.codeOffset); } }
public void writeUleb128p1(int i) { writeUleb128(i + 1); }
private int[] writeCatchHandlers(Code.CatchHandler[] catchHandlers) { int baseOffset = data.position(); writeUleb128(catchHandlers.length); int[] offsets = new int[catchHandlers.length]; for (int i = 0; i < catchHandlers.length; i++) { offsets[i] = data.position() - baseOffset; writeCatchHandler(catchHandlers[i]); } return offsets; }
private void writeCatchHandler(Code.CatchHandler catchHandler) { int catchAllAddress = catchHandler.catchAllAddress; int[] typeIndexes = catchHandler.typeIndexes; int[] addresses = catchHandler.addresses; if (catchAllAddress != -1) { writeSleb128(-typeIndexes.length); } else { writeSleb128(typeIndexes.length); } for (int i = 0; i < typeIndexes.length; i++) { writeUleb128(typeIndexes[i]); writeUleb128(addresses[i]); } if (catchAllAddress != -1) { writeUleb128(catchAllAddress); } }
/** * Write ClassData item into current section. * * @return real offset of item we've just written in this section. */ public int writeClassData(ClassData classData) { int off = data.position(); writeUleb128(classData.staticFields.length); writeUleb128(classData.instanceFields.length); writeUleb128(classData.directMethods.length); writeUleb128(classData.virtualMethods.length); writeFields(classData.staticFields); writeFields(classData.instanceFields); writeMethods(classData.directMethods); writeMethods(classData.virtualMethods); return off; }
/** * Write String data into current section. * * @return real offset of item we've just written in this section. */ public int writeStringData(StringData stringData) { int off = data.position(); try { int length = stringData.value.length(); writeUleb128(length); write(Mutf8.encode(stringData.value)); writeByte(0); return off; } catch (UTFDataFormatException e) { throw new AssertionError(e); } }
buffer.writeUleb128(delOpIndexList.size()); int lastIndex = 0; for (Integer index : delOpIndexList) { buffer.writeUleb128(addOpIndexList.size()); lastIndex = 0; for (Integer index : addOpIndexList) { buffer.writeUleb128(replaceOpIndexList.size()); lastIndex = 0; for (Integer index : replaceOpIndexList) {