aboutsummaryrefslogtreecommitdiff
path: root/gdb/jv-valprint.c
diff options
context:
space:
mode:
authorUlrich Weigand <uweigand@de.ibm.com>2009-06-23 18:11:09 +0000
committerUlrich Weigand <uweigand@de.ibm.com>2009-06-23 18:11:09 +0000
commit45d5d5ca5d94e8690843688cef1e320aca18d39e (patch)
tree1cfda95418830bf959397df27ae72632771f0d8c /gdb/jv-valprint.c
parent3d857b98f555ee56c6fa6ed90c024424215574ed (diff)
downloadgdb-45d5d5ca5d94e8690843688cef1e320aca18d39e.zip
gdb-45d5d5ca5d94e8690843688cef1e320aca18d39e.tar.gz
gdb-45d5d5ca5d94e8690843688cef1e320aca18d39e.tar.bz2
* jv-lang.h (JAVA_OBJECT_SIZE): Remove.
(get_java_object_header_size): Add GDBARCH parameter. * jv-lang.c (get_java_object_header_size): Add GDBARCH parameter. Use it instead of current_gdbarch. (evaluate_subexp_java): Replace JAVA_OBJECT_SIZE with call to get_java_object_header_size. * jv-valprint.c (java_value_print): Likewise.
Diffstat (limited to 'gdb/jv-valprint.c')
-rw-r--r--gdb/jv-valprint.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/gdb/jv-valprint.c b/gdb/jv-valprint.c
index cdcb440..a15bc57 100644
--- a/gdb/jv-valprint.c
+++ b/gdb/jv-valprint.c
@@ -38,6 +38,7 @@ int
java_value_print (struct value *val, struct ui_file *stream,
const struct value_print_options *options)
{
+ struct gdbarch *gdbarch = current_gdbarch;
struct type *type;
CORE_ADDR address;
int i;
@@ -76,9 +77,8 @@ java_value_print (struct value *val, struct ui_file *stream,
unsigned int things_printed = 0;
int reps;
struct type *el_type = java_primitive_type_from_name (name, i - 2);
-
i = 0;
- read_memory (address + JAVA_OBJECT_SIZE, buf4, 4);
+ read_memory (address + get_java_object_header_size (gdbarch), buf4, 4);
length = (long) extract_signed_integer (buf4, 4);
fprintf_filtered (stream, "{length: %ld", length);
@@ -88,13 +88,14 @@ java_value_print (struct value *val, struct ui_file *stream,
CORE_ADDR element;
CORE_ADDR next_element = -1; /* dummy initial value */
- address += JAVA_OBJECT_SIZE + 4; /* Skip object header and length. */
+ /* Skip object header and length. */
+ address += get_java_object_header_size (gdbarch) + 4;
while (i < length && things_printed < options->print_max)
{
gdb_byte *buf;
- buf = alloca (gdbarch_ptr_bit (current_gdbarch) / HOST_CHAR_BIT);
+ buf = alloca (gdbarch_ptr_bit (gdbarch) / HOST_CHAR_BIT);
fputs_filtered (", ", stream);
wrap_here (n_spaces (2));
@@ -103,7 +104,7 @@ java_value_print (struct value *val, struct ui_file *stream,
else
{
read_memory (address, buf, sizeof (buf));
- address += gdbarch_ptr_bit (current_gdbarch) / HOST_CHAR_BIT;
+ address += gdbarch_ptr_bit (gdbarch) / HOST_CHAR_BIT;
/* FIXME: cagney/2003-05-24: Bogus or what. It
pulls a host sized pointer out of the target and
then extracts that as an address (while assuming
@@ -114,7 +115,7 @@ java_value_print (struct value *val, struct ui_file *stream,
for (reps = 1; i + reps < length; reps++)
{
read_memory (address, buf, sizeof (buf));
- address += gdbarch_ptr_bit (current_gdbarch) / HOST_CHAR_BIT;
+ address += gdbarch_ptr_bit (gdbarch) / HOST_CHAR_BIT;
/* FIXME: cagney/2003-05-24: Bogus or what. It
pulls a host sized pointer out of the target and
then extracts that as an address (while assuming
@@ -143,7 +144,8 @@ java_value_print (struct value *val, struct ui_file *stream,
struct value *v = allocate_value (el_type);
struct value *next_v = allocate_value (el_type);
- set_value_address (v, address + JAVA_OBJECT_SIZE + 4);
+ set_value_address (v, (address
+ + get_java_object_header_size (gdbarch) + 4));
set_value_address (next_v, value_raw_address (v));
while (i < length && things_printed < options->print_max)