Mercurial > hg > graal-compiler
comparison src/share/vm/oops/instanceKlass.cpp @ 13715:b270b954ba9a
Avoid segfault in InstanceKlass::oop_print_on's String special case when the value array is null.
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Mon, 20 Jan 2014 19:49:47 +0100 |
parents | 02f27ecb4f3a |
children | d8041d695d19 |
comparison
equal
deleted
inserted
replaced
13714:cffcb8e38c4c | 13715:b270b954ba9a |
---|---|
3014 Klass::oop_print_on(obj, st); | 3014 Klass::oop_print_on(obj, st); |
3015 | 3015 |
3016 if (this == SystemDictionary::String_klass()) { | 3016 if (this == SystemDictionary::String_klass()) { |
3017 typeArrayOop value = java_lang_String::value(obj); | 3017 typeArrayOop value = java_lang_String::value(obj); |
3018 juint offset = java_lang_String::offset(obj); | 3018 juint offset = java_lang_String::offset(obj); |
3019 if (value != NULL) { | |
3019 juint length = java_lang_String::length(obj); | 3020 juint length = java_lang_String::length(obj); |
3020 if (value != NULL && | 3021 if (value->is_typeArray() && |
3021 value->is_typeArray() && | |
3022 offset <= (juint) value->length() && | 3022 offset <= (juint) value->length() && |
3023 offset + length <= (juint) value->length()) { | 3023 offset + length <= (juint) value->length()) { |
3024 st->print(BULLET"string: "); | 3024 st->print(BULLET"string: "); |
3025 Handle h_obj(obj); | 3025 Handle h_obj(obj); |
3026 java_lang_String::print(h_obj, st); | 3026 java_lang_String::print(h_obj, st); |
3027 st->cr(); | 3027 st->cr(); |
3028 if (!WizardMode) return; // that is enough | 3028 if (!WizardMode) return; // that is enough |
3029 } | 3029 } |
3030 } | |
3030 } | 3031 } |
3031 | 3032 |
3032 st->print_cr(BULLET"---- fields (total size %d words):", oop_size(obj)); | 3033 st->print_cr(BULLET"---- fields (total size %d words):", oop_size(obj)); |
3033 FieldPrinter print_field(st, obj); | 3034 FieldPrinter print_field(st, obj); |
3034 do_nonstatic_fields(&print_field); | 3035 do_nonstatic_fields(&print_field); |