expr.c (process_jvm_instruction): Coerce to correct Throwable sub-type the result of the call that gets the...

d
	* expr.c (process_jvm_instruction):  Coerce to correct Throwable
	sub-type the result of the call that gets the exception value.
	* parse.y (java_complete_expand_methods):  If flags_syntax_only,
	don't call finish_class.
	* parse.y (java_check_regular_methods):  If METHOD_PRIVATE,
	clear found before continuing.
	* verify.c (verify_jvm_instructions):  On an array load, allow
	and handle top of stack to be TYPE_NULL.

From-SVN: r24697
This commit is contained in:
Per Bothner 1999-01-16 02:00:29 -08:00
parent 2dc219a11d
commit aabd704825
3 changed files with 16 additions and 6 deletions

View File

@ -2197,8 +2197,8 @@ process_jvm_instruction (PC, byte_ops, length)
replace the top of the stack with the thrown object reference */
if (instruction_bits [PC] & BCODE_EXCEPTION_TARGET)
{
pop_value (ptr_type_node);
push_value (soft_exceptioninfo_call_node);
tree type = pop_type (ptr_type_node);
push_value (build1 (NOP_EXPR, type, soft_exceptioninfo_call_node));
}
switch (byte_ops[PC++])

View File

@ -7161,8 +7161,13 @@ java_check_regular_methods (class_decl)
found = lookup_argument_method (super_class, DECL_NAME (method), sig);
/* Nothing overrides or it's a private method. */
if (!found || (found && METHOD_PRIVATE (found)))
if (!found)
continue;
if (METHOD_PRIVATE (found))
{
found = NULL_TREE;
continue;
}
/* If found wasn't verified, it's DECL_NAME won't be set properly.
We set it temporarily for the sake of the error report. */
@ -8310,7 +8315,7 @@ java_complete_expand_methods ()
{
if (flag_emit_class_files)
write_classfile (current_class);
else
else if (! flag_syntax_only)
finish_class (current_class);
}
}

View File

@ -4523,8 +4523,13 @@ java_check_regular_methods (class_decl)
found = lookup_argument_method (super_class, DECL_NAME (method), sig);
/* Nothing overrides or it's a private method. */
if (!found || (found && METHOD_PRIVATE (found)))
if (!found)
continue;
if (METHOD_PRIVATE (found))
{
found = NULL_TREE;
continue;
}
/* If found wasn't verified, it's DECL_NAME won't be set properly.
We set it temporarily for the sake of the error report. */
@ -5672,7 +5677,7 @@ java_complete_expand_methods ()
{
if (flag_emit_class_files)
write_classfile (current_class);
else
else if (! flag_syntax_only)
finish_class (current_class);
}
}