aboutsummaryrefslogtreecommitdiff
path: root/gcc/java/parse.y
diff options
context:
space:
mode:
authorAndrew Haley <aph@redhat.com>2006-06-08 14:01:40 +0000
committerAndrew Haley <aph@gcc.gnu.org>2006-06-08 14:01:40 +0000
commit313ab5ee9c2616aa6c3058cf992d2f69b52fc2db (patch)
tree06de34fc6cdfcf4bb3efea134a03b6b617bab797 /gcc/java/parse.y
parent297750da0393e5542752140f9ad5abb924f6305e (diff)
downloadgcc-313ab5ee9c2616aa6c3058cf992d2f69b52fc2db.zip
gcc-313ab5ee9c2616aa6c3058cf992d2f69b52fc2db.tar.gz
gcc-313ab5ee9c2616aa6c3058cf992d2f69b52fc2db.tar.bz2
expr.c (build_field_ref): Pass NULL_TREE as SPECIAL arg to get_symbol_table_index().
2006-06-08 Andrew Haley <aph@redhat.com> * expr.c (build_field_ref): Pass NULL_TREE as SPECIAL arg to get_symbol_table_index(). (maybe_rewrite_invocation): Set SPECIAL if we need to access a private method. (build_known_method_ref): New arg: special. Pass it to get_symbol_table_index. (get_symbol_table_index): Put SPECIAL in the TREE_PURPOSE field of the method list. (build_invokevirtual): New arg: special. Pass it to get_symbol_table_index. (expand_invoke): New variable: special. Pass it to maybe_rewrite_invocation(). Pass it to build_known_method_ref(). * class.c (build_symbol_entry): Add new arg: special. Use it to build the symbol table conbstructor. (emit_symbol_table): Extract SPECIAL from the method list and pass it to build_symbol_entry(). * parse.y (patch_invoke): Call maybe_rewrite_invocation() and set special accordingly. From-SVN: r114487
Diffstat (limited to 'gcc/java/parse.y')
-rw-r--r--gcc/java/parse.y15
1 files changed, 11 insertions, 4 deletions
diff --git a/gcc/java/parse.y b/gcc/java/parse.y
index a606d87..c93a93f 100644
--- a/gcc/java/parse.y
+++ b/gcc/java/parse.y
@@ -11043,8 +11043,14 @@ patch_invoke (tree patch, tree method, tree args)
switch (invocation_mode (method, CALL_USING_SUPER (patch)))
{
case INVOKE_VIRTUAL:
- dtable = invoke_build_dtable (0, args);
- func = build_invokevirtual (dtable, method);
+ {
+ tree signature = build_java_signature (TREE_TYPE (method));
+ tree special;
+ maybe_rewrite_invocation (&method, &args, &signature, &special);
+
+ dtable = invoke_build_dtable (0, args);
+ func = build_invokevirtual (dtable, method, special);
+ }
break;
case INVOKE_NONVIRTUAL:
@@ -11066,10 +11072,11 @@ patch_invoke (tree patch, tree method, tree args)
case INVOKE_STATIC:
{
tree signature = build_java_signature (TREE_TYPE (method));
- maybe_rewrite_invocation (&method, &args, &signature);
+ tree special;
+ maybe_rewrite_invocation (&method, &args, &signature, &special);
func = build_known_method_ref (method, TREE_TYPE (method),
DECL_CONTEXT (method),
- signature, args);
+ signature, args, special);
}
break;