summaryrefslogtreecommitdiff
path: root/gcc/java/expr.c
diff options
context:
space:
mode:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2006-05-26 15:41:46 +0000
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2006-05-26 15:41:46 +0000
commitb8bc917a46b2bf532a7108ed9441a2027469baed (patch)
tree88690a510261c7f1c3fc40c4ca51027140d15d66 /gcc/java/expr.c
parentefea8179a3a55cb7719ff156ca3bad1789dba86f (diff)
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@114135 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/java/expr.c')
-rw-r--r--gcc/java/expr.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/java/expr.c b/gcc/java/expr.c
index b2e03fc862ec..94f76fdd8c1d 100644
--- a/gcc/java/expr.c
+++ b/gcc/java/expr.c
@@ -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);