-
Bug
-
Resolution: Fixed
-
P4
-
None
-
b19
-
generic
-
generic
With -XX:+PrintInterpreter the instructions of the generated interpreter are printed at startup.
But it is possible that after startup other traces are flooded with repeatedly decoded interpreter sections.
For instance -Xlog:continuations=trace suffers from this.
Reproduce:
- Download the attached Simple.java
- run the command
java -XX:+PrintInterpreter -Xlog:continuations=trace Simple.java > out.log
- Search for "Interpreted frame" in out.log
- You will see that at each occurence the "return entry points" are decoded again and again
This is a stacktrace where the repeated printing happens:
InterpreterCodelet::print_on(outputStream *)
frame::print_value_on(outputStream *)
FreezeBase::after_freeze_java_frame(const frame &, bool)
InterpreterCodelet::print_on(outputStream *) decodes the instructions repeadedly because the decoding depends directly on PrintInterpreter.
The attached partial_out.log is an excerpt from the continuations trace. The decoded "return entry points" codelet is a significant part of the trace. It occurs repeatedly and is redundant because the interpreter was printed at startup.
But it is possible that after startup other traces are flooded with repeatedly decoded interpreter sections.
For instance -Xlog:continuations=trace suffers from this.
Reproduce:
- Download the attached Simple.java
- run the command
java -XX:+PrintInterpreter -Xlog:continuations=trace Simple.java > out.log
- Search for "Interpreted frame" in out.log
- You will see that at each occurence the "return entry points" are decoded again and again
This is a stacktrace where the repeated printing happens:
InterpreterCodelet::print_on(outputStream *)
frame::print_value_on(outputStream *)
FreezeBase::after_freeze_java_frame(const frame &, bool)
InterpreterCodelet::print_on(outputStream *) decodes the instructions repeadedly because the decoding depends directly on PrintInterpreter.
The attached partial_out.log is an excerpt from the continuations trace. The decoded "return entry points" codelet is a significant part of the trace. It occurs repeatedly and is redundant because the interpreter was printed at startup.
- links to
-
Commit(master) openjdk/jdk/a63ac5a6
-
Review(master) openjdk/jdk/21158