diff options
author | Andrew Haley <aph@redhat.com> | 2006-06-08 14:01:40 +0000 |
---|---|---|
committer | Andrew Haley <aph@gcc.gnu.org> | 2006-06-08 14:01:40 +0000 |
commit | 313ab5ee9c2616aa6c3058cf992d2f69b52fc2db (patch) | |
tree | 06de34fc6cdfcf4bb3efea134a03b6b617bab797 /gcc/java/parse.y | |
parent | 297750da0393e5542752140f9ad5abb924f6305e (diff) | |
download | gcc-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.y | 15 |
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; |