diff options
author | aph <aph@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-01-24 17:11:04 +0000 |
---|---|---|
committer | aph <aph@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-01-24 17:11:04 +0000 |
commit | 751d3443fb1775f0997a0852acd6f65f9eeb6688 (patch) | |
tree | 355ec9dcc27947cedd8257c4a3f8f176611a4c02 | |
parent | 8ae260b8894d16be1c447d592db97d22e8c0efb5 (diff) | |
download | gcc-751d3443fb1775f0997a0852acd6f65f9eeb6688.tar.gz |
2007-01-24 Andrew Haley <aph@redhat.com>
* jcf-parse.c (HANDLE_SYNTHETIC_ATTRIBUTE): current_class is a
type node, not a decl, so use TYPE_SYNTHETIC not CLASS_SYNTHETIC.
2007-01-22 Andrew Haley <aph@redhat.com>
* builtins.c (VMSupportsCS8_builtin): New function.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@121118 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/java/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/java/builtins.c | 19 | ||||
-rw-r--r-- | gcc/java/jcf-parse.c | 2 |
3 files changed, 27 insertions, 3 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 37029845d9e..4d24a208e1c 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,12 @@ +2007-01-24 Andrew Haley <aph@redhat.com> + + * jcf-parse.c (HANDLE_SYNTHETIC_ATTRIBUTE): current_class is a + type node, not a decl, so use TYPE_SYNTHETIC not CLASS_SYNTHETIC. + +2007-01-22 Andrew Haley <aph@redhat.com> + + * builtins.c (VMSupportsCS8_builtin): New function. + 2007-01-23 Andrew Pinski <pinskia@gmail.com> PR java/30454 diff --git a/gcc/java/builtins.c b/gcc/java/builtins.c index 9b5353b2644..ef8854ae2e6 100644 --- a/gcc/java/builtins.c +++ b/gcc/java/builtins.c @@ -54,7 +54,7 @@ static tree compareAndSwapLong_builtin (tree, tree); static tree compareAndSwapObject_builtin (tree, tree); static tree putVolatile_builtin (tree, tree); static tree getVolatile_builtin (tree, tree); - +static tree VMSupportsCS8_builtin (tree, tree); /* Functions of this type are used to inline a given call. Such a @@ -121,6 +121,8 @@ static GTY(()) struct builtin_record java_builtins[] = { { "sun.misc.Unsafe" }, { "getIntVolatile" }, getVolatile_builtin, 0}, { { "sun.misc.Unsafe" }, { "getLongVolatile" }, getVolatile_builtin, 0}, { { "sun.misc.Unsafe" }, { "getLong" }, getVolatile_builtin, 0}, + { { "java.util.concurrent.atomic.AtomicLong" }, { "VMSupportsCS8" }, + VMSupportsCS8_builtin, 0}, { { NULL }, { NULL }, NULL, END_BUILTINS } }; @@ -432,7 +434,20 @@ getVolatile_builtin (tree method_return_type ATTRIBUTE_UNUSED, return stmt; } - + +static tree +VMSupportsCS8_builtin (tree method_return_type, + tree method_arguments ATTRIBUTE_UNUSED) +{ + enum machine_mode mode = TYPE_MODE (long_type_node); + gcc_assert (method_return_type == boolean_type_node); + if (sync_compare_and_swap_cc[mode] != CODE_FOR_nothing + || sync_compare_and_swap[mode] != CODE_FOR_nothing) + return boolean_true_node; + else + return boolean_false_node; +} + #define BUILTIN_NOTHROW 1 diff --git a/gcc/java/jcf-parse.c b/gcc/java/jcf-parse.c index 10e13aea792..8a6d6fc2499 100644 --- a/gcc/java/jcf-parse.c +++ b/gcc/java/jcf-parse.c @@ -975,7 +975,7 @@ handle_signature_attribute (int member_index, JCF *jcf, else if (current_field) \ FIELD_SYNTHETIC (current_field) = 1; \ else \ - CLASS_SYNTHETIC (current_class) = 1; \ + TYPE_SYNTHETIC (current_class) = 1; \ } #define HANDLE_GCJCOMPILED_ATTRIBUTE() \ |