decl.c (build_result_decl): New method.
* decl.c (build_result_decl), java-tree.h: New method. (complete_start_java_method): Handle synchronized methods. Don't build DECL_RESULT here. (Ordering dependency problem.) (start_java_method): Call build_result_decl here instead ... * parse.y (java_complete_expand_method): ... and here. (expand_start_java_method): Don't call complete_start_java_method here. (java_complete_expand_method): Call it here instead. * parse.h (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Moved to .. * java-tree.h: ... here. * expr.c (force_evaluation_order): Fix typo, don't handle ARRAY_REF. * parse.y (java_complete_lhs): Don't call force_evaluation_order for ARRAY_REF - it doesn't work when array bounds are checked. (patch_array_ref): Handle it here instead. From-SVN: r25345
This commit is contained in:
parent
92ada2426b
commit
2d5a51939f
@ -2760,7 +2760,8 @@ generate_classfile (clas, state)
|
||||
i = find_utf8_constant (&state->cpool, name); PUT2 (i);
|
||||
i = find_utf8_constant (&state->cpool, build_java_signature (type));
|
||||
PUT2 (i);
|
||||
PUT2 (body != NULL_TREE ? 1 : 0); /* attributes_count */
|
||||
i = (body != NULL_TREE) + (DECL_FUNCTION_THROWS (part) != NULL_TREE);
|
||||
PUT2 (i); /* attributes_count */
|
||||
if (body != NULL_TREE)
|
||||
{
|
||||
int code_attributes_count = 0;
|
||||
@ -2876,6 +2877,24 @@ generate_classfile (clas, state)
|
||||
}
|
||||
}
|
||||
}
|
||||
if (DECL_FUNCTION_THROWS (part) != NULL_TREE)
|
||||
{
|
||||
tree t = DECL_FUNCTION_THROWS (part);
|
||||
int throws_count = list_length (t);
|
||||
static tree Exceptions_node = NULL_TREE;
|
||||
if (Exceptions_node == NULL_TREE)
|
||||
Exceptions_node = get_identifier ("Exceptions");
|
||||
ptr = append_chunk (NULL, 8 + 2 * throws_count, state);
|
||||
i = find_utf8_constant (&state->cpool, Exceptions_node);
|
||||
PUT2 (i); /* attribute_name_index */
|
||||
i = 2 + 2 * throws_count; PUT4(i); /* attribute_length */
|
||||
i = throws_count; PUT2 (i);
|
||||
for (; t != NULL_TREE; t = TREE_CHAIN (t))
|
||||
{
|
||||
i = find_class_constant (&state->cpool, TREE_VALUE (t));
|
||||
PUT2 (i);
|
||||
}
|
||||
}
|
||||
methods_count++;
|
||||
current_function_decl = save_function;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user