typedef struct _Jv_Field *jfieldID;
typedef struct _Jv_Method *jmethodID;
-extern "C" jobject _Jv_AllocObject (jclass, jint);
+extern "C" jobject _Jv_AllocObject (jclass, jint) __attribute__((__malloc__));
extern "C" jboolean _Jv_IsInstanceOf(jobject, jclass);
-extern "C" jstring _Jv_AllocString(jsize);
-extern "C" jstring _Jv_NewString (const jchar*, jsize);
+extern "C" jstring _Jv_AllocString(jsize) __attribute__((__malloc__));
+extern "C" jstring _Jv_NewString (const jchar*, jsize)
+ __attribute__((__malloc__));
extern "C" jchar* _Jv_GetStringChars (jstring str);
extern "C" jint _Jv_MonitorEnter (jobject);
extern "C" jint _Jv_MonitorExit (jobject);
-extern "C" jstring _Jv_NewStringLatin1(const char*, jsize);
+extern "C" jstring _Jv_NewStringLatin1(const char*, jsize)
+ __attribute__((__malloc__));
extern "C" jsize _Jv_GetStringUTFLength (jstring);
extern "C" jsize _Jv_GetStringUTFRegion (jstring, jsize, jsize, char *);
extern "C" void _Jv_Throw (void *) __attribute__ ((__noreturn__));
extern "C" void _Jv_Sjlj_Throw (void *) __attribute__ ((__noreturn__));
-extern "C" void* _Jv_Malloc (jsize);
+extern "C" void* _Jv_Malloc (jsize) __attribute__((__malloc__));
extern "C" void _Jv_Free (void*);
typedef unsigned short _Jv_ushort __attribute__((__mode__(__HI__)));
typedef void _Jv_FinalizerFunc (jobject);
/* Allocate space for a new Java object. */
-void *_Jv_AllocObj (jsize size);
+void *_Jv_AllocObj (jsize size) __attribute__((__malloc__));
/* Allocate space for an array of Java objects. */
-void *_Jv_AllocArray (jsize size);
+void *_Jv_AllocArray (jsize size) __attribute__((__malloc__));
/* Allocate space that is known to be pointer-free. */
-void *_Jv_AllocBytes (jsize size);
+void *_Jv_AllocBytes (jsize size) __attribute__((__malloc__));
/* Initialize the GC. */
void _Jv_InitGC (void);
/* Register a finalizer. */
void _Jv_SetMaximumHeapSize (const char *arg);
/* Allocate some unscanned bytes. Throw exception if out of memory. */
-void *_Jv_AllocBytesChecked (jsize size);
+void *_Jv_AllocBytesChecked (jsize size) __attribute__((__malloc__));
extern "C" void JvRunMain (jclass klass, int argc, const char **argv);
void _Jv_RunMain (const char* name, int argc, const char **argv);
}
extern "C" void _Jv_ThrowBadArrayIndex (jint bad_index);
-extern "C" jobject _Jv_NewArray (jint type, jint size);
-extern "C" jobject _Jv_NewMultiArray (jclass klass, jint dims, ...);
+extern "C" jobject _Jv_NewArray (jint type, jint size)
+ __attribute__((__malloc__));
+extern "C" jobject _Jv_NewMultiArray (jclass klass, jint dims, ...)
+ __attribute__((__malloc__));
extern "C" void *_Jv_CheckCast (jclass klass, jobject obj);
extern "C" void *_Jv_LookupInterfaceMethod (jclass klass, Utf8Const *name,
Utf8Const *signature);
extern jclass _Jv_FindClassFromSignature (char *,
java::lang::ClassLoader *loader);
-extern jobject _Jv_NewMultiArray (jclass, jint ndims, jint* dims);
+extern jobject _Jv_NewMultiArray (jclass, jint ndims, jint* dims)
+ __attribute__((__malloc__));
/* Checked divide subroutines. */
extern "C"