| OLD | NEW |
| 1 /* Java language support routines for GDB, the GNU debugger. | 1 /* Java language support routines for GDB, the GNU debugger. |
| 2 | 2 |
| 3 Copyright (C) 1997-2000, 2003-2005, 2007-2012 Free Software | 3 Copyright (C) 1997-2000, 2003-2005, 2007-2012 Free Software |
| 4 Foundation, Inc. | 4 Foundation, Inc. |
| 5 | 5 |
| 6 This file is part of GDB. | 6 This file is part of GDB. |
| 7 | 7 |
| 8 This program is free software; you can redistribute it and/or modify | 8 This program is free software; you can redistribute it and/or modify |
| 9 it under the terms of the GNU General Public License as published by | 9 it under the terms of the GNU General Public License as published by |
| 10 the Free Software Foundation; either version 3 of the License, or | 10 the Free Software Foundation; either version 3 of the License, or |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 #include "dictionary.h" | 38 #include "dictionary.h" |
| 39 #include <ctype.h> | 39 #include <ctype.h> |
| 40 #include "gdb_assert.h" | 40 #include "gdb_assert.h" |
| 41 #include "charset.h" | 41 #include "charset.h" |
| 42 #include "valprint.h" | 42 #include "valprint.h" |
| 43 | 43 |
| 44 /* Local functions */ | 44 /* Local functions */ |
| 45 | 45 |
| 46 extern void _initialize_java_language (void); | 46 extern void _initialize_java_language (void); |
| 47 | 47 |
| 48 static int java_demangled_signature_length (char *); | 48 static int java_demangled_signature_length (const char *); |
| 49 static void java_demangled_signature_copy (char *, char *); | 49 static void java_demangled_signature_copy (char *, const char *); |
| 50 | 50 |
| 51 static struct symtab *get_java_class_symtab (struct gdbarch *gdbarch); | 51 static struct symtab *get_java_class_symtab (struct gdbarch *gdbarch); |
| 52 static char *get_java_utf8_name (struct obstack *obstack, struct value *name); | 52 static char *get_java_utf8_name (struct obstack *obstack, struct value *name); |
| 53 static int java_class_is_primitive (struct value *clas); | 53 static int java_class_is_primitive (struct value *clas); |
| 54 static struct value *java_value_string (char *ptr, int len); | 54 static struct value *java_value_string (char *ptr, int len); |
| 55 | 55 |
| 56 static void java_emit_char (int c, struct type *type, | 56 static void java_emit_char (int c, struct type *type, |
| 57 struct ui_file * stream, int quoter); | 57 struct ui_file * stream, int quoter); |
| 58 | 58 |
| 59 static char *java_class_name_from_physname (const char *physname); | 59 static char *java_class_name_from_physname (const char *physname); |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 BLOCKVECTOR_NBLOCKS (bv) = 1; | 151 BLOCKVECTOR_NBLOCKS (bv) = 1; |
| 152 BLOCKVECTOR (class_symtab) = bv; | 152 BLOCKVECTOR (class_symtab) = bv; |
| 153 | 153 |
| 154 /* Allocate dummy STATIC_BLOCK. */ | 154 /* Allocate dummy STATIC_BLOCK. */ |
| 155 bl = allocate_block (&objfile->objfile_obstack); | 155 bl = allocate_block (&objfile->objfile_obstack); |
| 156 BLOCK_DICT (bl) = dict_create_linear (&objfile->objfile_obstack, | 156 BLOCK_DICT (bl) = dict_create_linear (&objfile->objfile_obstack, |
| 157 NULL); | 157 NULL); |
| 158 BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK) = bl; | 158 BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK) = bl; |
| 159 | 159 |
| 160 /* Allocate GLOBAL_BLOCK. */ | 160 /* Allocate GLOBAL_BLOCK. */ |
| 161 bl = allocate_block (&objfile->objfile_obstack); | 161 bl = allocate_global_block (&objfile->objfile_obstack); |
| 162 BLOCK_DICT (bl) = dict_create_hashed_expandable (); | 162 BLOCK_DICT (bl) = dict_create_hashed_expandable (); |
| 163 set_block_symtab (bl, class_symtab); |
| 163 BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK) = bl; | 164 BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK) = bl; |
| 164 | 165 |
| 165 /* Arrange to free the dict. */ | 166 /* Arrange to free the dict. */ |
| 166 jv_data = objfile_data (objfile, jv_dynamics_objfile_data_key); | 167 jv_data = objfile_data (objfile, jv_dynamics_objfile_data_key); |
| 167 jv_data->dict = BLOCK_DICT (bl); | 168 jv_data->dict = BLOCK_DICT (bl); |
| 168 } | 169 } |
| 169 return class_symtab; | 170 return class_symtab; |
| 170 } | 171 } |
| 171 | 172 |
| 172 static void | 173 static void |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 334 return java_link_class_type (gdbarch, type, clas); | 335 return java_link_class_type (gdbarch, type, clas); |
| 335 } | 336 } |
| 336 | 337 |
| 337 /* Fill in class TYPE with data from the CLAS value. */ | 338 /* Fill in class TYPE with data from the CLAS value. */ |
| 338 | 339 |
| 339 static struct type * | 340 static struct type * |
| 340 java_link_class_type (struct gdbarch *gdbarch, | 341 java_link_class_type (struct gdbarch *gdbarch, |
| 341 struct type *type, struct value *clas) | 342 struct type *type, struct value *clas) |
| 342 { | 343 { |
| 343 struct value *temp; | 344 struct value *temp; |
| 344 char *unqualified_name; | 345 const char *unqualified_name; |
| 345 char *name = TYPE_TAG_NAME (type); | 346 const char *name = TYPE_TAG_NAME (type); |
| 346 int ninterfaces, nfields, nmethods; | 347 int ninterfaces, nfields, nmethods; |
| 347 int type_is_object = 0; | 348 int type_is_object = 0; |
| 348 struct fn_field *fn_fields; | 349 struct fn_field *fn_fields; |
| 349 struct fn_fieldlist *fn_fieldlists; | 350 struct fn_fieldlist *fn_fieldlists; |
| 350 struct value *fields; | 351 struct value *fields; |
| 351 struct value *methods; | 352 struct value *methods; |
| 352 struct value *method = NULL; | 353 struct value *method = NULL; |
| 353 struct value *field = NULL; | 354 struct value *field = NULL; |
| 354 int i, j; | 355 int i, j; |
| 355 struct objfile *objfile = get_dynamics_objfile (gdbarch); | 356 struct objfile *objfile = get_dynamics_objfile (gdbarch); |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 473 { | 474 { |
| 474 SET_TYPE_FIELD_PRIVATE (type, i); | 475 SET_TYPE_FIELD_PRIVATE (type, i); |
| 475 } | 476 } |
| 476 if (accflags & 0x0004) /* protected access */ | 477 if (accflags & 0x0004) /* protected access */ |
| 477 { | 478 { |
| 478 SET_TYPE_FIELD_PROTECTED (type, i); | 479 SET_TYPE_FIELD_PROTECTED (type, i); |
| 479 } | 480 } |
| 480 if (accflags & 0x0008) /* ACC_STATIC */ | 481 if (accflags & 0x0008) /* ACC_STATIC */ |
| 481 SET_FIELD_PHYSADDR (TYPE_FIELD (type, i), boffset); | 482 SET_FIELD_PHYSADDR (TYPE_FIELD (type, i), boffset); |
| 482 else | 483 else |
| 483 » TYPE_FIELD_BITPOS (type, i) = 8 * boffset; | 484 » SET_FIELD_BITPOS (TYPE_FIELD (type, i), 8 * boffset); |
| 484 if (accflags & 0x8000) /* FIELD_UNRESOLVED_FLAG */ | 485 if (accflags & 0x8000) /* FIELD_UNRESOLVED_FLAG */ |
| 485 { | 486 { |
| 486 TYPE_FIELD_TYPE (type, i) = get_java_object_type (); /* FIXME */ | 487 TYPE_FIELD_TYPE (type, i) = get_java_object_type (); /* FIXME */ |
| 487 } | 488 } |
| 488 else | 489 else |
| 489 { | 490 { |
| 490 struct type *ftype; | 491 struct type *ftype; |
| 491 | 492 |
| 492 temp = field; | 493 temp = field; |
| 493 temp = value_struct_elt (&temp, NULL, "type", NULL, "structure"); | 494 temp = value_struct_elt (&temp, NULL, "type", NULL, "structure"); |
| 494 ftype = type_from_class (gdbarch, temp); | 495 ftype = type_from_class (gdbarch, temp); |
| 495 if (TYPE_CODE (ftype) == TYPE_CODE_STRUCT) | 496 if (TYPE_CODE (ftype) == TYPE_CODE_STRUCT) |
| 496 ftype = lookup_pointer_type (ftype); | 497 ftype = lookup_pointer_type (ftype); |
| 497 TYPE_FIELD_TYPE (type, i) = ftype; | 498 TYPE_FIELD_TYPE (type, i) = ftype; |
| 498 } | 499 } |
| 499 } | 500 } |
| 500 | 501 |
| 501 temp = clas; | 502 temp = clas; |
| 502 nmethods = value_as_long (value_struct_elt (&temp, NULL, "method_count", | 503 nmethods = value_as_long (value_struct_elt (&temp, NULL, "method_count", |
| 503 NULL, "structure")); | 504 NULL, "structure")); |
| 504 TYPE_NFN_FIELDS_TOTAL (type) = nmethods; | |
| 505 j = nmethods * sizeof (struct fn_field); | 505 j = nmethods * sizeof (struct fn_field); |
| 506 fn_fields = (struct fn_field *) | 506 fn_fields = (struct fn_field *) |
| 507 obstack_alloc (&objfile->objfile_obstack, j); | 507 obstack_alloc (&objfile->objfile_obstack, j); |
| 508 memset (fn_fields, 0, j); | 508 memset (fn_fields, 0, j); |
| 509 fn_fieldlists = (struct fn_fieldlist *) | 509 fn_fieldlists = (struct fn_fieldlist *) |
| 510 alloca (nmethods * sizeof (struct fn_fieldlist)); | 510 alloca (nmethods * sizeof (struct fn_fieldlist)); |
| 511 | 511 |
| 512 methods = NULL; | 512 methods = NULL; |
| 513 for (i = 0; i < nmethods; i++) | 513 for (i = 0; i < nmethods; i++) |
| 514 { | 514 { |
| 515 char *mname; | 515 const char *mname; |
| 516 int k; | 516 int k; |
| 517 | 517 |
| 518 if (methods == NULL) | 518 if (methods == NULL) |
| 519 { | 519 { |
| 520 temp = clas; | 520 temp = clas; |
| 521 methods = value_struct_elt (&temp, NULL, "methods", | 521 methods = value_struct_elt (&temp, NULL, "methods", |
| 522 NULL, "structure"); | 522 NULL, "structure"); |
| 523 method = value_ind (methods); | 523 method = value_ind (methods); |
| 524 } | 524 } |
| 525 else | 525 else |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 611 return TYPE_LENGTH (objtype); | 611 return TYPE_LENGTH (objtype); |
| 612 } | 612 } |
| 613 | 613 |
| 614 int | 614 int |
| 615 is_object_type (struct type *type) | 615 is_object_type (struct type *type) |
| 616 { | 616 { |
| 617 CHECK_TYPEDEF (type); | 617 CHECK_TYPEDEF (type); |
| 618 if (TYPE_CODE (type) == TYPE_CODE_PTR) | 618 if (TYPE_CODE (type) == TYPE_CODE_PTR) |
| 619 { | 619 { |
| 620 struct type *ttype = check_typedef (TYPE_TARGET_TYPE (type)); | 620 struct type *ttype = check_typedef (TYPE_TARGET_TYPE (type)); |
| 621 char *name; | 621 const char *name; |
| 622 if (TYPE_CODE (ttype) != TYPE_CODE_STRUCT) | 622 if (TYPE_CODE (ttype) != TYPE_CODE_STRUCT) |
| 623 return 0; | 623 return 0; |
| 624 while (TYPE_N_BASECLASSES (ttype) > 0) | 624 while (TYPE_N_BASECLASSES (ttype) > 0) |
| 625 ttype = TYPE_BASECLASS (ttype, 0); | 625 ttype = TYPE_BASECLASS (ttype, 0); |
| 626 name = TYPE_TAG_NAME (ttype); | 626 name = TYPE_TAG_NAME (ttype); |
| 627 if (name != NULL && strcmp (name, "java.lang.Object") == 0) | 627 if (name != NULL && strcmp (name, "java.lang.Object") == 0) |
| 628 return 1; | 628 return 1; |
| 629 name | 629 name |
| 630 = TYPE_NFIELDS (ttype) > 0 ? TYPE_FIELD_NAME (ttype, 0) : (char *) 0; | 630 = TYPE_NFIELDS (ttype) > 0 ? TYPE_FIELD_NAME (ttype, 0) : (char *) 0; |
| 631 if (name != NULL && strcmp (name, "vtable") == 0) | 631 if (name != NULL && strcmp (name, "vtable") == 0) |
| (...skipping 29 matching lines...) Expand all Loading... |
| 661 return builtin->builtin_void; | 661 return builtin->builtin_void; |
| 662 } | 662 } |
| 663 error (_("unknown signature '%c' for primitive type"), (char) signature); | 663 error (_("unknown signature '%c' for primitive type"), (char) signature); |
| 664 } | 664 } |
| 665 | 665 |
| 666 /* If name[0 .. namelen-1] is the name of a primitive Java type, | 666 /* If name[0 .. namelen-1] is the name of a primitive Java type, |
| 667 return that type. Otherwise, return NULL. */ | 667 return that type. Otherwise, return NULL. */ |
| 668 | 668 |
| 669 struct type * | 669 struct type * |
| 670 java_primitive_type_from_name (struct gdbarch *gdbarch, | 670 java_primitive_type_from_name (struct gdbarch *gdbarch, |
| 671 » » » char *name, int namelen) | 671 » » » const char *name, int namelen) |
| 672 { | 672 { |
| 673 const struct builtin_java_type *builtin = builtin_java_type (gdbarch); | 673 const struct builtin_java_type *builtin = builtin_java_type (gdbarch); |
| 674 | 674 |
| 675 switch (name[0]) | 675 switch (name[0]) |
| 676 { | 676 { |
| 677 case 'b': | 677 case 'b': |
| 678 if (namelen == 4 && memcmp (name, "byte", 4) == 0) | 678 if (namelen == 4 && memcmp (name, "byte", 4) == 0) |
| 679 return builtin->builtin_byte; | 679 return builtin->builtin_byte; |
| 680 if (namelen == 7 && memcmp (name, "boolean", 7) == 0) | 680 if (namelen == 7 && memcmp (name, "boolean", 7) == 0) |
| 681 return builtin->builtin_boolean; | 681 return builtin->builtin_boolean; |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 736 case 'V': | 736 case 'V': |
| 737 return "void"; | 737 return "void"; |
| 738 } | 738 } |
| 739 error (_("unknown signature '%c' for primitive type"), (char) signature); | 739 error (_("unknown signature '%c' for primitive type"), (char) signature); |
| 740 } | 740 } |
| 741 | 741 |
| 742 /* Return the length (in bytes) of demangled name of the Java type | 742 /* Return the length (in bytes) of demangled name of the Java type |
| 743 signature string SIGNATURE. */ | 743 signature string SIGNATURE. */ |
| 744 | 744 |
| 745 static int | 745 static int |
| 746 java_demangled_signature_length (char *signature) | 746 java_demangled_signature_length (const char *signature) |
| 747 { | 747 { |
| 748 int array = 0; | 748 int array = 0; |
| 749 | 749 |
| 750 for (; *signature == '['; signature++) | 750 for (; *signature == '['; signature++) |
| 751 array += 2; /* Two chars for "[]". */ | 751 array += 2; /* Two chars for "[]". */ |
| 752 switch (signature[0]) | 752 switch (signature[0]) |
| 753 { | 753 { |
| 754 case 'L': | 754 case 'L': |
| 755 /* Subtract 2 for 'L' and ';'. */ | 755 /* Subtract 2 for 'L' and ';'. */ |
| 756 return strlen (signature) - 2 + array; | 756 return strlen (signature) - 2 + array; |
| 757 default: | 757 default: |
| 758 return strlen (java_primitive_type_name (signature[0])) + array; | 758 return strlen (java_primitive_type_name (signature[0])) + array; |
| 759 } | 759 } |
| 760 } | 760 } |
| 761 | 761 |
| 762 /* Demangle the Java type signature SIGNATURE, leaving the result in | 762 /* Demangle the Java type signature SIGNATURE, leaving the result in |
| 763 RESULT. */ | 763 RESULT. */ |
| 764 | 764 |
| 765 static void | 765 static void |
| 766 java_demangled_signature_copy (char *result, char *signature) | 766 java_demangled_signature_copy (char *result, const char *signature) |
| 767 { | 767 { |
| 768 int array = 0; | 768 int array = 0; |
| 769 char *ptr; | 769 char *ptr; |
| 770 int i; | 770 int i; |
| 771 | 771 |
| 772 while (*signature == '[') | 772 while (*signature == '[') |
| 773 { | 773 { |
| 774 array++; | 774 array++; |
| 775 signature++; | 775 signature++; |
| 776 } | 776 } |
| (...skipping 22 matching lines...) Expand all Loading... |
| 799 { | 799 { |
| 800 *ptr++ = '['; | 800 *ptr++ = '['; |
| 801 *ptr++ = ']'; | 801 *ptr++ = ']'; |
| 802 } | 802 } |
| 803 } | 803 } |
| 804 | 804 |
| 805 /* Return the demangled name of the Java type signature string SIGNATURE, | 805 /* Return the demangled name of the Java type signature string SIGNATURE, |
| 806 as a freshly allocated copy. */ | 806 as a freshly allocated copy. */ |
| 807 | 807 |
| 808 char * | 808 char * |
| 809 java_demangle_type_signature (char *signature) | 809 java_demangle_type_signature (const char *signature) |
| 810 { | 810 { |
| 811 int length = java_demangled_signature_length (signature); | 811 int length = java_demangled_signature_length (signature); |
| 812 char *result = xmalloc (length + 1); | 812 char *result = xmalloc (length + 1); |
| 813 | 813 |
| 814 java_demangled_signature_copy (result, signature); | 814 java_demangled_signature_copy (result, signature); |
| 815 result[length] = '\0'; | 815 result[length] = '\0'; |
| 816 return result; | 816 return result; |
| 817 } | 817 } |
| 818 | 818 |
| 819 /* Return the type of TYPE followed by DIMS pairs of [ ]. | 819 /* Return the type of TYPE followed by DIMS pairs of [ ]. |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 899 generic_printstr (stream, type, string, length, encoding, | 899 generic_printstr (stream, type, string, length, encoding, |
| 900 force_ellipses, '"', 0, options); | 900 force_ellipses, '"', 0, options); |
| 901 } | 901 } |
| 902 | 902 |
| 903 static struct value * | 903 static struct value * |
| 904 evaluate_subexp_java (struct type *expect_type, struct expression *exp, | 904 evaluate_subexp_java (struct type *expect_type, struct expression *exp, |
| 905 int *pos, enum noside noside) | 905 int *pos, enum noside noside) |
| 906 { | 906 { |
| 907 int pc = *pos; | 907 int pc = *pos; |
| 908 int i; | 908 int i; |
| 909 char *name; | 909 const char *name; |
| 910 enum exp_opcode op = exp->elts[*pos].opcode; | 910 enum exp_opcode op = exp->elts[*pos].opcode; |
| 911 struct value *arg1; | 911 struct value *arg1; |
| 912 struct value *arg2; | 912 struct value *arg2; |
| 913 struct type *type; | 913 struct type *type; |
| 914 | 914 |
| 915 switch (op) | 915 switch (op) |
| 916 { | 916 { |
| 917 case UNOP_IND: | 917 case UNOP_IND: |
| 918 if (noside == EVAL_SKIP) | 918 if (noside == EVAL_SKIP) |
| 919 goto standard; | 919 goto standard; |
| (...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1175 java_parse, | 1175 java_parse, |
| 1176 java_error, | 1176 java_error, |
| 1177 null_post_parser, | 1177 null_post_parser, |
| 1178 java_printchar, /* Print a character constant */ | 1178 java_printchar, /* Print a character constant */ |
| 1179 java_printstr, /* Function to print string constant */ | 1179 java_printstr, /* Function to print string constant */ |
| 1180 java_emit_char, /* Function to print a single character */ | 1180 java_emit_char, /* Function to print a single character */ |
| 1181 java_print_type, /* Print a type using appropriate syntax */ | 1181 java_print_type, /* Print a type using appropriate syntax */ |
| 1182 default_print_typedef, /* Print a typedef using appropriate syntax */ | 1182 default_print_typedef, /* Print a typedef using appropriate syntax */ |
| 1183 java_val_print, /* Print a value using appropriate syntax */ | 1183 java_val_print, /* Print a value using appropriate syntax */ |
| 1184 java_value_print, /* Print a top-level value */ | 1184 java_value_print, /* Print a top-level value */ |
| 1185 default_read_var_value, /* la_read_var_value */ |
| 1185 NULL, /* Language specific skip_trampoline */ | 1186 NULL, /* Language specific skip_trampoline */ |
| 1186 "this", /* name_of_this */ | 1187 "this", /* name_of_this */ |
| 1187 basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */ | 1188 basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */ |
| 1188 basic_lookup_transparent_type,/* lookup_transparent_type */ | 1189 basic_lookup_transparent_type,/* lookup_transparent_type */ |
| 1189 java_demangle, /* Language specific symbol demangler */ | 1190 java_demangle, /* Language specific symbol demangler */ |
| 1190 java_class_name_from_physname,/* Language specific class name */ | 1191 java_class_name_from_physname,/* Language specific class name */ |
| 1191 java_op_print_tab, /* expression operators for printing */ | 1192 java_op_print_tab, /* expression operators for printing */ |
| 1192 0, /* not c-style arrays */ | 1193 0, /* not c-style arrays */ |
| 1193 0, /* String lower bound */ | 1194 0, /* String lower bound */ |
| 1194 default_word_break_characters, | 1195 default_word_break_characters, |
| 1195 default_make_symbol_completion_list, | 1196 default_make_symbol_completion_list, |
| 1196 java_language_arch_info, | 1197 java_language_arch_info, |
| 1197 default_print_array_index, | 1198 default_print_array_index, |
| 1198 default_pass_by_reference, | 1199 default_pass_by_reference, |
| 1199 default_get_string, | 1200 default_get_string, |
| 1200 strcmp_iw_ordered, | 1201 NULL,»» » » /* la_get_symbol_name_cmp */ |
| 1201 iterate_over_symbols, | 1202 iterate_over_symbols, |
| 1202 LANG_MAGIC | 1203 LANG_MAGIC |
| 1203 }; | 1204 }; |
| 1204 | 1205 |
| 1205 static void * | 1206 static void * |
| 1206 build_java_types (struct gdbarch *gdbarch) | 1207 build_java_types (struct gdbarch *gdbarch) |
| 1207 { | 1208 { |
| 1208 struct builtin_java_type *builtin_java_type | 1209 struct builtin_java_type *builtin_java_type |
| 1209 = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct builtin_java_type); | 1210 = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct builtin_java_type); |
| 1210 | 1211 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1242 _initialize_java_language (void) | 1243 _initialize_java_language (void) |
| 1243 { | 1244 { |
| 1244 jv_dynamics_objfile_data_key | 1245 jv_dynamics_objfile_data_key |
| 1245 = register_objfile_data_with_cleanup (NULL, jv_per_objfile_free); | 1246 = register_objfile_data_with_cleanup (NULL, jv_per_objfile_free); |
| 1246 jv_dynamics_progspace_key = register_program_space_data (); | 1247 jv_dynamics_progspace_key = register_program_space_data (); |
| 1247 | 1248 |
| 1248 java_type_data = gdbarch_data_register_post_init (build_java_types); | 1249 java_type_data = gdbarch_data_register_post_init (build_java_types); |
| 1249 | 1250 |
| 1250 add_language (&java_language_defn); | 1251 add_language (&java_language_defn); |
| 1251 } | 1252 } |
| OLD | NEW |