use of com.ibm.j9ddr.vm29.pointer.generated.J9UTF8Pointer in project openj9 by eclipse.
the class StackWalkerUtils method swPrintMethod.
public static void swPrintMethod(WalkState walkState, J9MethodPointer method) throws CorruptDataException {
if (method.notNull()) {
J9UTF8Pointer className = UNTAGGED_METHOD_CP(method).ramClass().romClass().className();
J9ROMMethodPointer romMethod = J9_ROM_METHOD_FROM_RAM_METHOD(method);
J9UTF8Pointer name = romMethod.nameAndSignature().name();
J9UTF8Pointer sig = romMethod.nameAndSignature().signature();
swPrintf(walkState, 2, "\tMethod: {0}.{1}{2} !j9method {3}", J9UTF8Helper.stringValue(className), J9UTF8Helper.stringValue(name), J9UTF8Helper.stringValue(sig), method.getHexAddress());
}
}
use of com.ibm.j9ddr.vm29.pointer.generated.J9UTF8Pointer in project openj9 by eclipse.
the class TerseStackWalkerCallbacks method frameWalkFunction.
public FrameCallbackResult frameWalkFunction(J9VMThreadPointer walkThread, WalkState walkState) {
try {
if (walkState.method.notNull()) {
J9MethodPointer method = walkState.method;
J9UTF8Pointer className = StackWalkerUtils.UNTAGGED_METHOD_CP(method).ramClass().romClass().className();
J9ROMMethodPointer romMethod = J9_ROM_METHOD_FROM_RAM_METHOD(method);
J9UTF8Pointer name = romMethod.nameAndSignature().name();
J9UTF8Pointer sig = romMethod.nameAndSignature().signature();
StackWalkerUtils.swPrintf(walkState, 0, "\t!j9method {3} {0}.{1}{2}", J9UTF8Helper.stringValue(className), J9UTF8Helper.stringValue(name), J9UTF8Helper.stringValue(sig), walkState.method.getHexAddress());
return FrameCallbackResult.KEEP_ITERATING;
}
if (walkState.pc.getAddress() == J9SF_FRAME_TYPE_JNI_NATIVE_METHOD) {
StackWalkerUtils.swPrintf(walkState, 0, "\t Native method frame");
} else if (walkState.pc.getAddress() == J9SF_FRAME_TYPE_GENERIC_SPECIAL) {
StackWalkerUtils.swPrintf(walkState, 0, "\t Generic special frame");
} else if (walkState.pc.getAddress() == J9SF_FRAME_TYPE_METHODTYPE) {
StackWalkerUtils.swPrintf(walkState, 0, "\t MethodType frame");
} else {
if (walkState.pc.getAddress() > J9SF_MAX_SPECIAL_FRAME_TYPE) {
if (walkState.pc.getAddress() == walkState.walkThread.javaVM().callInReturnPC().getAddress() || walkState.pc.getAddress() == (walkState.walkThread.javaVM().callInReturnPC().getAddress() + 3)) {
StackWalkerUtils.swPrintf(walkState, 0, "\t JNI call-in frame");
} else {
StackWalkerUtils.swPrintf(walkState, 0, "\t unknown frame type {0} *{1}", walkState.pc, walkState.pc.getHexAddress());
}
} else {
StackWalkerUtils.swPrintf(walkState, 0, "\t known but unhandled frame type {0}", walkState.pc);
}
}
} catch (CorruptDataException e) {
e.printStackTrace();
}
return FrameCallbackResult.KEEP_ITERATING;
}
use of com.ibm.j9ddr.vm29.pointer.generated.J9UTF8Pointer in project openj9 by eclipse.
the class J9BCUtil method j9bcutil_dumpRomClass.
public static void j9bcutil_dumpRomClass(PrintStream out, J9ROMClassPointer romClass, long flags) throws CorruptDataException {
out.append((String.format("ROM Size: 0x%s (%d)", Long.toHexString(romClass.romSize().longValue()), romClass.romSize().longValue())));
out.append(nl);
out.append(String.format("Class Name: %s", J9UTF8Helper.stringValue(romClass.className())));
out.append(nl);
if (romClass.superclassName().isNull()) {
out.append("Superclass Name: <none>");
} else {
out.append(String.format("Superclass Name: %s", J9UTF8Helper.stringValue(romClass.superclassName())));
}
out.append(nl);
/* dump the source file name */
dumpSourceFileName(out, romClass, flags);
/* dump the simple name */
dumpSimpleName(out, romClass, flags);
/* dump the class generic signature */
dumpGenericSignature(out, romClass, flags);
/* dump the enclosing method */
dumpEnclosingMethod(out, romClass, flags);
out.append(String.format("Sun Access Flags (0x%s): ", Long.toHexString(romClass.modifiers().longValue())));
dumpModifiers(out, romClass.modifiers().longValue(), MODIFIERSOURCE_CLASS, ONLY_SPEC_MODIFIERS);
out.append(String.format("J9 Access Flags (0x%s): ", Long.toHexString(romClass.extraModifiers().longValue())));
dumpClassJ9ExtraModifiers(out, romClass.extraModifiers().longValue());
out.append(nl);
out.append(String.format("Class file version: %d.%d", romClass.majorVersion().longValue(), romClass.minorVersion().longValue()));
out.append(nl);
out.append(String.format("Instance Shape: 0x%s", Long.toHexString(romClass.instanceShape().longValue())));
out.append(nl);
out.append(String.format("Intermediate Class Data (%d bytes): %s", romClass.intermediateClassDataLength().longValue(), Long.toHexString(romClass.intermediateClassData().longValue())));
out.append(nl);
out.append(String.format("Maximum Branch Count: %d", romClass.maxBranchCount().longValue()));
out.append(nl);
out.append(String.format("Interfaces (%d):" + nl, romClass.interfaceCount().longValue()));
if (!romClass.interfaceCount().eq(0)) {
SelfRelativePointer interfaces = romClass.interfaces();
long interfaceCount = romClass.interfaceCount().longValue();
for (int i = 0; i < interfaceCount; i++) {
out.append(" ");
J9UTF8Pointer interfaceName = J9UTF8Pointer.cast(interfaces.get());
out.append(J9UTF8Helper.stringValue(interfaceName));
out.append(nl);
interfaces = interfaces.add(1);
}
}
J9UTF8Pointer outerClassName = romClass.outerClassName();
if (!outerClassName.isNull()) {
out.append("Declaring Class: " + J9UTF8Helper.stringValue(romClass.outerClassName()));
out.append(nl);
out.append(String.format("Member Access Flags (0x%s): ", Long.toHexString(romClass.memberAccessFlags().longValue())));
dumpModifiers(out, romClass.memberAccessFlags().longValue(), MODIFIERSOURCE_CLASS, ONLY_SPEC_MODIFIERS);
out.append(nl);
outerClassName = outerClassName.add(1);
}
long innerClassCount = romClass.innerClassCount().longValue();
if (innerClassCount != 0) {
SelfRelativePointer innerClasses = romClass.innerClasses();
out.append(String.format("Declared Classes (%d):" + nl, innerClassCount));
for (int i = 0; i < innerClassCount; i++) {
J9UTF8Pointer innerClassName = J9UTF8Pointer.cast(innerClasses.get());
out.append(" " + J9UTF8Helper.stringValue(innerClassName));
innerClasses = innerClasses.add(1);
}
}
U32 romFieldCount = romClass.romFieldCount();
out.append(String.format("Fields (%d):" + nl, romFieldCount.longValue()));
J9ROMFieldShapeIterator iterator = new J9ROMFieldShapeIterator(romClass.romFields(), romFieldCount);
while (iterator.hasNext()) {
J9ROMFieldShapePointer currentField = (J9ROMFieldShapePointer) iterator.next();
if (!currentField.modifiers().bitAnd(J9JavaAccessFlags.J9AccStatic).eq(0)) {
dumpRomStaticField(out, currentField, flags);
} else {
dumpRomField(out, currentField, flags);
}
out.append(nl);
}
dumpCPShapeDescription(out, romClass, flags);
long romMethodsCount = romClass.romMethodCount().longValue();
out.append(String.format("Methods (%d):" + nl, romMethodsCount));
J9ROMMethodPointer romMethod = romClass.romMethods();
for (int i = 0; i < romClass.romMethodCount().intValue(); i++) {
J9BCUtil.j9bcutil_dumpRomMethod(out, romMethod, romClass, flags, 0);
romMethod = ROMHelp.nextROMMethod(romMethod);
}
/* dump source debug extension */
dumpSourceDebugExtension(out, romClass, flags);
/* dump annotation info */
dumpAnnotationInfo(out, romClass, flags);
/* dump callsite data */
dumpCallSiteData(out, romClass);
/* dump split side tables */
dumpStaticSplitSideTable(out, romClass);
dumpSpecialSplitSideTable(out, romClass);
}
use of com.ibm.j9ddr.vm29.pointer.generated.J9UTF8Pointer in project openj9 by eclipse.
the class J9StaticsCommand method run.
public void run(String command, String[] args, Context context, PrintStream out) throws DDRInteractiveCommandException {
try {
if (args.length != 1) {
CommandUtils.dbgPrint(out, "Usage: !j9statics <classAddress>\n");
return;
}
long address = CommandUtils.parsePointer(args[0], J9BuildFlags.env_data64);
J9ClassPointer ramClass = J9ClassPointer.cast(address);
J9ROMClassPointer romClass = ramClass.romClass();
J9UTF8Pointer className = romClass.className();
CommandUtils.dbgPrint(out, "Static fields in %s:\n", J9UTF8Helper.stringValue(className));
Iterator<J9ObjectFieldOffset> ofoIterator = J9ObjectFieldOffsetIterator.J9ObjectFieldOffsetIteratorFor(ramClass, J9ClassHelper.superclass(ramClass), new U32(J9ROMFieldOffsetWalkState.J9VM_FIELD_OFFSET_WALK_INCLUDE_STATIC));
while (ofoIterator.hasNext()) {
J9ObjectFieldOffset fieldOffset = ofoIterator.next();
J9ROMFieldShapePointer field = fieldOffset.getField();
String name = J9ROMFieldShapeHelper.getName(field);
String sig = J9ROMFieldShapeHelper.getSignature(field);
UDATAPointer fieldAddress = ramClass.ramStatics().addOffset(fieldOffset.getOffsetOrAddress());
switch(sig.charAt(0)) {
case 'L':
case '[':
CommandUtils.dbgPrint(out, "\t%s %s %s (!j9romstaticstringfieldshape %s) = !j9object %s\n", fieldAddress.getHexAddress(), name, sig, field.getHexAddress(), fieldAddress.at(0).getHexValue());
break;
case 'D':
DoublePointer doublePointer = DoublePointer.cast(fieldAddress);
CommandUtils.dbgPrint(out, "\t%s %s %s (!j9romstaticdoublefieldshape %s) = %s (%s)\n", fieldAddress.getHexAddress(), name, sig, field.getHexAddress(), doublePointer.getHexValue(), new Double(doublePointer.doubleAt(0)).toString());
break;
case 'F':
FloatPointer floatPointer = FloatPointer.cast(fieldAddress);
CommandUtils.dbgPrint(out, "\t%s %s %s (!j9romstaticsinglefieldshape %s) = %s (%s)\n", fieldAddress.getHexAddress(), name, sig, field.getHexAddress(), floatPointer.getHexValue(), new Float(floatPointer.floatAt(0)).toString());
break;
case 'J':
I64Pointer longPointer = I64Pointer.cast(fieldAddress);
CommandUtils.dbgPrint(out, "\t%s %s %s (!j9romstaticdoublefieldshape %s) = %s (%d)\n", fieldAddress.getHexAddress(), name, sig, field.getHexAddress(), longPointer.getHexValue(), longPointer.at(0).longValue());
break;
case 'I':
I32Pointer intPointer = I32Pointer.cast(fieldAddress);
CommandUtils.dbgPrint(out, "\t%s %s %s (!j9romstaticsinglefieldshape %s) = %s (%d)\n", fieldAddress.getHexAddress(), name, sig, field.getHexAddress(), intPointer.getHexValue(), intPointer.at(0).intValue());
break;
case 'B':
I8Pointer bytePointer = I8Pointer.cast(fieldAddress);
CommandUtils.dbgPrint(out, "\t%s %s %s (!j9romstaticsinglefieldshape %s) = %s (%s)\n", fieldAddress.getHexAddress(), name, sig, field.getHexAddress(), bytePointer.getHexValue(), bytePointer.at(0).byteValue());
break;
case 'S':
I16Pointer shortPointer = I16Pointer.cast(fieldAddress);
CommandUtils.dbgPrint(out, "\t%s %s %s (!j9romstaticsinglefieldshape %s) = %s (%d)\n", fieldAddress.getHexAddress(), name, sig, field.getHexAddress(), shortPointer.getHexValue(), shortPointer.at(0).shortValue());
break;
case 'Z':
BoolPointer booleanPointer = BoolPointer.cast(fieldAddress);
CommandUtils.dbgPrint(out, "\t%s %s %s (!j9romstaticsinglefieldshape %s) = %s (%s)\n", fieldAddress.getHexAddress(), name, sig, field.getHexAddress(), booleanPointer.getHexValue(), booleanPointer.boolAt(0) ? "true" : "false");
break;
default:
CommandUtils.dbgPrint(out, "\t%s %s %s (!j9romstaticsinglefieldshape %s) = %s\n", fieldAddress.getHexAddress(), name, sig, field.getHexAddress(), fieldAddress.at(0).getHexValue());
break;
}
}
} catch (CorruptDataException e) {
throw new DDRInteractiveCommandException(e);
}
}
use of com.ibm.j9ddr.vm29.pointer.generated.J9UTF8Pointer in project openj9 by eclipse.
the class VmCheckCommand method verifyUTF8.
private boolean verifyUTF8(J9UTF8Pointer utf8) throws CorruptDataException {
if (utf8.isNull()) {
return false;
}
UDATA length = new UDATA(utf8.length());
U8Pointer utf8Data = utf8.dataEA();
while (length.longValue() > 0) {
// not used
U16 temp = new U16(0);
U32 lengthRead = decodeUTF8CharN(utf8Data, temp, length);
if (lengthRead.eq(0)) {
return false;
}
length = length.sub(lengthRead);
utf8Data = utf8Data.addOffset(lengthRead);
}
return true;
}
Aggregations