Commit 153d08d5 by Tom Tromey Committed by Tom Tromey

expr.c (java_push_constant_from_pool): Handle 'ldc class'.

	* expr.c (java_push_constant_from_pool): Handle 'ldc class'.
	* verify-glue.c (vfy_class_type): New function.
	* verify-impl.c (check_constant): Allow 'ldc class'.
	* verify.h (vfy_class_type): Declare.

From-SVN: r114135
parent 7541c31b
2006-05-26 Tom Tromey <tromey@redhat.com>
* expr.c (java_push_constant_from_pool): Handle 'ldc class'.
* verify-glue.c (vfy_class_type): New function.
* verify-impl.c (check_constant): Allow 'ldc class'.
* verify.h (vfy_class_type): Declare.
2006-05-25 Andrew Haley <aph@redhat.com>
PR java/27756
......
......@@ -3117,6 +3117,12 @@ java_push_constant_from_pool (JCF *jcf, int index)
c = build_ref_from_constant_pool (index);
c = convert (promote_type (string_type_node), c);
}
else if (JPOOL_TAG (jcf, index) == CONSTANT_Class
|| JPOOL_TAG (jcf, index) == CONSTANT_ResolvedClass)
{
tree record = get_class_constant (jcf, index);
c = build_class_ref (record);
}
else
c = get_constant (jcf, index);
push_value (c);
......
/* Glue to interface gcj with bytecode verifier.
Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
This file is part of GCC.
......@@ -329,6 +329,12 @@ vfy_object_type (void)
}
vfy_jclass
vfy_class_type (void)
{
return class_type_node;
}
vfy_jclass
vfy_string_type (void)
{
vfy_jclass k;
......
......@@ -1975,6 +1975,10 @@ check_constant (int index)
init_type_from_tag (&t, int_type);
else if (vfy_tag (pool, index) == JV_CONSTANT_Float)
init_type_from_tag (&t, float_type);
else if (vfy_tag (pool, index) == JV_CONSTANT_Class
|| vfy_tag (pool, index) == JV_CONSTANT_ResolvedClass)
/* FIXME: should only allow this for 1.5 bytecode. */
init_type_from_class (&t, vfy_class_type ());
else
verify_fail_pc ("String, int, or float constant expected", vfr->start_PC);
return t;
......
/* Declarations to interface gcj with bytecode verifier.
Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
This file is part of GCC.
......@@ -112,6 +112,7 @@ vfy_jclass vfy_get_component_type (vfy_jclass klass);
bool vfy_is_abstract (vfy_jclass klass);
vfy_jclass vfy_find_class (vfy_jclass klass, vfy_string name);
vfy_jclass vfy_object_type (void);
vfy_jclass vfy_class_type (void);
vfy_jclass vfy_string_type (void);
vfy_jclass vfy_throwable_type (void);
vfy_jclass vfy_unsuitable_type (void);
......
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