293 private LineNumberTableMapper() {
294 super(NAME_LINE_NUMBER_TABLE, AttributeStability.LABELS, true);
295 }
296
297 @Override
298 public LineNumberTableAttribute readAttribute(AttributedElement e, ClassReader cf, int p) {
299 return new BoundAttribute.BoundLineNumberTableAttribute(cf, this, p);
300 }
301
302 @Override
303 protected void writeBody(BufWriter buf, LineNumberTableAttribute attr) {
304 List<LineNumberInfo> lines = attr.lineNumbers();
305 buf.writeU2(lines.size());
306 for (LineNumberInfo line : lines) {
307 buf.writeU2(line.startPc());
308 buf.writeU2(line.lineNumber());
309 }
310 }
311 }
312
313 public static final class LocalVariableTableMapper extends AbstractAttributeMapper<LocalVariableTableAttribute> {
314 public static final LocalVariableTableMapper INSTANCE = new LocalVariableTableMapper();
315
316 private LocalVariableTableMapper() {
317 super(NAME_LOCAL_VARIABLE_TABLE, AttributeStability.LABELS, true);
318 }
319
320 @Override
321 public LocalVariableTableAttribute readAttribute(AttributedElement e, ClassReader cf, int p) {
322 return new BoundAttribute.BoundLocalVariableTableAttribute(e, cf, this, p);
323 }
324
325 @Override
326 protected void writeBody(BufWriter buf, LocalVariableTableAttribute attr) {
327 List<LocalVariableInfo> infos = attr.localVariables();
328 buf.writeU2(infos.size());
329 for (LocalVariableInfo info : infos) {
330 buf.writeU2(info.startPc());
331 buf.writeU2(info.length());
332 buf.writeIndex(info.name());
|
293 private LineNumberTableMapper() {
294 super(NAME_LINE_NUMBER_TABLE, AttributeStability.LABELS, true);
295 }
296
297 @Override
298 public LineNumberTableAttribute readAttribute(AttributedElement e, ClassReader cf, int p) {
299 return new BoundAttribute.BoundLineNumberTableAttribute(cf, this, p);
300 }
301
302 @Override
303 protected void writeBody(BufWriter buf, LineNumberTableAttribute attr) {
304 List<LineNumberInfo> lines = attr.lineNumbers();
305 buf.writeU2(lines.size());
306 for (LineNumberInfo line : lines) {
307 buf.writeU2(line.startPc());
308 buf.writeU2(line.lineNumber());
309 }
310 }
311 }
312
313 public static final class LoadableDescriptorsMapper extends AbstractAttributeMapper<LoadableDescriptorsAttribute> {
314 public static final LoadableDescriptorsMapper INSTANCE = new LoadableDescriptorsMapper();
315
316 private LoadableDescriptorsMapper() {
317 super(NAME_LOADABLE_DESCRIPTORS, AttributeStability.CP_REFS);
318 }
319
320 @Override
321 public LoadableDescriptorsAttribute readAttribute(AttributedElement e, ClassReader cf, int p) {
322 return new BoundAttribute.BoundLoadableDescriptorsAttribute(cf, this, p);
323 }
324
325 @Override
326 protected void writeBody(BufWriter buf, LoadableDescriptorsAttribute attr) {
327 Util.writeListIndices(buf, attr.loadableDescriptors());
328 }
329 }
330
331 public static final class LocalVariableTableMapper extends AbstractAttributeMapper<LocalVariableTableAttribute> {
332 public static final LocalVariableTableMapper INSTANCE = new LocalVariableTableMapper();
333
334 private LocalVariableTableMapper() {
335 super(NAME_LOCAL_VARIABLE_TABLE, AttributeStability.LABELS, true);
336 }
337
338 @Override
339 public LocalVariableTableAttribute readAttribute(AttributedElement e, ClassReader cf, int p) {
340 return new BoundAttribute.BoundLocalVariableTableAttribute(e, cf, this, p);
341 }
342
343 @Override
344 protected void writeBody(BufWriter buf, LocalVariableTableAttribute attr) {
345 List<LocalVariableInfo> infos = attr.localVariables();
346 buf.writeU2(infos.size());
347 for (LocalVariableInfo info : infos) {
348 buf.writeU2(info.startPc());
349 buf.writeU2(info.length());
350 buf.writeIndex(info.name());
|