diff options
author | Andrew Haley <aph@redhat.com> | 2003-06-10 16:43:39 +0000 |
---|---|---|
committer | Andrew Haley <aph@gcc.gnu.org> | 2003-06-10 16:43:39 +0000 |
commit | e076f71a38f9945415a6dd2b037b20c1de9b6d3b (patch) | |
tree | 7ccc0967b6f9a3aa999e7661ed16ff9f1bebe3cc /gcc/java | |
parent | e7e09ad8f27d4a239b2109f719e69753e4f3abc7 (diff) | |
download | gcc-e076f71a38f9945415a6dd2b037b20c1de9b6d3b.zip gcc-e076f71a38f9945415a6dd2b037b20c1de9b6d3b.tar.gz gcc-e076f71a38f9945415a6dd2b037b20c1de9b6d3b.tar.bz2 |
langhooks-def.h (LANG_HOOKS_DECL_OK_FOR_SIBCALL): New.
2003-05-21 Andrew Haley <aph@redhat.com>
* langhooks-def.h (LANG_HOOKS_DECL_OK_FOR_SIBCALL): New.
(LANG_HOOKS_DECLS): Add LANG_HOOKS_DECL_OK_FOR_SIBCALL.
(lhd_decl_ok_for_sibcall): New.
* langhooks.c (lhd_decl_ok_for_sibcall): New.
* langhooks.h (lang_hooks_for_decls.ok_for_sibcall): New field.
* calls.c (expand_call): Check lang_hook before generating a
sibcall.
2003-05-21 Andrew Haley <aph@redhat.com>
* lang.c (LANG_HOOKS_DECL_OK_FOR_SIBCALL): New.
(java_decl_ok_for_sibcall): New.
From-SVN: r67713
Diffstat (limited to 'gcc/java')
-rw-r--r-- | gcc/java/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/java/lang.c | 16 |
2 files changed, 21 insertions, 0 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 875fc53..c9d623e 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,8 @@ +2003-06-10 Andrew Haley <aph@redhat.com> + + * lang.c (LANG_HOOKS_DECL_OK_FOR_SIBCALL): New. + (java_decl_ok_for_sibcall): New. + 2003-06-09 Neil Booth <neil@daikokuya.co.uk> * Make-lang.in (JAVA_OBJS, java/lang.o): Update. diff --git a/gcc/java/lang.c b/gcc/java/lang.c index f870a57..64283d4 100644 --- a/gcc/java/lang.c +++ b/gcc/java/lang.c @@ -65,6 +65,7 @@ static int inline_init_test_initialization (void * *, void *); static bool java_can_use_bit_fields_p (void); static bool java_dump_tree (void *, tree); static void dump_compound_expr (dump_info_p, tree); +static bool java_decl_ok_for_sibcall (tree); #ifndef TARGET_OBJECT_SUFFIX # define TARGET_OBJECT_SUFFIX ".o" @@ -251,6 +252,9 @@ struct language_function GTY(()) #undef LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN #define LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN java_dump_tree +#undef LANG_HOOKS_DECL_OK_FOR_SIBCALL +#define LANG_HOOKS_DECL_OK_FOR_SIBCALL java_decl_ok_for_sibcall + /* Each front end provides its own. */ const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; @@ -1077,4 +1081,16 @@ java_dump_tree (void *dump_info, tree t) } return false; } + +/* Java calls can't, in general, be sibcalls because we need an + accurate stack trace in order to guarantee correct operation of + methods such as Class.forName(String) and + SecurityManager.getClassContext(). */ + +static bool +java_decl_ok_for_sibcall (tree decl) +{ + return decl != NULL && DECL_CONTEXT (decl) == current_class; +} + #include "gt-java-lang.h" |