< prev index next >
src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/ir/debug/NashornTextifier.java
Print this page
@@ -23,13 +23,10 @@
* questions.
*/
package jdk.nashorn.internal.ir.debug;
-import static jdk.nashorn.internal.runtime.linker.NashornCallSiteDescriptor.CALLSITE_PROGRAM_POINT_SHIFT;
-import static jdk.nashorn.internal.runtime.linker.NashornCallSiteDescriptor.FLAGS_MASK;
-
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.util.HashMap;
@@ -500,10 +497,11 @@
public void visitInvokeDynamicInsn(final String name, final String desc, final Handle bsm, final Object... bsmArgs) {
final StringBuilder sb = new StringBuilder();
appendOpcode(sb, Opcodes.INVOKEDYNAMIC).append(' ');
final boolean isNashornBootstrap = isNashornBootstrap(bsm);
+ final boolean isNashornMathBootstrap = isNashornMathBootstrap(bsm);
if (isNashornBootstrap) {
sb.append(NashornCallSiteDescriptor.getOperationName((Integer)bsmArgs[0]));
final String decodedName = NameCodec.decode(name);
if (!decodedName.isEmpty()) {
sb.append(':').append(decodedName);
@@ -527,16 +525,13 @@
} else if (cst instanceof Type) {
sb.append(((Type)cst).getDescriptor()).append(".class");
} else if (cst instanceof Handle) {
appendHandle(sb, (Handle)cst);
} else if (cst instanceof Integer && isNashornBootstrap) {
- final int c = (Integer)cst;
- final int pp = c >> CALLSITE_PROGRAM_POINT_SHIFT;
- if (pp != 0) {
- sb.append(" pp=").append(pp);
- }
- sb.append(NashornCallSiteDescriptor.toString(c & FLAGS_MASK));
+ NashornCallSiteDescriptor.appendFlags((Integer) cst, sb);
+ } else if (cst instanceof Integer && isNashornMathBootstrap) {
+ sb.append(" pp=").append(cst);
} else {
sb.append(cst);
}
sb.append(", ");
}
@@ -549,10 +544,14 @@
private static boolean isNashornBootstrap(final Handle bsm) {
return "bootstrap".equals(bsm.getName()) && BOOTSTRAP_CLASS_NAME.equals(bsm.getOwner());
}
+ private static boolean isNashornMathBootstrap(final Handle bsm) {
+ return "mathBootstrap".equals(bsm.getName()) && BOOTSTRAP_CLASS_NAME.equals(bsm.getOwner());
+ }
+
private static boolean noFallThru(final int opcode) {
switch (opcode) {
case Opcodes.GOTO:
case Opcodes.ATHROW:
case Opcodes.ARETURN:
< prev index next >