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:
Per Bothner 1999-02-21 07:42:22 -08:00
parent 92ada2426b
commit 2d5a51939f

View File

@ -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;
}