[multiple changes]

Tue Nov 30 12:36:15 1999  Anthony Green  <green@cygnus.com>

        * verify.c (verify_jvm_instructions): Create new return label
        chain if non existant (don't rely on the verified state of the jsr
        target.)

Tue Nov 23 17:29:40 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>

        * verify.c (merge_type_state): Non verified subroutines being
        considered more than once to trigger passive type merge.

From-SVN: r30811
parent 730f0207
...@@ -3,6 +3,12 @@ Wed Dec 1 04:25:06 1999 Alexandre Petit-Bianco <apbianco@cygnus.com> ...@@ -3,6 +3,12 @@ Wed Dec 1 04:25:06 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* except.c (expand_end_java_handler): Call * except.c (expand_end_java_handler): Call
expand_resume_after_catch and end_catch_handler. expand_resume_after_catch and end_catch_handler.
Tue Nov 30 12:36:15 1999 Anthony Green <green@cygnus.com>
* verify.c (verify_jvm_instructions): Create new return label
chain if non existant (don't rely on the verified state of the jsr
target.)
Tue Nov 30 12:28:34 1999 Alexandre Petit-Bianco <apbianco@cygnus.com> Tue Nov 30 12:28:34 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* jcf-write.c (generate_byecode_insns): Fixed indentation for * jcf-write.c (generate_byecode_insns): Fixed indentation for
...@@ -23,6 +29,11 @@ Wed Nov 24 17:33:26 1999 Alexandre Petit-Bianco <apbianco@cygnus.com> ...@@ -23,6 +29,11 @@ Wed Nov 24 17:33:26 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* except.c (emit_handlers): Zero catch_clauses after emitting them. * except.c (emit_handlers): Zero catch_clauses after emitting them.
Tue Nov 23 17:29:40 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* verify.c (merge_type_state): Non verified subroutines being
considered more than once to trigger passive type merge.
Tue Nov 23 10:55:18 1999 Alexandre Petit-Bianco <apbianco@cygnus.com> Tue Nov 23 10:55:18 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (catch_clause_parameter:): Still set `$$' to NULL_TREE * parse.y (catch_clause_parameter:): Still set `$$' to NULL_TREE
......
...@@ -216,10 +216,13 @@ merge_type_state (label) ...@@ -216,10 +216,13 @@ merge_type_state (label)
int cur_length = stack_pointer + nlocals; int cur_length = stack_pointer + nlocals;
tree vec = LABEL_TYPE_STATE (label); tree vec = LABEL_TYPE_STATE (label);
tree return_map; tree return_map;
if (vec == NULL_TREE) if (vec == NULL_TREE || !LABEL_VERIFIED (label))
{
if (!vec)
{ {
vec = make_tree_vec (cur_length); vec = make_tree_vec (cur_length);
LABEL_TYPE_STATE (label) = vec; LABEL_TYPE_STATE (label) = vec;
}
while (--cur_length >= 0) while (--cur_length >= 0)
TREE_VEC_ELT (vec, cur_length) = type_map [cur_length]; TREE_VEC_ELT (vec, cur_length) = type_map [cur_length];
return 1; return 1;
...@@ -1153,9 +1156,10 @@ verify_jvm_instructions (jcf, byte_ops, length) ...@@ -1153,9 +1156,10 @@ verify_jvm_instructions (jcf, byte_ops, length)
tree target = lookup_label (oldpc + IMMEDIATE_s2); tree target = lookup_label (oldpc + IMMEDIATE_s2);
tree return_label = lookup_label (PC); tree return_label = lookup_label (PC);
push_type (return_address_type_node); push_type (return_address_type_node);
if (! LABEL_VERIFIED (target)) /* The return label chain will be null if this is the first
time we've seen this jsr target. */
if (LABEL_RETURN_LABEL (target) == NULL_TREE)
{ {
/* first time seen */
tree return_type_map; tree return_type_map;
int nlocals = DECL_MAX_LOCALS (current_function_decl); int nlocals = DECL_MAX_LOCALS (current_function_decl);
index = nlocals + DECL_MAX_STACK (current_function_decl); index = nlocals + DECL_MAX_STACK (current_function_decl);
......
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