OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # | 2 # |
3 # Copyright 2011 the V8 project authors. All rights reserved. | 3 # Copyright 2011 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 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
366 # #define DUMP_TYPE(T) printf("%d: \"%s\",\n", T, #T); | 366 # #define DUMP_TYPE(T) printf("%d: \"%s\",\n", T, #T); |
367 # struct P { | 367 # struct P { |
368 # P() { | 368 # P() { |
369 # printf("{\n"); | 369 # printf("{\n"); |
370 # INSTANCE_TYPE_LIST(DUMP_TYPE) | 370 # INSTANCE_TYPE_LIST(DUMP_TYPE) |
371 # printf("}\n"); | 371 # printf("}\n"); |
372 # } | 372 # } |
373 # }; | 373 # }; |
374 # static P p; | 374 # static P p; |
375 INSTANCE_TYPES = { | 375 INSTANCE_TYPES = { |
376 64: "SYMBOL_TYPE", | 376 64: "SYMBOL_TYPE", |
377 68: "ASCII_SYMBOL_TYPE", | 377 68: "ASCII_SYMBOL_TYPE", |
378 65: "CONS_SYMBOL_TYPE", | 378 65: "CONS_SYMBOL_TYPE", |
379 69: "CONS_ASCII_SYMBOL_TYPE", | 379 69: "CONS_ASCII_SYMBOL_TYPE", |
380 66: "EXTERNAL_SYMBOL_TYPE", | 380 66: "EXTERNAL_SYMBOL_TYPE", |
381 74: "EXTERNAL_SYMBOL_WITH_ASCII_DATA_TYPE", | 381 74: "EXTERNAL_SYMBOL_WITH_ASCII_DATA_TYPE", |
382 70: "EXTERNAL_ASCII_SYMBOL_TYPE", | 382 70: "EXTERNAL_ASCII_SYMBOL_TYPE", |
383 0: "STRING_TYPE", | 383 0: "STRING_TYPE", |
384 4: "ASCII_STRING_TYPE", | 384 4: "ASCII_STRING_TYPE", |
385 1: "CONS_STRING_TYPE", | 385 1: "CONS_STRING_TYPE", |
386 5: "CONS_ASCII_STRING_TYPE", | 386 5: "CONS_ASCII_STRING_TYPE", |
387 2: "EXTERNAL_STRING_TYPE", | 387 2: "EXTERNAL_STRING_TYPE", |
388 10: "EXTERNAL_STRING_WITH_ASCII_DATA_TYPE", | 388 10: "EXTERNAL_STRING_WITH_ASCII_DATA_TYPE", |
389 6: "EXTERNAL_ASCII_STRING_TYPE", | 389 6: "EXTERNAL_ASCII_STRING_TYPE", |
390 6: "PRIVATE_EXTERNAL_ASCII_STRING_TYPE", | 390 6: "PRIVATE_EXTERNAL_ASCII_STRING_TYPE", |
391 128: "MAP_TYPE", | 391 128: "MAP_TYPE", |
392 129: "CODE_TYPE", | 392 129: "CODE_TYPE", |
393 130: "ODDBALL_TYPE", | 393 130: "ODDBALL_TYPE", |
394 131: "JS_GLOBAL_PROPERTY_CELL_TYPE", | 394 131: "JS_GLOBAL_PROPERTY_CELL_TYPE", |
395 132: "HEAP_NUMBER_TYPE", | 395 132: "HEAP_NUMBER_TYPE", |
396 133: "FOREIGN_TYPE", | 396 133: "FOREIGN_TYPE", |
397 134: "BYTE_ARRAY_TYPE", | 397 134: "BYTE_ARRAY_TYPE", |
398 135: "EXTERNAL_BYTE_ARRAY_TYPE", | 398 135: "EXTERNAL_BYTE_ARRAY_TYPE", |
399 136: "EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE", | 399 136: "EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE", |
400 137: "EXTERNAL_SHORT_ARRAY_TYPE", | 400 137: "EXTERNAL_SHORT_ARRAY_TYPE", |
401 138: "EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE", | 401 138: "EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE", |
402 139: "EXTERNAL_INT_ARRAY_TYPE", | 402 139: "EXTERNAL_INT_ARRAY_TYPE", |
403 140: "EXTERNAL_UNSIGNED_INT_ARRAY_TYPE", | 403 140: "EXTERNAL_UNSIGNED_INT_ARRAY_TYPE", |
404 141: "EXTERNAL_FLOAT_ARRAY_TYPE", | 404 141: "EXTERNAL_FLOAT_ARRAY_TYPE", |
405 142: "EXTERNAL_DOUBLE_ARRAY_TYPE", | 405 143: "EXTERNAL_PIXEL_ARRAY_TYPE", |
406 143: "EXTERNAL_PIXEL_ARRAY_TYPE", | 406 145: "FILLER_TYPE", |
407 144: "FILLER_TYPE", | 407 146: "ACCESSOR_INFO_TYPE", |
408 145: "ACCESSOR_INFO_TYPE", | 408 147: "ACCESS_CHECK_INFO_TYPE", |
409 146: "ACCESS_CHECK_INFO_TYPE", | 409 148: "INTERCEPTOR_INFO_TYPE", |
410 147: "INTERCEPTOR_INFO_TYPE", | 410 149: "CALL_HANDLER_INFO_TYPE", |
411 148: "CALL_HANDLER_INFO_TYPE", | 411 150: "FUNCTION_TEMPLATE_INFO_TYPE", |
412 149: "FUNCTION_TEMPLATE_INFO_TYPE", | 412 151: "OBJECT_TEMPLATE_INFO_TYPE", |
413 150: "OBJECT_TEMPLATE_INFO_TYPE", | 413 152: "SIGNATURE_INFO_TYPE", |
414 151: "SIGNATURE_INFO_TYPE", | 414 153: "TYPE_SWITCH_INFO_TYPE", |
415 152: "TYPE_SWITCH_INFO_TYPE", | 415 154: "SCRIPT_TYPE", |
416 153: "SCRIPT_TYPE", | 416 155: "CODE_CACHE_TYPE", |
417 154: "CODE_CACHE_TYPE", | 417 156: "POLYMORPHIC_CODE_CACHE_TYPE", |
418 155: "DEBUG_INFO_TYPE", | 418 159: "FIXED_ARRAY_TYPE", |
419 156: "BREAK_POINT_INFO_TYPE", | 419 160: "SHARED_FUNCTION_INFO_TYPE", |
420 157: "FIXED_ARRAY_TYPE", | 420 161: "JS_MESSAGE_OBJECT_TYPE", |
421 158: "SHARED_FUNCTION_INFO_TYPE", | 421 162: "JS_VALUE_TYPE", |
422 159: "JS_MESSAGE_OBJECT_TYPE", | 422 163: "JS_OBJECT_TYPE", |
423 160: "JS_VALUE_TYPE", | 423 164: "JS_CONTEXT_EXTENSION_OBJECT_TYPE", |
424 161: "JS_OBJECT_TYPE", | 424 165: "JS_GLOBAL_OBJECT_TYPE", |
425 162: "JS_CONTEXT_EXTENSION_OBJECT_TYPE", | 425 166: "JS_BUILTINS_OBJECT_TYPE", |
426 163: "JS_GLOBAL_OBJECT_TYPE", | 426 167: "JS_GLOBAL_PROXY_TYPE", |
427 164: "JS_BUILTINS_OBJECT_TYPE", | 427 168: "JS_ARRAY_TYPE", |
428 165: "JS_GLOBAL_PROXY_TYPE", | 428 169: "JS_PROXY_TYPE", |
429 166: "JS_ARRAY_TYPE", | 429 170: "JS_REGEXP_TYPE", |
430 167: "JS_PROXY_TYPE", | 430 171: "JS_FUNCTION_TYPE", |
431 168: "JS_REGEXP_TYPE", | 431 172: "JS_FUNCTION_PROXY_TYPE", |
432 169: "JS_FUNCTION_TYPE", | 432 157: "DEBUG_INFO_TYPE", |
433 170: "JS_FUNCTION_PROXY_TYPE", | 433 158: "BREAK_POINT_INFO_TYPE", |
434 } | 434 } |
435 | 435 |
436 | 436 |
437 class Printer(object): | 437 class Printer(object): |
438 """Printer with indentation support.""" | 438 """Printer with indentation support.""" |
439 | 439 |
440 def __init__(self): | 440 def __init__(self): |
441 self.indent = 0 | 441 self.indent = 0 |
442 | 442 |
443 def Indent(self): | 443 def Indent(self): |
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
834 reader.Dispose() | 834 reader.Dispose() |
835 | 835 |
836 | 836 |
837 if __name__ == "__main__": | 837 if __name__ == "__main__": |
838 parser = optparse.OptionParser(USAGE) | 838 parser = optparse.OptionParser(USAGE) |
839 options, args = parser.parse_args() | 839 options, args = parser.parse_args() |
840 if len(args) != 1: | 840 if len(args) != 1: |
841 parser.print_help() | 841 parser.print_help() |
842 sys.exit(1) | 842 sys.exit(1) |
843 AnalyzeMinidump(options, args[0]) | 843 AnalyzeMinidump(options, args[0]) |
OLD | NEW |