public static string ReadJavaString(HeapObject stringObj) { FieldReferenceValue charArrayReference = (FieldReferenceValue)stringObj.GetField("value", "[C"); HeapArray charArray = (HeapArray)Heap.GetItem(charArrayReference.Address); return(new string((char[])charArray.Array)); }
public static int CreateJavaStringLiteral(string @string) { HeapArray charArray = new HeapArray(@string.ToCharArray(), ClassObjectManager.GetClassObjectAddr("char")); int charArrAddr = Heap.AddItem(charArray); HeapObject stringObj = new HeapObject(ClassFileManager.GetClassFile("java/lang/String")); stringObj.SetField("value", "[C", new FieldReferenceValue(charArrAddr)); int stringObjAddr = Heap.AddItem(stringObj); return(StringPool.Intern(stringObjAddr)); }
private static void WriteArrayValue(string itemType, int argument) { if (argument != 0) { HeapArray heapArr = Heap.GetArray(argument); string itemTypeFromArg = JavaHelper.ClassObjectName(heapArr.ItemTypeClassObjAddr); if (!JavaHelper.IsPrimitiveType(itemTypeFromArg)) { itemType = JavaHelper.ClassObjectName(heapArr.ItemTypeClassObjAddr).Replace('.', '/'); } } Console.ForegroundColor = arrayBracketColor; int i = -1; do { Console.Write('['); i++; } while (itemType[i] == '['); Console.ForegroundColor = classNameColor; if (itemType[i] == 'L') { Console.Write(itemType.Substring(i + 1, itemType.Length - i - 2)); } else { Console.Write(itemType.Substring(i)); } Console.ForegroundColor = separatorColor; Console.Write("/"); if (argument == 0) { Console.ForegroundColor = nullColor; Console.Write("Null"); } else { Console.ForegroundColor = objAddrColor; Console.Write(argument); } }
public override HeapObject Clone() { HeapArray clone = new HeapArray(Array, ItemTypeClassObjAddr); return(clone); }