Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(196)

Side by Side Diff: tools/grokdump.py

Issue 12303009: Update grokdump to reflect current heap layout. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # 2 #
3 # Copyright 2012 the V8 project authors. All rights reserved. 3 # Copyright 2012 the V8 project authors. All rights reserved.
4 # Redistribution and use in source and binary forms, with or without 4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions are 5 # modification, are permitted provided that the following conditions are
6 # met: 6 # met:
7 # 7 #
8 # * Redistributions of source code must retain the above copyright 8 # * Redistributions of source code must retain the above copyright
9 # notice, this list of conditions and the following disclaimer. 9 # notice, this list of conditions and the following disclaimer.
10 # * Redistributions in binary form must reproduce the above 10 # * Redistributions in binary form must reproduce the above
(...skipping 913 matching lines...) Expand 10 before | Expand all | Expand 10 after
924 # Map* m = Map::cast(o); 924 # Map* m = Map::cast(o);
925 # const char* n = ""; 925 # const char* n = "";
926 # intptr_t p = reinterpret_cast<intptr_t>(m) & 0xfffff; 926 # intptr_t p = reinterpret_cast<intptr_t>(m) & 0xfffff;
927 # int t = m->instance_type(); 927 # int t = m->instance_type();
928 # ROOT_LIST(ROOT_LIST_CASE) 928 # ROOT_LIST(ROOT_LIST_CASE)
929 # STRUCT_LIST(STRUCT_LIST_CASE) 929 # STRUCT_LIST(STRUCT_LIST_CASE)
930 # printf(" 0x%05x: (%d, \"%s\"),\n", p, t, n); 930 # printf(" 0x%05x: (%d, \"%s\"),\n", p, t, n);
931 # } 931 # }
932 # printf("}\n"); 932 # printf("}\n");
933 KNOWN_MAPS = { 933 KNOWN_MAPS = {
934 0x08081: (128, "MetaMap"), 934 0x08081: (134, "ByteArrayMap"),
935 0x080a9: (166, "FixedArrayMap"), 935 0x080a9: (128, "MetaMap"),
936 0x080d1: (130, "OddballMap"), 936 0x080d1: (130, "OddballMap"),
937 0x080f9: (166, "FixedCOWArrayMap"), 937 0x080f9: (68, "AsciiSymbolMap"),
938 0x08121: (166, "ScopeInfoMap"), 938 0x08121: (166, "FixedArrayMap"),
939 0x08149: (132, "HeapNumberMap"), 939 0x08149: (132, "HeapNumberMap"),
940 0x08171: (133, "ForeignMap"), 940 0x08171: (135, "FreeSpaceMap"),
941 0x08199: (64, "SymbolMap"), 941 0x08199: (146, "OnePointerFillerMap"),
942 0x081c1: (68, "AsciiSymbolMap"), 942 0x081c1: (146, "TwoPointerFillerMap"),
943 0x081e9: (65, "ConsSymbolMap"), 943 0x081e9: (131, "GlobalPropertyCellMap"),
944 0x08211: (69, "ConsAsciiSymbolMap"), 944 0x08211: (167, "SharedFunctionInfoMap"),
945 0x08239: (66, "ExternalSymbolMap"), 945 0x08239: (4, "AsciiStringMap"),
946 0x08261: (74, "ExternalSymbolWithAsciiDataMap"), 946 0x08261: (166, "NativeContextMap"),
947 0x08289: (70, "ExternalAsciiSymbolMap"), 947 0x08289: (129, "CodeMap"),
948 0x082b1: (82, "ShortExternalSymbolMap"), 948 0x082b1: (166, "ScopeInfoMap"),
949 0x082d9: (90, "ShortExternalSymbolWithAsciiDataMap"), 949 0x082d9: (166, "FixedCOWArrayMap"),
950 0x08301: (86, "ShortExternalAsciiSymbolMap"), 950 0x08301: (145, "FixedDoubleArrayMap"),
951 0x08329: (0, "StringMap"), 951 0x08329: (166, "HashTableMap"),
952 0x08351: (4, "AsciiStringMap"), 952 0x08351: (0, "StringMap"),
953 0x08379: (1, "ConsStringMap"), 953 0x08379: (64, "SymbolMap"),
954 0x083a1: (5, "ConsAsciiStringMap"), 954 0x083a1: (1, "ConsStringMap"),
955 0x083c9: (3, "SlicedStringMap"), 955 0x083c9: (5, "ConsAsciiStringMap"),
956 0x083f1: (7, "SlicedAsciiStringMap"), 956 0x083f1: (3, "SlicedStringMap"),
957 0x08419: (2, "ExternalStringMap"), 957 0x08419: (7, "SlicedAsciiStringMap"),
958 0x08441: (10, "ExternalStringWithAsciiDataMap"), 958 0x08441: (65, "ConsSymbolMap"),
959 0x08469: (6, "ExternalAsciiStringMap"), 959 0x08469: (69, "ConsAsciiSymbolMap"),
960 0x08491: (18, "ShortExternalStringMap"), 960 0x08491: (66, "ExternalSymbolMap"),
961 0x084b9: (26, "ShortExternalStringWithAsciiDataMap"), 961 0x084b9: (74, "ExternalSymbolWithAsciiDataMap"),
962 0x084e1: (22, "ShortExternalAsciiStringMap"), 962 0x084e1: (70, "ExternalAsciiSymbolMap"),
963 0x08509: (0, "UndetectableStringMap"), 963 0x08509: (2, "ExternalStringMap"),
964 0x08531: (4, "UndetectableAsciiStringMap"), 964 0x08531: (10, "ExternalStringWithAsciiDataMap"),
965 0x08559: (145, "FixedDoubleArrayMap"), 965 0x08559: (6, "ExternalAsciiStringMap"),
966 0x08581: (134, "ByteArrayMap"), 966 0x08581: (82, "ShortExternalSymbolMap"),
967 0x085a9: (135, "FreeSpaceMap"), 967 0x085a9: (90, "ShortExternalSymbolWithAsciiDataMap"),
968 0x085d1: (144, "ExternalPixelArrayMap"), 968 0x085d1: (86, "ShortExternalAsciiSymbolMap"),
969 0x085f9: (136, "ExternalByteArrayMap"), 969 0x085f9: (18, "ShortExternalStringMap"),
970 0x08621: (137, "ExternalUnsignedByteArrayMap"), 970 0x08621: (26, "ShortExternalStringWithAsciiDataMap"),
971 0x08649: (138, "ExternalShortArrayMap"), 971 0x08649: (22, "ShortExternalAsciiStringMap"),
972 0x08671: (139, "ExternalUnsignedShortArrayMap"), 972 0x08671: (0, "UndetectableStringMap"),
973 0x08699: (140, "ExternalIntArrayMap"), 973 0x08699: (4, "UndetectableAsciiStringMap"),
974 0x086c1: (141, "ExternalUnsignedIntArrayMap"), 974 0x086c1: (144, "ExternalPixelArrayMap"),
975 0x086e9: (142, "ExternalFloatArrayMap"), 975 0x086e9: (136, "ExternalByteArrayMap"),
976 0x08711: (166, "NonStrictArgumentsElementsMap"), 976 0x08711: (137, "ExternalUnsignedByteArrayMap"),
977 0x08739: (143, "ExternalDoubleArrayMap"), 977 0x08739: (138, "ExternalShortArrayMap"),
978 0x08761: (129, "CodeMap"), 978 0x08761: (139, "ExternalUnsignedShortArrayMap"),
979 0x08789: (131, "GlobalPropertyCellMap"), 979 0x08789: (140, "ExternalIntArrayMap"),
980 0x087b1: (146, "OnePointerFillerMap"), 980 0x087b1: (141, "ExternalUnsignedIntArrayMap"),
981 0x087d9: (146, "TwoPointerFillerMap"), 981 0x087d9: (142, "ExternalFloatArrayMap"),
982 0x08801: (147, "DeclaredAccessorDescriptorMap"), 982 0x08801: (143, "ExternalDoubleArrayMap"),
983 0x08829: (148, "DeclaredAccessorInfoMap"), 983 0x08829: (166, "NonStrictArgumentsElementsMap"),
984 0x08851: (149, "ExecutableAccessorInfoMap"), 984 0x08851: (166, "FunctionContextMap"),
985 0x08879: (150, "AccessorPairMap"), 985 0x08879: (166, "CatchContextMap"),
986 0x088a1: (151, "AccessCheckInfoMap"), 986 0x088a1: (166, "WithContextMap"),
987 0x088c9: (152, "InterceptorInfoMap"), 987 0x088c9: (166, "BlockContextMap"),
988 0x088f1: (153, "CallHandlerInfoMap"), 988 0x088f1: (166, "ModuleContextMap"),
989 0x08919: (154, "FunctionTemplateInfoMap"), 989 0x08919: (166, "GlobalContextMap"),
990 0x08941: (155, "ObjectTemplateInfoMap"), 990 0x08941: (168, "JSMessageObjectMap"),
991 0x08969: (156, "SignatureInfoMap"), 991 0x08969: (133, "ForeignMap"),
992 0x08991: (157, "TypeSwitchInfoMap"), 992 0x08991: (173, "NeanderMap"),
993 0x089b9: (159, "ScriptMap"), 993 0x089b9: (158, "AllocationSiteInfoMap"),
994 0x089e1: (158, "AllocationSiteInfoMap"), 994 0x089e1: (161, "PolymorphicCodeCacheMap"),
995 0x08a09: (160, "CodeCacheMap"), 995 0x08a09: (159, "ScriptMap"),
996 0x08a31: (161, "PolymorphicCodeCacheMap"), 996 0x08a31: (173, ""),
997 0x08a59: (162, "TypeFeedbackInfoMap"), 997 0x08a59: (173, "ExternalMap"),
998 0x08a81: (163, "AliasedArgumentsEntryMap"), 998 0x08a81: (147, "DeclaredAccessorDescriptorMap"),
999 0x08aa9: (164, "DebugInfoMap"), 999 0x08aa9: (148, "DeclaredAccessorInfoMap"),
1000 0x08ad1: (165, "BreakPointInfoMap"), 1000 0x08ad1: (149, "ExecutableAccessorInfoMap"),
1001 0x08af9: (166, "HashTableMap"), 1001 0x08af9: (150, "AccessorPairMap"),
1002 0x08b21: (166, "FunctionContextMap"), 1002 0x08b21: (151, "AccessCheckInfoMap"),
1003 0x08b49: (166, "CatchContextMap"), 1003 0x08b49: (152, "InterceptorInfoMap"),
1004 0x08b71: (166, "WithContextMap"), 1004 0x08b71: (153, "CallHandlerInfoMap"),
1005 0x08b99: (166, "BlockContextMap"), 1005 0x08b99: (154, "FunctionTemplateInfoMap"),
1006 0x08bc1: (166, "ModuleContextMap"), 1006 0x08bc1: (155, "ObjectTemplateInfoMap"),
1007 0x08be9: (166, "GlobalContextMap"), 1007 0x08be9: (156, "SignatureInfoMap"),
1008 0x08c11: (166, "NativeContextMap"), 1008 0x08c11: (157, "TypeSwitchInfoMap"),
1009 0x08c39: (167, "SharedFunctionInfoMap"), 1009 0x08c39: (160, "CodeCacheMap"),
1010 0x08c61: (168, "JSMessageObjectMap"), 1010 0x08c61: (162, "TypeFeedbackInfoMap"),
1011 0x08c89: (173, "ExternalMap"), 1011 0x08c89: (163, "AliasedArgumentsEntryMap"),
1012 0x08cb1: (173, "NeanderMap"), 1012 0x08cb1: (164, "DebugInfoMap"),
1013 0x08cd9: (173, ""), 1013 0x08cd9: (165, "BreakPointInfoMap"),
1014 } 1014 }
1015 1015
1016 1016
1017 # List of known V8 objects. Used to determine name for objects that are 1017 # List of known V8 objects. Used to determine name for objects that are
1018 # part of the root-set and hence on the first page of various old-space 1018 # part of the root-set and hence on the first page of various old-space
1019 # paged. Obtained by adding the code below to an IA32 release build with 1019 # paged. Obtained by adding the code below to an IA32 release build with
1020 # enabled snapshots to the end of the Isolate::Init method. 1020 # enabled snapshots to the end of the Isolate::Init method.
1021 # 1021 #
1022 # #define ROOT_LIST_CASE(type, name, camel_name) \ 1022 # #define ROOT_LIST_CASE(type, name, camel_name) \
1023 # if (o == heap_.name()) n = #camel_name; 1023 # if (o == heap_.name()) n = #camel_name;
1024 # OldSpaces spit; 1024 # OldSpaces spit(heap());
1025 # printf("KNOWN_OBJECTS = {\n"); 1025 # printf("KNOWN_OBJECTS = {\n");
1026 # for (PagedSpace* s = spit.next(); s != NULL; s = spit.next()) { 1026 # for (PagedSpace* s = spit.next(); s != NULL; s = spit.next()) {
1027 # HeapObjectIterator it(s); 1027 # HeapObjectIterator it(s);
1028 # const char* sname = AllocationSpaceName(s->identity()); 1028 # const char* sname = AllocationSpaceName(s->identity());
1029 # for (Object* o = it.Next(); o != NULL; o = it.Next()) { 1029 # for (Object* o = it.Next(); o != NULL; o = it.Next()) {
1030 # const char* n = NULL; 1030 # const char* n = NULL;
1031 # intptr_t p = reinterpret_cast<intptr_t>(o) & 0xfffff; 1031 # intptr_t p = reinterpret_cast<intptr_t>(o) & 0xfffff;
1032 # ROOT_LIST(ROOT_LIST_CASE) 1032 # ROOT_LIST(ROOT_LIST_CASE)
1033 # if (n != NULL) { 1033 # if (n != NULL) {
1034 # printf(" (\"%s\", 0x%05x): \"%s\",\n", sname, p, n); 1034 # printf(" (\"%s\", 0x%05x): \"%s\",\n", sname, p, n);
1035 # } 1035 # }
1036 # } 1036 # }
1037 # } 1037 # }
1038 # printf("}\n"); 1038 # printf("}\n");
1039 KNOWN_OBJECTS = { 1039 KNOWN_OBJECTS = {
1040 ("OLD_POINTER_SPACE", 0x08081): "NullValue", 1040 ("OLD_POINTER_SPACE", 0x08081): "NullValue",
1041 ("OLD_POINTER_SPACE", 0x08091): "LastScriptId", 1041 ("OLD_POINTER_SPACE", 0x08091): "UndefinedValue",
1042 ("OLD_POINTER_SPACE", 0x080a1): "TrueValue", 1042 ("OLD_POINTER_SPACE", 0x080a1): "InstanceofCacheMap",
1043 ("OLD_POINTER_SPACE", 0x080b1): "FalseValue", 1043 ("OLD_POINTER_SPACE", 0x080b1): "TrueValue",
1044 ("OLD_POINTER_SPACE", 0x080c1): "TheHoleValue", 1044 ("OLD_POINTER_SPACE", 0x080c1): "FalseValue",
1045 ("OLD_POINTER_SPACE", 0x080d1): "ArgumentsMarker", 1045 ("OLD_POINTER_SPACE", 0x080d1): "NoInterceptorResultSentinel",
1046 ("OLD_POINTER_SPACE", 0x080e1): "NoInterceptorResultSentinel", 1046 ("OLD_POINTER_SPACE", 0x080e1): "ArgumentsMarker",
1047 ("OLD_POINTER_SPACE", 0x080f1): "TerminationException", 1047 ("OLD_POINTER_SPACE", 0x080f1): "NumberStringCache",
1048 ("OLD_POINTER_SPACE", 0x08101): "PolymorphicCodeCache", 1048 ("OLD_POINTER_SPACE", 0x088f9): "SingleCharacterStringCache",
1049 ("OLD_POINTER_SPACE", 0x08121): "NumberStringCache", 1049 ("OLD_POINTER_SPACE", 0x08b01): "StringSplitCache",
1050 ("OLD_POINTER_SPACE", 0x08929): "SingleCharacterStringCache", 1050 ("OLD_POINTER_SPACE", 0x08f09): "RegExpMultipleCache",
1051 ("OLD_POINTER_SPACE", 0x08b31): "StringSplitCache", 1051 ("OLD_POINTER_SPACE", 0x09311): "TerminationException",
1052 ("OLD_POINTER_SPACE", 0x08f39): "RegExpMultipleCache", 1052 ("OLD_POINTER_SPACE", 0x09321): "MessageListeners",
1053 ("OLD_DATA_SPACE", 0x08081): "EmptyFixedArray", 1053 ("OLD_POINTER_SPACE", 0x0933d): "CodeStubs",
1054 ("OLD_DATA_SPACE", 0x08089): "EmptyDescriptorArray", 1054 ("OLD_POINTER_SPACE", 0x09fa5): "NonMonomorphicCache",
1055 ("OLD_DATA_SPACE", 0x08091): "EmptyByteArray", 1055 ("OLD_POINTER_SPACE", 0x0a5b9): "PolymorphicCodeCache",
1056 ("OLD_DATA_SPACE", 0x08099): "MinusZeroValue", 1056 ("OLD_POINTER_SPACE", 0x0a5c1): "NativesSourceCache",
1057 ("OLD_DATA_SPACE", 0x080a5): "NanValue", 1057 ("OLD_POINTER_SPACE", 0x0a601): "EmptyScript",
1058 ("OLD_DATA_SPACE", 0x080b1): "InfinityValue", 1058 ("OLD_POINTER_SPACE", 0x0a63d): "IntrinsicFunctionNames",
1059 ("OLD_DATA_SPACE", 0x08185): "EmptyString", 1059 ("OLD_POINTER_SPACE", 0x0d659): "ObservationState",
1060 ("CODE_SPACE", 0x0a001): "JsEntryCode", 1060 ("OLD_POINTER_SPACE", 0x27415): "SymbolTable",
1061 ("CODE_SPACE", 0x0a0e1): "JsConstructEntryCode", 1061 ("OLD_DATA_SPACE", 0x08099): "EmptyDescriptorArray",
1062 ("OLD_DATA_SPACE", 0x080a1): "EmptyFixedArray",
1063 ("OLD_DATA_SPACE", 0x080a9): "NanValue",
1064 ("OLD_DATA_SPACE", 0x08125): "EmptyByteArray",
1065 ("OLD_DATA_SPACE", 0x0812d): "EmptyString",
1066 ("OLD_DATA_SPACE", 0x08259): "InfinityValue",
1067 ("OLD_DATA_SPACE", 0x08265): "MinusZeroValue",
1068 ("OLD_DATA_SPACE", 0x08271): "PrototypeAccessors",
1069 ("CODE_SPACE", 0x0aea1): "JsEntryCode",
1070 ("CODE_SPACE", 0x0b5c1): "JsConstructEntryCode",
1062 } 1071 }
1063 1072
1064 1073
1065 class Printer(object): 1074 class Printer(object):
1066 """Printer with indentation support.""" 1075 """Printer with indentation support."""
1067 1076
1068 def __init__(self): 1077 def __init__(self):
1069 self.indent = 0 1078 self.indent = 0
1070 1079
1071 def Indent(self): 1080 def Indent(self):
(...skipping 849 matching lines...) Expand 10 before | Expand all | Expand 10 after
1921 options, args = parser.parse_args() 1930 options, args = parser.parse_args()
1922 if os.path.exists(options.objdump): 1931 if os.path.exists(options.objdump):
1923 disasm.OBJDUMP_BIN = options.objdump 1932 disasm.OBJDUMP_BIN = options.objdump
1924 OBJDUMP_BIN = options.objdump 1933 OBJDUMP_BIN = options.objdump
1925 else: 1934 else:
1926 print "Cannot find %s, falling back to default objdump" % options.objdump 1935 print "Cannot find %s, falling back to default objdump" % options.objdump
1927 if len(args) != 1: 1936 if len(args) != 1:
1928 parser.print_help() 1937 parser.print_help()
1929 sys.exit(1) 1938 sys.exit(1)
1930 AnalyzeMinidump(options, args[0]) 1939 AnalyzeMinidump(options, args[0])
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698