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

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

?? class.c

?? kaffe Java 解釋器語言,源碼,Java的子集系統,開放源代碼
?? 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一区二区三区免费野_久草精品视频
欧美色窝79yyyycom| 亚洲成人免费观看| 精品一区二区在线观看| 欧美日韩国产经典色站一区二区三区| 久久精品一区二区三区av | 中文字幕一区二区三区乱码在线| 国产美女一区二区| 国产精品视频九色porn| 奇米精品一区二区三区四区| 欧美一区二区三区四区在线观看 | 国产精品久久久久影院色老大| 成人看片黄a免费看在线| 一区二区中文字幕在线| 欧美精品日韩精品| 国产精品1024| 日韩电影免费在线观看网站| 久久影院视频免费| 欧美视频在线一区二区三区 | 日韩va欧美va亚洲va久久| 日韩三级.com| 在线观看一区二区视频| 成人免费毛片片v| 日韩av一级片| 亚洲久本草在线中文字幕| 久久久国产一区二区三区四区小说| 色哟哟国产精品| 韩国精品在线观看| 久久精品国产一区二区| 日韩成人午夜精品| 午夜久久久久久| 亚洲一区二区av在线| 亚洲欧洲国产专区| 中文字幕日韩欧美一区二区三区| 国产日产亚洲精品系列| 国产偷国产偷精品高清尤物| 精品国产制服丝袜高跟| 久久青草国产手机看片福利盒子 | 91在线视频18| www.99精品| 色悠久久久久综合欧美99| 91在线精品一区二区| 一区二区三区在线免费观看 | 91年精品国产| 2021中文字幕一区亚洲| 成人污污视频在线观看| 风间由美性色一区二区三区| jizz一区二区| 欧美四级电影在线观看| 91精品婷婷国产综合久久竹菊| 日韩欧美美女一区二区三区| 精品国精品自拍自在线| 精品免费日韩av| 欧美精品一区男女天堂| 亚洲日本一区二区| 热久久国产精品| 成人精品视频一区| 日韩视频一区二区三区| 亚洲柠檬福利资源导航| 天天射综合影视| av综合在线播放| 欧美v日韩v国产v| 亚洲国产精品一区二区久久恐怖片| 麻豆精品久久久| 色噜噜狠狠色综合欧洲selulu| 91精品国产色综合久久ai换脸 | 天天操天天干天天综合网| 国产成人精品一区二| 精品国产91乱码一区二区三区| 国产精品二三区| 久久精品国产一区二区三| 91精品国产一区二区三区蜜臀| 亚洲视频免费观看| 不卡大黄网站免费看| 26uuu精品一区二区在线观看| 亚洲一区二区三区四区五区中文 | 亚洲国产视频直播| 欧美做爰猛烈大尺度电影无法无天| 欧美成人女星排名| 精品亚洲国内自在自线福利| 亚洲色图第一区| 亚洲欧美综合色| 在线精品观看国产| 国产成人在线视频免费播放| 亚洲国产日韩在线一区模特| 日韩午夜激情av| 色悠悠久久综合| 国产成人综合在线播放| 亚洲午夜av在线| 国产欧美久久久精品影院| 91精品久久久久久蜜臀| 91污在线观看| 国产精品1区2区3区在线观看| 亚洲国产wwwccc36天堂| 中文字幕一区二区三区av| 日韩一区二区免费在线观看| 色偷偷成人一区二区三区91| 国产精品一区二区久久不卡| 日韩国产在线观看| 久久久天堂av| 亚洲成va人在线观看| 欧美videos中文字幕| 中文字幕一区在线观看| 欧美大肚乱孕交hd孕妇| 4438亚洲最大| 麻豆一区二区三| 久久久久久久久97黄色工厂| 成人免费不卡视频| 自拍偷拍亚洲欧美日韩| 欧美大片在线观看一区| 亚洲国产经典视频| 国产精品亚洲一区二区三区妖精| 日韩女优毛片在线| 中文无字幕一区二区三区| 国产午夜一区二区三区| 久久99国产乱子伦精品免费| 国产欧美一区二区在线| 天堂久久久久va久久久久| 午夜精品国产更新| 国产欧美日韩视频在线观看| 欧美一区二区三区视频在线| 欧美一激情一区二区三区| 欧美性三三影院| 五月天欧美精品| 欧美精品在线视频| 色综合久久综合| 久久不见久久见免费视频1| 91精品国产欧美一区二区18| 色偷偷久久人人79超碰人人澡| 日本91福利区| 国产大陆精品国产| 色综合久久久久综合体| 麻豆精品视频在线观看视频| 怡红院av一区二区三区| 午夜精品久久久久影视| 亚洲综合自拍偷拍| 亚洲欧美色图小说| 国产精品美女久久久久久久久 | 蜜臀久久99精品久久久画质超高清 | 国产精品伦一区| 亚洲精品在线免费播放| 欧美日韩视频在线第一区 | 久久女同性恋中文字幕| 天天操天天综合网| 国产成人丝袜美腿| 99这里只有久久精品视频| 日本电影欧美片| 成人av高清在线| 国产91色综合久久免费分享| 成人精品视频.| 国产欧美一区在线| 日韩欧美在线一区二区三区| 日本vs亚洲vs韩国一区三区| 亚洲欧美精品午睡沙发| 久久影院午夜片一区| 亚洲一区在线观看免费观看电影高清| 中文乱码免费一区二区| 久久免费视频色| 色综合婷婷久久| 国产一区二区三区综合| 国产精品初高中害羞小美女文| 看片的网站亚洲| heyzo一本久久综合| 国产精品九色蝌蚪自拍| 99精品一区二区| 琪琪一区二区三区| 91蜜桃在线观看| 国产校园另类小说区| 午夜精品久久久久久| 日韩免费观看高清完整版在线观看| 天天做天天摸天天爽国产一区| 欧美巨大另类极品videosbest| 亚洲国产欧美在线| 日韩欧美一级片| 国产精品2024| 五月天精品一区二区三区| 精品久久人人做人人爰| 91在线小视频| 日本sm残虐另类| 中文字幕日本不卡| 7777精品伊人久久久大香线蕉 | 欧美一区二区视频在线观看2020| 欧美一区二区在线不卡| 久久久影视传媒| 亚洲高清久久久| 国产 欧美在线| 日韩精品一区二区三区swag| 亚洲一区国产视频| 成人av在线电影| 26uuu亚洲综合色| 美腿丝袜亚洲三区| 666欧美在线视频| 一区二区三区欧美日| 99re这里都是精品| 在线不卡一区二区| 国产成人亚洲精品青草天美| 国产精品综合在线视频| 日韩三级视频在线看| 三级久久三级久久| 91精品国产91久久综合桃花 | 亚洲丝袜自拍清纯另类|