aboutsummaryrefslogtreecommitdiff
path: root/gcc/java/verify-glue.c
diff options
context:
space:
mode:
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