PatchSet 7031 
Date: 2005/12/22 13:55:16
Author: kaz
Branch: HEAD
Tag: (none) 
Log:
2005-12-22  Ito Kazumitsu  <[EMAIL PROTECTED]>

        * kaffe/kaffevm/access.c
        (outerof): Removed,
        (checkAccess): Simplified according to Sun's VM spec.

Members: 
        ChangeLog:1.4550->1.4551 
        kaffe/kaffevm/access.c:1.14->1.15 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.4550 kaffe/ChangeLog:1.4551
--- kaffe/ChangeLog:1.4550      Wed Dec 21 17:58:02 2005
+++ kaffe/ChangeLog     Thu Dec 22 13:55:16 2005
@@ -1,3 +1,9 @@
+2005-12-22  Ito Kazumitsu  <[EMAIL PROTECTED]>
+
+       * kaffe/kaffevm/access.c
+       (outerof): Removed,
+       (checkAccess): Simplified according to Sun's VM spec.
+
 2005-12-21  Guilhem Lavaux  <[EMAIL PROTECTED]>
 
        * kaffe/kaffevm/access.c
Index: kaffe/kaffe/kaffevm/access.c
diff -u kaffe/kaffe/kaffevm/access.c:1.14 kaffe/kaffe/kaffevm/access.c:1.15
--- kaffe/kaffe/kaffevm/access.c:1.14   Wed Dec 21 17:58:03 2005
+++ kaffe/kaffe/kaffevm/access.c        Thu Dec 22 13:55:22 2005
@@ -153,45 +153,6 @@
        }
 }
 
-/*
- * Returns 1 if oc is an outer class of c
- */
-static
-int outerof (Hjava_lang_Class *c, Hjava_lang_Class *oc)
-{
-       innerClass *ic;
-       Hjava_lang_Class *outer;
-       errorInfo einfo;
-
-       outer = NULL;
-               if( c->this_inner_index >= 0 )
-       {
-               ic = &c->inner_classes[c->this_inner_index];
-               if( ic->outer_class )
-               {
-                       outer = getClass(ic->outer_class, c, &einfo);
-                       if( outer == NULL )
-                       {
-                               discardErrorInfo(&einfo);
-                       }
-               }
-       }
-       if ( outer != NULL )
-       {
-               if ( oc == outer)
-               {
-                       return 1;
-               }
-               else
-               {
-                       return outerof(outer, oc);
-               }
-       }
-       else {
-               return 0;
-       }
-}
-
 int checkAccess(struct Hjava_lang_Class *context,
                struct Hjava_lang_Class *target,
                accessFlags target_flags)
@@ -209,20 +170,16 @@
 
                return 1;
        }
-       else if ( outerof(target, context) )
-       {
-               /* target is within the context. */
-               class_acc = 1;
-               slot_acc = 1;
-
-               return 1;
-       }
        else if( target->accflags & ACC_PUBLIC )
        {
                /* Public class. */
                class_acc = 1;
        }
-       else if( instanceof(target, context) )
+       /* Sun's VM spec does not refer to the case where the target class
+        * is protected.  But our experience tells the need for a special
+        * handling of this case.
+        */
+       else if( target->accflags & ACC_PROTECTED && instanceof(target, 
context) )
        {
                class_acc = 1;
        }
@@ -309,51 +266,6 @@
        {
                /* Package. */
                slot_acc = 1;
-       }
-/*
-       Commented out because private members get accessible to
-       any context in the same package if target is a nested class.
-
-       else if( (target->name->data[0] != '[') &&
-                same_package &&
-                (target->this_inner_index >= 0) )
-       {
-               slot_acc = 1;
-       }
-*/
-       else if( context->this_inner_index >= 0 )
-       {
-               innerClass *ic;
-
-               /*
-                * Check for an inner class accessing something in the outer.
-                */
-               ic = &context->inner_classes[context->this_inner_index];
-               if( ic->outer_class )
-               {
-                       Hjava_lang_Class *outer;
-                       errorInfo einfo;
-                       
-                       outer = getClass(ic->outer_class, context, &einfo);
-                       if( outer != NULL )
-                       {
-                               if( (target_flags & ACC_PRIVATE) &&
-                                   (target == outer) )
-                               {
-                                       /* XXX Not sure about this. */
-                                       slot_acc = 1;
-                               }
-                               else if( (target_flags & ACC_PROTECTED) &&
-                                        instanceof(target, outer) )
-                               {
-                                       slot_acc = 1;
-                               }
-                       }
-                       else
-                       {
-                               discardErrorInfo(&einfo);
-                       }
-               }
        }
        return( class_acc && slot_acc );
 }

_______________________________________________
kaffe mailing list
[email protected]
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to