Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (101)
JavaBeans (21)
JDBC (121)
JDK (426)
JSP (20)
Logging (108)
Mail (58)
Messaging (8)
Network (84)
PDF (97)
Report (7)
Scripting (84)
Security (32)
Server (121)
Servlet (26)
SOAP (24)
Testing (54)
Web (15)
XML (309)
Collections:
Other Resources:
JDK 11 jdk.hotspot.agent.jmod - Hotspot Agent Module
JDK 11 jdk.hotspot.agent.jmod is the JMOD file for JDK 11 Hotspot Agent module.
JDK 11 Hotspot Agent module compiled class files are stored in \fyicenter\jdk-11.0.1\jmods\jdk.hotspot.agent.jmod.
JDK 11 Hotspot Agent module compiled class files are also linked and stored in the \fyicenter\jdk-11.0.1\lib\modules JImage file.
JDK 11 Hotspot Agent module source code files are stored in \fyicenter\jdk-11.0.1\lib\src.zip\jdk.hotspot.agent.
You can click and view the content of each source code file in the list below.
✍: FYIcenter
⏎ sun/jvm/hotspot/ui/Inspector.java
/* * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * */ package sun.jvm.hotspot.ui; import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; import javax.swing.tree.TreePath; import sun.jvm.hotspot.debugger.*; import sun.jvm.hotspot.oops.*; import sun.jvm.hotspot.runtime.*; import sun.jvm.hotspot.types.*; import sun.jvm.hotspot.ui.tree.*; import sun.jvm.hotspot.utilities.*; /** This class implements tree-browsing functionality of a particular SimpleTreeNode, and is only designed to be used in a debugging system. It uses a SimpleTreeModel internally. It can inspect both oops as well as C++ objects described by the VMStructs database in the target VM. */ public class Inspector extends SAPanel { private JTree tree; private SimpleTreeModel model; // UI widgets we need permanent handles to private HistoryComboBox addressField; private JLabel statusLabel; private JButton livenessButton; private ActionListener livenessButtonListener; private ActionListener showLivenessListener; private static final String computeLivenessText = "Compute Liveness"; private static final String showLivenessText = "Show Liveness"; private JLabel liveStatus; private LivenessPathList list = null; private Oop currentOop = null; public Inspector() { model = new SimpleTreeModel(); tree = new JTree(model); setLayout(new BorderLayout()); Box hbox = Box.createHorizontalBox(); JButton button = new JButton("Previous Oop"); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String text = addressField.getText(); try { VM vm = VM.getVM(); Address a = vm.getDebugger().parseAddress(text); OopHandle handle = a.addOffsetToAsOopHandle(-vm.getAddressSize()); addressField.setText(handle.toString()); } catch (Exception ex) { } } }); hbox.add(button); hbox.add(new JLabel("Address / C++ Expression: ")); addressField = new HistoryComboBox(); hbox.add(addressField); statusLabel = new JLabel(); hbox.add(statusLabel); Box hboxDown = Box.createHorizontalBox(); hboxDown.add(Box.createGlue()); livenessButton = new JButton(computeLivenessText); livenessButtonListener = new ActionListener() { public void actionPerformed(ActionEvent e) { if (currentOop != null) { fireComputeLiveness(); } return; } }; showLivenessListener = new ActionListener() { public void actionPerformed(ActionEvent e) { fireShowLiveness(); } }; livenessButton.addActionListener(livenessButtonListener); hboxDown.add(livenessButton); hboxDown.add(Box.createGlue()); liveStatus = new JLabel(); hboxDown.add(liveStatus); hboxDown.add(Box.createGlue()); add(hbox, BorderLayout.NORTH); add(hboxDown, BorderLayout.SOUTH); addressField.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String text = addressField.getText(); try { Address a = VM.getVM().getDebugger().parseAddress(text); int max_searches = 1000; int searches = 0; int offset = 0; Oop oop = null; if (a != null) { OopHandle handle = a.addOffsetToAsOopHandle(0); while (searches < max_searches) { searches++; if (RobustOopDeterminator.oopLooksValid(handle)) { try { oop = VM.getVM().getObjectHeap().newOop(handle); addressField.setText(handle.toString()); break; } catch (UnknownOopException ex) { // ok } catch (RuntimeException ex) { ex.printStackTrace(); } } offset -= 4; handle = a.addOffsetToAsOopHandle(offset); } } if (oop != currentOop) { currentOop = oop; liveStatus.setText(""); list = null; if (livenessButton.getText().equals(showLivenessText)) { livenessButton.setText(computeLivenessText); livenessButton.removeActionListener(showLivenessListener); livenessButton.addActionListener(livenessButtonListener); } } if (oop != null) { statusLabel.setText(""); setRoot(new OopTreeNodeAdapter(oop, null)); return; } // Try to treat this address as a C++ object and deduce its type Type t = VM.getVM().getTypeDataBase().guessTypeForAddress(a); if (t != null) { statusLabel.setText(""); setRoot(new CTypeTreeNodeAdapter(a, t, null)); return; } statusLabel.setText("<bad oop or unknown C++ object " + text + ">"); } catch (NumberFormatException ex) { currentOop = null; liveStatus.setText(""); list = null; if (livenessButton.getText().equals(showLivenessText)) { livenessButton.setText(computeLivenessText); livenessButton.removeActionListener(showLivenessListener); livenessButton.addActionListener(livenessButtonListener); } // Try to treat this as a C++ expression CPPExpressions.CastExpr cast = CPPExpressions.parseCast(text); if (cast != null) { TypeDataBase db = VM.getVM().getTypeDataBase(); Type t = db.lookupType(cast.getType()); if (t == null) { statusLabel.setText("<unknown C++ type \"" + cast.getType() + "\">"); } else { try { Address a = VM.getVM().getDebugger().parseAddress(cast.getAddress()); statusLabel.setText(""); setRoot(new CTypeTreeNodeAdapter(a, t, null)); } catch (NumberFormatException ex2) { statusLabel.setText("<bad address " + cast.getAddress() + ">"); } } return; } CPPExpressions.StaticFieldExpr stat = CPPExpressions.parseStaticField(text); if (stat != null) { TypeDataBase db = VM.getVM().getTypeDataBase(); Type t = db.lookupType(stat.getContainingType()); if (t == null) { statusLabel.setText("<unknown C++ type \"" + stat.getContainingType() + "\">"); } else { sun.jvm.hotspot.types.Field f = t.getField(stat.getFieldName(), true, false); if (f == null) { statusLabel.setText("<unknown field \"" + stat.getFieldName() + "\" in type \"" + stat.getContainingType() + "\">"); } else if (!f.isStatic()) { statusLabel.setText("<field \"" + stat.getContainingType() + "::" + stat.getFieldName() + "\" was not static>"); } else { Type fieldType = f.getType(); if (fieldType.isPointerType()) { fieldType = ((PointerType) fieldType).getTargetType(); // Try to get a more derived type Type typeGuess = db.guessTypeForAddress(f.getAddress()); if (typeGuess != null) { fieldType = typeGuess; } statusLabel.setText(""); setRoot(new CTypeTreeNodeAdapter(f.getAddress(), fieldType, new NamedFieldIdentifier(text))); } else { statusLabel.setText(""); setRoot(new CTypeTreeNodeAdapter(f.getStaticFieldAddress(), f.getType(), new NamedFieldIdentifier(text))); } } } return; } statusLabel.setText("<parse error>"); } catch (AddressException ex) { ex.printStackTrace(); currentOop = null; liveStatus.setText(""); list = null; if (livenessButton.getText().equals(showLivenessText)) { livenessButton.setText(computeLivenessText); livenessButton.removeActionListener(showLivenessListener); livenessButton.addActionListener(livenessButtonListener); } statusLabel.setText("<bad address>"); } catch (Exception ex) { ex.printStackTrace(); currentOop = null; liveStatus.setText(""); list = null; if (livenessButton.getText().equals(showLivenessText)) { livenessButton.setText(computeLivenessText); livenessButton.removeActionListener(showLivenessListener); livenessButton.addActionListener(livenessButtonListener); } statusLabel.setText("<error constructing oop>"); } } }); MouseListener ml = new MouseAdapter() { public void mousePressed(MouseEvent e) { int selRow = tree.getRowForLocation(e.getX(), e.getY()); TreePath selPath = tree.getPathForLocation(e.getX(), e.getY()); if(selRow != -1) { if (e.getClickCount() == 1 && (e.getModifiersEx() & InputEvent.SHIFT_DOWN_MASK) != 0) { Object node = tree.getLastSelectedPathComponent(); if (node != null && node instanceof SimpleTreeNode) { showInspector((SimpleTreeNode)node); } } } } }; tree.addMouseListener(ml); JScrollPane scrollPane = new JScrollPane(tree); // Let's see what happens if we let the parent deal with resizing the panel add(scrollPane, BorderLayout.CENTER); } public Inspector(final SimpleTreeNode root) { this(); SwingUtilities.invokeLater( new Runnable() { public void run() { if (root instanceof OopTreeNodeAdapter) { final Oop oop = ((OopTreeNodeAdapter)root).getOop(); addressField.setText(oop.getHandle().toString()); } setRoot(root); } }); } private void setRoot(SimpleTreeNode root) { model.setRoot(root); // tree.invalidate(); // tree.validate(); // repaint(); // FIXME: invalidate? How to get to redraw? Will I have to make // tree listeners work? } private void fireComputeLiveness() { final Runnable cutoverButtonRunnable = new Runnable() { public void run() { list = LivenessAnalysis.computeAllLivenessPaths(currentOop); if (list == null) { liveStatus.setText("Oop is Dead"); } else { liveStatus.setText("Oop is Alive"); livenessButton.removeActionListener(livenessButtonListener); livenessButton.addActionListener(showLivenessListener); livenessButton.setEnabled(true); livenessButton.setText(showLivenessText); } } }; if (VM.getVM().getRevPtrs() != null) { cutoverButtonRunnable.run(); } else { final WorkerThread worker = new WorkerThread(); worker.invokeLater(new Runnable() { public void run() { try { ReversePtrsAnalysis rev = new ReversePtrsAnalysis(); rev.run(); cutoverButtonRunnable.run(); } finally { worker.shutdown(); } } }); } } private void fireShowLiveness() { if (list == null) { return; // dead object } for (Iterator iter = listeners.iterator(); iter.hasNext(); ) { SAListener listener = (SAListener) iter.next(); listener.showLiveness(currentOop, list); } } }
⏎ sun/jvm/hotspot/ui/Inspector.java
Or download all of them as a single archive file:
File name: jdk.hotspot.agent-11.0.1-src.zip File size: 1243786 bytes Release date: 2018-11-04 Download
⇒ JDK 11 jdk.httpserver.jmod - HTTP Server Module
2020-02-29, 131773👍, 0💬
Popular Posts:
Jackson is "the Java JSON library" or "the best JSON parser for Java". Or simply as "JSON for Java"....
Java Advanced Imaging (JAI) is a Java platform extension API that provides a set of object-oriented ...
What is ojdbc.jar - JDBC Driver for Oracle? ojdbc.jar is a JDBC driver from Oracle that provides dat...
Apache Axis2 is the core engine for Web services. It is a complete re-design and re-write of the wid...
JDK 11 jdk.crypto.cryptoki.jmod is the JMOD file for JDK 11 Crypto Cryptoki module. JDK 11 Crypto KI...