< prev index next >

src/jdk.jdeps/share/classes/com/sun/tools/javap/AttributeWriter.java

Print this page
*** 1,7 ***
  /*
!  * Copyright (c) 2007, 2024, Oracle and/or its affiliates. All rights reserved.
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   *
   * This code is free software; you can redistribute it and/or modify it
   * under the terms of the GNU General Public License version 2 only, as
   * published by the Free Software Foundation.  Oracle designates this
--- 1,7 ---
  /*
!  * Copyright (c) 2007, 2025, Oracle and/or its affiliates. All rights reserved.
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   *
   * This code is free software; you can redistribute it and/or modify it
   * under the terms of the GNU General Public License version 2 only, as
   * published by the Free Software Foundation.  Oracle designates this

*** 35,10 ***
--- 35,13 ---
  import java.lang.classfile.attribute.*;
  import static java.lang.classfile.ClassFile.*;
  import static java.lang.classfile.attribute.StackMapFrameInfo.*;
  import static java.lang.classfile.instruction.CharacterRange.*;
  
+ import com.sun.tools.javac.util.Assert;
+ import com.sun.tools.javac.util.StringUtils;
+ 
  /*
   *  A writer for writing Attributes as text.
   *
   *  <p><b>This is NOT part of any supported API.
   *  If you write code that depends on this, you do so at your own risk.

*** 523,10 ***
--- 526,18 ---
                  for (var sc : attr.permittedSubclasses()) {
                      println(constantWriter.stringValue(sc));
                  }
                  indent(-1);
              }
+             case LoadableDescriptorsAttribute attr -> {
+                 println("LoadableDescriptors:");
+                 indent(+1);
+                 for (var sc : attr.loadableDescriptors()) {
+                     println(constantWriter.stringValue(sc));
+                 }
+                 indent(-1);
+             }
              case SignatureAttribute attr -> {
                  print("Signature: #" + attr.signature().index());
                  tab();
                  println("// " + attr.signature().stringValue());
              }

*** 556,14 ***
                          printHeader(frameType, "/* same_locals_1_stack_item */");
                          indent(+1);
                          printMap("stack", frame.stack(), lr);
                          indent(-1);
                      } else {
!                         int offsetDelta = lr.labelToBci(frame.target()) - lastOffset - 1;
                          switch (frameType) {
                              case 247 -> {
!                                 printHeader(frameType, "/* same_locals_1_stack_item_frame_extended */");
                                  indent(+1);
                                  println("offset_delta = " + offsetDelta);
                                  printMap("stack", frame.stack(), lr);
                                  indent(-1);
                              }
--- 567,27 ---
                          printHeader(frameType, "/* same_locals_1_stack_item */");
                          indent(+1);
                          printMap("stack", frame.stack(), lr);
                          indent(-1);
                      } else {
!                         int offsetDelta = frameType != 246 ? lr.labelToBci(frame.target()) - lastOffset - 1 : 0;
                          switch (frameType) {
+                             case 246 -> {
+                                 printHeader(frameType, "/* assert_unset_fields */");
+                                 indent(+1);
+                                 println("number of unset_fields = " + frame.unsetFields().size());
+                                     indent(+1);
+                                     for (NameAndTypeEntry field : frame.unsetFields()) {
+                                         print("unset_field = #");
+                                         constantWriter.write(field.index());
+                                         println();
+                                     }
+                                     indent(-1);
+                                 indent(-1);
+                             }
                              case 247 -> {
!                                 printHeader(frameType, "/* same_locals_1_stack_item_entry_extended */");
                                  indent(+1);
                                  println("offset_delta = " + offsetDelta);
                                  printMap("stack", frame.stack(), lr);
                                  indent(-1);
                              }

*** 572,11 ***
                                  indent(+1);
                                  println("offset_delta = " + offsetDelta);
                                  indent(-1);
                              }
                              case 251 -> {
!                                 printHeader(frameType, "/* same_frame_extended */");
                                  indent(+1);
                                  println("offset_delta = " + offsetDelta);
                                  indent(-1);
                              }
                              case 252, 253, 254 -> {
--- 596,11 ---
                                  indent(+1);
                                  println("offset_delta = " + offsetDelta);
                                  indent(-1);
                              }
                              case 251 -> {
!                                 printHeader(frameType, "/* same_entry_extended */");
                                  indent(+1);
                                  println("offset_delta = " + offsetDelta);
                                  indent(-1);
                              }
                              case 252, 253, 254 -> {

*** 587,11 ***
                                  printMap("locals", locals.subList(locals.size()
                                          - frameType + 251, locals.size()), lr);
                                  indent(-1);
                              }
                              case 255 -> {
!                                 printHeader(frameType, "/* full_frame */");
                                  indent(+1);
                                  println("offset_delta = " + offsetDelta);
                                  printMap("locals", frame.locals(), lr);
                                  printMap("stack", frame.stack(), lr);
                                  indent(-1);
--- 611,11 ---
                                  printMap("locals", locals.subList(locals.size()
                                          - frameType + 251, locals.size()), lr);
                                  indent(-1);
                              }
                              case 255 -> {
!                                 printHeader(frameType, "/* full_entry */");
                                  indent(+1);
                                  println("offset_delta = " + offsetDelta);
                                  printMap("locals", frame.locals(), lr);
                                  printMap("stack", frame.stack(), lr);
                                  indent(-1);
< prev index next >