summaryrefslogtreecommitdiff
path: root/gcc/java
diff options
context:
space:
mode:
authoraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>2007-01-24 17:11:04 +0000
committeraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>2007-01-24 17:11:04 +0000
commit751d3443fb1775f0997a0852acd6f65f9eeb6688 (patch)
tree355ec9dcc27947cedd8257c4a3f8f176611a4c02 /gcc/java
parent8ae260b8894d16be1c447d592db97d22e8c0efb5 (diff)
downloadgcc-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
Diffstat (limited to 'gcc/java')
-rw-r--r--gcc/java/ChangeLog9
-rw-r--r--gcc/java/builtins.c19
-rw-r--r--gcc/java/jcf-parse.c2
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() \