aboutsummaryrefslogtreecommitdiff
path: root/gcc/java/verify-glue.c
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2007-08-17 15:19:39 +0000
committerTom Tromey <tromey@gcc.gnu.org>2007-08-17 15:19:39 +0000
commit3d4e2766256df1da1986d4819ed1d184a7b1856b (patch)
treeb4740b1c9b8809e0eb41a3c75d252ad2c54600a1 /gcc/java/verify-glue.c
parent4bf6c438d2117f8473b36b84eb8bd44487631efa (diff)
downloadgcc-3d4e2766256df1da1986d4819ed1d184a7b1856b.zip
gcc-3d4e2766256df1da1986d4819ed1d184a7b1856b.tar.gz
gcc-3d4e2766256df1da1986d4819ed1d184a7b1856b.tar.bz2
tree.h (struct tree_label_decl): Removed old "java" fields.
gcc: * tree.h (struct tree_label_decl): Removed old "java" fields. gcc/java: * java-tree.h (LABEL_TYPE_STATE): Removed. (load_type_state): Removed. (LABEL_PC): Removed. (LABEL_VERIFIED): Removed. (type_states): Declare. * expr.c (type_states): New global. (load_type_state): Now static. Use type_states. Changed argument. (lookup_label): Don't set LABEL_PC. (expand_byte_code): Don't use LABEL_VERIFIED. (note_instructions): Initialize type_states. * verify-glue.c (vfy_note_stack_depth): Rewrote. (vfy_note_stack_type): Use type_states. (vfy_note_local_type): Likewise. From-SVN: r127587
Diffstat (limited to 'gcc/java/verify-glue.c')
-rw-r--r--gcc/java/verify-glue.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/gcc/java/verify-glue.c b/gcc/java/verify-glue.c
index 7b16e16..3dfe608 100644
--- a/gcc/java/verify-glue.c
+++ b/gcc/java/verify-glue.c
@@ -393,37 +393,41 @@ vfy_get_primitive_type (int type)
void
vfy_note_stack_depth (vfy_method *method, int pc, int depth)
{
- tree label = lookup_label (pc);
- LABEL_TYPE_STATE (label) = make_tree_vec (method->max_locals + depth);
+ tree val = make_tree_vec (method->max_locals + depth);
+ VEC_replace (tree, type_states, pc, val);
+ /* Called for side effects. */
+ lookup_label (pc);
}
void
vfy_note_stack_type (vfy_method *method, int pc, int slot, vfy_jclass type)
{
- tree label, vec;
+ tree vec;
slot += method->max_locals;
if (type == object_type_node)
type = object_ptr_type_node;
- label = lookup_label (pc);
- vec = LABEL_TYPE_STATE (label);
+ vec = VEC_index (tree, type_states, pc);
TREE_VEC_ELT (vec, slot) = type;
+ /* Called for side effects. */
+ lookup_label (pc);
}
void
vfy_note_local_type (vfy_method *method ATTRIBUTE_UNUSED, int pc, int slot,
vfy_jclass type)
{
- tree label, vec;
+ tree vec;
if (type == object_type_node)
type = object_ptr_type_node;
- label = lookup_label (pc);
- vec = LABEL_TYPE_STATE (label);
+ vec = VEC_index (tree, type_states, pc);
TREE_VEC_ELT (vec, slot) = type;
+ /* Called for side effects. */
+ lookup_label (pc);
}
void