< prev index next >

src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/ui/classbrowser/HTMLGenerator.java

Print this page




1892       } catch(IOException exp) {
1893          return genHTMLErrorMessage(exp);
1894       }
1895    }
1896 
1897    protected String genJavaStackTraceTitle(JavaThread thread) {
1898       Formatter buf = new Formatter(genHTML);
1899       buf.append("Java Stack Trace for ");
1900       buf.append(thread.getThreadName());
1901       return buf.toString();
1902    }
1903 
1904    public String genHTMLForJavaStackTrace(JavaThread thread) {
1905       Formatter buf = new Formatter(genHTML);
1906       buf.genHTMLPrologue(genJavaStackTraceTitle(thread));
1907 
1908       buf.append("Thread state = ");
1909       buf.append(thread.getThreadState().toString());
1910       buf.br();
1911       buf.beginTag("pre");

1912       for (JavaVFrame vf = thread.getLastJavaVFrameDbg(); vf != null; vf = vf.javaSender()) {
1913          Method method = vf.getMethod();
1914          buf.append(" - ");
1915          buf.append(genMethodLink(method));
1916          buf.append(" @bci = " + vf.getBCI());
1917 
1918          int lineNumber = method.getLineNumberFromBCI(vf.getBCI());
1919          if (lineNumber != -1) {
1920             buf.append(", line = ");
1921             buf.append(lineNumber);
1922          }
1923 
1924          sun.jvm.hotspot.debugger.Address pc = vf.getFrame().getPC();
1925          if (pc != null) {
1926             buf.append(", pc = ");
1927             buf.link(genPCHref(addressToLong(pc)), pc.toString());
1928          }
1929 
1930          if (!method.isStatic() && !method.isNative()) {
1931             OopHandle oopHandle = vf.getLocals().oopHandleAt(0);
1932 
1933             if (oopHandle != null) {
1934                buf.append(", oop = ");
1935                buf.append(oopHandle.toString());
1936             }
1937          }
1938 
1939          if (vf.isCompiledFrame()) {
1940             buf.append(" (Compiled");
1941          }
1942          else if (vf.isInterpretedFrame()) {
1943             buf.append(" (Interpreted");
1944          }
1945 
1946          if (vf.mayBeImpreciseDbg()) {
1947             buf.append("; information may be imprecise");
1948          }
1949          buf.append(")");
1950          buf.br();













1951       }
1952 
1953       buf.endTag("pre");
1954       buf.genHTMLEpilogue();
1955       return buf.toString();
1956    }
1957 
1958    public String genHTMLForHyperlink(String href) {
1959       if (href.startsWith("klass=")) {
1960          href = href.substring(href.indexOf('=') + 1);
1961          Klass k = getKlassAtAddress(href);
1962          if (Assert.ASSERTS_ENABLED) {
1963             Assert.that(k instanceof InstanceKlass, "class= href with improper InstanceKlass!");
1964          }
1965          return genHTML((InstanceKlass) k);
1966       } else if (href.startsWith("method=")) {
1967          href = href.substring(href.indexOf('=') + 1);
1968          Method obj = getMethodAtAddress(href);
1969          if (Assert.ASSERTS_ENABLED) {
1970             Assert.that(obj instanceof Method, "method= href with improper Method!");




1892       } catch(IOException exp) {
1893          return genHTMLErrorMessage(exp);
1894       }
1895    }
1896 
1897    protected String genJavaStackTraceTitle(JavaThread thread) {
1898       Formatter buf = new Formatter(genHTML);
1899       buf.append("Java Stack Trace for ");
1900       buf.append(thread.getThreadName());
1901       return buf.toString();
1902    }
1903 
1904    public String genHTMLForJavaStackTrace(JavaThread thread) {
1905       Formatter buf = new Formatter(genHTML);
1906       buf.genHTMLPrologue(genJavaStackTraceTitle(thread));
1907 
1908       buf.append("Thread state = ");
1909       buf.append(thread.getThreadState().toString());
1910       buf.br();
1911       buf.beginTag("pre");
1912       int count = 0;
1913       for (JavaVFrame vf = thread.getLastJavaVFrameDbg(); vf != null; vf = vf.javaSender()) {
1914          Method method = vf.getMethod();
1915          buf.append(" - ");
1916          buf.append(genMethodLink(method));
1917          buf.append(" @bci = " + vf.getBCI());
1918 
1919          int lineNumber = method.getLineNumberFromBCI(vf.getBCI());
1920          if (lineNumber != -1) {
1921             buf.append(", line = ");
1922             buf.append(lineNumber);
1923          }
1924 
1925          sun.jvm.hotspot.debugger.Address pc = vf.getFrame().getPC();
1926          if (pc != null) {
1927             buf.append(", pc = ");
1928             buf.link(genPCHref(addressToLong(pc)), pc.toString());
1929          }
1930 
1931          if (!method.isStatic() && !method.isNative()) {
1932             OopHandle oopHandle = vf.getLocals().oopHandleAt(0);
1933 
1934             if (oopHandle != null) {
1935                buf.append(", oop = ");
1936                buf.append(oopHandle.toString());
1937             }
1938          }
1939 
1940          if (vf.isCompiledFrame()) {
1941             buf.append(" (Compiled");
1942          }
1943          else if (vf.isInterpretedFrame()) {
1944             buf.append(" (Interpreted");
1945          }
1946 
1947          if (vf.mayBeImpreciseDbg()) {
1948             buf.append("; information may be imprecise");
1949          }
1950          buf.append(")");
1951          buf.br();
1952 
1953          ByteArrayOutputStream bytes = new ByteArrayOutputStream();
1954          PrintStream printStream = new PrintStream(bytes);
1955          try (printStream) {
1956            vf.printLockInfo(printStream, count++);
1957            for (String line : bytes.toString().split("\n")) {
1958              if (genHTML) {
1959                line = line.replace("<", "&lt;").replace(">", "&gt;");
1960              }
1961              buf.append(line);
1962              buf.br();
1963            }
1964          }
1965       }
1966 
1967       buf.endTag("pre");
1968       buf.genHTMLEpilogue();
1969       return buf.toString();
1970    }
1971 
1972    public String genHTMLForHyperlink(String href) {
1973       if (href.startsWith("klass=")) {
1974          href = href.substring(href.indexOf('=') + 1);
1975          Klass k = getKlassAtAddress(href);
1976          if (Assert.ASSERTS_ENABLED) {
1977             Assert.that(k instanceof InstanceKlass, "class= href with improper InstanceKlass!");
1978          }
1979          return genHTML((InstanceKlass) k);
1980       } else if (href.startsWith("method=")) {
1981          href = href.substring(href.indexOf('=') + 1);
1982          Method obj = getMethodAtAddress(href);
1983          if (Assert.ASSERTS_ENABLED) {
1984             Assert.that(obj instanceof Method, "method= href with improper Method!");


< prev index next >