re PR debug/43260 (Java static class members lack DWARF location info)
PR debug/43260 * java-tree.h (pending_static_fields): New extern declaration. (java_write_globals): New prototype. * lang.c (LANG_HOOKS_WRITE_GLOBALS): Define. * decl.c (java_mark_class_local): When clearing DECL_EXTERNAL of a static field push it into pending_static_fields vector. * class.c (pending_static_fields): New variable. (add_field): If static field is not DECL_EXTERNAL, push it into pending_static_fields vector. (java_write_globals): New function. From-SVN: r159828
This commit is contained in:
parent
9602a7a9c8
commit
6bb0a66a99
|
@ -1,3 +1,16 @@
|
||||||
|
2010-05-25 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR debug/43260
|
||||||
|
* java-tree.h (pending_static_fields): New extern declaration.
|
||||||
|
(java_write_globals): New prototype.
|
||||||
|
* lang.c (LANG_HOOKS_WRITE_GLOBALS): Define.
|
||||||
|
* decl.c (java_mark_class_local): When clearing DECL_EXTERNAL
|
||||||
|
of a static field push it into pending_static_fields vector.
|
||||||
|
* class.c (pending_static_fields): New variable.
|
||||||
|
(add_field): If static field is not DECL_EXTERNAL, push it into
|
||||||
|
pending_static_fields vector.
|
||||||
|
(java_write_globals): New function.
|
||||||
|
|
||||||
2010-05-24 Nathan Froyd <froydnj@codesourcery.com>
|
2010-05-24 Nathan Froyd <froydnj@codesourcery.com>
|
||||||
|
|
||||||
* expr.c (quick_stack): Change type to a VEC. Update comment.
|
* expr.c (quick_stack): Change type to a VEC. Update comment.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* Functions related to building classes and their related objects.
|
/* Functions related to building classes and their related objects.
|
||||||
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||||
2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
2005, 2006, 2007, 2008, 2010 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GCC.
|
This file is part of GCC.
|
||||||
|
|
||||||
|
@ -109,6 +109,10 @@ static GTY(()) VEC(tree,gc) *registered_class;
|
||||||
currently being compiled. */
|
currently being compiled. */
|
||||||
static GTY(()) tree this_classdollar;
|
static GTY(()) tree this_classdollar;
|
||||||
|
|
||||||
|
/* A list of static class fields. This is to emit proper debug
|
||||||
|
info for them. */
|
||||||
|
VEC(tree,gc) *pending_static_fields;
|
||||||
|
|
||||||
/* Return the node that most closely represents the class whose name
|
/* Return the node that most closely represents the class whose name
|
||||||
is IDENT. Start the search from NODE (followed by its siblings).
|
is IDENT. Start the search from NODE (followed by its siblings).
|
||||||
Return NULL if an appropriate node does not exist. */
|
Return NULL if an appropriate node does not exist. */
|
||||||
|
@ -873,6 +877,8 @@ add_field (tree klass, tree name, tree field_type, int flags)
|
||||||
/* Considered external unless we are compiling it into this
|
/* Considered external unless we are compiling it into this
|
||||||
object file. */
|
object file. */
|
||||||
DECL_EXTERNAL (field) = (is_compiled_class (klass) != 2);
|
DECL_EXTERNAL (field) = (is_compiled_class (klass) != 2);
|
||||||
|
if (!DECL_EXTERNAL (field))
|
||||||
|
VEC_safe_push (tree, gc, pending_static_fields, field);
|
||||||
}
|
}
|
||||||
|
|
||||||
return field;
|
return field;
|
||||||
|
@ -3224,4 +3230,17 @@ in_same_package (tree name1, tree name2)
|
||||||
return (pkg1 == pkg2);
|
return (pkg1 == pkg2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* lang_hooks.decls.final_write_globals: perform final processing on
|
||||||
|
global variables. */
|
||||||
|
|
||||||
|
void
|
||||||
|
java_write_globals (void)
|
||||||
|
{
|
||||||
|
tree *vec = VEC_address (tree, pending_static_fields);
|
||||||
|
int len = VEC_length (tree, pending_static_fields);
|
||||||
|
write_global_declarations ();
|
||||||
|
emit_debug_global_declarations (vec, len);
|
||||||
|
VEC_free (tree, gc, pending_static_fields);
|
||||||
|
}
|
||||||
|
|
||||||
#include "gt-java-class.h"
|
#include "gt-java-class.h"
|
||||||
|
|
|
@ -2000,7 +2000,11 @@ java_mark_class_local (tree klass)
|
||||||
|
|
||||||
for (t = TYPE_FIELDS (klass); t ; t = TREE_CHAIN (t))
|
for (t = TYPE_FIELDS (klass); t ; t = TREE_CHAIN (t))
|
||||||
if (FIELD_STATIC (t))
|
if (FIELD_STATIC (t))
|
||||||
java_mark_decl_local (t);
|
{
|
||||||
|
if (DECL_EXTERNAL (t))
|
||||||
|
VEC_safe_push (tree, gc, pending_static_fields, t);
|
||||||
|
java_mark_decl_local (t);
|
||||||
|
}
|
||||||
|
|
||||||
for (t = TYPE_METHODS (klass); t ; t = TREE_CHAIN (t))
|
for (t = TYPE_METHODS (klass); t ; t = TREE_CHAIN (t))
|
||||||
if (!METHOD_ABSTRACT (t))
|
if (!METHOD_ABSTRACT (t))
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* Definitions for parsing and type checking for the GNU compiler for
|
/* Definitions for parsing and type checking for the GNU compiler for
|
||||||
the Java(TM) language.
|
the Java(TM) language.
|
||||||
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||||
2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
2005, 2006, 2007, 2008, 2010 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GCC.
|
This file is part of GCC.
|
||||||
|
|
||||||
|
@ -1231,6 +1231,10 @@ extern void rewrite_reflection_indexes (void *);
|
||||||
|
|
||||||
int cxx_keyword_p (const char *name, int length);
|
int cxx_keyword_p (const char *name, int length);
|
||||||
|
|
||||||
|
extern GTY(()) VEC(tree,gc) *pending_static_fields;
|
||||||
|
|
||||||
|
extern void java_write_globals (void);
|
||||||
|
|
||||||
#define DECL_FINAL(DECL) DECL_LANG_FLAG_3 (DECL)
|
#define DECL_FINAL(DECL) DECL_LANG_FLAG_3 (DECL)
|
||||||
|
|
||||||
/* Access flags etc for a method (a FUNCTION_DECL): */
|
/* Access flags etc for a method (a FUNCTION_DECL): */
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* Java(TM) language-specific utility routines.
|
/* Java(TM) language-specific utility routines.
|
||||||
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||||
2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
2005, 2006, 2007, 2008, 2010 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GCC.
|
This file is part of GCC.
|
||||||
|
|
||||||
|
@ -136,6 +136,8 @@ struct GTY(()) language_function {
|
||||||
#define LANG_HOOKS_DECL_PRINTABLE_NAME lang_printable_name
|
#define LANG_HOOKS_DECL_PRINTABLE_NAME lang_printable_name
|
||||||
#undef LANG_HOOKS_PRINT_ERROR_FUNCTION
|
#undef LANG_HOOKS_PRINT_ERROR_FUNCTION
|
||||||
#define LANG_HOOKS_PRINT_ERROR_FUNCTION java_print_error_function
|
#define LANG_HOOKS_PRINT_ERROR_FUNCTION java_print_error_function
|
||||||
|
#undef LANG_HOOKS_WRITE_GLOBALS
|
||||||
|
#define LANG_HOOKS_WRITE_GLOBALS java_write_globals
|
||||||
|
|
||||||
#undef LANG_HOOKS_TYPE_FOR_MODE
|
#undef LANG_HOOKS_TYPE_FOR_MODE
|
||||||
#define LANG_HOOKS_TYPE_FOR_MODE java_type_for_mode
|
#define LANG_HOOKS_TYPE_FOR_MODE java_type_for_mode
|
||||||
|
|
Loading…
Reference in New Issue