亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? class.c

?? kaffe Java 解釋器語言,源碼,Java的子集系統(tǒng),開放源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * java.lang.Class.c * * Copyright (c) 1996, 1997 *	Transvirtual Technologies, Inc.  All rights reserved. * * See the file "license.terms" for information on usage and redistribution * of this file. */#include "config.h"#include "config-std.h"#include "config-mem.h"#include "../../../kaffe/kaffevm/gtypes.h"#include "../../../kaffe/kaffevm/access.h"#include "../../../kaffe/kaffevm/baseClasses.h"#include "../../../kaffe/kaffevm/classMethod.h"#include "../../../kaffe/kaffevm/constants.h"#include "../../../kaffe/kaffevm/gtypes.h"#include "../../../kaffe/kaffevm/exception.h"#include "../../../kaffe/kaffevm/itypes.h"#include "../../../kaffe/kaffevm/lookup.h"#include "../../../kaffe/kaffevm/object.h"#include "../../../kaffe/kaffevm/soft.h"#include "../../../kaffe/kaffevm/stackTrace.h"#include "../../../kaffe/kaffevm/stringSupport.h"#include "../../../kaffe/kaffevm/support.h"#include "java_io_InputStream.h"#include "java_io_PrintStream.h"#include "java_lang_System.h"#include "java_lang_reflect_Constructor.h"#include "java_lang_reflect_Method.h"#include "java_lang_reflect_Field.h"#include "java_lang_Class.h"#include "defs.h"extern Hjava_lang_Object* buildStackTrace(struct _exceptionFrame*);/* * Convert string name to class object. */struct Hjava_lang_Class*java_lang_Class_forName(struct Hjava_lang_String* str,			jbool doinit,			Hjava_lang_ClassLoader* loader){	errorInfo einfo;	Hjava_lang_Class* clazz;	Utf8Const *utf8buf;	const char *buf;	int jlen;	jchar *js;	/*	 * NB: internally, we store class names as path names (with slashes	 *     instead of dots.  However, we must also prevent calls to	 *     "java/lang/Object" or "[[Ljava/lang/Object;" from succeeding.	 *	Since class names cannot have slashes, we reject all attempts	 *	to look up names that do.  Awkward.  Inefficient.	 */	js = STRING_DATA(str);	jlen = STRING_SIZE(str);	while (--jlen > 0) {		if (*js++ == '/') {			postExceptionMessage(&einfo,				JAVA_LANG(ClassNotFoundException),				"Cannot have slashes - use dots instead.");			throwError(&einfo);		}	}	/*	 * Note the following oddity:	 *	 * It is apparently perfectly legal to call forName for array types,	 * such as "[Ljava.lang.String;" or "[B".	 * However, it is wrong to call Class.forName("Ljava.lang.String;")	 *	 * This situation is similar to the constant pool resolution.  We	 * therefore do the same thing as in getClass in kaffevm/lookup.c,	 * that is, use either loadArray or loadClass depending on the name.	 *	 * This is somewhat described in Section 5.1.3 of the VM	 * Specification, titled "Array Classes".  This section seems to	 * imply that we must avoid asking a class loader to resolve such	 * array names (those starting with an [), and this is what calling	 * loadArray does.	 */	/* Convert string to utf8, converting '.' to '/' */	utf8buf = checkPtr(stringJava2Utf8ConstReplace(str, '.', '/'));	buf = utf8buf->data;	if (buf[0] == '[') {		clazz = loadArray(utf8buf, loader, &einfo);	}	else {		clazz = loadClass(utf8buf, loader, &einfo);	}		/* if an error occurred, throw an exception */	if (clazz == 0) {		utf8ConstRelease(utf8buf);		throwError(&einfo);	}	utf8ConstRelease(utf8buf);	/*	 * loadClass returns the class in state CSTATE_LINKED.	 *	 * Processing to CSTATE_COMPLETE will initialize the class, resolve	 * its constants and run its static initializers.	 *	 * The option to load a class via forName without initializing it	 * was introduced in 1.2, presumably for the convenience of	 * programs such as stub compilers.	 */	if (doinit && processClass(clazz, CSTATE_COMPLETE, &einfo) == false) {		throwError(&einfo);	}	return (clazz);}/* * Convert class to string name. */struct Hjava_lang_String*java_lang_Class_getName(struct Hjava_lang_Class* c){	return(checkPtr(utf8Const2JavaReplace(c->name, '/', '.')));}/* * Return super class. * * Note that the specs demands to return null if the class object is an * interface or the class object representing java.lang.Object. * * That is, we're asked to NOT report superinterfaces for interfaces. * That would be impossible anyway since the spec says that the super_class * attribute in a class file describing an interface must point to * java.lang.Object.  An interface is considered to "implement" its * superinterface(s).  See also getInterfaceMethods0. */struct Hjava_lang_Class*java_lang_Class_getSuperclass(struct Hjava_lang_Class* this){	if (!CLASS_IS_INTERFACE(this))		return (this->superclass);	else		return (NULL);}HArrayOfObject* /* [Ljava.lang.Class; */java_lang_Class_getInterfaces(struct Hjava_lang_Class* this){	HArrayOfObject* obj;	struct Hjava_lang_Class** ifaces;	int i;	int nr;	nr = this->interface_len;#if defined(JDK_1_1_COMPAT)	/*	 * Do not report java.io.Serializable for array classes in JDK 1.1	 */	if (CLASS_IS_ARRAY(this)) {		nr = 0;	}#endif	obj = (HArrayOfObject*)AllocObjectArray(nr, "Ljava/lang/Class;", 0);	ifaces = (struct Hjava_lang_Class**)unhand_array(obj)->body;	for (i = 0; i < nr; i++) {		ifaces[i] = this->interfaces[i];	}	return (obj);}/* * Return the class loader which loaded me. */struct Hjava_lang_ClassLoader*java_lang_Class_getClassLoader0(struct Hjava_lang_Class* this){	return (this->loader);}/* * Is the class an interface? */jbooljava_lang_Class_isInterface(struct Hjava_lang_Class* this){	return ((this->accflags & ACC_INTERFACE) ? 1 : 0);}jbooljava_lang_Class_isPrimitive(struct Hjava_lang_Class* this){	return (CLASS_IS_PRIMITIVE(this));}jbooljava_lang_Class_isArray(struct Hjava_lang_Class* this){	return (CLASS_IS_ARRAY(this));}Hjava_lang_Class*java_lang_Class_getComponentType(struct Hjava_lang_Class* this){	if (CLASS_IS_ARRAY(this)) {		return (CLASS_ELEMENT_TYPE(this));	}	else {		return ((Hjava_lang_Class*)0);	}}jbooljava_lang_Class_isAssignableFrom(struct Hjava_lang_Class* this, struct Hjava_lang_Class* cls){	return (instanceof(this, cls));}/* * Get primitive class from class name (JDK 1.1) */struct Hjava_lang_Class*java_lang_Class_getPrimitiveClass(struct Hjava_lang_String* name){	jchar* chrs;	chrs = STRING_DATA(name);	switch (chrs[0]) {	case 'b':		if (chrs[1] == 'y') {			return (byteClass);		}		if (chrs[1] == 'o') {			return (booleanClass);		}		break;	case 'c':		return (charClass);	case 'd':		return (doubleClass);	case 'f':		return (floatClass);	case 'i':		return (intClass);	case 'l':		return (longClass);	case 's':		return (shortClass);	case 'v':		return (voidClass);	}	return(NULL);}/* * Is object instance of this class? */jbooljava_lang_Class_isInstance(struct Hjava_lang_Class* this, struct Hjava_lang_Object* obj){	return (soft_instanceof(this, obj));}jintjava_lang_Class_getModifiers(struct Hjava_lang_Class* this){#ifndef ACC_SUPER#define ACC_SUPER ACC_SYNCHRONISED#endif	return (this->accflags & (ACC_MASK & ~ACC_SUPER));}HArrayOfObject*java_lang_Class_getSigners(struct Hjava_lang_Class* this){	unimp("java.lang.Class:getSigners unimplemented");}voidjava_lang_Class_setSigners(struct Hjava_lang_Class* this, HArrayOfObject* sigs){	unimp("java.lang.Class:setSigners unimplemented");}static HArrayOfObject*makeParameters(Method* meth){	int i;	HArrayOfObject* array;	errorInfo info;	Hjava_lang_Class* clazz;	array = (HArrayOfObject*)AllocObjectArray(METHOD_NARGS(meth),	    "Ljava/lang/Class;", 0);	for (i = 0; i < METHOD_NARGS(meth); ++i) {		clazz = getClassFromSignaturePart(METHOD_ARG_TYPE(meth, i),					      meth->class->loader, &info);		if (clazz == 0) {			throwError(&info);		}		unhand_array(array)->body[i] = &clazz->head;	}        return (array);}static Hjava_lang_Class*makeReturn(Method* meth){	errorInfo info;	Hjava_lang_Class* clazz;	clazz = getClassFromSignaturePart(METHOD_RET_TYPE(meth), meth->class->loader, &info);	if (clazz == 0) {		throwError(&info);	}	return (clazz);}/* * create an array of types for the checked exceptions that this method * declared to throw.  These are stored in the declared_exception table * as indices into the constant pool. * * We do not bother to cache the resolved types here. */static HArrayOfObject*makeExceptions(Method* meth){	int nr;	int i;	HArrayOfObject* array;	Hjava_lang_Class** ptr;	if( meth->ndeclared_exceptions == -1 )	{		meth = meth->declared_exceptions_u.remote_exceptions;	}	nr = meth->ndeclared_exceptions;	array = (HArrayOfObject*)AllocObjectArray(nr, "Ljava/lang/Class;", 0);	ptr = (Hjava_lang_Class**)&unhand_array(array)->body[0];	for (i = 0; i < nr; i++) {		errorInfo info;		Hjava_lang_Class* clazz;		clazz = getClass(meth->declared_exceptions[i], meth->class,				&info);		if (clazz == 0) {			throwError(&info);		}		*ptr++ = clazz;	}	return (array);}staticHjava_lang_reflect_Constructor*makeConstructor(struct Hjava_lang_Class* clazz, int slot){	Hjava_lang_reflect_Constructor* meth;	Method* mth;	mth = CLASS_METHODS(clazz) + slot;	meth = (Hjava_lang_reflect_Constructor*)	    AllocObject("java/lang/reflect/Constructor", 0);	unhand(meth)->clazz = clazz;	unhand(meth)->slot = slot;	unhand(meth)->parameterTypes = makeParameters(mth);	unhand(meth)->exceptionTypes = makeExceptions(mth);	return (meth);}staticHjava_lang_reflect_Method*makeMethod(struct Hjava_lang_Class* clazz, int slot){	Hjava_lang_reflect_Method* meth;	Method* mth;	mth = CLASS_METHODS(clazz) + slot;	meth = (Hjava_lang_reflect_Method*)	    AllocObject("java/lang/reflect/Method", 0);	unhand(meth)->clazz = clazz;	unhand(meth)->slot = slot;	unhand(meth)->name = checkPtr(utf8Const2Java(mth->name));	unhand(meth)->parameterTypes = makeParameters(mth);	unhand(meth)->exceptionTypes = makeExceptions(mth);	unhand(meth)->returnType = makeReturn(mth);	return (meth);}staticHjava_lang_reflect_Field*makeField(struct Hjava_lang_Class* clazz, int slot){	Hjava_lang_reflect_Field* field;	Field* fld;	errorInfo info;	fld = CLASS_FIELDS(clazz) + slot;	field = (Hjava_lang_reflect_Field*)	    AllocObject("java/lang/reflect/Field", 0);	unhand(field)->clazz = clazz;	unhand(field)->slot = slot;	unhand(field)->type = resolveFieldType(fld, clazz, &info);	if (unhand(field)->type == 0) {		throwError(&info);	}	unhand(field)->name = checkPtr(utf8Const2Java(fld->name));	return (field);}/* * Return true if there is method defined in any subclass of 'cls' * that overrides 'meth'. * * Assumes that base is a subclass of cls */static intisOverridden(Hjava_lang_Class *base, Hjava_lang_Class *cls, Method *meth){	/* XXX for interfaces for now */	if (base == 0)		return (false);	/* Search superclasses for equivalent method name.	 * If found extract its index nr.	 */	for (; base != cls;  base = base->superclass) {		int j = CLASS_NMETHODS(base);		Method* mt = CLASS_METHODS(base);		for (; --j >= 0;  ++mt) {			if (utf8ConstEqual (mt->name, meth->name) &&			    utf8ConstEqual (METHOD_SIG(mt), METHOD_SIG(meth)))			{				return (true);			}		}	}	return (false);}/* * count the number of methods in a class that are not constructors. * If declared is not set, count only public methods. */static intcountMethods(Hjava_lang_Class* base, Hjava_lang_Class* clas, jint declared){	Method* mth = CLASS_METHODS(clas);	int i;	int count = 0;	for (i = CLASS_NMETHODS(clas)-1 ; i >= 0; i--) {		if (((mth[i].accflags & ACC_PUBLIC) || declared)		    && !(mth[i].accflags & ACC_CONSTRUCTOR)		    && !isOverridden(base, clas, mth + i)		    && !utf8ConstEqual(init_name, mth[i].name)) {			count++;		}	}	return count;}/* * create reflect.Method objects for all methods in a class that are * not constructors.  If declared is not set, include only public methods. */static voidaddMethods(Hjava_lang_Class* base, Hjava_lang_Class* clas, jint declared,	Hjava_lang_reflect_Method*** ptr){

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区成人| 极品少妇一区二区三区精品视频| 亚洲一区二区三区视频在线播放 | 午夜视频在线观看一区二区 | 国产婷婷色一区二区三区在线| 国产精品久久久久久久午夜片| 日韩理论电影院| 日本麻豆一区二区三区视频| 91在线国产观看| 26uuu国产电影一区二区| 亚洲午夜在线电影| 99精品视频在线播放观看| 欧美大尺度电影在线| 亚洲高清久久久| 91小视频免费看| 欧美经典一区二区| 国产一区二区三区四区五区美女| 欧美日韩高清一区| 一区二区三区中文在线| 成人精品一区二区三区四区| 欧美va天堂va视频va在线| 亚洲成va人在线观看| 91日韩一区二区三区| 国产精品无圣光一区二区| 精品亚洲成av人在线观看| 宅男在线国产精品| 日韩综合在线视频| 欧美精品国产精品| 亚洲午夜久久久久久久久电影网| 97精品久久久久中文字幕| 欧美激情一区二区三区在线| 国产一区二区三区免费| 日韩欧美一区二区免费| 婷婷综合久久一区二区三区| 欧美日韩一级黄| 亚洲一区二区影院| 欧美日韩视频在线第一区| 亚洲综合一区二区精品导航| 91精品91久久久中77777| 亚洲品质自拍视频| 日本精品视频一区二区| 亚洲一区中文日韩| 在线观看91av| 青青草成人在线观看| 日韩精品一区在线| 国产在线不卡一区| 国产精品免费视频一区| 成人av电影在线网| 夜夜嗨av一区二区三区网页| 欧美色视频在线观看| 图片区小说区区亚洲影院| 日韩亚洲欧美中文三级| 经典三级在线一区| 国产精品色婷婷久久58| 91在线观看美女| 亚洲一区二区不卡免费| 91麻豆精品国产91久久久使用方法| 日韩精品亚洲专区| 久久综合国产精品| 91免费国产视频网站| 亚洲一区二区欧美激情| 欧美一区二区三区播放老司机| 久久国产精品露脸对白| 国产精品电影院| 色婷婷亚洲精品| 麻豆成人免费电影| 亚洲图片激情小说| 日韩午夜三级在线| 成人国产精品免费观看视频| 亚洲综合一二区| 久久蜜桃一区二区| 色婷婷av一区二区三区大白胸| 日韩av高清在线观看| 久久久精品综合| 欧美日韩视频专区在线播放| 国产在线观看一区二区| 亚洲国产视频a| 久久久久久久久久电影| 欧美性大战久久久| 国产福利一区二区三区视频在线 | 国产乱码精品一区二区三区忘忧草| 久久男人中文字幕资源站| 91福利在线看| 国产精品一区一区三区| 亚洲福中文字幕伊人影院| 久久久不卡网国产精品一区| 欧美羞羞免费网站| av资源站一区| 狠狠狠色丁香婷婷综合激情 | 91麻豆福利精品推荐| 久久福利视频一区二区| 夜夜精品浪潮av一区二区三区| 国产亚洲欧美色| 69av一区二区三区| 欧洲中文字幕精品| 国产99久久久国产精品潘金网站| 偷拍自拍另类欧美| 亚洲另类一区二区| 国产精品蜜臀在线观看| 久久综合久久鬼色| 日韩三级视频中文字幕| 欧洲国产伦久久久久久久| 成人午夜看片网址| 国产成人鲁色资源国产91色综 | 国产婷婷色一区二区三区| 91精品午夜视频| 欧美日本韩国一区二区三区视频 | 在线免费观看不卡av| 高清成人免费视频| 国产精品主播直播| 久久精品国产精品亚洲红杏 | 亚洲自拍偷拍麻豆| 亚洲人成电影网站色mp4| 亚洲国产高清aⅴ视频| 久久久午夜精品理论片中文字幕| 日韩一区二区影院| 日韩欧美综合一区| 日韩精品一区二区三区三区免费 | 午夜精品久久一牛影视| 亚洲精品免费电影| 一区二区三区欧美亚洲| 亚洲乱码国产乱码精品精的特点| 中文字幕在线视频一区| 亚洲欧洲成人av每日更新| 日韩一区在线播放| 亚洲视频综合在线| 亚洲一区二区四区蜜桃| 午夜精品福利在线| 奇米综合一区二区三区精品视频| 人人精品人人爱| 国精产品一区一区三区mba桃花| 麻豆91免费观看| 国产一区不卡视频| 高清不卡一区二区| 色丁香久综合在线久综合在线观看| 91婷婷韩国欧美一区二区| 欧美日韩在线综合| 日韩欧美精品三级| 中文欧美字幕免费| 亚洲精品成a人| 免费精品视频在线| 国产suv精品一区二区883| jiyouzz国产精品久久| 欧美在线你懂得| 欧美一卡2卡三卡4卡5免费| 久久综合色之久久综合| 国产精品嫩草久久久久| 香蕉成人啪国产精品视频综合网| 免费在线观看一区| 成人手机电影网| 欧美性大战久久久久久久蜜臀| 欧美高清激情brazzers| 久久久九九九九| 亚洲第一综合色| 国产一区二区三区四| 一本大道久久a久久精品综合| 欧美日韩三级一区二区| 国产亚洲精品aa| 亚洲高清在线视频| 丰满放荡岳乱妇91ww| 欧美亚洲日本国产| 国产亚洲综合在线| 亚洲综合一区二区三区| 国产精品一区二区免费不卡| 在线观看亚洲精品视频| 久久免费电影网| 午夜视频一区二区三区| 成人av网址在线观看| 欧美一级二级在线观看| 亚洲欧美另类小说| 国产精品亚洲а∨天堂免在线| 欧美日韩一区 二区 三区 久久精品 | 国内精品伊人久久久久影院对白| 99精品久久免费看蜜臀剧情介绍| 日韩一区二区三区三四区视频在线观看| 国产人成亚洲第一网站在线播放| 五月天网站亚洲| 91在线国内视频| 国产视频一区在线播放| 美美哒免费高清在线观看视频一区二区| av不卡免费在线观看| 26uuu成人网一区二区三区| 偷窥少妇高潮呻吟av久久免费| 91视视频在线观看入口直接观看www | 日韩一卡二卡三卡四卡| 一区二区三区欧美日| 成人av免费在线| 中文成人综合网| 国产成人亚洲精品狼色在线| 日韩一区二区在线看片| 亚洲高清免费视频| 在线观看日韩电影| 亚洲精品免费在线观看| 白白色 亚洲乱淫| 中文一区在线播放| 国产成人aaaa| 亚洲国产经典视频| 成人动漫精品一区二区| 国产调教视频一区| 成人美女视频在线观看|