< prev index next >

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

Print this page
@@ -1,7 +1,7 @@
  /*
-  * Copyright (c) 2007, 2024, Oracle and/or its affiliates. All rights reserved.
+  * 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 +567,27 @@
                          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;
+                         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_frame_extended */");
+                                 printHeader(frameType, "/* same_locals_1_stack_item_entry_extended */");
                                  indent(+1);
                                  println("offset_delta = " + offsetDelta);
                                  printMap("stack", frame.stack(), lr);
                                  indent(-1);
                              }

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

@@ -587,11 +611,11 @@
                                  printMap("locals", locals.subList(locals.size()
                                          - frameType + 251, locals.size()), lr);
                                  indent(-1);
                              }
                              case 255 -> {
-                                 printHeader(frameType, "/* full_frame */");
+                                 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 >