diff options
author | apbianco <apbianco@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-12-06 19:56:58 +0000 |
---|---|---|
committer | apbianco <apbianco@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-12-06 19:56:58 +0000 |
commit | fd42932f146b1ce4136bd0edc05b8f2f94679483 (patch) | |
tree | ddf284ed2a7ed8687ce5deda9ffcab1baff6b2c9 /gcc/java | |
parent | 6c664d8d68bae261d1beb86f1299f2dfecc66de3 (diff) | |
download | gcc-fd42932f146b1ce4136bd0edc05b8f2f94679483.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30811 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/java')
-rw-r--r-- | gcc/java/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/java/verify.c | 14 |
2 files changed, 20 insertions, 5 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 62a6f8828ce..bf90f870a31 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -3,6 +3,12 @@ Wed Dec 1 04:25:06 1999 Alexandre Petit-Bianco <apbianco@cygnus.com> * except.c (expand_end_java_handler): Call 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> * 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> * 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> * parse.y (catch_clause_parameter:): Still set `$$' to NULL_TREE diff --git a/gcc/java/verify.c b/gcc/java/verify.c index 41ad823cb46..d17a184bf40 100644 --- a/gcc/java/verify.c +++ b/gcc/java/verify.c @@ -216,10 +216,13 @@ merge_type_state (label) int cur_length = stack_pointer + nlocals; tree vec = LABEL_TYPE_STATE (label); tree return_map; - if (vec == NULL_TREE) + if (vec == NULL_TREE || !LABEL_VERIFIED (label)) { - vec = make_tree_vec (cur_length); - LABEL_TYPE_STATE (label) = vec; + if (!vec) + { + vec = make_tree_vec (cur_length); + LABEL_TYPE_STATE (label) = vec; + } while (--cur_length >= 0) TREE_VEC_ELT (vec, cur_length) = type_map [cur_length]; return 1; @@ -1153,9 +1156,10 @@ verify_jvm_instructions (jcf, byte_ops, length) tree target = lookup_label (oldpc + IMMEDIATE_s2); tree return_label = lookup_label (PC); 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; int nlocals = DECL_MAX_LOCALS (current_function_decl); index = nlocals + DECL_MAX_STACK (current_function_decl); |