diff options
author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-07-21 01:54:06 +0000 |
---|---|---|
committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-07-21 01:54:06 +0000 |
commit | 3ab7414327e49315d676453c4dda0cbf3a30ddc4 (patch) | |
tree | dceb21b9cf452ee4920e5a2a6465e98ae9cd868c /libjava/java/lang/reflect/Field.java | |
parent | daed4e8fd05b3b6a0d6056d76fd9d29c1197ced2 (diff) | |
download | gcc-3ab7414327e49315d676453c4dda0cbf3a30ddc4.tar.gz |
* java/lang/Runtime.java: Comment fix.
* java/lang/ClassLoader.java (isAncestorOf): New method.
(getParent): Uncommented security check. Use isAncestorOf.
* include/jvm.h (_Jv_CheckAccess): Declare.
* java/lang/reflect/natConstructor.cc (newInstance): Perform
access check.
Include IllegalAccessException.h, ArrayIndexOutOfBoundsException.h.
* java/lang/reflect/natArray.cc (newInstance): Pass caller's
class loader to _Jv_GetArrayClass.
Include ArrayIndexOutOfBoundsException.h.
* java/lang/reflect/Field.java: Update comment to reflect status.
(equals): Fixed indentation.
* java/lang/Class.h (Class): Declare memberAccessCheck, not
checkMemberAccess. Make _Jv_CheckAccess a friend.
* java/lang/Class.java (memberAccessCheck): New method from
Classpath.
(checkMemberAccess): Removed.
(getDeclaredMethod): Use memberAccessCheck.
(getField): Likewise.
(getMethod): Likewise.
* resolve.cc (_Jv_ResolvePoolEntry): Use _Jv_CheckAccess.
(_Jv_SearchMethodInClass): Likewise.
* prims.cc (_Jv_CheckAccess): New function.
* jni.cc (_Jv_JNI_FindClass): Use getClassLoaderInternal.
(_Jv_JNI_GetAnyFieldID): Likewise.
* java/lang/natClass.cc (forName): Use getClassLoaderInternal.
(getClassLoader): Added security check.
(getConstructor): Call memberAccessCheck.
(getDeclaredClasses): Likewise.
(getDeclaredField): Likewise.
(getDeclaredFields): Likewise.
(_getConstructors): Likewise.
(getDeclaredConstructor): Likewise.
(getDeclaredMethods): Likewise.
(getFields): Likewise.
(getMethods): Likewise.
(newInstance): Likewise.
(_Jv_MakeVTable): Put method name in exception.
* java/lang/reflect/natMethod.cc (getType): Use
getClassLoaderInternal.
(_Jv_GetTypesFromSignature): Likewise.
(invoke): Perform access check.
(_Jv_CallAnyMethodA): Removed old FIXME comments.
Include ArrayIndexOutOfBoundsException.h.
* java/lang/reflect/natField.cc (getType): Use
getClassLoaderInternal.
(_Jv_CheckFieldAccessibility): Removed.
(getAddr): Use _Jv_CheckAccess; find caller.
Include ArrayIndexOutOfBoundsException.h.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@69621 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java/lang/reflect/Field.java')
-rw-r--r-- | libjava/java/lang/reflect/Field.java | 28 |
1 files changed, 7 insertions, 21 deletions
diff --git a/libjava/java/lang/reflect/Field.java b/libjava/java/lang/reflect/Field.java index 6410a7f770d..b54a103d9bc 100644 --- a/libjava/java/lang/reflect/Field.java +++ b/libjava/java/lang/reflect/Field.java @@ -1,4 +1,4 @@ -/* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation +/* Copyright (C) 1998, 1999, 2000, 2001, 2003 Free Software Foundation This file is part of libgcj. @@ -12,15 +12,6 @@ package java.lang.reflect; * @author Per Bothner <bothner@cygnus.com> * @date September 1998; February 1999. */ -/* Status: Mostly implemented. - * However, access checks are not implemented. See natField.cc for - * _Jv_CheckFieldAccessibility as well as the missing getCaller. - * Note that the idea is to have to compiler convert calls to - * setXXX(...) and getXXX(...) to setXXX(CALLER, ...) and getXXX(CALLER, ...), - * where CALLER is reference to the class that contains the calls to - * setXXX or getXXX. This is easy for the compiler, and replaces - * expensive stack and table searching with a constant. - */ public final class Field extends AccessibleObject implements Member { @@ -39,12 +30,12 @@ public final class Field extends AccessibleObject implements Member } public boolean equals (Object fld) - { - if (! (fld instanceof Field)) - return false; - Field f = (Field) fld; - return declaringClass == f.declaringClass && offset == f.offset; - } + { + if (! (fld instanceof Field)) + return false; + Field f = (Field) fld; + return declaringClass == f.declaringClass && offset == f.offset; + } public Class getDeclaringClass () { @@ -62,11 +53,6 @@ public final class Field extends AccessibleObject implements Member return (declaringClass.hashCode() ^ offset); } - // The idea is that the compiler will magically translate - // fld.getShort(obj) to fld.getShort(THISCLASS, obj). - // This makes checking assessiblity more efficient, - // since we don't have to do any stack-walking. - public boolean getBoolean (Object obj) throws IllegalArgumentException, IllegalAccessException { |