⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gcj.h

📁 java virtual machince kaffe
💻 H
字号:
/* * gcj.h * * Copyright (c) 1996, 1997, 1998, 1999 *      Transvirtual Technologies, Inc.  All rights reserved. * * See the file "license.terms" for information on usage and redistribution * of this file. */#ifndef __gcj_h#define __gcj_h/* NB: This headers contains only data structures and declarations that * can be safely included by both gcj and kaffe files.  As such, we cannot * use any non-standard types here */#ifdef __cplusplus/* only for cplusplus files */struct fixup_table_t {        void *symbol;        enum { CLASS = 1, STATICFIELD = 2, METHODREF = 3, VTABLE = 4 } type;        char* data1;        char* data2;        char* data3;        void dump();	char* findClass(void *symbol);	void* getStaticFieldAddr(const char *clazz, const char *name);};extern fixup_table_t *fixupTable;extern "C" {#endifstruct kaffe_frame_descriptor {        int idx;	int offset;};typedef struct {	int	idx;			/* index running from fCount...0 */	char* 	name;			/* zero-terminated utf8 */	void*	type;	unsigned short flags;	unsigned short bsize;	union {		int 	boffset;		void* 	addr;	} u;} neutralFieldInfo;typedef struct {	char* 	name;			/* zero-terminated utf8 */	char* 	signature;		/* zero-terminated utf8 */	unsigned short accflags;	/* flags according to java conv. */	void* 	ncode;			/* where the code is */	int	*idx;			/* ptr to vtable index of this method */} neutralMethodInfo;typedef struct {	char*	name;			/* zero-terminated utf8 */	void*	gcjClass;		/* java::lang::Class */	void*	vtable;			/* _Jv_Vtable */	void*	superclass;		/* java::lang::Class->superclass */	int	accflags;		/* flags according to java conv. */	int	methodCount;		/* # of methods */	int	fieldCount;		/* # of fields */	int	vTableCount;		/* # of entries in vtable */	int	interfaceCount;		/* # of entries in interfaces */	void**	interfaces;		/* interfaces supported by this class */} neutralClassInfo;struct Hjava_lang_Class;struct Hjava_lang_Object;struct _jmethodID;struct _jfieldID;struct _errorInfo;/* * Methods prefixed with "gcj" are exported by the gcj subsystem for  * use by code in kaffevm */extern void * gcjGetFieldAddr(const char *clazz, const char *fldname);extern void gcjInit(void);extern void gcjLoadSharedObject(char* sofile);extern struct Hjava_lang_Class* gcjFindClassByUtf8Name(	const char* utf8name, struct _errorInfo*);extern bool gcjProcessClass(struct Hjava_lang_Class* clazz, void *gcjClass,			    struct _errorInfo* einfo);extern bool gcjProcessClassConstants(struct Hjava_lang_Class* clazz, 				     void *gcjClass, struct _errorInfo* einfo);extern struct Hjava_lang_Class* gcjGetClass(void *jclazz, struct _errorInfo*);extern char *gcjFindUnresolvedClassByAddress(void *symbol);extern struct Hjava_lang_Class* gcjFindClassByAddress(void *clazz, 						      struct _errorInfo*);extern struct Hjava_lang_Class *gcjFindMatchClass(void *minfo, 						  struct _errorInfo *einfo);/* * Methods prefixed with "kenv" are implemented in the kaffe glue code * to allow it to access functions from the kaffe environment   */extern struct Hjava_lang_Class* kenvFindClass(char *cname, struct _errorInfo *);extern struct Hjava_lang_Class* kenvFindClassByAddress(void *gcjclazz);extern const char *kenvGetClassName(struct Hjava_lang_Class *clazz);extern struct Hjava_lang_Object * kenvCreateObject(	struct Hjava_lang_Class *clazz, int size);extern void* kenvFindMethod(struct Hjava_lang_Class *kclass, 	const char *mname, 	const char *msig);extern void *kenvTranslateMethod(const char *classname, 				 const char *mname, const char *msig);extern void* kenvMakeJavaString(const char *utf8data, int utf8length, 				int utf8hash);extern struct Hjava_lang_Class* kenvMakeClass(neutralClassInfo*, 	struct _errorInfo*);extern bool kenvMakeMethod(neutralMethodInfo* info, 	struct Hjava_lang_Class *, struct _errorInfo *);extern bool kenvMakeField(neutralFieldInfo* info, 	struct Hjava_lang_Class *, struct _errorInfo *);extern void kenvProcessClass(struct Hjava_lang_Class* clazz);extern void kenvPostClassNotFound(const char *utf8name, struct _errorInfo *);extern void kenvThrowBadArrayIndex(int idx);extern struct Hjava_lang_Class* kenvFindClassByAddress2(void *clazz, 							struct _errorInfo *);extern void* kenvMalloc(int size, struct _errorInfo *);extern void kenvFree(void * ptr);extern bool comparePath2ClassName(const char *cname, const char *pname);#define GCJ2KAFFE(gcjClass)	((struct Hjava_lang_Class*)((gcjClass)->thread))extern void gcjInitPrimitiveClasses(void);#define FIELD_UNRESOLVED_FLAG   0x8000#define FIELD_CONSTANT_VALUE    0x4000extern void blockAsyncSignals(void);extern void unblockAsyncSignals(void);#ifdef __cplusplus} /* extern "C" */#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -