re PR classpath/32844 (EnumSet causes code to be miscompiled)

2007-07-31  Dalibor Topic  <robilad@kaffe.org>

        PR 32844
        * java/util/EnumSet.java:
        Made class abstract per API spec.
        (size, iterator, add, addAll, clear, contains,
        containsAll, remove, removeAll, retainAll) Moved 
        into an anonymous inner class in of(T).
        (allOf, noneOf, copyOf, of, range) Made more 
        implementation independent.
        (of(T)) return an instance of an anonymous class
        implementing EmptySet.

From-SVN: r127291
This commit is contained in:
Dalibor Topic
2007-08-08 08:00:32 +00:00
committed by Matthias Klose
parent 5b6693af78
commit 473210a961
8 changed files with 259 additions and 239 deletions
+14 -12
View File
@@ -6,23 +6,25 @@
#pragma interface
#include <java/lang/Object.h>
#include <java/util/EnumSet.h>
class java::util::EnumSet$1 : public ::java::lang::Object
class java::util::EnumSet$1 : public ::java::util::EnumSet
{
public: // actually package-private
EnumSet$1(::java::util::EnumSet *);
public:
jboolean hasNext();
::java::lang::Enum * EnumSet$1$next();
void remove();
::java::lang::Object * next();
public: // actually package-private
jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) next__;
jint count;
::java::util::EnumSet * this$0;
EnumSet$1();
public:
jboolean EnumSet$1$add(::java::lang::Enum *);
jboolean addAll(::java::util::Collection *);
void clear();
jboolean contains(::java::lang::Object *);
jboolean containsAll(::java::util::Collection *);
::java::util::Iterator * iterator();
jboolean remove(::java::lang::Object *);
jboolean removeAll(::java::util::Collection *);
jboolean retainAll(::java::util::Collection *);
jint size();
jboolean add(::java::lang::Object *);
static ::java::lang::Class class$;
};
+29
View File
@@ -0,0 +1,29 @@
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
#ifndef __java_util_EnumSet$2__
#define __java_util_EnumSet$2__
#pragma interface
#include <java/lang/Object.h>
class java::util::EnumSet$2 : public ::java::lang::Object
{
public: // actually package-private
EnumSet$2(::java::util::EnumSet$1 *);
public:
jboolean hasNext();
::java::lang::Enum * EnumSet$2$next();
void remove();
::java::lang::Object * next();
public: // actually package-private
jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) next__;
jint count;
::java::util::EnumSet$1 * this$1;
public:
static ::java::lang::Class class$;
};
#endif // __java_util_EnumSet$2__
-11
View File
@@ -17,16 +17,6 @@ public: // actually package-private
EnumSet();
public:
virtual ::java::util::EnumSet * EnumSet$clone();
virtual jint size();
virtual ::java::util::Iterator * iterator();
virtual jboolean EnumSet$add(::java::lang::Enum *);
virtual jboolean addAll(::java::util::Collection *);
virtual void clear();
virtual jboolean contains(::java::lang::Object *);
virtual jboolean containsAll(::java::util::Collection *);
virtual jboolean remove(::java::lang::Object *);
virtual jboolean removeAll(::java::util::Collection *);
virtual jboolean retainAll(::java::util::Collection *);
static ::java::util::EnumSet * allOf(::java::lang::Class *);
static ::java::util::EnumSet * noneOf(::java::lang::Class *);
static ::java::util::EnumSet * copyOf(::java::util::EnumSet *);
@@ -40,7 +30,6 @@ public:
static ::java::util::EnumSet * of(::java::lang::Enum *, JArray< ::java::lang::Enum * > *);
static ::java::util::EnumSet * range(::java::lang::Enum *, ::java::lang::Enum *);
virtual ::java::lang::Object * clone();
virtual jboolean add(::java::lang::Object *);
private:
static const jlong serialVersionUID = 4782406773684236311LL;
public: // actually package-private