Mercurial > hg > truffle
comparison src/share/vm/classfile/verificationType.cpp @ 6605:4ee06e614636
7116786: RFE: Detailed information on VerifyErrors
Summary: Provide additional detail in VerifyError messages
Reviewed-by: sspitsyn, acorn
author | kamg |
---|---|
date | Mon, 06 Aug 2012 15:54:45 -0400 |
parents | 1d1603768966 |
children | da91efe96a93 |
comparison
equal
deleted
inserted
replaced
6604:c3c2141203e7 | 6605:4ee06e614636 |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. | 2 * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | 4 * |
5 * This code is free software; you can redistribute it and/or modify it | 5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as | 6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
108 // Met an invalid type signature, e.g. [X | 108 // Met an invalid type signature, e.g. [X |
109 return VerificationType::bogus_type(); | 109 return VerificationType::bogus_type(); |
110 } | 110 } |
111 } | 111 } |
112 | 112 |
113 #ifndef PRODUCT | |
114 | |
115 void VerificationType::print_on(outputStream* st) const { | 113 void VerificationType::print_on(outputStream* st) const { |
116 switch (_u._data) { | 114 switch (_u._data) { |
117 case Bogus: st->print(" bogus "); break; | 115 case Bogus: st->print("top"); break; |
118 case Category1: st->print(" category1 "); break; | 116 case Category1: st->print("category1"); break; |
119 case Category2: st->print(" category2 "); break; | 117 case Category2: st->print("category2"); break; |
120 case Category2_2nd: st->print(" category2_2nd "); break; | 118 case Category2_2nd: st->print("category2_2nd"); break; |
121 case Boolean: st->print(" boolean "); break; | 119 case Boolean: st->print("boolean"); break; |
122 case Byte: st->print(" byte "); break; | 120 case Byte: st->print("byte"); break; |
123 case Short: st->print(" short "); break; | 121 case Short: st->print("short"); break; |
124 case Char: st->print(" char "); break; | 122 case Char: st->print("char"); break; |
125 case Integer: st->print(" integer "); break; | 123 case Integer: st->print("integer"); break; |
126 case Float: st->print(" float "); break; | 124 case Float: st->print("float"); break; |
127 case Long: st->print(" long "); break; | 125 case Long: st->print("long"); break; |
128 case Double: st->print(" double "); break; | 126 case Double: st->print("double"); break; |
129 case Long_2nd: st->print(" long_2nd "); break; | 127 case Long_2nd: st->print("long_2nd"); break; |
130 case Double_2nd: st->print(" double_2nd "); break; | 128 case Double_2nd: st->print("double_2nd"); break; |
131 case Null: st->print(" null "); break; | 129 case Null: st->print("null"); break; |
130 case ReferenceQuery: st->print("reference type"); break; | |
131 case Category1Query: st->print("category1 type"); break; | |
132 case Category2Query: st->print("category2 type"); break; | |
133 case Category2_2ndQuery: st->print("category2_2nd type"); break; | |
132 default: | 134 default: |
133 if (is_uninitialized_this()) { | 135 if (is_uninitialized_this()) { |
134 st->print(" uninitializedThis "); | 136 st->print("uninitializedThis"); |
135 } else if (is_uninitialized()) { | 137 } else if (is_uninitialized()) { |
136 st->print(" uninitialized %d ", bci()); | 138 st->print("uninitialized %d", bci()); |
137 } else { | 139 } else { |
138 st->print(" class %s ", name()->as_klass_external_name()); | 140 name()->print_value_on(st); |
139 } | 141 } |
140 } | 142 } |
141 } | 143 } |
142 | |
143 #endif |