This is the mail archive of the
java@gcc.gnu.org
mailing list for the Java project.
Re: Incorrect Java methods called from CNI
> Can you do the same for AbstractClassificationModel? Looks like C++ and
> GCJ disagree on how many virtual methods there are in that class.
Sorry for the delay - I ran into some system problems and was down for
awhile. Attached is the vtable for AbstractClassificationModel as well
as the original Java declarations, and generated C++ header.
=============================
AbstractClassificationModel.s
=============================
_ZTVN7jblocks8security14classification27AbstractClassificationModelE:
.long 0
.long 0
.long _ZN7jblocks8security14classification27AbstractClassificationModel6class$E
.long 12
.long _ZN4java4lang6Object8finalizeEv
.long _ZN4java4lang6Object8hashCodeEv
.long _ZN4java4lang6Object6equalsEPS1_
.long _ZN4java4lang6Object8toStringEv
.long _ZN7jblocks8security14classification27AbstractClassificationModel5cloneEv
.long _ZN7jblocks8security14classification27AbstractClassificationModel25addClassificationListenerEPNS1_22ClassificationListenerE
.long _ZN7jblocks8security14classification27AbstractClassificationModel24fireClassificationChangeEv
.long _ZN7jblocks8security14classification27AbstractClassificationModel20getNumberOfListenersEv
.long _ZN7jblocks8security14classification27AbstractClassificationModel11isImmutableEv
.long _ZN7jblocks8security14classification27AbstractClassificationModel18removeAllListenersEv
.long _ZN7jblocks8security14classification27AbstractClassificationModel28removeClassificationListenerEPNS1_22ClassificationListenerE
.long 0
.align 4
.type _IF_jblocks_security_classification_AbstractClassificationModel, @object
.size _IF_jblocks_security_classification_AbstractClassificationModel, 12
=============================
AbstractClassificationModel.h
=============================
class jblocks::security::classification::AbstractClassificationModel : public ::java::lang::Object
{
public:
virtual void addClassificationListener (::jblocks::security::classification::ClassificationListener *);
virtual ::java::lang::Object *clone ();
public: // actually protected
virtual void fireClassificationChange ();
virtual jint getNumberOfListeners ();
public:
virtual jboolean isImmutable ();
public: // actually protected
virtual void removeAllListeners ();
public:
virtual void removeClassificationListener (::jblocks::security::classification::ClassificationListener *);
AbstractClassificationModel ();
static ::java::lang::String *classVersion;
static const jlong serialVersionUID = 3090927512595159081LL;
private:
::jblocks::security::classification::ClassificationEvent * __attribute__((aligned(__alignof__( ::java::lang::Object )))) event;
::java::util::List *listeners;
public:
static ::java::lang::Class class$;
};
================================
AbstractClassificationModel.java
================================
public abstract class AbstractClassificationModel
implements ClassificationModel, Serializable, Cloneable
{
//////////////////////
// Public constants //
//////////////////////
public final static String classVersion = "2.4";
public final static long serialVersionUID = 3090927512595159081L;
//////////////////////////
// Protected properties //
//////////////////////////
private transient ClassificationEvent event = null;
private transient List listeners = null;
public synchronized void addClassificationListener( ClassificationListener listener )
public Object clone()
protected synchronized void fireClassificationChange()
protected synchronized int getNumberOfListeners()
public boolean isImmutable()
protected synchronized void removeAllListeners()
public synchronized void removeClassificationListener( ClassificationListener listener )
}