Mercurial > hg > truffle
comparison src/share/vm/runtime/fieldDescriptor.cpp @ 665:c89f86385056
6814659: separable cleanups and subroutines for 6655638
Summary: preparatory but separable changes for method handles
Reviewed-by: kvn, never
author | jrose |
---|---|
date | Fri, 20 Mar 2009 23:19:36 -0700 |
parents | a61af66fc99e |
children | c18cbe5936b8 |
comparison
equal
deleted
inserted
replaced
647:bd441136a5ce | 665:c89f86385056 |
---|---|
1 /* | 1 /* |
2 * Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved. | 2 * Copyright 1997-2009 Sun Microsystems, Inc. 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. |
105 } | 105 } |
106 | 106 |
107 void fieldDescriptor::print_on_for(outputStream* st, oop obj) { | 107 void fieldDescriptor::print_on_for(outputStream* st, oop obj) { |
108 print_on(st); | 108 print_on(st); |
109 BasicType ft = field_type(); | 109 BasicType ft = field_type(); |
110 jint as_int; | 110 jint as_int = 0; |
111 switch (ft) { | 111 switch (ft) { |
112 case T_BYTE: | 112 case T_BYTE: |
113 as_int = (jint)obj->byte_field(offset()); | 113 as_int = (jint)obj->byte_field(offset()); |
114 st->print(" %d", obj->byte_field(offset())); | 114 st->print(" %d", obj->byte_field(offset())); |
115 break; | 115 break; |
116 case T_CHAR: | 116 case T_CHAR: |
117 as_int = (jint)obj->char_field(offset()); | |
117 { | 118 { |
118 jchar c = obj->char_field(offset()); | 119 jchar c = obj->char_field(offset()); |
119 as_int = c; | 120 as_int = c; |
120 st->print(" %c %d", isprint(c) ? c : ' ', c); | 121 st->print(" %c %d", isprint(c) ? c : ' ', c); |
121 } | 122 } |
126 case T_FLOAT: | 127 case T_FLOAT: |
127 as_int = obj->int_field(offset()); | 128 as_int = obj->int_field(offset()); |
128 st->print(" %f", obj->float_field(offset())); | 129 st->print(" %f", obj->float_field(offset())); |
129 break; | 130 break; |
130 case T_INT: | 131 case T_INT: |
132 as_int = obj->int_field(offset()); | |
131 st->print(" %d", obj->int_field(offset())); | 133 st->print(" %d", obj->int_field(offset())); |
132 break; | 134 break; |
133 case T_LONG: | 135 case T_LONG: |
134 st->print(" "); | 136 st->print(" "); |
135 st->print_jlong(obj->long_field(offset())); | 137 st->print_jlong(obj->long_field(offset())); |
142 as_int = obj->bool_field(offset()); | 144 as_int = obj->bool_field(offset()); |
143 st->print(" %s", obj->bool_field(offset()) ? "true" : "false"); | 145 st->print(" %s", obj->bool_field(offset()) ? "true" : "false"); |
144 break; | 146 break; |
145 case T_ARRAY: | 147 case T_ARRAY: |
146 st->print(" "); | 148 st->print(" "); |
147 as_int = obj->int_field(offset()); | 149 NOT_LP64(as_int = obj->int_field(offset())); |
148 obj->obj_field(offset())->print_value_on(st); | 150 obj->obj_field(offset())->print_value_on(st); |
149 break; | 151 break; |
150 case T_OBJECT: | 152 case T_OBJECT: |
151 st->print(" "); | 153 st->print(" "); |
152 as_int = obj->int_field(offset()); | 154 NOT_LP64(as_int = obj->int_field(offset())); |
153 obj->obj_field(offset())->print_value_on(st); | 155 obj->obj_field(offset())->print_value_on(st); |
154 break; | 156 break; |
155 default: | 157 default: |
156 ShouldNotReachHere(); | 158 ShouldNotReachHere(); |
157 break; | 159 break; |
158 } | 160 } |
159 // Print a hint as to the underlying integer representation. This can be wrong for | 161 // Print a hint as to the underlying integer representation. This can be wrong for |
160 // pointers on an LP64 machine | 162 // pointers on an LP64 machine |
161 if (ft == T_LONG || ft == T_DOUBLE) { | 163 if (ft == T_LONG || ft == T_DOUBLE LP64_ONLY(|| !is_java_primitive(ft)) ) { |
162 st->print(" (%x %x)", obj->int_field(offset()), obj->int_field(offset()+sizeof(jint))); | 164 st->print(" (%x %x)", obj->int_field(offset()), obj->int_field(offset()+sizeof(jint))); |
163 } else { | 165 } else if (as_int < 0 || as_int > 9) { |
164 st->print(" (%x)", as_int); | 166 st->print(" (%x)", as_int); |
165 } | 167 } |
166 } | 168 } |
167 | 169 |
168 #endif /* PRODUCT */ | 170 #endif /* PRODUCT */ |