Mercurial > hg > truffle
comparison src/share/vm/classfile/javaClasses.hpp @ 3820:0b80db433fcb
7046490: Preallocated OOME objects should obey Throwable stack trace protocol
Summary: Update the OOME stacktrace to contain Throwable.UNASSIGNED_STACK when the backtrace is filled in
Reviewed-by: mchung, phh
author | dholmes |
---|---|
date | Fri, 22 Jul 2011 00:29:01 -0700 |
parents | ddd894528dbc |
children | c26de9aef2ed |
comparison
equal
deleted
inserted
replaced
3819:bcc6475bc68f | 3820:0b80db433fcb |
---|---|
391 hc_backtrace_offset = 0, | 391 hc_backtrace_offset = 0, |
392 hc_detailMessage_offset = 1, | 392 hc_detailMessage_offset = 1, |
393 hc_cause_offset = 2, // New since 1.4 | 393 hc_cause_offset = 2, // New since 1.4 |
394 hc_stackTrace_offset = 3 // New since 1.4 | 394 hc_stackTrace_offset = 3 // New since 1.4 |
395 }; | 395 }; |
396 enum { | |
397 hc_static_unassigned_stacktrace_offset = 0 // New since 1.7 | |
398 }; | |
396 // Trace constants | 399 // Trace constants |
397 enum { | 400 enum { |
398 trace_methods_offset = 0, | 401 trace_methods_offset = 0, |
399 trace_bcis_offset = 1, | 402 trace_bcis_offset = 1, |
400 trace_next_offset = 2, | 403 trace_next_offset = 2, |
404 | 407 |
405 static int backtrace_offset; | 408 static int backtrace_offset; |
406 static int detailMessage_offset; | 409 static int detailMessage_offset; |
407 static int cause_offset; | 410 static int cause_offset; |
408 static int stackTrace_offset; | 411 static int stackTrace_offset; |
412 static int static_unassigned_stacktrace_offset; | |
409 | 413 |
410 // Printing | 414 // Printing |
411 static char* print_stack_element_to_buffer(methodOop method, int bci); | 415 static char* print_stack_element_to_buffer(methodOop method, int bci); |
412 static void print_to_stream(Handle stream, const char* str); | 416 static void print_to_stream(Handle stream, const char* str); |
413 // StackTrace (programmatic access, new since 1.4) | 417 // StackTrace (programmatic access, new since 1.4) |
414 static void clear_stacktrace(oop throwable); | 418 static void clear_stacktrace(oop throwable); |
415 // No stack trace available | 419 // No stack trace available |
416 static const char* no_stack_trace_message(); | 420 static const char* no_stack_trace_message(); |
421 // Stacktrace (post JDK 1.7.0 to allow immutability protocol to be followed) | |
422 static void set_stacktrace(oop throwable, oop st_element_array); | |
423 static oop unassigned_stacktrace(); | |
417 | 424 |
418 public: | 425 public: |
419 // Backtrace | 426 // Backtrace |
420 static oop backtrace(oop throwable); | 427 static oop backtrace(oop throwable); |
421 static void set_backtrace(oop throwable, oop value); | 428 static void set_backtrace(oop throwable, oop value); |
436 | 443 |
437 // Allocate space for backtrace (created but stack trace not filled in) | 444 // Allocate space for backtrace (created but stack trace not filled in) |
438 static void allocate_backtrace(Handle throwable, TRAPS); | 445 static void allocate_backtrace(Handle throwable, TRAPS); |
439 // Fill in current stack trace for throwable with preallocated backtrace (no GC) | 446 // Fill in current stack trace for throwable with preallocated backtrace (no GC) |
440 static void fill_in_stack_trace_of_preallocated_backtrace(Handle throwable); | 447 static void fill_in_stack_trace_of_preallocated_backtrace(Handle throwable); |
441 | |
442 // Fill in current stack trace, can cause GC | 448 // Fill in current stack trace, can cause GC |
443 static void fill_in_stack_trace(Handle throwable, methodHandle method, TRAPS); | 449 static void fill_in_stack_trace(Handle throwable, methodHandle method, TRAPS); |
444 static void fill_in_stack_trace(Handle throwable, methodHandle method = methodHandle()); | 450 static void fill_in_stack_trace(Handle throwable, methodHandle method = methodHandle()); |
445 // Programmatic access to stack trace | 451 // Programmatic access to stack trace |
446 static oop get_stack_trace_element(oop throwable, int index, TRAPS); | 452 static oop get_stack_trace_element(oop throwable, int index, TRAPS); |