Commit 6484716c by Nathan Froyd Committed by Nathan Froyd

java-tree.h (struct lang_decl_func): Change type of throws_list field to a VEC.

	* java-tree.h (struct lang_decl_func): Change type of throws_list
	field to a VEC.
	* jcf-parse.c (HANDLE_EXCEPTIONS_ATTRIBUTE): Adjust for changed type
	of DECL_FUNCTION_THROWS.
	* class.c (make_method_value): Likewise.

From-SVN: r159899
parent ab9b814d
2010-05-26 Nathan Froyd <froydnj@codesourcery.com> 2010-05-26 Nathan Froyd <froydnj@codesourcery.com>
* java-tree.h (struct lang_decl_func): Change type of throws_list
field to a VEC.
* jcf-parse.c (HANDLE_EXCEPTIONS_ATTRIBUTE): Adjust for changed type
of DECL_FUNCTION_THROWS.
* class.c (make_method_value): Likewise.
2010-05-26 Nathan Froyd <froydnj@codesourcery.com>
* class.c (utf8_decl_list): Delete. * class.c (utf8_decl_list): Delete.
(build_utf8_ref): Remove references to it. (build_utf8_ref): Remove references to it.
* java-tree.h (all_class_list): Delete. * java-tree.h (all_class_list): Delete.
......
...@@ -1519,18 +1519,19 @@ make_method_value (tree mdecl) ...@@ -1519,18 +1519,19 @@ make_method_value (tree mdecl)
{ {
/* Compute the `throws' information for the method. */ /* Compute the `throws' information for the method. */
tree table = null_pointer_node; tree table = null_pointer_node;
if (DECL_FUNCTION_THROWS (mdecl) != NULL_TREE) if (DECL_FUNCTION_THROWS (mdecl) != NULL)
{ {
int length = 1 + list_length (DECL_FUNCTION_THROWS (mdecl)); int length = 1 + VEC_length (tree, DECL_FUNCTION_THROWS (mdecl));
tree iter, type, array; tree t, type, array;
char buf[60]; char buf[60];
unsigned ix;
table = tree_cons (NULL_TREE, table, NULL_TREE); table = tree_cons (NULL_TREE, table, NULL_TREE);
for (iter = DECL_FUNCTION_THROWS (mdecl); for (ix = 0;
iter != NULL_TREE; VEC_iterate (tree, DECL_FUNCTION_THROWS (mdecl), ix, t);
iter = TREE_CHAIN (iter)) ix++)
{ {
tree sig = DECL_NAME (TYPE_NAME (TREE_VALUE (iter))); tree sig = DECL_NAME (TYPE_NAME (t));
tree utf8 tree utf8
= build_utf8_ref (unmangle_classname (IDENTIFIER_POINTER (sig), = build_utf8_ref (unmangle_classname (IDENTIFIER_POINTER (sig),
IDENTIFIER_LENGTH (sig))); IDENTIFIER_LENGTH (sig)));
......
...@@ -776,7 +776,7 @@ struct GTY(()) lang_decl_func { ...@@ -776,7 +776,7 @@ struct GTY(()) lang_decl_func {
int max_stack; int max_stack;
int arg_slot_count; int arg_slot_count;
source_location last_line; /* End line number for a function decl */ source_location last_line; /* End line number for a function decl */
tree throws_list; /* Exception specified by `throws' */ VEC(tree,gc) *throws_list; /* Exception specified by `throws' */
tree exc_obj; /* Decl holding the exception object. */ tree exc_obj; /* Decl holding the exception object. */
/* Class initialization test variables */ /* Class initialization test variables */
......
...@@ -936,13 +936,14 @@ handle_signature_attribute (int member_index, JCF *jcf, ...@@ -936,13 +936,14 @@ handle_signature_attribute (int member_index, JCF *jcf,
#define HANDLE_EXCEPTIONS_ATTRIBUTE(COUNT) \ #define HANDLE_EXCEPTIONS_ATTRIBUTE(COUNT) \
{ \ { \
int n = COUNT; \ int n = COUNT; \
tree list = DECL_FUNCTION_THROWS (current_method); \ VEC (tree,gc) *v = VEC_alloc (tree, gc, n); \
gcc_assert (DECL_FUNCTION_THROWS (current_method) == NULL); \
while (--n >= 0) \ while (--n >= 0) \
{ \ { \
tree thrown_class = get_class_constant (jcf, JCF_readu2 (jcf)); \ tree thrown_class = get_class_constant (jcf, JCF_readu2 (jcf)); \
list = tree_cons (NULL_TREE, thrown_class, list); \ VEC_quick_push (tree, v, thrown_class); \
} \ } \
DECL_FUNCTION_THROWS (current_method) = nreverse (list); \ DECL_FUNCTION_THROWS (current_method) = v; \
} }
#define HANDLE_DEPRECATED_ATTRIBUTE() handle_deprecated () #define HANDLE_DEPRECATED_ATTRIBUTE() handle_deprecated ()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment